home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / arexx / ole1v10a.lha / OLE_System / ole / RefoldMarks.ole < prev   
Encoding:
Text File  |  1995-02-10  |  5.1 KB  |  252 lines

  1. /*
  2.  * RefoldMarks.ole
  3.  *
  4.  * USAGE: RefoldMarks.ole
  5.  *
  6.  * This module of my OLE system let to draw some little lines marking the
  7.  * fold lines.
  8.  *
  9.  * HISTORY:
  10.  * v1.01    a few bugs fixed
  11.  *
  12.  * v1.02    added a little gadget to preview refolds
  13.  *
  14.  * v1.03    bug fixed when module exit
  15.  *
  16.  * v1.04    aligned with the new server design v1.10
  17.  *
  18.  * $(C): (1994, Rocco Coluccelli, Bologna)
  19.  * $VER: RefoldMarks.ole 1.04 (30.Nov.1994)
  20.  */
  21.  
  22. OPTIONS RESULTS
  23.  
  24. PARSE ARG oleclip
  25. PARSE VALUE GETCLIP(oleclip) WITH jobID modID box.left box.top char.w char.h olewin oleport olehost . . olepipe locale config .
  26.  
  27. IF ~SHOW('C',config) THEN
  28.     refoldmarks = 2
  29. ELSE
  30.     PARSE VALUE GETCLIP(config) WITH refoldmarks','
  31.  
  32.     doallpages = 0
  33.  
  34.     folds. = 0
  35.     folds.1.1 = 50
  36.     folds.2.1 = 32; folds.2.2 = 68
  37.     folds.3.1 = 26; folds.3.2 = 51; folds.3.3 = 76
  38.  
  39. DO j = 4 TO 10
  40.     DO i = 1 TO j
  41.         folds.j.i = i * 100 % (j + 1)
  42.     END
  43. END
  44.  
  45.  
  46. ADDRESS VALUE oleport
  47.  
  48. IF OPENPORT(olehost) == NULL() THEN DO
  49.     ERROR jobID modID 1 olehost
  50.     SETJOB jobID 'end'
  51.     EXIT 10
  52.     END
  53.  
  54. rt_TAG = 'rt_pubscrname=' || userscreen 'rtez_flags=ezreqf_centertext'
  55. st = GUIGads()
  56. DO UNTIL st = 'end'
  57.  
  58.     CALL WAITPKT(olehost)
  59.     pkt = GETPKT(olehost)
  60.  
  61.     IF pkt == NULL() THEN ITERATE
  62.  
  63.     PARSE VALUE GETARG(pkt) WITH cmd argv .
  64.     SELECT
  65.  
  66.         WHEN cmd = 'MARKS' THEN DO
  67.             PARSE VALUE GETARG(pkt,1) WITH n0 n1 .
  68.  
  69.             refoldmarks = RTGetLong(refoldmarks,,GetLocale(1),,rt_TAG 'rtgl_min=1 rtgl_max=9')
  70.  
  71.             g_str.n0 = refoldmarks; g_str.n1 = refoldmarks
  72.             CALL Gadgets(2,n0,n1)
  73.             CALL SETCLIP(config,refoldmarks',')
  74.         END
  75.  
  76.         WHEN cmd = 'PAGE' THEN DO
  77.             PARSE VALUE GETARG(pkt,1) WITH n0 .
  78.             doallpages = ~doallpages
  79.             g_str.n0 = doallpages
  80.             CALL Gadgets(2,n0)
  81.         END
  82.  
  83.         WHEN cmd = 'UNICONIFY' THEN
  84.             CALL Gadgets(8,1,g_gads)
  85.  
  86.         WHEN cmd = 'HELP' THEN
  87.             ABOUT jobID modID 'HELP' || st
  88.  
  89.         WHEN cmd = 'START' | cmd = 'QUIT' THEN
  90.             st = 'end'
  91.  
  92.         OTHERWISE NOP
  93.     END
  94.  
  95.     CALL REPLY(pkt,0)
  96.  
  97. END
  98.  
  99. CALL CLOSEPORT(olehost)
  100.  
  101. IF cmd = 'QUIT' THEN EXIT 0
  102.  
  103. folds = folds.refoldmarks.1
  104. DO i = 2 TO refoldmarks
  105.     folds = folds folds.refoldmarks.i
  106. END
  107. CALL SETCLIP(olepipe,doallpages folds)
  108.  
  109. SETJOB jobID modID + 1
  110. EXIT 0
  111.  
  112.  
  113. GetLocale: PROCEDURE EXPOSE locale
  114. ARG strID
  115.  
  116.     strID = 'þ'strID'þ'; PARSE VALUE GETCLIP(locale) WITH (strID)text'Þ'
  117.  
  118. RETURN text
  119.  
  120.  
  121. GUIGads:
  122.  
  123.     g_offx. = 2;    g_offx.1 = 0;            g_offx.3 = 2
  124.     g_offy. = 2;    g_offy.1 = char.h + 1;    g_offy.3 = 3
  125.     g_wid. = 8;                g_wid.1 = 0;            g_wid.3 = 12
  126.     g_hei. = char.h + 4;    g_hei.1 = char.h + 1;    g_hei.3 = char.h + 6
  127.     g_sx = char.w % 2;    g_sy = char.h % 4
  128.     g_onoff. = 0
  129.     g_offx.6 = 0;    g_offy.6 = 0;    g_hei.6 = 60
  130.  
  131.     box.left = box.left + g_sx; box.top = box.top + 2 * g_sy
  132.     box.w = 24 * char.w
  133.  
  134.     n = 1; nmain = 1
  135.  
  136.     x = box.left; y = box.top
  137.     CALL IniGad(6,1,2,,refoldmarks); x1 = x
  138.     y = y + 4 * g_sy
  139.     CALL IniGad(2,0,2,'MARKS %1' n  n - 1,refoldmarks)
  140.     CALL IniGad(1,0,1,,GetLocale(1)); x = x1
  141.     y = y + g_hei.6 - g_hei.2 - 8 * g_sy
  142.     CALL IniGad(4,0,2,'PAGE%1' n,doallpages,GetLocale(2))
  143.  
  144.     y = y + g_hei.3 + 8 * g_sy
  145.     CALL IniGad(2,3,0,'HELP',GetLocale(3))
  146.     g_gads = IniGad(2,1,0,'START',GetLocale(4))
  147.  
  148.     box.h = y + g_hei.2 + 2 * g_sy - box.top
  149.     WINDOW jobID modID (box.w + 2 * g_sx) (box.h + 2 * g_sy) 1 1
  150.     CALL Gadgets(4,1,g_gads)
  151.  
  152. RETURN nmain
  153.  
  154.  
  155. Gadgets:
  156.  
  157.     IF ARG(1) < 4 THEN
  158.         DO i = 2 TO ARG(); n = ARG(i)
  159.             IF ARG(1) ~= 1 THEN CALL DelGad(n,g_type.n)
  160.             IF ARG(1) ~= 3 THEN CALL NewGad(n,g_type.n)
  161.         END
  162.  
  163.     ELSE IF ARG(1) < 7 THEN
  164.         DO n = ARG(2) TO ARG(3)
  165.             IF ARG(1) ~= 4 THEN CALL DelGad(n,g_type.n)
  166.             IF ARG(1) ~= 6 THEN CALL NewGad(n,g_type.n)
  167.         END
  168.  
  169.     ELSE IF ARG(1) = 8 THEN
  170.         DO n = ARG(2) TO ARG(3)
  171.             IF g_onoff.n THEN CALL NewGad(n,g_type.n)
  172.         END
  173.  
  174.     ELSE DO
  175.         DO n = ARG(2) TO ARG(3)
  176.             g_onoff.n = 0
  177.             IF g_type.n ~= 1 & t ~= 6 THEN CALL RemoveGadget(olewin,GAD.n)
  178.         END
  179.         CALL SetAPen(olewin,0)
  180.         CALL RectFill(olewin,box.left,box.top,box.left + box.w,box.top + box.h)
  181.         CALL RefreshGadgets(olewin)
  182.         END
  183. RETURN
  184.  
  185.  
  186. DelGad:
  187. PARSE ARG n,t
  188.  
  189.     g_onoff.n = 0
  190.  
  191.     IF t ~= 1 & t ~= 6 THEN CALL RemoveGadget(olewin,GAD.n)
  192.  
  193.     x = g_xpos.n - g_offx.t; y = g_ypos.n - g_offy.t
  194.     CALL SetAPen(olewin,0)
  195.     CALL RectFill(olewin,x,y,x + g_len.n,y + g_hei.t)
  196.  
  197. RETURN
  198.  
  199.  
  200. NewGad:
  201. PARSE ARG n,t
  202.  
  203.     g_onoff.n = 1
  204.  
  205.     IF t = 2 THEN
  206.         CALL AddGadGet(olewin,g_xpos.n,g_ypos.n,GAD.n,g_str.n,g_msg.n)
  207.  
  208.     ELSE IF t = 4 THEN
  209.         CALL AddGadGet(olewin,g_xpos.n,g_ypos.n,GAD.n,D2C(32 + g_str.n * 183),g_msg.n)
  210.  
  211.     ELSE IF t = 6 THEN DO
  212.         CALL SetApen(olewin,2)
  213.         CALL RectFill(olewin,g_xpos.n,g_ypos.n,g_xpos.n + g_len.n,g_ypos.n + g_hei.t)
  214.  
  215.         x1 = g_xpos.n + g_len.n % 10
  216.         x2 = x1 + g_len.n % 10
  217.         ny = g_str.n
  218.         CALL SetApen(olewin,1)
  219.         DO j = 1 TO ny
  220.             y = g_ypos.n + (folds.ny.j * g_hei.t) % 100
  221.             CALL Move(olewin,x1,y); CALL Draw(olewin,x2,y)
  222.         END
  223.     END
  224.  
  225.     ELSE DO
  226.         CALL SetAPen(olewin,1)
  227.         CALL Move(olewin,g_xpos.n,g_ypos.n)
  228.         CALL Text(olewin,g_str.n)
  229.     END
  230. RETURN
  231.  
  232.  
  233. IniGad:
  234. PARSE ARG t,na,nx,g_msg.n,g_str.n,var
  235.  
  236.     x = x + nx * g_sx
  237.  
  238.     IF t = 6 THEN
  239.         g_len.n = 2 * g_hei.t % 3
  240.     ELSE
  241.         g_len.n = LENGTH(g_str.n) * char.w + g_wid.t
  242.  
  243.     IF na > 0 THEN x = box.left + (na - 1) * (box.w - g_len.n) % 2 + nx * g_sx
  244.  
  245.     g_xpos.n = x + g_offx.t; g_ypos.n = y + g_offy.t; g_type.n = t
  246.     x = x + g_len.n
  247.     n = n + 1
  248.  
  249.     IF t = 4 THEN CALL IniGad(1,0,1,,var)
  250.  
  251. RETURN n - 1
  252.