arexxtlacitka.png (1250 bytes) Arexx RxMUI Docs Examples Back to Ghh home page
/* RxMUI by Alfonso Ranieri */
/* ghh RxMUI AppWindow      */

signal on halt
signal on break_c

call Init         /* volá funkci Init */
call CreateApp    /* volá funkci CreateApp (hlavní program) */
call HandleApp    /* volá funkci HandleApp (hlavní event) */

/**************************************** přítomnost knihoven Alfie ****/
Init: procedure expose global.
    l="rmh.library";if ~show("L",l) then;if ~AddLib(l,0,-30) then exit
    if RMH_AddLibrary("rexxsupport.library","rxmui.library")~=0 then exit
    call Pragma("W","N")
    call RxMUIOpt("DebugMode ShowErr")
    return

/******************************************************** start gui ****/
CreateApp: procedure expose global.                          /* hlavní program */

    app.Title="RxMUI AppWindow"                              /* název programu (v Exchange) */
    app.Version="$VER: RxMUI AppWindow 0.1 (02.11.2016)"     /* verze programu */
    app.Copyright="Donotpanicware ghh 2016"
    app.Author="ghh"
    app.Description="RxMUI AppWindow"                        /* popis programu (v Exchange) */
    app.Base="RXMUIAPP"                                      /* název Arexx portu */
    app.SubWindow="win"                                      /* název hlavního okna "win" */
     win.ID="MWIN"                                           /* id hlavního okna */
     win.ScreenTitle="RxMUI AppWindow"                       /* titulek na liště Workbenche */
     win.Title="AppWindow"                                   /* titulek na okně */
     win.AppWindow=1                                         /* důležité aby fungoval drop ikon do okna */
     win.Contents="mgroup"                                   /* okno obsahuje hlavní skupinu s názvem "mgroup" */
      mgroup.0="txg"                                         /* pole "txg" */
       txg.Class="Group"                                     /* "txg" je další skupina */
       txg.Frame="Group"                                     /* typ rámečku */
        txg.0=VSpace()                                       /* vertikální mezera bez hodnoty = libovolně */
        txg.1=Text("textpole","Drop icon here!","None","WindowBack",) /* textobjekt s názvem "textpole" */
        txg.2=VSpace()                                       /* vertikální mezera */ /* konec popisu gui */

/*********************************************************** notify ****/
    if NewObj("Application","App")>0 then exit        /* nový objekt - aplikace "App" */
    call AppMessage("win")                            /* ještě toto je potřeba přidat pro drop do okna "win" */

    call Notify("win","CloseRequest",1,"App","ReturnID","QUIT")  /* opuštění programu zavřením okna */

    call Set("win","Open",1)

    return

/************************************************* funkce AppWinFun ****/
AppWinFun: procedure expose g.
    parse arg kam,coto        /* převede parametry se kterýmy byla funkce volána na proměnné "kam" a "coto" */
                              /* "kam" kam byla ikona upuštěna (do okna WIN) a "coto" co bylo do okna upuštěno */
    call Set("textpole","Contents",coto)   /* nastav u objektu "textpole", "Contents" obsah, název     */
    return

/*********************************************** hlavní event alfie ****/
HandleApp: procedure expose g.

    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 exit
            when h.event="APPEVENT" then call AppWinFun(h.to,h.name) /* volá funkci "AppWinFun" se dvěma parametry */
                                                 /* názvy parametrů "h.to" a "h.name" jsou povinné viz dokumentace */
            otherwise interpret h.event
        end
    end

/****************************************************** exit signal ****/
halt:
break_c:
    exit
ghh don'tpanic