home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / utilities / pcd-dt / source / pcdprefs.c < prev   
Encoding:
C/C++ Source or Header  |  2000-01-22  |  5.0 KB  |  241 lines

  1. #include <clib/alib_protos.h>
  2. #include <pragma/dos_lib.h>
  3. #include <pragma/exec_lib.h>
  4. #include <pragma/icon_lib.h>
  5. #include <pragma/intuition_lib.h>
  6. #include <pragma/muimaster_lib.h>
  7. #include <tools/tools.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. struct Arg
  12. {
  13. long *mode,*res,*dither,*depth;
  14. };
  15.  
  16. APTR
  17. app,window,
  18. CY_Mode,CY_Res,CY_Dither,SLI_Depth,
  19. BT_Save,BT_Use,BT_Quit;
  20.  
  21. char
  22. *cycle_mode[]={"V40 AGA Mode","V43 CGX Mode",0},
  23. *cycle_res[]={"192*128","384*256","768*512","1536*1024","3072*2048","6144*4096",0},
  24. *cycle_dither[]={"No Dithering","Floyd-Steinberg",0};
  25.  
  26. enum
  27. {
  28. ID_BT_Save=1,
  29. ID_BT_Use,
  30. };
  31.  
  32. void InitGUI()
  33. {
  34. app=ApplicationObject,
  35.     MUIA_Application_Title,"PCD Datatypes Preferences",
  36.     MUIA_Application_Base,"PCD",
  37.     MUIA_Application_Author,"Achim Stegemann",
  38.     MUIA_Application_Copyright,"© 1998 by Achim Stegemann",
  39.     MUIA_Application_Version,"$VER:PCDPrefs 43.13 (22.01.00)",
  40.     MUIA_Application_Description,"MUI-Preferences 43.13 for PCD",
  41.     MUIA_Application_UseRexx,0,
  42.     MUIA_Application_SingleTask,1,
  43.     SubWindow,window=WindowObject,
  44.         MUIA_Window_Title,"PCD MUI-Preferences",
  45.         MUIA_Window_ID,'PCD',
  46.         WindowContents,VGroup,
  47.             Child,ColGroup(2),
  48.                 GroupFrame,
  49.                 MUIA_Background,MUII_GroupBack,
  50.                 Child,Label1("Mode"),
  51.                 Child,CY_Mode=CycleObject,
  52.                     MUIA_CycleChain,1,
  53.                     MUIA_Cycle_Active,1,
  54.                     MUIA_Cycle_Entries,cycle_mode,
  55.                 End,
  56.                 Child,Label1("Resolution"),
  57.                 Child,CY_Res=CycleObject,
  58.                     MUIA_CycleChain,1,
  59.                     MUIA_Cycle_Active,2,
  60.                     MUIA_Cycle_Entries,cycle_res,
  61.                 End,
  62.                 Child,Label1("V40 Dithermode"),
  63.                 Child,CY_Dither=CycleObject,
  64.                     MUIA_CycleChain,1,
  65.                     MUIA_Cycle_Entries,cycle_dither,
  66.                 End,
  67.                 Child,Label1("V40 Depth"),
  68.                 Child,SLI_Depth=SliderObject,
  69.                     MUIA_CycleChain,1,
  70.                     MUIA_Numeric_Min,3,
  71.                     MUIA_Numeric_Max,8,
  72.                     MUIA_Numeric_Value,8,
  73.                 End,
  74.             End,
  75.             Child,HGroup,
  76.                 Child,BT_Save=TextObject,
  77.                     ButtonFrame,
  78.                     MUIA_Background,MUII_ButtonBack,
  79.                     MUIA_CycleChain,1,
  80.                     MUIA_ControlChar,'s',
  81.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  82.                     MUIA_Text_PreParse,MUIX_C,
  83.                     MUIA_Text_HiCharIdx,'_',
  84.                     MUIA_Text_Contents,"_Save",
  85.                 End,
  86.                 Child,BT_Use=TextObject,
  87.                     ButtonFrame,
  88.                     MUIA_Background,MUII_ButtonBack,
  89.                     MUIA_CycleChain,1,
  90.                     MUIA_ControlChar,'u',
  91.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  92.                     MUIA_Text_PreParse,MUIX_C,
  93.                     MUIA_Text_HiCharIdx,'_',
  94.                     MUIA_Text_Contents,"_Use",
  95.                 End,
  96.                 Child,BT_Quit=TextObject,
  97.                     ButtonFrame,
  98.                     MUIA_Background,MUII_ButtonBack,
  99.                     MUIA_CycleChain,1,
  100.                     MUIA_ControlChar,'c',
  101.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  102.                     MUIA_Text_PreParse,MUIX_C,
  103.                     MUIA_Text_HiCharIdx,'_',
  104.                     MUIA_Text_Contents,"_Cancel",
  105.                 End,
  106.             End,
  107.         End,
  108.     End,
  109. End;
  110. if(!app) exit(20);
  111. NotifyAppClose(window);
  112. NotifyButton(BT_Save,ID_BT_Save);
  113. NotifyButton(BT_Use,ID_BT_Use);
  114. NotifyButton(BT_Quit,MUIV_Application_ReturnID_Quit);
  115. }
  116.  
  117. void Ende()
  118. {
  119. if(app) MUI_DisposeObject(app);
  120. }
  121.  
  122. void Save(BPTR file)
  123. {
  124. FPrintf(file,"%lu %lu %lu %lu\n",
  125. MyGetAttr(MUIA_Cycle_Active,CY_Mode),
  126. MyGetAttr(MUIA_Cycle_Active,CY_Res),
  127. MyGetAttr(MUIA_Cycle_Active,CY_Dither),
  128. MyGetAttr(MUIA_Numeric_Value,SLI_Depth));
  129. Flush(file);
  130. }
  131.  
  132. void SaveENV()
  133. {
  134. BPTR file;
  135. if(file=Open("ENV:DataTypes/pcd.prefs",MODE_NEWFILE))
  136.     {
  137.     Save(file);
  138.     Close(file);
  139.     }
  140. }
  141.  
  142. void SaveENVARC()
  143. {
  144. BPTR file;
  145. if(file=Open("ENVARC:DataTypes/pcd.prefs",MODE_NEWFILE))
  146.     {
  147.     Save(file);
  148.     Close(file);
  149.     }
  150. }
  151.  
  152. void LoadENV()
  153. {
  154. char *var;
  155. if(var=(char *)AllocVec(256,0))
  156.     {
  157.     if(GetVar("ENV:DataTypes/pcd.prefs",var,256,LV_VAR|GVF_GLOBAL_ONLY)>=0)
  158.         {
  159.         RDArgs *rdargs;
  160.       if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
  161.             {
  162.             RDArgs *args;
  163.             Arg para={0,0,0,0};
  164.             rdargs->RDA_Source.CS_Buffer=var;
  165.             rdargs->RDA_Source.CS_Length=strlen(var);
  166.             rdargs->RDA_Source.CS_CurChr=0;
  167.             if(args=ReadArgs("MODE/A/N,RESOLUTION/A/N,DITHER/A/N,DEPTH/A/N",(long *)¶,rdargs))
  168.                 {
  169.                 long v;
  170.                 if(para.mode)
  171.                     {
  172.                     v=*para.mode;
  173.                     if(v<0) v=0;
  174.                     else if(v>1) v=1;
  175.                     }
  176.                 else v=1;
  177.                 SetAttrs(CY_Mode,MUIA_Cycle_Active,v,TAG_END);
  178.                 if(para.res)
  179.                     {
  180.                     v=*para.res;
  181.                     if(v<0) v=0;
  182.                     else if(v>5) v=5;
  183.                     }
  184.                 else v=2;
  185.                 SetAttrs(CY_Res,MUIA_Cycle_Active,v,TAG_END);
  186.                 if(para.dither)
  187.                     {
  188.                     v=*para.dither;
  189.                     if(v<0) v=0;
  190.                     else if(v>1) v=1;
  191.                     }
  192.                 else v=0;
  193.                 SetAttrs(CY_Dither,MUIA_Cycle_Active,v,TAG_END);
  194.                 if(para.depth)
  195.                     {
  196.                     v=*para.depth;
  197.                     if(v<3) v=3;
  198.                     else if(v>8) v=8;
  199.                     }
  200.                 else v=8;
  201.                 SetAttrs(SLI_Depth,MUIA_Numeric_Value,v,TAG_END);
  202.                 FreeArgs(args);
  203.                 }
  204.             FreeDosObject(DOS_RDARGS,rdargs);
  205.             }
  206.         }
  207.     FreeVec(var);
  208.     }
  209. }
  210.  
  211. void main()
  212. {
  213. UWORD ende=0;
  214. atexit(Ende);
  215. InitGUI();
  216. LoadENV();
  217. SetAttrs(window,MUIA_Window_Open,1,TAG_END);
  218. while(!ende)
  219.     {
  220.     ULONG signals;
  221.     switch(DoMethod(app,MUIM_Application_NewInput,&signals))
  222.         {
  223.         case MUIV_Application_ReturnID_Quit:
  224.             ende=1;
  225.             break;
  226.         case ID_BT_Save:
  227.             SaveENVARC();
  228.         case ID_BT_Use:
  229.             SaveENV();
  230.             ende=1;
  231.         }
  232.     if(signals) signals=Wait(signals);
  233.     }
  234. }
  235.  
  236. extern "C" void wbmain()
  237. {
  238. main();
  239. }
  240.  
  241.