home *** CD-ROM | disk | FTP | other *** search
- #include <clib/alib_protos.h>
- #include <pragma/dos_lib.h>
- #include <pragma/exec_lib.h>
- #include <pragma/icon_lib.h>
- #include <pragma/intuition_lib.h>
- #include <pragma/muimaster_lib.h>
- #include <mui/xpk_mcc.h>
- #include <tools/tools.h>
- #include <stdlib.h>
- #include <string.h>
-
- struct Arg
- {
- char *xpk;
- long *xpkmode;
- char *password;
- };
-
- APTR
- app,window,XPK_Obj,
- BT_Save,BT_Use,BT_Quit;
-
- enum
- {
- ID_BT_Save=1,
- ID_BT_Use
- };
-
- void InitGUI()
- {
- app=ApplicationObject,
- MUIA_Application_Title,"RGFX Datatypes Preferences",
- MUIA_Application_Base,"RGFX",
- MUIA_Application_Author,"Achim Stegemann",
- MUIA_Application_Copyright,"© 1997-2000 by Achim Stegemann",
- MUIA_Application_Version,"$VER:RGFXPrefs 44.1b (02.02.00)\n",
- MUIA_Application_Description,"MUI-Preferences 44.1b for RGFX",
- MUIA_Application_UseRexx,0,
- MUIA_Application_SingleTask,1,
- SubWindow,window=WindowObject,
- MUIA_Window_Title,"RGFX MUI-Preferences",
- MUIA_Window_ID,'RGFX',
- WindowContents,VGroup,
- Child,XPK_Obj=XpkObject,
- MUIA_Xpk_Method,"NUKE",
- End,
- Child,HGroup,
- Child,BT_Save=TextObject,
- ButtonFrame,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- MUIA_ControlChar,'s',
- MUIA_InputMode,MUIV_InputMode_RelVerify,
- MUIA_Text_PreParse,MUIX_C,
- MUIA_Text_HiCharIdx,'_',
- MUIA_Text_Contents,"_Save",
- End,
- Child,BT_Use=TextObject,
- ButtonFrame,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- MUIA_ControlChar,'u',
- MUIA_InputMode,MUIV_InputMode_RelVerify,
- MUIA_Text_PreParse,MUIX_C,
- MUIA_Text_HiCharIdx,'_',
- MUIA_Text_Contents,"_Use",
- End,
- Child,BT_Quit=TextObject,
- ButtonFrame,
- MUIA_Background,MUII_ButtonBack,
- MUIA_CycleChain,1,
- MUIA_ControlChar,'c',
- MUIA_InputMode,MUIV_InputMode_RelVerify,
- MUIA_Text_PreParse,MUIX_C,
- MUIA_Text_HiCharIdx,'_',
- MUIA_Text_Contents,"_Cancel",
- End,
- End,
- End,
- End,
- End;
- if(!app) exit(20);
- NotifyAppClose(window);
- NotifyButton(BT_Save,ID_BT_Save);
- NotifyButton(BT_Use,ID_BT_Use);
- NotifyButton(BT_Quit,MUIV_Application_ReturnID_Quit);
- }
-
- void Ende()
- {
- if(app) MUI_DisposeObject(app);
- }
-
- void Save(BPTR file)
- {
- FPrintf(file,"%s %lu %s\n",
- MyGetAttr(MUIA_Xpk_Method,XPK_Obj),
- MyGetAttr(MUIA_Xpk_Mode,XPK_Obj),
- MyGetAttr(MUIA_Xpk_Password,XPK_Obj));
- }
-
- void SaveENV()
- {
- BPTR file;
- if(file=Open("ENV:DataTypes/rgfx.prefs",MODE_NEWFILE))
- {
- Save(file);
- Close(file);
- }
- }
-
- void SaveENVARC()
- {
- BPTR file;
- if(file=Open("ENVARC:DataTypes/rgfx.prefs",MODE_NEWFILE))
- {
- Save(file);
- Close(file);
- }
- }
-
- void LoadENV()
- {
- char *var;
- if(var=(char *)AllocVec(256,0))
- {
- if(GetVar("ENV:DataTypes/rgfx.prefs",var,256,LV_VAR|GVF_GLOBAL_ONLY)>=0)
- {
- RDArgs *rdargs;
- if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
- {
- RDArgs *args;
- Arg para;
- rdargs->RDA_Source.CS_Buffer=var;
- rdargs->RDA_Source.CS_Length=strlen(var);
- rdargs->RDA_Source.CS_CurChr=0;
- memset(¶,0,sizeof(Arg));
- if(args=ReadArgs("XPK/A,XPKMODE/A/N,PASSWORD",(long *)¶,rdargs))
- {
- long v;
- char xpk[5];
- strncpy(xpk,para.xpk,4);
- xpk[4]=0;
- SetAttrs(XPK_Obj,MUIA_Xpk_Method,xpk,TAG_END);
- v=*para.xpkmode;
- if(v<0) v=0;
- else if(v>100) v=100;
- SetAttrs(XPK_Obj,MUIA_Xpk_Mode,v,TAG_END);
- if(para.password) SetAttrs(XPK_Obj,MUIA_Xpk_Password,para.password,TAG_END);
- FreeArgs(args);
- }
- FreeDosObject(DOS_RDARGS,rdargs);
- }
- }
- FreeVec(var);
- }
- }
-
- void main()
- {
- UWORD ende=0;
- atexit(Ende);
- InitGUI();
- LoadENV();
- SetAttrs(window,MUIA_Window_Open,1,TAG_END);
- while(!ende)
- {
- ULONG signals;
- switch(DoMethod(app,MUIM_Application_NewInput,&signals))
- {
- case MUIV_Application_ReturnID_Quit:
- ende=1;
- break;
- case ID_BT_Save:
- SaveENVARC();
- case ID_BT_Use:
- SaveENV();
- ende=1;
- }
- if(signals) signals=Wait(signals);
- }
- }
-
- extern "C" void wbmain()
- {
- main();
- }
-