/* This is the base for a never written tutorial */

signal on halt
signal on break_c

/* first of all add the needed libraries */
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("DebugMode ShowErr")

/* create the application */
call createApp

/* open the window and check if it is */
call set("win","open",1)

/* handle the application */
call handleApp
exit
/***********************************************************************/
handleApp: procedure
/* this is the standard cycle to handle an application */
ctrl_C=2**12
s=0
do forever
    call handle("APP","H",s)
    do i=0 to h.num-1
        id=h.i
        select
            when id="QUIT" then exit
            otherwise say h.i
        end
    end
    s=wait(or(h.signals,ctrl_C))
    if and(s,ctrl_C)~=0 then exit
end
/* never reached */
/***********************************************************************/
err: procedure expose sigl rxmuierror
parse arg res
say sigl "["res"]"
    say getrxmuistring(res) "in line" sigl-1 rxmuierror
    exit
/***********************************************************************/
createApp: procedure

    /* first of all the let's create the menu strip
     * here made only of one item "Project"
     */
    strip.0="mproject"
     mproject.Title="Project"
     mproject.class="menu"
      mproject.0=menuitem("mabout","?\About...")
      mproject.1=menuitem("maboutrxmui","X\About RxMUI...")
      mproject.2=menuitem("maboutmui","!\About MUI...")
      mproject.3=menuitem("","BAR")
      mproject.4=menuitem("mhide","H\Hide")
      mproject.5=menuitem("","BAR")
      mproject.6=menuitem("mquit","Q\Quit")
    res=NewObj("menustrip","strip")
    if res~=0 then call err(res)

    /* with one NewObj() call we create many objects */

    /* first of all the let's define the application object */
    app.Title="Tutorial2"
    app.Version="$VER: Tutorial2 1.1 (25.1.2002)"
    app.Copyright="Copyright 1999-2002 Alfonso Ranieri"
    app.Author="Alfonso Ranieri"
    app.Description="Just a little example"
    app.Base="EXAMPLE"
    app.diskobject="rxmui"
    app.ctrlc=1
    app.menustrip="strip"
    app.subwindow="win"

     /* let's define the window */
     win.ID="MAIN"
     win.Title="A Tutorial"
     win.Contents="mgroup"

      /* let's define the window contents */
      mgroup.0="dg"
       dg.class="group"
       dg.frame="group"
       dg.columns=2
        dg.0=label("_Name");
        dg.1=String("name",'n')
        dg.2=label("_Age");
        dg.3=MakeObj(,"HLeft",MakeObj("Age","NumericButton","a",0,150,30))
        dg.4=label("_Sex")
        dg.5=MakeObj(,"HLeft",MakeObj("Sex","Radio","Male|Female","_Sex",,1))
        dg.6=label("_Knowledge");
        dg.7=MakeObj("known","Cycle","Novice|Average|Good|Expert","_Knowledge")
        dg.8=label("Language(s)")
        dg.9="lg"
         lg.class="group"
         lg.horiz=1
          lg.0=checkmark("BASIC",,'b');lg.1=label("_Basic");lg.2=hspace(5)
          lg.3=checkmark("ARexx",,'a');lg.4=label("_ARexx");lg.5=hspace(5)
          lg.6=checkmark("C",,'c');lg.7=label("_C");lg.8=hspace(5)
          lg.9=checkmark("ASM",,'m');lg.10=label("AS_M");lg.11=hvspace()
      mgroup.1="bg"
       bg.class="group"
       bg.columns=3
        bg.0=Button("RESET","_Reset Form")
        bg.1=Button("DONE","_Done")
        bg.2=Button("CANCEL","Cance_l")

    /* create all */
    call NewObj("APPLICATION","APP")

    /* window close gadget means quit */
    call Notify("WIN","CLOSEREQUEST",1,"APP","RETURNID","QUIT")

    /* done gadget should do something else, anyway means quit */
    call Notify("done","pressed",0,"APP","RETURNID","QUIT")

    /* cancel gadget means quit */
    call Notify("cancel","pressed",0,"APP","RETURNID","QUIT")

    /* about menuitem means show the automatic about requester */
    call Notify("mabout","menutrigger","Everytime","app","about","win")

    /* aboutrxmui menuitem means show the rxmui about requester */
    call Notify("maboutrxmui","menutrigger","everytime","app","aboutrxmui","win")

    /* aboutmui menuitem means show the about MUI window */
    call Notify("maboutmui","menutrigger","everytime","app","aboutmui","win")

    /* hide menuitem means hide all windows (just one here) */
    call Notify("mhide","menutrigger","everytime","app","set","iconified",1)

    /* quit menu item means quit */
    call Notify("mquit","menutrigger","everytime","app","returnid","quit")

    call set("win","activeobject","done")
    return
/***********************************************************************/
halt:
break_c:
    exit
/**************************************************************************/

