home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 345.lha / snap_v1.4 / startsnap.rexx < prev    next >
OS/2 REXX Batch file  |  1990-02-13  |  13KB  |  524 lines

  1. /* Arexx script to help people with Snap arguments */
  2.  
  3. signal on error
  4.  
  5. if ~show('l', "rexxarplib.library") then do
  6.     check = addlib('rexxsupport.library',0,-30,0)
  7.     check = addlib('rexxmathlib.library',0,-30,0)
  8.     check = addlib('rexxarplib.library',0,-30,0)
  9. end
  10.  
  11. if ~exists("fonts:helvetica/15") then do
  12.     say "Actually I need font 'Helvetica 15', but I'll try anyway."
  13. end
  14.  
  15. bool.0 = 'OFF'; bool.1 = 'ON'
  16.  
  17. /* Fix window dimensions */
  18.  
  19. screen.width = ScreenCols()
  20. screen.height = ScreenRows()
  21.  
  22. window.width = 530
  23. window.height = 200
  24. window.leftedge = (screen.width-window.width)/2
  25. window.topedge = (screen.height-window.height)/2
  26.  
  27. /* Set up a host */
  28. parse version 'V' vers .
  29. signal on syntax
  30. call stop(SNAPHOST)
  31. syntax:
  32. if vers > 1.06 then
  33.     address AREXX  "'call CreateHost(SNAPHOST, SNAPPORT)'"
  34. else
  35.     "runwsh >nil:" "'call CreateHost(SNAPHOST, SNAPPORT)'"
  36.  
  37. /*
  38. *   Wait for a while until host is ready.
  39. */
  40. do for 50 while ~show('Ports','SNAPHOST')
  41.    call delay 10  /* 200 ms */
  42. end
  43.  
  44. call SetReqColor(SNAPHOST, BLOCKPEN, 1)
  45. call SetReqColor(SNAPHOST, DETAILPEN, 0)
  46.  
  47. /*
  48. *   Open the window
  49. */
  50. window.idcmp = 'CLOSEWINDOW+GADGETUP+RAWKEY'
  51. window.flags = 'WINDOWCLOSE+WINDOWDRAG+WINDOWDEPTH+ACTIVATE'
  52.  
  53. title = "Setup tool for Snap"
  54.  
  55. call OpenWindow(SNAPHOST, window.leftedge, window.topedge, window.width, ,
  56.                 window.height, window.idcmp, window.flags, title)
  57.  
  58. call ModifyHost(SNAPHOST, RAWKEY, "RAWKEY %c")
  59.  
  60. if exists("fonts:Helvetica/15") then do
  61.     call SetFont(SNAPHOST, "Helvetica.font", 15)
  62. end
  63.  
  64. signal dotext
  65. /* --- Start of texts ---
  66. "      Please hold on..."    5  20 60 ""
  67. "Priority:"                  5  40  6 "Input handler priority."
  68. "Insert key:"              215  60  9 "Key used with Left Amiga to insert."
  69. "Window key:"              215  80  9 "Key used with Left Amiga to open control window."
  70. "Char delay:"              215 100  9 "Delay after each inserted character"
  71. "Line delay:"              215 120  9 "Delay after each inserted newline."
  72. "Bit mask:"                215 140  9 "Bit planes to draw selection frame into."
  73. "Starting unit:"           215 160  9 "Unit in which to start snapping."
  74. "Prepend:"                   5 180  6 "Characters added in front of each line in modified inserts."
  75. "Append:"                  215 180  6 "Characters added at the end of each line in modified inserts."
  76. "Selection frame pattern:" 345  40 19 "Pattern used for crawling dots in selection frame."
  77. "Text qualifier:"            5  60 11 "Qualifier used when snapping characters."
  78. "Gfx qualifier:"           110  60 11 "Qualifier used when snapping graphics."
  79. EOT
  80. --- End of texts --- */
  81.  
  82. dotext:
  83. textlines = sigl+1
  84.  
  85. call SetReqColor(SNAPHOST, 'BOXPEN', 0)
  86. call SetReqColor(SNAPHOST, 'SHADOWPEN', 0)
  87. call SetAPen(SNAPHOST, 1)
  88. do i=1 while sourceline(textlines+i) ~= "EOT"
  89.     parse value sourceline(textlines+i) with '"'text'"' x y w . '"'help'"'
  90.     call AddGadget(SNAPHOST, x, y, 'HLP'i, copies(' ',w), "HELP "help)
  91. end
  92.  
  93. call SetReqColor(SNAPHOST, 'BOXPEN', 2)
  94. call SetReqColor(SNAPHOST, 'SHADOWPEN', 3)
  95. do i=1 while sourceline(textlines+i) ~= "EOT"
  96.     parse value sourceline(textlines+i) with '"'text'"' x y w . '"'help'"'
  97.     call Move(SNAPHOST, x, y+10); call Text(SNAPHOST, text)
  98. end
  99.  
  100. /* Set up some nice gadgets */
  101. x = 65
  102. do i=51 for 5
  103.     call AddGadget(SNAPHOST,  x, 40, 'PR'i, ''i'', 'PRIORITY 'i); x = x+27
  104. end
  105.  
  106. inscode.1 = 23;  inscode.2 = 15;  inscode.3 = 34
  107. inskey.1 = 'I';  inskey.2 = 'Y';  inskey.3 = 'V'
  108. x = 300
  109. do i=1 for 3
  110.     call AddGadget(SNAPHOST, x, 60, 'INS'i, inskey.i, 'INSKEY 'i); x = x+20
  111. end
  112.  
  113. cwcode.1 = 17;  cwcode.2 = 51;  cwcode.3 = 24
  114. cwkey.1 = 'W';  cwkey.2 = 'C';  cwkey.3 = 'O'
  115. x = 300
  116. do i=1 for 3
  117.     call AddGadget(SNAPHOST, x, 80, 'CW'i, cwkey.i, 'CWKEY 'i); x = x+20
  118. end
  119.  
  120. x = 300
  121. do i=0 for 3
  122.     call AddGadget(SNAPHOST, x, 100, 'CDL'i, i, 'CDELAY 'i); x = x+20
  123. end
  124.  
  125. x = 300
  126. do i=0 for 3
  127.     call AddGadget(SNAPHOST, x, 120, 'LDL'i, i, 'LDELAY 'i); x = x+20
  128. end
  129.  
  130. x = 300
  131. do i=0 for 3
  132.     call AddGadget(SNAPHOST, x, 140, 'MSK'i, i, 'MASK 'i); x = x+20
  133. end
  134.  
  135. call AddGadget(SNAPHOST, 300, 160, 'UNT'0, "Frame", 'UNIT 0')
  136. call AddGadget(SNAPHOST, 350, 160, 'UNT'1, "Char ", 'UNIT 1')
  137.  
  138. call AddGadget(SNAPHOST, 365,  60, 'XERX', 'Immediate insert', 'XEROX')
  139. call AddGadget(SNAPHOST, 365,  80, 'JOIN', 'Join long lines ', 'JOIN')
  140. call AddGadget(SNAPHOST, 365, 100, 'PTCH', 'Early patch     ', 'PATCH')
  141. call AddGadget(SNAPHOST, 365, 120, 'USCR', 'True underscore ', 'UNDERSCORE')
  142.  
  143. call AddGadget(SNAPHOST,  70, 180, 'PREP', "> ", 'PREP %g', 128)
  144. call AddGadget(SNAPHOST, 280, 180,  'APP',   "",  'APP %g', 128)
  145.  
  146. call SetReqColor(SNAPHOST, 'SHADOWPEN', 0L)
  147. y = 18
  148. do i=0 for 16
  149.     call AddGadget(SNAPHOST, 510,  y, 'PAT'i, ' ', 'PATTERN 'i); y = y+11
  150. end
  151. call SetReqColor(SNAPHOST, 'SHADOWPEN', 3L)
  152.  
  153. bit.1 = 0; desc.1 = 'Left Shift '
  154. bit.2 = 1; desc.2 = 'Right Shift'
  155. bit.3 = 3; desc.3 = 'Control    '
  156. bit.4 = 4; desc.4 = 'Left Alt   '
  157. bit.5 = 5; desc.5 = 'Right Alt  '
  158. bit.6 = 6; desc.6 = 'Left Amiga '
  159. bit.7 = 7; desc.7 = 'Right Amiga'
  160.  
  161. y = 75
  162. do i=1 for 7
  163.     call AddGadget(SNAPHOST,   5, y,  'TQ'i, desc.i, 'TEXTQUAL 'i)
  164.     call AddGadget(SNAPHOST, 110, y,  'GQ'i, desc.i, 'GFXQUAL 'i)
  165.     y = y+15
  166. end
  167.  
  168. call AddGadget(SNAPHOST, 430, 172, 'APPLY', ' Apply\settings', 'APPLY')
  169.  
  170. /* Open our host port */
  171. call openport(SNAPPORT)
  172.  
  173. start:
  174.  
  175. call ShowText("     Setting defaults...")
  176. pri = 51;           call SetGadget(SNAPHOST, 'PR51', 'ON')
  177. textqual = '0040'x; call SetGadget(SNAPHOST,  'TQ6', 'ON')
  178. gfxqual  = '0080'x; call SetGadget(SNAPHOST,  'GQ7', 'ON')
  179. inskey = 1;         call SetGadget(SNAPHOST, 'INS1', 'ON')
  180. cwkey = 1;          call SetGadget(SNAPHOST,  'CW1', 'ON')
  181. cdelay = 0;         call SetGadget(SNAPHOST, 'CDL0', 'ON')
  182. ldelay = 0;         call SetGadget(SNAPHOST, 'LDL0', 'ON')
  183. pattern = '7777'x;
  184. do i=0 for 16
  185.     if bittst(pattern,i) then call SetGadget(SNAPHOST, 'PAT'i, 'ON')
  186. end
  187. unit = 0;           call SetGadget(SNAPHOST, 'UNT0', 'ON')
  188. xerox = 0
  189. patch = 0
  190. join = 0
  191. underscore = 1;     call SetGadget(SNAPHOST, 'USCR', 'ON')
  192. planes = '00'x
  193.  
  194. call ShowText("     Select options. Click here for help.")
  195.  
  196. help.1 = "Click text (eg 'Priority') for help. Click here for more help."
  197. help.2 = "Close window for correct command line. Click for more."
  198. help.3 = "Click 'Apply settings' to reconfigure Snap."
  199. maxhelp = 3
  200.  
  201. keycmd. = ""
  202. keycmd.95 = "HELP";    keycmd.25 = "PRIORITY";  keycmd.16 = "CLOSEWINDOW"
  203. keycmd.23 = "INSKEY";  keycmd.51 = "CDELAY";    keycmd.40 = "LDELAY"
  204. keycmd.33 = "UNIT";    keycmd.32 = "APPLY"
  205.  
  206. main:
  207. quitflag = 0
  208. helpnum = 1
  209.  
  210. loop:
  211. if quitflag~=0 then signal done
  212.  
  213. call waitpkt(SNAPPORT)
  214. p = getpkt(SNAPPORT)
  215. if p == NULL() then signal loop
  216.  
  217. cmd = getarg(p)
  218. call reply(p, 0)
  219.  
  220. docmd:
  221. parse var cmd item val .
  222. signal value item
  223.  
  224. closewindow:
  225.     quitflag = 1
  226.     signal loop
  227.  
  228. rawkey:
  229.     cmd = keycmd.val
  230.     if cmd ~= "" then do
  231.         signal docmd
  232.     end
  233.     signal loop
  234.  
  235. help:
  236.     parse var cmd item help
  237.     if help="" then do
  238.         call showtext(help.helpnum)
  239.         helpnum = helpnum+1
  240.         if helpnum>maxhelp then helpnum = 1
  241.     end
  242.     else do
  243.         call showtext(help)
  244.     end
  245.     signal loop
  246.  
  247. priority:
  248.     if val="" then do
  249.         val = pri+1
  250.         if val>55 then val = 51
  251.     end
  252.     pri = val
  253.     do i=51 for 5
  254.         call setgadget(SNAPHOST, 'PR'i, 'OFF')
  255.     end
  256.     call setgadget(SNAPHOST, 'PR'pri, 'ON')
  257.     signal loop
  258.  
  259. inskey:
  260.     if val="" then do
  261.         val = inskey+1
  262.         if val>3 then val = 1
  263.     end
  264.     inskey = val
  265.     do i=1 for 3
  266.         call setgadget(SNAPHOST, 'INS'i, 'OFF')
  267.     end
  268.     call setgadget(SNAPHOST, 'INS'val, 'ON')
  269.     signal loop
  270.  
  271. cwkey:
  272.     if val="" then do
  273.         val = cwkey+1
  274.         if val>3 then val = 1
  275.     end
  276.     cwkey = val
  277.     do i=1 for 3
  278.         call setgadget(SNAPHOST, 'CW'i, 'OFF')
  279.     end
  280.     call setgadget(SNAPHOST, 'CW'val, 'ON')
  281.     signal loop
  282.  
  283. cdelay:
  284.     if val="" then do
  285.         val = cdelay+1
  286.         if val>2 then val = 0
  287.     end
  288.     cdelay = val
  289.     do i=0 for 3
  290.         call setgadget(SNAPHOST, 'CDL'i, 'OFF')
  291.     end
  292.     call setgadget(SNAPHOST, 'CDL'val, 'ON')
  293.     signal loop
  294.  
  295. ldelay:
  296.     if val="" then do
  297.         val = ldelay+1
  298.         if val>2 then val = 0
  299.     end
  300.     ldelay = val
  301.     do i=0 for 3
  302.         call setgadget(SNAPHOST, 'LDL'i, 'OFF')
  303.     end
  304.     call setgadget(SNAPHOST, 'LDL'val, 'ON')
  305.     signal loop
  306.  
  307. unit:
  308.     if val="" then do
  309.         val = 1-unit
  310.     end
  311.     unit = val
  312.     call setgadget(SNAPHOST, 'UNT0', 'OFF')
  313.     call setgadget(SNAPHOST, 'UNT1', 'OFF')
  314.     call setgadget(SNAPHOST, 'UNT'unit, 'ON')
  315.     signal loop
  316.  
  317. pattern:
  318.     pattern = bitchg(pattern,val)
  319.     temp = bittst(pattern,val)
  320.     call setgadget(SNAPHOST, 'PAT'val, bool.temp)
  321.     signal loop
  322.  
  323. mask:
  324.     planes = bitchg(planes,val)
  325.     temp = bittst(planes,val)
  326.     call setgadget(SNAPHOST, 'MSK'val, bool.temp)
  327.     signal loop
  328.  
  329. prep:
  330.     parse var cmd . ' ' prepend
  331.     signal loop
  332.  
  333. app:
  334.     parse var cmd . ' ' append
  335.     signal loop
  336.  
  337. textqual:
  338.     if bittst(textqual,bit.val) then do
  339.         textqual = bitclr(textqual,bit.val)
  340.         call setgadget(SNAPHOST, 'TQ'val, 'OFF')
  341.     end
  342.     else do
  343.         call setgadget(SNAPHOST, 'GQ'val, 'OFF')
  344.         gfxqual = bitclr(gfxqual,bit.val)
  345.         textqual = bitset(textqual,bit.val)
  346.         call setgadget(SNAPHOST, 'TQ'val, 'ON')
  347.     end
  348.     signal loop
  349.  
  350. gfxqual:
  351.     if bittst(gfxqual,bit.val) then do
  352.         gfxqual = bitclr(gfxqual,bit.val)
  353.         call setgadget(SNAPHOST, 'GQ'val, 'OFF')
  354.     end
  355.     else do
  356.         call setgadget(SNAPHOST, 'TQ'val, 'OFF')
  357.         textqual = bitclr(textqual,bit.val)
  358.         gfxqual = bitset(gfxqual,bit.val)
  359.         call setgadget(SNAPHOST, 'GQ'val, 'ON')
  360.     end
  361.     signal loop
  362.  
  363. xerox:
  364.     xerox = 1-xerox
  365.     call setgadget(SNAPHOST, 'XERX', bool.xerox)
  366.     signal loop
  367.  
  368. join:
  369.     join = 1-join
  370.     call setgadget(SNAPHOST, 'JOIN', bool.join)
  371.     signal loop
  372.  
  373. patch:
  374.     patch = 1-patch
  375.     call setgadget(SNAPHOST, 'PTCH', bool.patch)
  376.     signal loop
  377.  
  378. underscore:
  379.     underscore = 1-underscore
  380.     call setgadget(SNAPHOST, 'USCR', bool.underscore)
  381.     signal loop
  382.  
  383. apply:
  384.     quitflag = 2
  385.     signal loop
  386.  
  387.  
  388. done:
  389. call ReadGadget(SNAPHOST, 'PREP')
  390. call waitpkt(SNAPPORT)
  391. getprep:
  392. p = getpkt(SNAPPORT)
  393. if p == NULL() then signal getprep
  394.  
  395. cmd = getarg(p)
  396. call reply(p, 0)
  397. parse var cmd . ' ' prepend
  398.  
  399. call ReadGadget(SNAPHOST, 'APP')
  400. call waitpkt(SNAPPORT)
  401. getapp:
  402. p = getpkt(SNAPPORT)
  403. if p == NULL() then signal getapp
  404.  
  405. cmd = getarg(p)
  406. call reply(p, 0)
  407. parse var cmd . ' ' append
  408.  
  409. if c2d(textqual)=0 then do
  410.     call ShowText("No text qualifier specified!")
  411.     signal main
  412. end
  413. else if c2d(gfxqual)=0 then do
  414.     call ShowText("No graphics qualifier specified!")
  415.     signal main
  416. end
  417.  
  418. unixargs = ""
  419. amigaargs = ""
  420. if pri~=51           then do
  421.     unixargs = unixargs "-p"pri
  422.     amigaargs = amigaargs "priority" pri
  423. end
  424. if textqual~='0040'x then do
  425.     unixargs = unixargs "-t"c2x(textqual)
  426.     amigaargs = amigaargs "textqual" c2x(textqual)
  427. end
  428. if gfxqual~='0080'x  then do
  429.     unixargs = unixargs "-g"c2x(gfxqual)
  430.     amigaargs = amigaargs "gfxqual" c2x(gfxqual)
  431. end
  432. if inskey.inskey~='I'   then do
  433.     unixargs = unixargs "-i"inscode.inskey
  434.     amigaargs = amigaargs "insertkey" inscode.inskey
  435. end
  436. if cwkey.cwkey~='W'   then do
  437.     unixargs = unixargs "-w"cwcode.cwkey
  438.     amigaargs = amigaargs "cwkey" cwcode.cwkey
  439. end
  440. if prepend~="> "     then do
  441.     unixargs = unixargs "-P" '"'||prepend||'"'
  442.     amigaargs = amigaargs "prepend" '"'||prepend||'"'
  443. end
  444. if append~=""        then do
  445.     unixargs = unixargs "-A" '"'append'"'
  446.     amigaargs = amigaargs "append" '"'append'"'
  447. end
  448. if cdelay~=0         then do
  449.     unixargs = unixargs "-c"cdelay
  450.     amigaargs = amigaargs "chardelay" cdelay
  451. end
  452. if ldelay~=0         then do
  453.     unixargs = unixargs "-l"ldelay
  454.     amigaargs = amigaargs "linedelay" ldelay
  455. end
  456. if pattern~='7777'x  then do
  457.     unixargs = unixargs "-a"c2x(pattern)
  458.     amigaargs = amigaargs "crawlptrn" c2x(pattern)
  459. end
  460. if xerox             then do
  461.     unixargs = unixargs "-x"
  462.     amigaargs = amigaargs "XEROX"
  463. end
  464. if patch             then do
  465.     unixargs = unixargs "-e"
  466.     amigaargs = amigaargs "EARLYPATCH"
  467. end
  468. if underscore        then do
  469.     unixargs = unixargs "-r"
  470.     amigaargs = amigaargs "TRUEUNDERSCORE"
  471. end
  472. if join              then do
  473.     unixargs = unixargs "-j"
  474.     amigaargs = amigaargs "JOINLONG"
  475. end
  476. if unit~=0           then do
  477.     unixargs = unixargs "-u"unit
  478.     amigaargs = amigaargs "startunit" unit
  479. end
  480. if planes~='00'x     then do
  481.     unixargs = unixargs "-b"c2x(planes)
  482.     amigaargs = amigaargs "planemask" c2x(planes)
  483. end
  484.  
  485. snapcmd = "snap"
  486.  
  487. if quitflag=1 then do
  488.     say snapcmd || unixargs
  489.     if amigaargs ~= unixargs then do
  490.         say "or"
  491.         say snapcmd || amigaargs
  492.     end
  493. end
  494. else do
  495.     if ~exists("snap") & ~exists("c:snap") then do
  496.         snapcmd = GetFile(50, 50, "sys:", "", "Find Snap for me")
  497.         if word(statef(snapcmd),1) ~= 'FILE' then do
  498.             snapcmd = snapcmd'snap'
  499.         end
  500.     end
  501.     if exists(snapcmd) then do
  502.         address command snapcmd unixargs
  503.     end
  504.     else do
  505.         call ShowText("Snap not found.")
  506.         signal main
  507.     end
  508. end
  509.  
  510. error:
  511. call Stop(SNAPHOST)
  512. exit
  513.  
  514. showtext: procedure expose SNAPHOST
  515.  
  516. parse arg text
  517.  
  518. call SetAPen(SNAPHOST, 0)
  519. call RectFill(SNAPHOST, 5, 15, 490, 35)
  520. call SetAPen(SNAPHOST, 1)
  521. call Move(SNAPHOST, 5, 30)
  522. call Text(SNAPHOST, text)
  523. return
  524.