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