home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / utilities / pcd-dt35 / source / pcdprefs.c < prev   
C/C++ Source or Header  |  2000-01-22  |  4KB  |  190 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 *res;
  14. };
  15.  
  16. APTR app,window,CY_Res,BT_Save,BT_Use,BT_Quit;
  17.  
  18. char
  19. *cycle_res[]={"192*128","384*256","768*512","1536*1024","3072*2048","6144*4096",0};
  20.  
  21. enum
  22. {
  23. ID_BT_Save=1,
  24. ID_BT_Use,
  25. };
  26.  
  27. void InitGUI()
  28. {
  29. app=ApplicationObject,
  30.     MUIA_Application_Title,"PCD Datatypes Preferences",
  31.     MUIA_Application_Base,"PCD",
  32.     MUIA_Application_Author,"Achim Stegemann",
  33.     MUIA_Application_Copyright,"© 1998-1999 by Achim Stegemann",
  34.     MUIA_Application_Version,"$VER:PCDPrefs 44.1 (22.01.00)",
  35.     MUIA_Application_Description,"MUI-Preferences 44.1 for PCD",
  36.     MUIA_Application_UseRexx,0,
  37.     MUIA_Application_SingleTask,1,
  38.     SubWindow,window=WindowObject,
  39.         MUIA_Window_Title,"PCD MUI-Preferences",
  40.         MUIA_Window_ID,'PCD',
  41.         WindowContents,VGroup,
  42.             Child,ColGroup(2),
  43.                 GroupFrame,
  44.                 MUIA_Background,MUII_GroupBack,
  45.                 Child,Label1("Resolution"),
  46.                 Child,CY_Res=CycleObject,
  47.                     MUIA_CycleChain,1,
  48.                     MUIA_Cycle_Active,2,
  49.                     MUIA_Cycle_Entries,cycle_res,
  50.                 End,
  51.             End,
  52.             Child,HGroup,
  53.                 Child,BT_Save=TextObject,
  54.                     ButtonFrame,
  55.                     MUIA_Background,MUII_ButtonBack,
  56.                     MUIA_CycleChain,1,
  57.                     MUIA_ControlChar,'s',
  58.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  59.                     MUIA_Text_PreParse,MUIX_C,
  60.                     MUIA_Text_HiCharIdx,'_',
  61.                     MUIA_Text_Contents,"_Save",
  62.                 End,
  63.                 Child,BT_Use=TextObject,
  64.                     ButtonFrame,
  65.                     MUIA_Background,MUII_ButtonBack,
  66.                     MUIA_CycleChain,1,
  67.                     MUIA_ControlChar,'u',
  68.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  69.                     MUIA_Text_PreParse,MUIX_C,
  70.                     MUIA_Text_HiCharIdx,'_',
  71.                     MUIA_Text_Contents,"_Use",
  72.                 End,
  73.                 Child,BT_Quit=TextObject,
  74.                     ButtonFrame,
  75.                     MUIA_Background,MUII_ButtonBack,
  76.                     MUIA_CycleChain,1,
  77.                     MUIA_ControlChar,'c',
  78.                     MUIA_InputMode,MUIV_InputMode_RelVerify,
  79.                     MUIA_Text_PreParse,MUIX_C,
  80.                     MUIA_Text_HiCharIdx,'_',
  81.                     MUIA_Text_Contents,"_Cancel",
  82.                 End,
  83.             End,
  84.         End,
  85.     End,
  86. End;
  87. if(!app) exit(20);
  88. NotifyAppClose(window);
  89. NotifyButton(BT_Save,ID_BT_Save);
  90. NotifyButton(BT_Use,ID_BT_Use);
  91. NotifyButton(BT_Quit,MUIV_Application_ReturnID_Quit);
  92. }
  93.  
  94. void Ende()
  95. {
  96. if(app) MUI_DisposeObject(app);
  97. }
  98.  
  99. void Save(BPTR file)
  100. {
  101. FPrintf(file,"%%lu\n",MyGetAttr(MUIA_Cycle_Active,CY_Res));
  102. Flush(file);
  103. }
  104.  
  105. void SaveENV()
  106. {
  107. BPTR file;
  108. if(file=Open("ENV:DataTypes/pcd.prefs",MODE_NEWFILE))
  109.     {
  110.     Save(file);
  111.     Close(file);
  112.     }
  113. }
  114.  
  115. void SaveENVARC()
  116. {
  117. BPTR file;
  118. if(file=Open("ENVARC:DataTypes/pcd.prefs",MODE_NEWFILE))
  119.     {
  120.     Save(file);
  121.     Close(file);
  122.     }
  123. }
  124.  
  125. void LoadENV()
  126. {
  127. char *var;
  128. if(var=(char *)AllocVec(256,0))
  129.     {
  130.     if(GetVar("ENV:DataTypes/pcd.prefs",var,256,LV_VAR|GVF_GLOBAL_ONLY)>=0)
  131.         {
  132.         RDArgs *rdargs;
  133.       if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
  134.             {
  135.             RDArgs *args;
  136.             Arg para={0};
  137.             rdargs->RDA_Source.CS_Buffer=var;
  138.             rdargs->RDA_Source.CS_Length=strlen(var);
  139.             rdargs->RDA_Source.CS_CurChr=0;
  140.             if(args=ReadArgs("RESOLUTION/A/N",(long *)¶,rdargs))
  141.                 {
  142.                 long v;
  143.                 if(para.res)
  144.                     {
  145.                     v=*para.res;
  146.                     if(v<0) v=0;
  147.                     else if(v>5) v=5;
  148.                     }
  149.                 else v=2;
  150.                 SetAttrs(CY_Res,MUIA_Cycle_Active,v,TAG_END);
  151.                 FreeArgs(args);
  152.                 }
  153.             FreeDosObject(DOS_RDARGS,rdargs);
  154.             }
  155.         }
  156.     FreeVec(var);
  157.     }
  158. }
  159.  
  160. void main()
  161. {
  162. UWORD ende=0;
  163. atexit(Ende);
  164. InitGUI();
  165. LoadENV();
  166. SetAttrs(window,MUIA_Window_Open,1,TAG_END);
  167. while(!ende)
  168.     {
  169.     ULONG signals;
  170.     switch(DoMethod(app,MUIM_Application_NewInput,&signals))
  171.         {
  172.         case MUIV_Application_ReturnID_Quit:
  173.             ende=1;
  174.             break;
  175.         case ID_BT_Save:
  176.             SaveENVARC();
  177.         case ID_BT_Use:
  178.             SaveENV();
  179.             ende=1;
  180.         }
  181.     if(signals) signals=Wait(signals);
  182.     }
  183. }
  184.  
  185. extern "C" void wbmain()
  186. {
  187. main();
  188. }
  189.  
  190.