home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Programming / RxMUI / Examples / urlbar.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2001-05-24  |  4.5 KB  |  163 lines

  1. /* URLBar&D 1.2 (8.2.2000) */
  2.  
  3. signal on halt
  4. signal on break_c
  5. call init
  6. call CreateApp
  7. call HandleApp
  8. /* never reached */
  9.  
  10.  
  11. init: procedure expose global.
  12.     l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  13.     if AddLibrary("rxmui.library")~=0 then exit
  14.  
  15.     global.url.0.url="http://www.amiga.org";                    global.url.0.name="Amiga org"
  16.     global.url.1.url="http://www.napster.com";                  global.url.1.name="Napster"
  17.     global.url.2.url="http://web.tiscalinet.it/amiga/rxmui";    global.url.2.name="RxMUI"
  18.     global.url.3.url="http://ftp.unina.it/~aminet/";            global.url.3.name="Aminet"
  19.     global.url.max=4
  20.  
  21.     return
  22.  
  23.  
  24. HandleApp: procedure expose global.
  25.     ctrl_c=2**12
  26.     do forever
  27.         call NewHandle("APP","H",ctrl_c)
  28.         if and(h.signals,ctrl_c)~=0 then exit
  29.         select
  30.             when h.event="QUIT" then exit
  31.             when h.event="DROPEVENT" then call DropFun(h.from,h.to)
  32.             when left(h.event,1)="B" then do
  33.                 parse var h.event "B" b
  34.                 say global.url.b.url global.url.b.name
  35.             end
  36.             otherwise interpret h.event
  37.         end
  38.     end
  39.     /* never reached */
  40.  
  41.  
  42. err: procedure expose sigl RxMUIError
  43. parse arg res
  44.     msg = ProgramName()":" GetRxMUIString(res) "in line" sigl-1
  45.     if RxMUIError~="RXMUIERROR" then msg = msg "["RxMUIError"]"
  46.     say msg
  47.     exit
  48.  
  49.  
  50. CreateApp: procedure expose global.
  51.  
  52.     strip.0="mproject"
  53.      mproject.class="menu"
  54.      mproject.Title="Project"
  55.       mproject.0=menuitem("mabout","About...","?")
  56.       mproject.1=menuitem("maboutrxmui","About RxMUI...")
  57.       mproject.2=menuitem("maboutmui","About MUI...")
  58.       mproject.3=menuitem("","BAR")
  59.       mproject.4=menuitem("mhide","Hide","H")
  60.       mproject.5=menuitem("","BAR")
  61.       mproject.6=menuitem("mquit","Quit","Q")
  62.     strip.1="meditor"
  63.      meditor.class="menu"
  64.      meditor.Title="Editor"
  65.       meditor.0=menuitem("msort","Sort")
  66.       meditor.1=menuitem("","BAR")
  67.       meditor.2=menuitem("mmui","MUI...")
  68.     res=NewObj("menustrip","strip")
  69.     if res~=0 then call err(res)
  70.  
  71.     app.title="URLBar"
  72.     app.version="$VER: URLBar&D 1.0 (12.10.2000)"
  73.     app.copyright="©2000, alfie"
  74.     app.author="alfie"
  75.     app.description="URLBar (RxMUI D&D example)"
  76.     app.base="URLBAR"
  77.     app.MenuStrip="strip"
  78.     app.SubWindow="win"
  79.  
  80.      win.title="URLBar"
  81.      win.ScreenTitle="URLBar"
  82.      win.ID="MWIN"
  83.      win.contents="mgroup"
  84.  
  85.       mgroup.0="g"
  86.        g.class="group"
  87.        g.Frame="group"
  88.        g.FrameTitle="Drag & Drop these buttons!"
  89.        g.SameSize=1
  90.        g.columns=4
  91.        do i=0 to global.url.max-1
  92.            interpret "b"i".draggable=1"
  93.            interpret "b"i".dropable=1"
  94.            g.i=button("b"i,global.url.i.name)
  95.        end
  96.  
  97.     res=NewObj("application","app")
  98.     if res~=0 then call err(res)
  99.  
  100.     do i=0 to global.url.max-2
  101.         do j=i+1 to global.url.max-1
  102.             call DandD("b"i,"b"j,"both")
  103.         end
  104.         call Notify("b"i,"pressed",0,"app","ReturnID")
  105.     end
  106.     call Notify("b"i,"pressed",0,"app","ReturnID")
  107.  
  108.     call Notify("win","CloseRequest",1,"app","ReturnID","quit")
  109.  
  110.     call Notify("mabout","MenuTrigger","EveryTime","app","about","win")
  111.     call Notify("maboutrxmui","MenuTrigger","EveryTime","app","AboutRxMUI","win")
  112.     call Notify("maboutmui","menutrigger","everytime","app","AboutMUI","win")
  113.     call Notify("mhide","menutrigger","everytime","app","set","iconified",1)
  114.     call Notify("mquit","menutrigger","everytime","app","ReturnID","quit")
  115.     call Notify("msort","menutrigger","everytime","app","return","call sort")
  116.     call Notify("mmui","menutrigger","everytime","app","OpenConfigWindow")
  117.  
  118.     call set("win","open",1)
  119.     if ~xget("win","open") then do
  120.         say ProgramName()": can't open window"
  121.         exit
  122.     end
  123.  
  124.     return
  125.  
  126.  
  127. halt:
  128. break_c:
  129.     exit
  130.  
  131.  
  132. /* this is a drag and drop between 2 NList view */
  133. DropFun: procedure expose global.
  134. parse arg from,to
  135.     parse var from "B" f
  136.     parse var to "B" t
  137.     TempURL  = global.url.f.url
  138.     TempName = global.url.f.name
  139.     global.url.f.url  = global.url.t.url
  140.     global.url.f.name = global.url.t.name
  141.     global.url.t.url  = TempURL
  142.     global.url.t.name = TempName
  143.     temp=xget(from,"contents")
  144.     call set(from,"contents",xget(to,"contents"))
  145.     call set(to,"contents",temp)
  146.     return
  147.  
  148.  
  149. sort: procedure expose global.
  150.  
  151.     call set("win","sleep",1)
  152.  
  153.     do i=0 to global.url.max-2
  154.         do j=i+1 to global.url.max-1
  155.             if global.url.j.name<global.url.i.name then call DropFun("B"j,"B"i)
  156.         end
  157.     end
  158.  
  159.     call set("win","sleep",0)
  160.  
  161.     return
  162.  
  163.