home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 19 / AACD19.BIN / AACD / Programming / rxmui / examples / urlbar.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2001-01-29  |  4.1 KB  |  165 lines

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