home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 600-699 / ff634.lha / APIG / apig33.lzh / newmenus3.rexx < prev    next >
OS/2 REXX Batch file  |  1992-03-11  |  10KB  |  223 lines

  1.  
  2. /* Example Using New Menus  */
  3. /* This example is the same as newmenus1, */
  4. /* but we force an error by creating too many */
  5. /* menuitems for a menu */
  6.  
  7.  x = addlib("apig.library",0,-30,0)
  8.  
  9.  portname = "nmex3_port"
  10.  p = openport(portname)
  11.  
  12.  call set_apig_globals()
  13.  
  14.  scrtitle    = "Hey Buddy, Yea You,  This is Your New Screen  !"
  15.  wintitle    = "APIG 3.1 Simple Menu Example"
  16.  winidcmp    = IDCMP_CLOSEWINDOW+IDCMP_MENUPICK
  17.  winflags    = WFLG_CLOSEGADGET+WFLG_DEPTHGADGET+WFLG_ACTIVATE
  18.  
  19.  scr = openscreen(0,0,640,400,4,4,5,LACE+HIRES,CUSTOMSCREEN,scrtitle)
  20.  
  21. scrvinfo     = GETVISUALINFO(scr)
  22. scrfont      = GETVALUE(scr,40,4,'p')
  23.  
  24.  /* open window */
  25. w1  = openwindow(portname,,,640,400,2,4,winidcmp,winflags,wintitle,scr,,,) 
  26. w1rptr = getwindowrastport(w1)
  27.  
  28. newmdata = MAKENEWMENU()   /* this is gonna allocate a NewMenu array  */
  29.                            /* initially with 20 (default) empty slots */
  30.                            /* MAKENEWMENU(50), would allocate 50      */
  31.  
  32. /* use ADDTO_NEWMENU to fill the NewMenu array */
  33. /* IF more than 20 (initial #slots) calls are  */
  34. /* made to ADDTO_NEWMENU, then ADDTO_NEWMENU   */
  35. /* will automatically re-allocate the array to */
  36. /* hold an additional 20 array entries.        */
  37.  
  38. call ADDTO_NEWMENU(newmdata,NM_TITLE,"Project","",0,0,null())
  39. call ADDTO_NEWMENU(newmdata,NM_ITEM,"New","N",0,0,null())
  40. call ADDTO_NEWMENU(newmdata,NM_ITEM,"Open","O",0,0,null())
  41. call ADDTO_NEWMENU(newmdata,NM_ITEM,"Close","C",0,0,null())
  42. call ADDTO_NEWMENU(newmdata,NM_ITEM,"Save","",0,0,null())
  43. call ADDTO_NEWMENU(newmdata,NM_SUB,"Save As New","W",0,0,null())
  44. call ADDTO_NEWMENU(newmdata,NM_SUB,"Save as Old","S",0,0,null())
  45. call ADDTO_NEWMENU(newmdata,NM_ITEM,NM_BARLABEL,"",0,0,null())
  46. call ADDTO_NEWMENU(newmdata,NM_ITEM,"Quit","Q",0,0,null())
  47.  
  48. call ADDTO_NEWMENU(newmdata,NM_TITLE,"Subject 1","",0,0,null())
  49. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 1","",0,0,null())
  50. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 2","",0,0,null())
  51. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 3","",0,0,null())
  52. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 4","",0,0,null())
  53. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 5","",0,0,null())
  54. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 6","",0,0,null())
  55. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 7","",0,0,null())
  56. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 8","",0,0,null())
  57. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 9","",0,0,null())
  58.  
  59. call ADDTO_NEWMENU(newmdata,NM_TITLE,"Subject 2","",0,0,null())
  60. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 1","",0,0,null())
  61. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 2","",0,0,null())
  62. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 3","",0,0,null())
  63. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 4","",0,0,null())
  64. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 5","",0,0,null())
  65. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 6","",0,0,null())
  66. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 7","",0,0,null())
  67. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 8","",0,0,null())
  68. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 9","",0,0,null())
  69. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 9","",0,0,null())
  70. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -10","",0,0,null())
  71. call ADDTO_NEWMENU(newmdata,NM_ITEM,NM_BARLABEL,"",0,0,null())
  72. call ADDTO_NEWMENU(newmdata,NM_ITEM,NM_BARLABEL,"",0,0,null())
  73. call ADDTO_NEWMENU(newmdata,NM_ITEM,NM_BARLABEL,"",0,0,null())
  74. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -11","",0,0,null())
  75. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -12","",0,0,null())
  76. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -13","",0,0,null())
  77. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -14","",0,0,null())
  78. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -15","",0,0,null())
  79. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -16","",0,0,null())
  80. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -17","",0,0,null())
  81. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -18","",0,0,null())
  82. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -19","",0,0,null())
  83. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  84.  
  85. /* now we just add a bunch to force an error */
  86.  
  87. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  88. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  89. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  90. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  91. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  92. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  93. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  94. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  95. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  96. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  97. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  98. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  99. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  100. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  101. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  102. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  103. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  104. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  105. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  106. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  107. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  108. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  109. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  110. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  111. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  112. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  113. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  114. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  115. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  116. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  117. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  118. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  119. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  120. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  121. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  122. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  123. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  124. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  125. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  126. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  127. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  128. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  129. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  130. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  131. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  132. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  133. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  134. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  135. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  136. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  137. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  138. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  139. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  140. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  141. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  142. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  143. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  144. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  145. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  146. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  147. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  148. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  149. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM -20","",0,0,null())
  150.  
  151. call ADDTO_NEWMENU(newmdata,NM_TITLE,"Subject 3","",0,0,null())
  152. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 1","",0,0,null())
  153. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 2","",0,0,null())
  154. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 3","",0,0,null())
  155. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 4","",0,0,null())
  156. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 5","",0,0,null())
  157. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 6","",0,0,null())
  158. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 7","",0,0,null())
  159. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 8","",0,0,null())
  160. call ADDTO_NEWMENU(newmdata,NM_ITEM,"ITEM - 9","",0,0,null())
  161.  
  162. call ADDTO_NEWMENU(newmdata,NM_END,"","",0,0,null())
  163.  
  164.  
  165. /* Now that the NewMenu array has been filled, we create the     */
  166. /* menu using CREATEMENUS(). We specify the GTMN_SECONDARYERROR  */
  167. /* tag in order to get the error code returned back to us. It is */
  168. /* little "features" like this that make testing APIG a pain.    */
  169.  
  170. errptr = ALLOCMEM(4,MEMF_CLEAR) /* pointer to LONG integer, where */
  171.                                 /* error value will be returned   */
  172.  
  173. realmenu = CREATEMENUS(newmdata,GTMN_SECONDARYERROR,errptr,TAG_DONE,0)
  174.  
  175. /* get the value of the error, should = 1 = GTMENU_TRIMMED */
  176.  
  177. say "CREATEMENU ERROR VALUE = " getvalue(errptr,0,4,'n')
  178.  
  179. call LAYOUTMENUSA(realmenu,scrvinfo,null())
  180.  
  181. x = SETMENUSTRIP(w1,realmenu)
  182.  
  183. exitme = 0
  184.  
  185. z = pitext(w1rptr,200,80,"A Simple Menu Example",1,0,JAM2,0)
  186.  
  187. do forever
  188.      x = waitpkt(portname)
  189.   
  190.      do forever 
  191.   
  192.         msg = '0000 0000'x
  193.         msg = getpkt(portname)
  194.  
  195.         if msg = '0000 0000'x then leave
  196.  
  197.         class = getarg(msg,0)
  198.       
  199.         if class = IDCMP_CLOSEWINDOW then exitme = 1
  200.  
  201.         x = reply(msg,0)  
  202.      end  
  203.  
  204.    if exitme = 1 then leave
  205.    
  206. end
  207.  
  208.  
  209. z = CLOSEWINDOW(w1)
  210.  
  211. z = FREEMENUS(realmenu)
  212.  
  213. call FREEVISUALINFO(scrvinfo)
  214.  
  215. z = CLOSESCREEN(scr)
  216.  
  217. z = FREETHIS(newmdata)
  218.  
  219. z = FREEMEM(errptr,4)
  220.  
  221. exit
  222.  
  223.