/* Cute one: all is done via MakeObj() calls */

signal on halt
signal on break_c

l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
if AddLibrary("rexxsupport.library","rxmui.library")~=0 then exit

call rxmuiopt("showerr debugmode")

call CreateApp
call handleApp

/***********************************************************************/
CreateApp: procedure


    app.Title="Slidorama"
    app.Version="$VER: Slidorama 1.0 (17.12.00)"
    app.Copyright="©1999, alfie"
    app.Author="alfie"
    app.Description="Slidorama example"
    app.Base="EXAMPLE"
    app.menustrip=MakeObj(,"menustrip",,
                    MakeObj(,"menu","Project",,
                        menuitem("mabout","About...","?"),,
                        menuitem("maboutrxmui","About RxMUI..."),,
                        menuitem("maboutmui","About MUI..."),,
                        menuitem("","BAR"),,
                        menuitem("mhide","Hide","H"),,
                        menuitem("","BAR"),,
                        menuitem("mquit","Quit","Q")),,
                    MakeObj("medit","menu","Editor",,
                        MakeObj(,"MenuItem",menuitem("mtest","Test"),,
                            menuitem("mtest1","Show all",,"CHECKED CHEKIT TOGGLE",6),,
                            menuitem("mtest2","Show left",,"CHEKIT TOGGLE",5),,
                            menuitem("mtest3","Show right",,"CHEKIT TOGGLE",3))))

    app.SubWindow="win"
     win.ID="MAIN"
     win.Title="Slidorama"

     sl.Stringify="parse arg v;if v=0 then return ' You''re kidding! '; if v<40 then return v 'points. :-(';if v<61 then return v 'points. :-|';if v=100 then return ' It''s magic! '; return v 'points. :-)'"

     win.Contents=,
        MakeObj("mgroup","VGroup",,
            MakeObj(,"HGroup",,
                MakeObj("left","HFrameGroup","Knobs",,
                    MAkeObj(,"HCenter",,
                        MAkeObj(,"VCenter",,
                            MakeObj(,"ColGroup",2,,
                                Label("Volume:"),,
                                MakeObj(,"HGroup",,
                                    MakeObj(,"Knob",,0,64,64),,
                                    MakeObj(,"Knob",,0,64,64),,
                                    MakeObj(,"Knob",,0,64,64),,
                                    MakeObj(,"Knob",,0,64,64)),,
                                Label("Bass:"),,
                                MakeObj(,"HGroup",,
                                    MakeObj(,"Knob",,-100,100,0),,
                                    MakeObj(,"Knob",,-100,100,0),,
                                    MakeObj(,"Knob",,-100,100,0),,
                                    MakeObj(,"Knob",,-100,100,0)),,
                                Label("Treble:"),,
                                MakeObj(,"HGroup",,
                                    MakeObj(,"Knob",,-100,100,0),,
                                    MakeObj(,"Knob",,-100,100,0),,
                                    MakeObj(,"Knob",,-100,100,0),,
                                    MakeObj(,"Knob",,-100,100,0)))))),,
                MakeObj("right","VGroup",,
                    MakeObj(,"HFrameGroup","Levelmeter Displays",,
                        MakeObj(,"HCenter",,
                            MAkeObj(,"VCenter",,
                                MakeObj(,"HGroup",,
                                    MakeObj("lm1","Levelmeter",,,,,"Horizontal"),,
                                    MakeObj("lm2","Levelmeter",,,,,"Vertical"),,
                                    MakeObj("lm3","Levelmeter",,,,,"Total"))))),,
                    MakeObj(,"HFrameGroup","Numeric Buttons",,
                        MakeObj(,"HCenter",,
                            MakeObj(,"ColGroup",2,,
                                Label("Low:"),,
                                MakeObj(,"HGroup",,
                                    MakeObj(,"NumericButton",,,,,"%ld %%"),,
                                    MakeObj(,"NumericButton",,,,,"%ld %%"),,
                                    MakeObj(,"NumericButton",,,,,"%ld %%")),,
                                Label("Mid:"),,
                                MakeObj(,"HGroup",,
                                    MakeObj(,"NumericButton",,,,,"%ld %%"),,
                                    MakeObj(,"NumericButton",,,,,"%ld %%"),,
                                    MakeObj(,"NumericButton",,,,,"%ld %%")),,
                                Label("High:"),,
                                MakeObj(,"HGroup",,
                                    MakeObj(,"NumericButton",,,,,"%ld %%"),,
                                    MakeObj(,"NumericButton",,,,,"%ld %%"),,
                                    MakeObj(,"NumericButton",,,,,"%ld %%"))))))),,
            MakeObj(,"HGroup",,
                Label("Slidorama Rating:"),,
                MakeObj("sl","Slider")))

    res=NewObj("application","app")
    if res~=0 then exit

    call Notify("win","closerequest",1,"_app","returnid","quit")
    call Notify("mabout","menutrigger","everytime","_app","about","win")
    call Notify("maboutrxmui","menutrigger","everytime","_app","aboutrxmui","win")
    call Notify("maboutmui","menutrigger","everytime","_app","aboutmui","win")
    call Notify("mhide","menutrigger","everytime","_app","set","iconified",1)
    call Notify("mquit","menutrigger","everytime","_app","returnid","quit")

    call Notify("mtest1","checked",1,"left","set","showme",1)
    call Notify("mtest1","checked",1,"right","set","showme",1)

    call Notify("mtest2","checked",1,"left","set","showme",1)
    call Notify("mtest2","checked",1,"right","set","showme",0)

    call Notify("mtest3","checked",1,"right","set","showme",1)
    call Notify("mtest3","checked",1,"left","set","showme",0)

    call Notify("sl","value","EveryTime","lm1","set","value","triggervalue")
    call Notify("sl","value","EveryTime","lm2","set","value","triggervalue")
    call Notify("sl","value","EveryTime","lm3","set","value","triggervalue")

    call set("lm2","Reverse",1)

    call set("win","open",1)

    return
/**************************************************************************/
handleApp: procedure
    hggg=1
    ctrl_c=2**12
    do forever
        call newhandle("APP","H",ctrl_c)
        if and(h.signals,ctrl_c)>0 then exit
        select
            when h.event="QUIT" then do
                exit
            end
            otherwise say h.event
        end
    end
/***********************************************************************/
halt:
break_c:
    exit
/**************************************************************************/

