home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Enigma Amiga Life 109
/
EnigmaAmiga109CD.iso
/
software
/
utilities
/
pcd-dt35
/
source
/
pcdprefs.c
< prev
Wrap
C/C++ Source or Header
|
2000-01-22
|
4KB
|
190 lines
#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 <tools/tools.h>
#include <stdlib.h>
#include <string.h>
struct Arg
{
long *res;
};
APTR app,window,CY_Res,BT_Save,BT_Use,BT_Quit;
char
*cycle_res[]={"192*128","384*256","768*512","1536*1024","3072*2048","6144*4096",0};
enum
{
ID_BT_Save=1,
ID_BT_Use,
};
void InitGUI()
{
app=ApplicationObject,
MUIA_Application_Title,"PCD Datatypes Preferences",
MUIA_Application_Base,"PCD",
MUIA_Application_Author,"Achim Stegemann",
MUIA_Application_Copyright,"© 1998-1999 by Achim Stegemann",
MUIA_Application_Version,"$VER:PCDPrefs 44.1 (22.01.00)",
MUIA_Application_Description,"MUI-Preferences 44.1 for PCD",
MUIA_Application_UseRexx,0,
MUIA_Application_SingleTask,1,
SubWindow,window=WindowObject,
MUIA_Window_Title,"PCD MUI-Preferences",
MUIA_Window_ID,'PCD',
WindowContents,VGroup,
Child,ColGroup(2),
GroupFrame,
MUIA_Background,MUII_GroupBack,
Child,Label1("Resolution"),
Child,CY_Res=CycleObject,
MUIA_CycleChain,1,
MUIA_Cycle_Active,2,
MUIA_Cycle_Entries,cycle_res,
End,
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,"%%lu\n",MyGetAttr(MUIA_Cycle_Active,CY_Res));
Flush(file);
}
void SaveENV()
{
BPTR file;
if(file=Open("ENV:DataTypes/pcd.prefs",MODE_NEWFILE))
{
Save(file);
Close(file);
}
}
void SaveENVARC()
{
BPTR file;
if(file=Open("ENVARC:DataTypes/pcd.prefs",MODE_NEWFILE))
{
Save(file);
Close(file);
}
}
void LoadENV()
{
char *var;
if(var=(char *)AllocVec(256,0))
{
if(GetVar("ENV:DataTypes/pcd.prefs",var,256,LV_VAR|GVF_GLOBAL_ONLY)>=0)
{
RDArgs *rdargs;
if(rdargs=(RDArgs *)AllocDosObject(DOS_RDARGS,0))
{
RDArgs *args;
Arg para={0};
rdargs->RDA_Source.CS_Buffer=var;
rdargs->RDA_Source.CS_Length=strlen(var);
rdargs->RDA_Source.CS_CurChr=0;
if(args=ReadArgs("RESOLUTION/A/N",(long *)¶,rdargs))
{
long v;
if(para.res)
{
v=*para.res;
if(v<0) v=0;
else if(v>5) v=5;
}
else v=2;
SetAttrs(CY_Res,MUIA_Cycle_Active,v,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();
}