/* ** The Settings Demo shows how to load and save object contents. */ #include "demo.h" #define ID_CANCEL 1 #define ID_SAVE 2 #define ID_USE 3 SAVEDS ASM VOID HelpFunc(REG(a2) Object *help,REG(a1) Object **objptr) { LONG udata = NULL; if (*objptr) get(*objptr,MUIA_UserData,&udata); set(help,MUIA_Text_Contents,udata); } int main(int argc,char *argv[]) { APTR app,window,str1,str2,str3,sl1,cy1,help,btsave,btuse,btcancel; ULONG signals; BOOL running = TRUE; static char *sex[] = { "male", "female", NULL }; static struct Hook HelpHook = { {0,0}, (VOID *)HelpFunc, 0, 0 }; init(); app = ApplicationObject, MUIA_Application_Title , "Settings", MUIA_Application_Version , "$VER: Settings 14.16 (21.02.96)", MUIA_Application_Copyright , "©1992/93, Stefan Stuntz", MUIA_Application_Author , "Stefan Stuntz", MUIA_Application_Description, "Show saving and loading of settings", MUIA_Application_Base , "SETTINGS", SubWindow, window = WindowObject, MUIA_Window_Title, "Save/use me and start me again!", MUIA_Window_ID , MAKE_ID('S','E','T','T'), MUIA_Window_NeedsMouseObject, TRUE, WindowContents, VGroup, Child, ColGroup(2), GroupFrameT("User Identification"), Child, Label2("1:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 1, End, Child, Label2("2:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 2, End, Child, Label2("3:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 3, End, Child, Label2("4:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 4, End, Child, Label2("5:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 5, End, Child, Label2("10:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 10, End, Child, Label2("100:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 100, End, Child, Label2("200:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 200, End, Child, Label2("300:"), Child, StringObject, StringFrame, MUIA_String_MaxLen, 300, End, Child, Label2("Name:"), Child, str1 = StringObject, StringFrame, MUIA_ExportID, 1, MUIA_UserData, "First and last name of user.", End, Child, Label2("Address:"), Child, str2 = StringObject, StringFrame, MUIA_ExportID, 2, MUIA_UserData, "Street, city and ZIP code." , End, Child, Label1("Password:"), Child, str3 = StringObject, StringFrame, MUIA_ExportID, 4, MUIA_UserData, "Global access password (invisible).", MUIA_String_Secret, TRUE, End, Child, Label1("Sex:"), Child, cy1 = CycleObject, MUIA_ExportID, 6, MUIA_Cycle_Entries, sex, MUIA_UserData, "Guess what this means...", End, Child, Label("Age:"), Child, sl1 = SliderObject, MUIA_ExportID, 5, MUIA_Slider_Min, 9, MUIA_Slider_Max, 99, MUIA_UserData, "Several areas require a minimum age.", End, Child, Label1("Info:"), Child, help = TextObject, TextFrame, MUIA_UserData, "This is the info gadget.", End, End, Child, VSpace(2), Child, HGroup, MUIA_Group_SameSize, TRUE, Child, btsave = SimpleButton("_Save"), Child, HSpace(0), Child, btuse = SimpleButton("_Use"), Child, HSpace(0), Child, btcancel = SimpleButton("_Cancel"), End, End, End, End; if (!app) fail(app,"Failed to create Application."); /* ** Set Mouse Move Help Strings */ DoMethod(window,MUIM_Notify,MUIA_Window_MouseObject,MUIV_EveryTime, help,3,MUIM_CallHook,&HelpHook,MUIV_TriggerValue); /* ** Install notification events... */ DoMethod(window,MUIM_Notify,MUIA_Window_CloseRequest,TRUE, app,2,MUIM_Application_ReturnID,ID_CANCEL); DoMethod(btcancel,MUIM_Notify,MUIA_Pressed,FALSE, app,2,MUIM_Application_ReturnID,ID_CANCEL); DoMethod(btsave,MUIM_Notify,MUIA_Pressed,FALSE, app,2,MUIM_Application_ReturnID,ID_SAVE); DoMethod(btuse,MUIM_Notify,MUIA_Pressed,FALSE, app,2,MUIM_Application_ReturnID,ID_USE); /* ** Cycle chain for keyboard control */ DoMethod(window,MUIM_Window_SetCycleChain, str1,str2,str3,cy1,sl1,btsave,btuse,btcancel,NULL); /* ** Concatenate strings, will activate the next one */ DoMethod(str1,MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime, window,3,MUIM_Set,MUIA_Window_ActiveObject,str2); DoMethod(str2,MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime, window,3,MUIM_Set,MUIA_Window_ActiveObject,str3); DoMethod(str3,MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime, window,3,MUIM_Set,MUIA_Window_ActiveObject,str1); /* ** The application is set up, now load ** a previously saved configuration from env: */ DoMethod(app,MUIM_Application_Load,MUIV_Application_Load_ENV); /* ** Input loop... */ set(window,MUIA_Window_Open,TRUE); set(window,MUIA_Window_ActiveObject,str1); while (running) { switch (DoMethod(app,MUIM_Application_Input,&signals)) { case MUIV_Application_ReturnID_Quit: case ID_CANCEL: running = FALSE; break; case ID_SAVE: DoMethod(app,MUIM_Application_Save,MUIV_Application_Save_ENVARC); /* fall through */ case ID_USE: DoMethod(app,MUIM_Application_Save,MUIV_Application_Save_ENV); running = FALSE; break; } if (running && signals) Wait(signals); } set(window,MUIA_Window_Open,FALSE); /* ** Shut down... */ fail(app,NULL); }