home *** CD-ROM | disk | FTP | other *** search
/ The Best of Mecomp Multimedia 2 / MECOMP-CD-II.iso / amiga / tools / systempatch / bprefs / source / bprefs.e < prev    next >
Encoding:
Text File  |  1998-06-13  |  39.4 KB  |  962 lines

  1. OPT PREPROCESS
  2.  
  3. MODULE 'amigalib/boopsi',
  4.        'dos/dos','dos/dosextens',
  5.        'exec/execbase','exec/lists','exec/nodes','exec/tasks',
  6.        'intuition/classes','intuition/classusr','intuition/intuition','intuition/screens',
  7.        'libraries/asl','libraries/gadtools','libraries/mui','libraries/muip',
  8.        'mui/muicustomclass','muimaster',/*'mui/Busy_mcc',*/
  9.        'utility','utility/tagitem','utility/hooks',
  10.        '*bprefslocale'
  11.  
  12. ENUM ID_VIEW=1,ID_USE,ID_TEST,ID_SAVE,ID_VIEWACT,ID_SETCOL,
  13.      ID_ABOUT,ID_MABOUT,ID_PREFS,ID_VALRES,ID_VALLST,ID_VALINI,ID_HIDE,ID_ADDP,ID_DELP,
  14.      ID_REFRS,ID_REFRL,
  15.      ID_DOUBLE
  16.  
  17. #define PROGVER '$VER: Birdie Prefs 1.27 (13/06/98)'
  18.  
  19. DEF app,window,sigs=0,running,result,
  20.     active_cc,patternlist:PTR TO LONG,patternlen,
  21.     menu,gmenu,gmenuobj,
  22.     vmenu,vmenuobj,
  23.     tested, /*TRUE if the test button has been pressed at least once*/
  24.     adr_lra,adr_lga,adr_lba,  /*Light Balance*/
  25.     adr_dra,adr_dga,adr_dba,  /*Dark Balance*/
  26.     adr_view,adr_current,adr_l,adr_lv,adr_addp,adr_delp,     /*Patternlist*/
  27.     adr_active,adr_activen,adr_activec,adr_colour,adr_activelvl,adr_activepasl,adr_viewact, /*Active Window*/
  28.     adr_nobmp,adr_noborder,adr_flood,adr_nolight,adr_precision,adr_exclude,adr_doexcl,adr_pubscreens, /*Options*/
  29.     adr_save,adr_use,adr_test,adr_cancel,
  30.     adr_stat,/*adr_busy,*/
  31.     red,green,blue,
  32.  
  33. ->  penspec:PTR TO mui_penspec,
  34.     cmd[600]:STRING,s:PTR TO CHAR,n,tmp[100]:STRING,
  35.     tstdout,thandler                /*I've limited the command line to about 600 chars, I think
  36.                                       it will be enough*/
  37.  
  38. CONST FL_NONE=0
  39. SET FL_EXIT,FL_SAVE
  40.  
  41. DEF task
  42.  
  43. DEF startStat,pos,
  44.     btmp[600]:STRING,space,activep=FALSE,s2[60]:STRING
  45. DEF cat:PTR TO catalog_bprefs
  46.  
  47. DEF cl_pslider:PTR TO mui_customclass
  48.  
  49. /***********************************
  50. cmenu custom private class:subclass of any class, but handles a contextmenu
  51.                                     ***************************************/
  52.  
  53. #define mCheckMark(selected) NewObjectA(cl_mimage.mcc_class,NIL,[ImageButtonFrame,\
  54.         MUIA_InputMode,     MUIV_InputMode_Toggle,\
  55.         MUIA_Image_Spec,    MUII_CheckMark,\
  56.         MUIA_Image_FreeVert,MUI_TRUE,\
  57.         MUIA_Selected,      selected,\
  58.         MUIA_Background,    MUII_ButtonBack,\
  59.         MUIA_ShowSelState,  FALSE,\
  60.         MUIA_ContextMenu,gmenuobj,\
  61.         MUIA_Cmenu_Default,selected,\
  62.         MUIA_Cmenu_Attribute,MUIA_Selected,\
  63.     End
  64.  
  65. #define mSliderObject(lvl) NewObjectA(cl_mslider.mcc_class,NIL,[MUIA_ContextMenu,gmenuobj,\
  66.         MUIA_Cmenu_Attribute,MUIA_Slider_Level,\
  67.         MUIA_Cmenu_Default,lvl,\
  68.         MUIA_Slider_Level,lvl
  69.  
  70.  
  71. #define mStringObject NewObjectA(cl_mstring.mcc_class,NIL,[MUIA_ContextMenu,gmenuobj,\
  72.         MUIA_Cmenu_Default,'',\
  73.         MUIA_Cmenu_Attribute,MUIA_String_Contents
  74.  
  75. #define mVGroup NewObjectA(cl_mgroup.mcc_class,NIL,[MUIA_ContextMenu,vmenuobj
  76.  
  77. #define mHGroup NewObjectA(cl_mgroup.mcc_class,NIL,[MUIA_Group_Horiz,MUI_TRUE,MUIA_ContextMenu,gmenuobj
  78.  
  79. DEF cl_mslider:PTR TO mui_customclass
  80. DEF cl_mimage: PTR TO mui_customclass
  81. DEF cl_mstring:PTR TO mui_customclass
  82. DEF cl_mgroup: PTR TO mui_customclass -> mgroup is not exactely like image or slider, it sends the method to all his children
  83.  
  84. ENUM MUIA_Cmenu_Attribute=$FCB90000,
  85.      MUIA_Cmenu_Default,
  86.      MUIA_Cmenu_Initial
  87.  
  88. OBJECT mgroup_data
  89.     empty:INT
  90. ENDOBJECT
  91. /*dispatcher for the mGroup class, that sends the contextmenuchoice method to all its children*/
  92. PROC mgroup_dispatcher(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO msg)
  93. DEF state,member
  94.     IF msg.methodid = MUIM_ContextMenuChoice
  95.         get(obj,MUIA_Group_ChildList,{state})
  96.         NextObject({state})
  97.         WHILE (member:=NextObject({state}))
  98.             doMethodA(member,msg)
  99.         ENDWHILE
  100.         RETURN NIL
  101.     ENDIF
  102. ENDPROC doSuperMethodA(cl,obj,msg)
  103.  
  104. OBJECT cmenu_data
  105.     attr -> the name of the attribute to change, e.g. MUIA_Slider_Level
  106.     default,initial
  107. ENDOBJECT
  108.  
  109. PROC cmenu_dispatcher(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO msg)
  110. DEF methodid
  111.     methodid:=msg.methodid
  112.     SELECT methodid
  113.     CASE OM_NEW ;                 RETURN cmenu_new(cl,obj,msg)
  114.     CASE OM_SET ;                 RETURN cmenu_set(cl,obj,msg)
  115.     CASE MUIM_ContextMenuChoice ; RETURN cmenu_contextmenuchoice(cl,obj,msg)
  116.     ENDSELECT
  117. ENDPROC doSuperMethodA(cl,obj,msg)
  118.  
  119. PROC cmenu_new(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO opset)
  120. DEF data:PTR TO cmenu_data,
  121.     tags:PTR TO tagitem,
  122.     tag:PTR TO tagitem,
  123.     attrid,c=TRUE
  124.  
  125.     IF (obj:=doSuperMethodA(cl,obj,msg))=NIL THEN RETURN NIL
  126.     data:=INST_DATA(cl,obj)/*like the "set" method, I should create a single procedure to it..*/
  127.     tags:=msg.attrlist
  128.     WHILE tag:=NextTagItem({tags})
  129.         IF tag.data
  130.             attrid:=tag.tag
  131.             SELECT attrid
  132.             CASE MUIA_Cmenu_Attribute
  133.                 data.attr:=tag.data
  134.             CASE MUIA_Cmenu_Default
  135.                 data.default:=tag.data
  136.             CASE MUIA_Cmenu_Initial
  137.                 data.initial:=tag.data ; c:=FALSE
  138.             ENDSELECT
  139.         ENDIF
  140.     ENDWHILE
  141.     IF c THEN data.initial:=data.default
  142. ENDPROC obj
  143.  
  144. PROC cmenu_set(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO opset)
  145. DEF data:PTR TO cmenu_data,
  146.     tags:PTR TO tagitem,
  147.     tag:PTR TO tagitem,
  148.     attrid
  149.  
  150.     data:=INST_DATA(cl,obj)
  151.     tags:=msg.attrlist
  152.     WHILE tag:=NextTagItem({tags})
  153.         IF tag.data
  154.             attrid:=tag.tag
  155.             SELECT attrid
  156.             CASE MUIA_Cmenu_Attribute
  157.                 data.attr:=tag.data
  158.             CASE MUIA_Cmenu_Default
  159.                 data.default:=tag.data
  160.             CASE MUIA_Cmenu_Initial
  161.                 data.initial:=tag.data
  162.             ENDSELECT
  163.         ENDIF
  164.     ENDWHILE
  165. ENDPROC doSuperMethodA(cl,obj,msg)
  166.  
  167. PROC cmenu_contextmenuchoice(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO LONG)
  168. DEF menuitem,str:PTR TO CHAR,data:PTR TO cmenu_data
  169.     data:=INST_DATA(cl,obj)
  170.     menuitem:=msg[1] -> That looks quite ugly, but what should I put as msg type?
  171.     get(menuitem,MUIA_Menuitem_Title,{str})
  172.     IF StrCmp(str,cat.msgmReset.getstr())
  173.         set(obj,data.attr,data.default)
  174.     ELSEIF StrCmp(str,cat.msgmInitial.getstr())
  175.         set(obj,data.attr,data.initial)
  176.     ENDIF
  177. ENDPROC
  178.  
  179. /*************
  180. pSlider cc: just a subclass of Slider class, replacing the value by "exact"
  181. when it is -1. It also has a context menu
  182. *************/
  183.  
  184. #define pSliderObject NewObjectA(cl_pslider.mcc_class,NIL,[TAG_IGNORE,0
  185.  
  186. OBJECT pslider_data
  187.     string:PTR TO CHAR
  188. ENDOBJECT
  189.  
  190. PROC pslider_dispatcher(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO msg)
  191. DEF methodid
  192.     methodid:=msg.methodid
  193.     SELECT methodid
  194.     CASE OM_NEW ; RETURN pslider_new(cl,obj,msg)
  195.     CASE OM_DISPOSE ; RETURN pslider_dispose(cl,obj,msg)
  196.     CASE MUIM_Numeric_Stringify ; RETURN pslider_stringify(cl,obj,msg)
  197.     ENDSELECT
  198. ENDPROC doSuperMethodA(cl,obj,msg)
  199.  
  200. PROC pslider_new(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO msg)
  201. DEF data:PTR TO pslider_data
  202.     IF (obj:=doSuperMethodA(cl,obj,msg)) = NIL THEN RETURN NIL
  203.     data:=INST_DATA(cl,obj)
  204.     data.string:=String(10)
  205. ENDPROC obj
  206.  
  207. PROC pslider_dispose(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO msg)
  208. DEF data:PTR TO pslider_data
  209.     data:=INST_DATA(cl,obj)
  210.     DisposeLink(data.string)
  211. ENDPROC doSuperMethodA(cl,obj,msg)
  212.  
  213. PROC pslider_stringify(cl:PTR TO iclass,obj:PTR TO object,msg:PTR TO muip_numeric_stringify)
  214. DEF data:PTR TO pslider_data
  215.     data:=INST_DATA(cl,obj)
  216.     IF msg.value=-1
  217.         StrCopy(data.string,cat.msglExact.getstr())
  218.     ELSE
  219.         StringF(data.string,'\d',msg.value)
  220.     ENDIF
  221. ENDPROC data.string
  222.  
  223. PROC main() HANDLE  
  224.  
  225.     IF (localebase:=OpenLibrary('locale.library',0)) = NIL THEN
  226.         Raise('Couldn''t open locale.library') -> Don't put this in catalogs ;-)
  227.     NEW cat.create()
  228.     cat.open()
  229.  
  230.     IF (utilitybase:=OpenLibrary('utility.library',36))=NIL THEN
  231.         Raise(cat.msgfNoUtility.getstr())
  232.  
  233.     NEW patternlist[21]
  234.  
  235.     muimasterbase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN)
  236.     IF muimasterbase = NIL THEN
  237.         Raise(cat.msgfNoMui.getstr())
  238.  
  239.     IF (cl_mslider:=eMui_CreateCustomClass(NIL,MUIC_Slider,NIL,SIZEOF cmenu_data,{cmenu_dispatcher})) = NIL THEN
  240.         Raise(cat.msgfCslider.getstr())
  241.  
  242.     IF (cl_mimage:=eMui_CreateCustomClass(NIL,MUIC_Image,NIL,SIZEOF cmenu_data,{cmenu_dispatcher})) = NIL THEN
  243.         Raise(cat.msgfCimage.getstr())
  244.  
  245.     IF (cl_mstring:=eMui_CreateCustomClass(NIL,MUIC_String,NIL,SIZEOF cmenu_data,{cmenu_dispatcher})) = NIL THEN
  246.         Raise(cat.msgfCstring.getstr())
  247.  
  248.     IF (cl_mgroup:=eMui_CreateCustomClass(NIL,MUIC_Group,NIL,SIZEOF mgroup_data,{mgroup_dispatcher})) = NIL THEN
  249.         Raise(cat.msgfCgroup.getstr())
  250.  
  251.     IF (cl_pslider:=eMui_CreateCustomClass(NIL,MUIC_Slider,NIL,SIZEOF pslider_data,{pslider_dispatcher})) = NIL THEN
  252.         Raise(cat.msgfCpslider.getstr())
  253.  
  254.     active_cc:=[cat.msglColour.getstr(),cat.msglPattern.getstr(),NIL]
  255.  
  256.     menu:=[
  257.     NM_TITLE,0, cat.msgmProject.getstr(),       0,  0, 0, 0,
  258.         NM_ITEM, 0, cat.msgmAbout.getstr(),   '?', 0, 0, ID_ABOUT,
  259.         NM_ITEM, 0, cat.msgmAboutMui.getstr(),'''',0, 0, ID_MABOUT,
  260.         NM_ITEM, 0, cat.msgmSettings.getstr(),'P', 0, 0, ID_PREFS,
  261.         NM_ITEM, 0, NM_BARLABEL,               0,  0, 0, 0,
  262.         NM_ITEM, 0, cat.msgmSave.getstr(),    'S', 0, 0, ID_SAVE,
  263.         NM_ITEM, 0, cat.msgmUse.getstr(),     'U', 0, 0, ID_USE,
  264.         NM_ITEM, 0, cat.msgmTest.getstr(),    'T', 0, 0, ID_TEST,
  265.         NM_ITEM, 0, cat.msgmHide.getstr(),    'H', 0, 0, ID_HIDE,
  266.         NM_ITEM, 0, cat.msgmQuit.getstr(),    'Q', 0, 0, MUIV_Application_ReturnID_Quit,
  267.  
  268.     NM_TITLE,0, cat.msgmPrefs.getstr(),0,0,0,0,
  269.         NM_ITEM, 0, cat.msgmReset.getstr(),   'W', 0, 0, ID_VALRES,
  270.         NM_ITEM, 0, cat.msgmLast.getstr(),    'O', 0, 0, ID_VALLST,
  271.         NM_ITEM, 0, cat.msgmInitial.getstr(), 'I', 0, 0, ID_VALINI,
  272.  
  273.     NM_END,0,NIL,0,0,0,0]:newmenu
  274.  
  275.     gmenu:=[
  276.     NM_TITLE,    0, cat.msgmGadget.getstr(),  0,0,0,0,
  277.         NM_ITEM, 0, cat.msgmReset.getstr(),  0,0,0,0,
  278.       /*NM_ITEM, 0, cat.msgmLast.getstr(),   0,0,0,0,*/ -> The last_saved function is a little more difficult to do...
  279.         NM_ITEM, 0, cat.msgmInitial.getstr(),0,0,0,0,
  280.     NM_END,0,NIL,0,0,0,0]:newmenu
  281.     gmenuobj:=Mui_MakeObjectA(MUIO_MenustripNM,[gmenu,0])
  282.  
  283.     vmenu:=[
  284.     NM_TITLE,    0, cat.msgmGroup.getstr(),  0,0,0,0,
  285.         NM_ITEM, 0, cat.msgmReset.getstr(),  0,0,0,0,
  286.       /*NM_ITEM, 0, cat.msgmLast.getstr(),   0,0,0,0,*/ -> The last_saved function is a little more difficult to do...
  287.         NM_ITEM, 0, cat.msgmInitial.getstr(),0,0,0,0,
  288.     NM_END,0,NIL,0,0,0,0]:newmenu
  289.     vmenuobj:=Mui_MakeObjectA(MUIO_MenustripNM,[vmenu,0])
  290.  
  291.  
  292.     app:=ApplicationObject,
  293.         MUIA_Application_Title, 'Birdie prefs',
  294.         MUIA_Application_Version,PROGVER,
  295.         MUIA_Application_Author, 'Maxime Gamboni',
  296.         MUIA_Application_Description, cat.msgrDescr.getstr(),
  297.         MUIA_Application_Base,'BIRDIE_PREFS',
  298.         MUIA_Application_Menustrip, Mui_MakeObjectA(MUIO_MenustripNM,[menu,0]),
  299.         MUIA_Application_SingleTask,MUI_TRUE,
  300.         MUIA_Application_Sleep,MUI_TRUE,
  301.  
  302.         SubWindow, window:=WindowObject,
  303.             MUIA_Window_Title, 'Birdie prefs',
  304.             MUIA_Window_ScreenTitle, cat.msgrTitle.getstr(),
  305.             MUIA_Window_ID, 'BIRDIEP',
  306.  
  307.             WindowContents, VGroup,
  308.                 Child, HGroup,
  309.                     Child, VGroup,
  310.                         Child, RectangleObject,End,
  311.                         Child, mVGroup,
  312.                             MUIA_Frame,MUIV_Frame_Group,
  313.                             MUIA_FrameTitle,cat.msglLightBal.getstr(),
  314.                             MUIA_ShortHelp, cat.msghLightBal.getstr(),
  315.                             Child, adr_lra:=mSliderObject(60),MUIA_Slider_Max,255,MUIA_Slider_Min,-255,
  316.                                 MUIA_FrameTitle, cat.msglRed.getstr(),
  317.                             End,
  318.                             Child, adr_lga:=mSliderObject(60),MUIA_Slider_Max,255,MUIA_Slider_Min,-255,
  319.                                 MUIA_FrameTitle, cat.msglGreen.getstr(),
  320.                             End,
  321.                             Child, adr_lba:=mSliderObject(60),MUIA_Slider_Max,255,MUIA_Slider_Min,-255,
  322.                                 MUIA_FrameTitle, cat.msglBlue.getstr(),
  323.                             End,
  324.                         End,
  325.                         Child, RectangleObject,End,
  326.                         Child, mVGroup,
  327.                             MUIA_Frame,MUIV_Frame_Group,
  328.                             MUIA_FrameTitle,cat.msglOptions.getstr(),
  329.                             Child,mHGroup,
  330.                                 MUIA_ShortHelp,cat.msghNoBmp.getstr(),
  331.                                 Child, adr_nobmp:=mCheckMark(FALSE),
  332.                                 Child, Label(cat.msglNoBmp.getstr()),
  333.                                 Child, RectangleObject, End,
  334.                             End,
  335.                             Child, mHGroup,
  336.                                 MUIA_ShortHelp,cat.msghNoIborder.getstr(),
  337.                                 Child, adr_noborder:=mCheckMark(FALSE),
  338.                                 Child, Label(cat.msglNoIborder.getstr()),
  339.                                 Child, RectangleObject, End,
  340.                             End,
  341.                             Child, mHGroup,
  342.                                 MUIA_ShortHelp,cat.msghFloodMask.getstr(),
  343.                                 Child, adr_flood:=mCheckMark(FALSE),
  344.                                 Child, Label(cat.msglFloodMask.getstr()),
  345.                                 Child, RectangleObject, End,
  346.                             End,
  347.                             Child, mHGroup,
  348.                                 MUIA_ShortHelp,cat.msghNoLight.getstr(),
  349.                                 Child, adr_nolight:=mCheckMark(FALSE),
  350.                                 Child, Label(cat.msglNoLight.getstr()),
  351.                                 Child, RectangleObject, End,
  352.                             End,
  353.                             Child, mHGroup,
  354.                                 MUIA_ShortHelp,cat.msghPubScr.getstr(),
  355.                                 Child, adr_pubscreens:=mCheckMark(FALSE),
  356.                                 Child, Label(cat.msglPubScr.getstr()),
  357.                                 Child, RectangleObject, End,
  358.                             End,
  359.                             Child, HGroup,
  360.                                 Child,RectangleObject,End,
  361.                                 Child, Label(cat.msglExclude.getstr()),
  362.                                 Child, RectangleObject,End,
  363.                             End,
  364.                             Child, mHGroup,
  365.                                 MUIA_ShortHelp,cat.msghExclude.getstr(),
  366.                                 Child, adr_doexcl:=mCheckMark(FALSE),
  367.                                 Child,adr_exclude:=mStringObject,
  368.                                     StringFrame,
  369.                                     MUIA_String_Format,MUIV_String_Format_Left,
  370.                                 End,
  371.                             End,
  372.                             Child, adr_precision:=pSliderObject,MUIA_Slider_Max,31,MUIA_Slider_Min,-1,
  373.                                 MUIA_Slider_Level,-1,
  374.                                 MUIA_ShortHelp,cat.msghPrecision.getstr(),
  375.                                 MUIA_FrameTitle, cat.msglPrecision.getstr(),
  376.                             End,
  377.                         End,
  378.                         Child, RectangleObject,End,
  379.                     End,
  380.                     Child, VGroup,
  381.                         MUIA_Frame,MUIV_Frame_Group,
  382.                         MUIA_FrameTitle,cat.msglPlist.getstr(),
  383.                         Child,adr_lv:=ListviewObject,
  384.                             MUIA_ShortHelp,cat.msghPlist.getstr(),
  385.                             MUIA_Listview_Input, MUI_TRUE,
  386.                             MUIA_Listview_List, adr_l:=ListObject,
  387.                                 InputListFrame,
  388.                             End,
  389.                         End,
  390.                         Child, PopaslObject,
  391.                             MUIA_ShortHelp,cat.msghPname.getstr(),
  392.                             MUIA_Popstring_Button,PopButton(MUII_PopFile),
  393.                             MUIA_Popasl_Type,ASL_FILEREQUEST,
  394.                             MUIA_Popstring_String,
  395.                                 adr_current:=StringObject,
  396.                                 StringFrame,
  397.                                 MUIA_String_Format,MUIV_String_Format_Left,
  398.                             End,
  399.                         End,
  400.                         Child, HGroup,
  401.                             Child, adr_addp:=TextObject,
  402.                                 MUIA_Background,MUII_ButtonBack,
  403.                                 MUIA_Frame,MUIV_Frame_Button,
  404.                                 MUIA_InputMode,MUIV_InputMode_RelVerify,
  405.                                 MUIA_Text_PreParse,'\ec',
  406.                                 MUIA_Text_Contents,cat.msglAdd.getstr(),
  407.                                 MUIA_ShortHelp,cat.msghAdd.getstr(),
  408.                             End,
  409.                             Child, adr_delp:=TextObject,
  410.                                 MUIA_Background,MUII_ButtonBack,
  411.                                 MUIA_Frame,MUIV_Frame_Button,
  412.                                 MUIA_InputMode,MUIV_InputMode_RelVerify,
  413.                                 MUIA_Text_PreParse,'\ec',
  414.                                 MUIA_Text_Contents,cat.msglDel.getstr(),
  415.                                 MUIA_ShortHelp,cat.msghDel.getstr(),
  416.                             End,
  417.                             Child, adr_view:= TextObject,
  418.                                 MUIA_Background,MUII_ButtonBack,
  419.                                 MUIA_Frame,MUIV_Frame_Button,
  420.                                 MUIA_InputMode,MUIV_InputMode_RelVerify,
  421.                                 MUIA_Text_PreParse,'\ec',
  422.                                 MUIA_Text_Contents,cat.msglView.getstr(),
  423.                                 MUIA_ShortHelp,cat.msghView.getstr(),
  424.                             End,
  425.                         End,
  426.                     End,
  427.                     Child, VGroup,
  428.                         Child, RectangleObject, MUIA_Weight,10,End,
  429.                         Child, mVGroup,
  430.                             MUIA_Frame,MUIV_Frame_Group,
  431.                             MUIA_FrameTitle, cat.msglDarkBal.getstr(),
  432.                             MUIA_ShortHelp, cat.msghDarkBal.getstr(),
  433.                             Child, adr_dra:=mSliderObject(-60),MUIA_Slider_Max,255,MUIA_Slider_Min,-255,
  434.                                 MUIA_FrameTitle, cat.msglRed.getstr(),
  435.                             End,
  436.                             Child, adr_dga:=mSliderObject(-60),MUIA_Slider_Max,255,MUIA_Slider_Min,-255,
  437.                                 MUIA_FrameTitle, cat.msglGreen.getstr(),
  438.                             End,
  439.                             Child, adr_dba:=mSliderObject(-60),MUIA_Slider_Max,255,MUIA_Slider_Min,-255,
  440.                                 MUIA_FrameTitle, cat.msglBlue.getstr(),
  441.                             End,
  442.                         End,
  443.                         Child, RectangleObject,MUIA_Weight,10,End,
  444.                         Child, VGroup,
  445.                             MUIA_Frame,MUIV_Frame_Group,
  446.                             MUIA_FrameTitle,cat.msglActive.getstr(),
  447.                             Child,HGroup,
  448.                                 MUIA_ShortHelp,cat.msghAct.getstr(),
  449.                                 Child, adr_active:=mCheckMark(MUI_TRUE),
  450.                                 Child, Label(cat.msglAct.getstr()),
  451.                                 Child, RectangleObject, End,
  452.                             End,
  453.                             Child,adr_activec:=RegisterGroup(active_cc),
  454.                                 Child,VGroup,
  455.                                     Child, adr_colour:=ColoradjustObject,End,
  456.                                     Child,adr_activelvl:=mSliderObject(50),
  457.                                         MUIA_Slider_Min,0,
  458.                                         MUIA_Slider_Max,100,
  459.                                         MUIA_FrameTitle,cat.msglImposeLvl.getstr(),
  460.                                     End,
  461.                                 End,
  462.                                 Child, VGroup,
  463.                                     Child,adr_activepasl:=PopaslObject,
  464.                                         MUIA_ShortHelp,cat.msghSfile.getstr(),
  465.                                         MUIA_Popstring_Button,PopButton(MUII_PopFile),
  466.                                         MUIA_Popasl_Type,ASL_FILEREQUEST,
  467.                                         MUIA_Popstring_String,
  468.                                             adr_activen:=StringObject,
  469.                                             StringFrame,
  470.                                             MUIA_String_Format,MUIV_String_Format_Left,
  471.                                         End,
  472.                                     End,
  473.                                     Child, adr_viewact:= TextObject,
  474.                                         MUIA_Background,MUII_ButtonBack,
  475.                                         MUIA_Frame,MUIV_Frame_Button,
  476.                                         MUIA_InputMode,MUIV_InputMode_RelVerify,
  477.                                         MUIA_Text_PreParse,'\ec',
  478.                                         MUIA_Text_Contents,cat.msglView.getstr(),
  479.                                         MUIA_ShortHelp,cat.msghView.getstr(),
  480.                                         MUIA_Weight,5,
  481.                                     End,
  482.                                 End,
  483.                             End,
  484.                         End,
  485.                         Child, RectangleObject, MUIA_Weight,10,End,
  486.                     End,
  487.                 End,
  488.                 Child, HGroup,
  489.                     Child, adr_save:=SimpleButton(cat.msglSave.getstr()),
  490.                     Child, RectangleObject, End,
  491.                     Child, adr_use:=SimpleButton(cat.msglUse.getstr()),
  492.                     Child, RectangleObject, End,
  493.                     Child, adr_test:=SimpleButton(cat.msglTest.getstr()),
  494.                     Child, RectangleObject, End,
  495.                     Child, adr_cancel:=SimpleButton(cat.msglCancel.getstr()),
  496.                 End,
  497.                 Child, HGroup,
  498.                     Child,adr_stat:=TextObject,
  499.                         MUIA_Frame,MUIV_Frame_Text,
  500.                         MUIA_Background,MUII_TextBack,
  501.                         MUIA_Text_PreParse,'\ec',
  502.                         MUIA_Text_Contents,cat.msgiInitializing.getstr(),
  503.                     End,
  504. /*                    Child,adr_busy:=BusyObject, -> This is yet a project, to put a "busy" gadget.
  505.                         MUIA_Weight,30,           -> It does not yet work, it is why I commented it out.
  506.                     End,*/
  507.                 End,
  508.             End,
  509.         End,
  510.     End
  511.     IF app = NIL THEN
  512.         Raise(cat.msgfNoApp.getstr())
  513.  
  514.     doMethodA(adr_cancel, [MUIM_Notify,MUIA_Pressed,            FALSE,         window,3,MUIM_Set,MUIA_Window_CloseRequest,MUI_TRUE])
  515.  
  516.     doMethodA(window,     [MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,      app,   2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
  517.  
  518.     doMethodA(adr_viewact,[MUIM_Notify,MUIA_Pressed,            FALSE,         app,   2,MUIM_Application_ReturnID,ID_VIEWACT])
  519.     doMethodA(adr_addp,   [MUIM_Notify,MUIA_Pressed,            FALSE,         app,   3,MUIM_Application_ReturnID,ID_ADDP])
  520.     doMethodA(adr_delp,   [MUIM_Notify,MUIA_Pressed,            FALSE,         app,   3,MUIM_Application_ReturnID,ID_DELP])
  521.     doMethodA(adr_view,   [MUIM_Notify,MUIA_Pressed,            FALSE,         app,   2,MUIM_Application_ReturnID,ID_VIEW])
  522.     doMethodA(adr_use,    [MUIM_Notify,MUIA_Pressed,            FALSE,         app,   2,MUIM_Application_ReturnID,ID_USE])
  523.     doMethodA(adr_test,   [MUIM_Notify,MUIA_Pressed,            FALSE,         app,   2,MUIM_Application_ReturnID,ID_TEST])
  524.     doMethodA(adr_save,   [MUIM_Notify,MUIA_Pressed,            FALSE,         app,   2,MUIM_Application_ReturnID,ID_SAVE])
  525.  
  526.     doMethodA(adr_l,      [MUIM_Notify,MUIA_List_Active,        MUIV_EveryTime,app,   2,MUIM_Application_ReturnID,ID_REFRS])
  527.     doMethodA(adr_current,[MUIM_Notify,MUIA_String_Contents,    MUIV_EveryTime,app,   2,MUIM_Application_ReturnID,ID_REFRL])
  528.     doMethodA(app,        [MUIM_Notify,MUIA_Application_DoubleStart,MUI_TRUE,  app,   2,MUIM_Application_ReturnID,ID_DOUBLE])
  529.  
  530.     set(adr_current,MUIA_String_AttachedList,adr_lv)
  531.     set(window,MUIA_Window_Open,MUI_TRUE)
  532.     set(adr_stat,MUIA_Text_Contents,cat.msgiLoad.getstr())
  533. /*LOAD BIRDIE PREFS*/
  534.     thandler:=Open('env:birdie.prefs',OLDFILE)
  535.     IF thandler = NIL
  536.         Mui_RequestA(app,window,0,NIL,cat.msgrOk.getstr(),cat.msgrNoBprefs.getstr(),NIL)
  537.     ELSE
  538.         startStat:=ReadStr(thandler,cmd)
  539.         Close(thandler)
  540.         parse(TRUE)
  541.     ENDIF
  542.     set(adr_stat,MUIA_Text_Contents,cat.msgiReady.getstr())
  543. /*    set(adr_busy,MUIA_Busy_Speed, MUIV_Busy_Speed_Off)*/
  544.     set(window,MUIA_Application_Sleep,FALSE)
  545.     running:=TRUE
  546.     WHILE running
  547.         result:= doMethodA(app, [MUIM_Application_Input,{sigs} ])
  548.         SELECT result
  549.         CASE MUIV_Application_ReturnID_Quit
  550.             IF tested
  551. /*                set(adr_busy,MUIA_Busy_Speed, MUIV_Busy_Speed_User)*/
  552.                 breakbirdie()
  553.                 waitquit()
  554.                 Execute('Run >NIL: Birdie ? <Env:Birdie.Prefs',NIL,NIL)
  555. /*                set(adr_busy,MUIA_Busy_Speed, MUIV_Busy_Speed_Off)*/
  556.             ENDIF
  557.             set(window,MUIA_Window_CloseRequest,MUI_TRUE)
  558.             running:=FALSE
  559.         CASE ID_DOUBLE
  560.             set(app,MUIA_Application_Iconified,FALSE)
  561.             set(window,MUIA_Window_Activate,MUI_TRUE)
  562.         CASE ID_ABOUT
  563.             Mui_RequestA(app, window, 0, NIL, cat.msgrOk.getstr(), '%s\n%s',[PROGVER,cat.msgrAbout.getstr(),NIL])
  564.         CASE ID_PREFS
  565.             doMethodA(app, [MUIM_Application_OpenConfigWindow,NIL]) /*Do we really need to use a returnID*/
  566.         CASE ID_MABOUT                                              /*when using menus? It would be better*/
  567.             doMethodA(app, [MUIM_Application_AboutMUI,window])      /*to directely call the methods..*/
  568.         CASE ID_HIDE
  569.             set(app,MUIA_Application_Iconified,MUI_TRUE)
  570.         CASE ID_VIEW
  571.             get(adr_current,MUIA_String_Contents,{s})
  572.             StrCopy(cmd,'run >NIL: multiview ')
  573.             StrAdd(cmd,s)
  574.             Execute(cmd,NIL,NIL)
  575.         CASE ID_ADDP
  576.             patternlist[patternlen++]:=String(80)
  577.             patternlist[patternlen]:=NIL
  578.             doMethodA(adr_l,[MUIM_List_InsertSingle,patternlist[patternlen-1],MUIV_List_Insert_Bottom])
  579.             set(adr_l,MUIA_List_Active,patternlen-1)
  580.         CASE ID_DELP
  581.             doMethodA(adr_l,[MUIM_List_Remove,MUIV_List_Remove_Active])
  582.             patternlen--
  583.         CASE ID_REFRS
  584.             doMethodA(adr_l,[MUIM_List_GetEntry,MUIV_List_GetEntry_Active,{s}])
  585.             set(adr_current,MUIA_String_Contents,s)
  586.         CASE ID_REFRL
  587.             get(adr_current,MUIA_String_Contents,{s})
  588.             get(adr_l,MUIA_List_Active,{n})
  589.             StrCopy(patternlist[n],s)
  590.             doMethodA(adr_l,[MUIM_List_Redraw,n])
  591.         CASE ID_VIEWACT
  592.             get(adr_activen,MUIA_String_Contents,{s})
  593.             StrCopy(cmd,'run >NIL: multiview ')
  594.             StrAdd(cmd,s)
  595.             Execute(cmd,NIL,NIL)
  596.         CASE ID_VALRES
  597.             resetvalues()
  598.         CASE ID_VALINI
  599.             resetvalues()
  600.             thandler:=Open('env:Birdie.Prefs',OLDFILE)
  601.             IF thandler<> NIL
  602.                 startStat:=ReadStr(thandler,cmd)
  603.                 Close(thandler)
  604.                 parse()
  605.             ENDIF
  606.         CASE ID_VALLST
  607.             resetvalues()
  608.             thandler:=Open('envarc:Birdie.Prefs',OLDFILE)
  609.             IF thandler<> NIL
  610.                 startStat:=ReadStr(thandler,cmd)
  611.                 Close(thandler)
  612.                 parse()
  613.             ENDIF
  614.         CASE ID_TEST
  615.             tested:=TRUE
  616.             use(FL_NONE)
  617. /*            set(adr_busy,MUIA_Busy_Speed,MUIV_Busy_Speed_Off)*/
  618.             set(adr_stat,MUIA_Text_Contents,cat.msgiReady.getstr())
  619.             set(app,MUIA_Application_Sleep,FALSE)
  620.         CASE ID_USE
  621.             use(FL_EXIT)
  622.             tested:=FALSE
  623.         CASE ID_SAVE
  624.             use(FL_EXIT OR FL_SAVE)
  625.         ENDSELECT
  626.         IF sigs THEN Wait(sigs)
  627.     ENDWHILE
  628. EXCEPT DO
  629.     IF app THEN Mui_DisposeObject(app)
  630.     IF gmenuobj THEN Mui_DisposeObject(gmenuobj)
  631.     IF vmenuobj THEN Mui_DisposeObject(vmenuobj)
  632.     IF cl_mgroup THEN Mui_DeleteCustomClass(cl_mgroup)
  633.     IF cl_mslider THEN Mui_DeleteCustomClass(cl_mslider)
  634.     IF cl_mimage THEN Mui_DeleteCustomClass(cl_mimage)
  635.     IF cl_pslider THEN Mui_DeleteCustomClass(cl_pslider)
  636.     IF muimasterbase
  637.         IF exception THEN Mui_RequestA(app,window,0,cat.msgfMain.getstr(),0,exception,0)
  638.         CloseLibrary(muimasterbase)
  639.     ELSE
  640.         IF exception THEN WriteF('\s\n\s',cat.msgfMain.getstr(),exception)
  641.     ENDIF
  642.     cat.close()
  643.     IF localebase THEN CloseLibrary(localebase)
  644. ENDPROC
  645.  
  646. PROC breakbirdie()
  647. DEF exec:PTR TO execbase
  648.     exec:=execbase
  649.     task:=0
  650.     Disable()
  651.     searchIn(exec.taskwait)
  652.     searchIn(exec.taskready)
  653.     Enable()
  654.     IF task
  655.         Signal(task,SIGBREAKF_CTRL_C)
  656.     ELSE
  657.         Mui_RequestA(app,window,0,cat.msgrMain.getstr(),0,cat.msgrNoProc.getstr(),0)
  658.     ENDIF
  659. ENDPROC
  660.  
  661. PROC waitquit()
  662. DEF exec:PTR TO execbase
  663.     exec:=execbase
  664.     set(adr_stat,MUIA_Text_Contents,cat.msgiWaiting.getstr())
  665.     REPEAT
  666.         Delay(10)
  667.         task:=0
  668.         Disable()
  669.         searchIn(exec.taskwait)
  670.         searchIn(exec.taskready)
  671.         Enable()
  672.         IF CtrlC() THEN Raise('Aborted while waiting for Birdie to exit..')
  673.     UNTIL task=0
  674. ENDPROC
  675.  
  676. PROC searchIn(from:PTR TO lh) HANDLE
  677. DEF name,len,cli:PTR TO commandlineinterface,exectask:PTR TO tc
  678.     exectask:=from.head
  679.     WHILE exectask.ln.succ
  680.         IF exectask.ln.type=NT_PROCESS AND (cli:=BADDR(exectask::process.cli))
  681.             name:=BADDR(cli.commandname)
  682.             len:=name[];name++
  683.             IF len
  684.                 IF StrCmp(name+len-6,'Birdie',6)
  685.                     task:=exectask
  686.                 ENDIF
  687.             ENDIF
  688.         ENDIF
  689.         exectask:=exectask.ln.succ
  690.     ENDWHILE
  691. EXCEPT DO
  692. ENDPROC
  693.  
  694. PROC use(flags)
  695. DEF stop=FALSE,t:PTR TO CHAR
  696. /*    set(adr_busy,MUIA_Busy_Speed,MUIV_Busy_Speed_User)*/
  697.     breakbirdie()
  698.     writecmd()
  699.     waitquit()
  700.     IF flags AND FL_EXIT
  701.         REPEAT
  702.             thandler:=Open('env:Birdie.Prefs',NEWFILE)
  703.             IF thandler
  704. /*              IF InStr(cmd,'NoXmas') = -1
  705.                     StrAdd(cmd,' NoXmas')
  706.                 ENDIF*/
  707.                 set(adr_stat,MUIA_Text_Contents,cat.msgiSave.getstr())
  708.                 tstdout:=SetStdOut(thandler)
  709.                 WriteF(cmd)
  710.                 SetStdOut(tstdout)
  711.                 Close(thandler)
  712.                 stop:=TRUE
  713.             ELSEIF Mui_RequestA(app,window,0,cat.msgrNoSaveT.getstr(),cat.msgrNoSaveB.getstr(),cat.msgrNoSave.getstr(),0) = 2
  714.                 stop:=TRUE
  715.             ENDIF
  716.         UNTIL stop
  717.         Execute('Run >NIL: Birdie ? <Env:Birdie.Prefs',NIL,NIL)
  718.         set(window,MUIA_Window_CloseRequest,MUI_TRUE)
  719.     ELSE
  720.         t:=String(StrLen(cmd)+20)
  721.         StringF(t,'Run >NIL: Birdie \s',cmd)
  722.         set(adr_stat,MUIA_Text_Contents,cat.msgiRun.getstr())
  723.         Execute(t,NIL,NIL)
  724.         DisposeLink(t)
  725.     ENDIF
  726.     IF flags AND FL_SAVE
  727.         tested:=FALSE
  728.         Execute('Copy >NIL: env:Birdie.prefs envarc:',NIL,NIL)
  729.     ENDIF
  730. ENDPROC
  731.  
  732. PROC parse(sini=FALSE) -> IF sini (set initial) is true, the object's MUIA_Cmenu_Initial will be set.
  733. DEF trim:PTR TO CHAR
  734.  
  735.     patternlen:=-1
  736.     
  737.     IF (InStr(LowerStr(cmd),'activepattern') <> -1) OR (StrCmp(MidStr(btmp,cmd,0,13),'activepattern'))
  738.         activep:=1
  739.     ELSE
  740.         activep:=0
  741.     ENDIF
  742.  
  743.     trim:=TrimStr(cmd)
  744.  
  745.     StrAdd(trim,' ')
  746.  
  747.     space:=-1
  748.     doMethodA(adr_l,[MUIM_List_Clear])
  749.  
  750.     REPEAT
  751.  
  752.         pos:=space+1
  753.         space:=InStr(trim,' ',pos)  /*pos->space = current word*/
  754.         MidStr(btmp,trim,pos,space-pos)
  755.  
  756.         IF EstrLen(btmp)>0
  757.             IF StrCmp(btmp,'lra')
  758.                 pos:=space+1;space:=InStr(trim,' ',pos)
  759.                 MidStr(tmp,trim,pos,space-pos)
  760.                 set(adr_lra,MUIA_Slider_Level,Val(tmp))
  761.                 IF sini THEN set(adr_lra,MUIA_Cmenu_Initial,Val(tmp))
  762.             ELSEIF StrCmp(btmp,'lga')
  763.                 pos:=space+1;space:=InStr(trim,' ',pos)
  764.                 MidStr(tmp,trim,pos,space-pos)
  765.                 set(adr_lga,MUIA_Slider_Level,Val(tmp))
  766.                 IF sini THEN set(adr_lga,MUIA_Cmenu_Initial,Val(tmp))
  767.             ELSEIF StrCmp(btmp,'lba')
  768.                 pos:=space+1;space:=InStr(trim,' ',pos)
  769.                 MidStr(tmp,trim,pos,space-pos)
  770.                 set(adr_lba,MUIA_Slider_Level,Val(tmp))
  771.                 IF sini THEN set(adr_lba,MUIA_Cmenu_Initial,Val(tmp))
  772.             ELSEIF StrCmp(btmp,'dra')
  773.                 pos:=space+1;space:=InStr(trim,' ',pos)
  774.                 MidStr(tmp,trim,pos,space-pos)
  775.                 set(adr_dra,MUIA_Slider_Level,Val(tmp))
  776.                 IF sini THEN set(adr_dra,MUIA_Cmenu_Initial,Val(tmp))
  777.             ELSEIF StrCmp(btmp,'dga')
  778.                 pos:=space+1;space:=InStr(trim,' ',pos)
  779.                 MidStr(tmp,trim,pos,space-pos)
  780.                 set(adr_dga,MUIA_Slider_Level,Val(tmp))
  781.                 IF sini THEN set(adr_dga,MUIA_Cmenu_Initial,Val(tmp))
  782.             ELSEIF StrCmp(btmp,'dba')
  783.                 pos:=space+1;space:=InStr(trim,' ',pos)
  784.                 MidStr(tmp,trim,pos,space-pos)
  785.                 set(adr_dba,MUIA_Slider_Level,Val(tmp))
  786.                 IF sini THEN set(adr_dba,MUIA_Cmenu_Initial,Val(tmp))
  787.             ELSEIF StrCmp(btmp,'nobitmaps')
  788.                 set(adr_nobmp,MUIA_Selected,MUI_TRUE)
  789.                 IF sini THEN set(adr_nobmp,MUIA_Cmenu_Initial,MUI_TRUE)
  790.             ELSEIF StrCmp(btmp,'noiconborder')
  791.                 set(adr_noborder,MUIA_Selected,MUI_TRUE)
  792.                 IF sini THEN set(adr_noborder,MUIA_Cmenu_Initial,MUI_TRUE)
  793.             ELSEIF StrCmp(btmp,'floodmaskmwb')
  794.                 set(adr_flood,MUIA_Selected,MUI_TRUE)
  795.                 IF sini THEN set(adr_flood,MUIA_Cmenu_Initial,MUI_TRUE)
  796.             ELSEIF StrCmp(btmp,'nolighting')
  797.                 set(adr_nolight,MUIA_Selected,MUI_TRUE)
  798.                 IF sini THEN set(adr_nolight,MUIA_Cmenu_Initial,MUI_TRUE)
  799.             ELSEIF StrCmp(btmp,'pubscreens')
  800.                 set(adr_pubscreens,MUIA_Selected,MUI_TRUE)
  801.                 IF sini THEN set(adr_pubscreens,MUIA_Cmenu_Initial,MUI_TRUE)
  802.             ELSEIF StrCmp(btmp,'exclude=',8)
  803.                 MidStr(tmp,btmp,8)
  804.                 set(adr_exclude,MUIA_String_Contents,tmp)
  805.                 set(adr_doexcl,MUIA_Selected,MUI_TRUE)
  806.                 IF sini
  807.                     set(adr_exclude,MUIA_Cmenu_Initial,tmp)
  808.                     set(adr_doexcl,MUIA_Cmenu_Initial,MUI_TRUE)
  809.                 ENDIF
  810.             ELSEIF StrCmp(btmp,'precision=',10)
  811.                 MidStr(tmp,btmp,10)
  812.                 set(adr_precision,MUIA_Slider_Level,Val(tmp))
  813.                 IF sini THEN set(adr_precision,MUIA_Cmenu_Initial,Val(tmp))
  814.             ELSEIF StrCmp(btmp,'imposelevel=',12)
  815.                 MidStr(tmp,btmp,12)
  816.                 set(adr_activelvl,MUIA_Slider_Level,Val(tmp))
  817.                 IF sini THEN set(adr_activelvl,MUIA_Cmenu_Initial,Val(tmp))
  818.             ELSEIF StrCmp(btmp,'activecolor=',12)
  819.                 MidStr(tmp,btmp,12,2)
  820.                 StringF(s2,'$\s',tmp)
  821.                 set(adr_colour,MUIA_Coloradjust_Red,Shl(Val(s2),24))
  822.                 MidStr(tmp,btmp,14,2)
  823.                 StringF(s2,'$\s',tmp)
  824.                 set(adr_colour,MUIA_Coloradjust_Green,Shl(Val(s2),24))
  825.                 MidStr(tmp,btmp,16,2)
  826.                 StringF(s2,'$\s',tmp)
  827.                 set(adr_colour,MUIA_Coloradjust_Blue,Shl(Val(s2),24))
  828.                 set(adr_activec,MUIA_Group_ActivePage,0)
  829.             ELSEIF Not(StrCmp(btmp,'activepattern'))
  830.                 IF activep=1
  831.                     activep:=0
  832.                     set(adr_activen,MUIA_String_Contents,btmp)
  833.                     set(adr_activec,MUIA_Group_ActivePage,1)
  834.                 ELSE
  835.                     patternlen++
  836.                     patternlist[patternlen]:=String(80)
  837.                     StrCopy(patternlist[patternlen],btmp)
  838.                 ENDIF
  839.             ENDIF
  840.         ENDIF
  841.         IF CtrlC()
  842.             space:=-1
  843.         ENDIF
  844.     UNTIL space = -1
  845.  
  846.     patternlen++
  847.     patternlist[patternlen]:=NIL
  848.  
  849.     set(adr_current,MUIA_String_Contents,patternlist[])
  850.     doMethodA(adr_l,[MUIM_List_Insert,patternlist,-1,MUIV_List_Insert_Bottom])
  851.     set(adr_l,MUIA_List_Active,MUIV_List_Active_Top)
  852. ENDPROC TRUE
  853.  
  854. PROC writecmd()
  855.     StrCopy(cmd,'')
  856.     get(adr_lra,MUIA_Slider_Level,{n})
  857.     IF n <> 60
  858.         StringF(tmp,' lra \d',n)
  859.         StrAdd(cmd,tmp)
  860.     ENDIF
  861.     get(adr_lga,MUIA_Slider_Level,{n})
  862.     IF n <> 60
  863.         StringF(tmp,' lga \d',n)
  864.         StrAdd(cmd,tmp)
  865.     ENDIF
  866.     get(adr_lba,MUIA_Slider_Level,{n})
  867.     IF n <> 60
  868.         StringF(tmp,' lba \d',n)
  869.         StrAdd(cmd,tmp)
  870.     ENDIF
  871.     get(adr_dra,MUIA_Slider_Level,{n})
  872.     IF n <> -60
  873.         StringF(tmp,' dra \d',n)
  874.         StrAdd(cmd,tmp)
  875.     ENDIF
  876.     get(adr_dga,MUIA_Slider_Level,{n})
  877.     IF n <> -60
  878.         StringF(tmp,' dga \d',n)
  879.         StrAdd(cmd,tmp)
  880.     ENDIF
  881.     get(adr_dba,MUIA_Slider_Level,{n})
  882.     IF n <> -60
  883.         StringF(tmp,' dba \d',n)
  884.         StrAdd(cmd,tmp)
  885.     ENDIF
  886.     get(adr_nobmp,MUIA_Selected,{n})
  887.     IF n=MUI_TRUE THEN StrAdd(cmd,' Nobitmaps')
  888.     get(adr_noborder,MUIA_Selected,{n})
  889.     IF n=MUI_TRUE THEN StrAdd(cmd,' NoIconBorder')
  890.     get(adr_flood,MUIA_Selected,{n})
  891.     IF n=MUI_TRUE THEN StrAdd(cmd,' FloodMaskMwb')
  892.     get(adr_nolight,MUIA_Selected,{n})
  893.     IF n=MUI_TRUE THEN StrAdd(cmd,' NoLighting')
  894.     get(adr_pubscreens,MUIA_Selected,{n})
  895.     IF n=MUI_TRUE THEN StrAdd(cmd,' PubScreens')
  896.     get(adr_doexcl,MUIA_Selected,{n})
  897.     IF n = MUI_TRUE
  898.         get(adr_exclude,MUIA_String_Contents,{s})
  899.         StringF(tmp,' Exclude=\s',s)
  900.         StrAdd(cmd,tmp)
  901.     ENDIF
  902. /*    get(adr_noxmas,MUIA_Selected,{n})
  903.     IF n=MUI_TRUE THEN StrAdd(cmd,' NoXmas')
  904. */    get(adr_precision,MUIA_Slider_Level,{n})
  905.     IF n <> -1
  906.         StringF(tmp,' precision=\d',n)
  907.         StrAdd(cmd,tmp)
  908.     ENDIF
  909.  
  910.     get(adr_active,MUIA_Selected,{n})
  911.     IF n = MUI_TRUE
  912.         get(adr_activec,MUIA_Group_ActivePage,{n})
  913.         IF n=1 -> Pattern
  914.             get(adr_activen,MUIA_String_Contents,{s})
  915.             StringF(tmp,' ActivePattern \s',s)
  916.             StrAdd(cmd,tmp)
  917.         ELSE -> Colour
  918.             get(adr_colour,MUIA_Coloradjust_Red,{red})
  919.             get(adr_colour,MUIA_Coloradjust_Green,{green})
  920.             get(adr_colour,MUIA_Coloradjust_Blue,{blue})
  921.  
  922.             red:=Shr(red,24)
  923.             green:=Shr(green,24)
  924.             blue:=Shr(blue,24)
  925.             IF red < 0 THEN red:=256+red
  926.             IF green < 0 THEN green:=256+green
  927.             IF blue < 0 THEN blue:=256+blue
  928.             StringF(tmp,' ActiveColor=\z\h[2]\z\h[2]\z\h[2]',red,green,blue)
  929.             StrAdd(cmd,tmp)
  930.             get(adr_activelvl,MUIA_Slider_Level,{n})
  931.             IF n <> 50
  932.                 StringF(tmp,' ImposeLevel=\d',n)
  933.                 StrAdd(cmd,tmp)
  934.             ENDIF
  935.         ENDIF
  936.     ENDIF
  937.     FOR n:=0 TO patternlen-1
  938.         StringF(tmp,' \s',patternlist[n])
  939.         StrAdd(cmd,tmp)
  940.     ENDFOR
  941. ENDPROC
  942.  
  943. PROC resetvalues()
  944.     set(adr_lra,MUIA_Slider_Level,60)
  945.     set(adr_lga,MUIA_Slider_Level,60)
  946.     set(adr_lba,MUIA_Slider_Level,60)
  947.     set(adr_dra,MUIA_Slider_Level,-60)
  948.     set(adr_dga,MUIA_Slider_Level,-60)
  949.     set(adr_dba,MUIA_Slider_Level,-60)
  950.     set(adr_nobmp,MUIA_Selected,FALSE)
  951.     set(adr_noborder,MUIA_Selected,FALSE)
  952.     set(adr_flood,MUIA_Selected,FALSE)
  953.     set(adr_nolight,MUIA_Selected,FALSE)
  954.     set(adr_pubscreens,MUIA_Selected,FALSE)
  955. ->    set(adr_noxmas,MUIA_Selected,FALSE)
  956.     set(adr_active,MUIA_Selected,MUI_TRUE)
  957.     set(adr_precision,MUIA_Slider_Level,-1)
  958.     set(adr_current,MUIA_String_Contents,'')
  959.     set(adr_activec,MUIA_Group_ActivePage,1)
  960.     set(adr_activen,MUIA_String_Contents,'')
  961. ENDPROC
  962.