/* ** Original C Code written by Stefan Stuntz ** ** Translation into E by Klaus Becker ** ** All comments are from the C-Source */ /* ** The Settings Demo shows how to load and save object contents. */ OPT PREPROCESS MODULE 'tools/domethod' MODULE 'muimaster', 'libraries/mui' MODULE 'utility/tagitem', 'utility/hooks','tools/installhook' MODULE 'intuition/classes', 'intuition/classusr' MODULE 'libraries/gadtools' ENUM ID_CANCEL=1,ID_SAVE,ID_USE ENUM ER_NONE, ER_MUILIB, ER_APP /* for the exception handling */ DEF helpHook:hook PROC helpFunc(hook,help,objptr:PTR TO LONG) DEF udata=NIL IF objptr[] THEN get(objptr[]++,MUIA_UserData,{udata}) set(help,MUIA_Text_Contents,udata) ENDPROC PROC main() HANDLE DEF app,window,str1,str2,str3,sl1,cy1,help,btsave,btuse,btcancel DEF signals,result DEF running=TRUE DEF sex IF (muimasterbase := OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN Raise(ER_MUILIB) sex:=['male','female',NIL] installhook(helpHook,{helpFunc}) app:= ApplicationObject, MUIA_Application_Title , 'Settings', MUIA_Application_Version , '$VER: Settings 10.12 (23.12.94)', MUIA_Application_Copyright , ' 1992/93, Stefan Stuntz', MUIA_Application_Author , 'Stefan Stuntz & Klaus Becker', 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 , "SETT", MUIA_Window_NeedsMouseObject, MUI_TRUE, WindowContents, VGroup, Child, ColGroup(2), GroupFrameT('User Identification'), 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, MUI_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, MUI_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=NIL THEN Raise(ER_APP) /* ** 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,MUI_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,NIL]) /* ** 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,MUI_TRUE) set(window,MUIA_Window_ActiveObject,str1) WHILE running result:=doMethod(app,[MUIM_Application_Input,{signals}]) SELECT result CASE MUIV_Application_ReturnID_Quit running:=FALSE CASE ID_CANCEL running:=FALSE CASE ID_SAVE doMethod(app,[MUIM_Application_Save,MUIV_Application_Save_ENVARC]) doMethod(app,[MUIM_Application_Save,MUIV_Application_Save_ENV]) running:=FALSE CASE ID_USE doMethod(app,[MUIM_Application_Save,MUIV_Application_Save_ENV]) running:=FALSE ENDSELECT IF (running OR signals) THEN Wait(signals) ENDWHILE set(window,MUIA_Window_Open,FALSE) Raise (ER_NONE) EXCEPT IF app THEN Mui_DisposeObject(app) IF muimasterbase THEN CloseLibrary(muimasterbase) SELECT exception CASE ER_MUILIB WriteF('Failed to open \s.\n',MUIMASTER_NAME) CleanUp(20) CASE ER_APP WriteF('Failed to create application.\n') CleanUp(20) ENDSELECT ENDPROC 0