home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmigaPlus / Tools / Development / RxMUI / Examples / UrlBar.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2004-01-31  |  4.4 KB  |  160 lines

  1. /* URLBar 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("rexxsupport.library","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://alfie.monrif.net/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.  
  120.     return
  121.  
  122.  
  123. halt:
  124. break_c:
  125.     exit
  126.  
  127.  
  128. /* this is a drag and drop between 2 NList view */
  129. DropFun: procedure expose global.
  130. parse arg from,to
  131.     parse var from "B" f
  132.     parse var to "B" t
  133.     TempURL  = global.url.f.url
  134.     TempName = global.url.f.name
  135.     global.url.f.url  = global.url.t.url
  136.     global.url.f.name = global.url.t.name
  137.     global.url.t.url  = TempURL
  138.     global.url.t.name = TempName
  139.     temp=xget(from,"contents")
  140.     call set(from,"contents",xget(to,"contents"))
  141.     call set(to,"contents",temp)
  142.     return
  143.  
  144.  
  145. sort: procedure expose global.
  146.  
  147.     call set("win","sleep",1)
  148.  
  149.     do i=0 to global.url.max-2
  150.         do j=i+1 to global.url.max-1
  151.             if global.url.j.name<global.url.i.name then call DropFun("B"j,"B"i)
  152.         end
  153.     end
  154.  
  155.     call set("win","sleep",0)
  156.  
  157.     return
  158.  
  159.  
  160.