home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / comms_networking / irclient / !IRClient / Scripts / Internal / Menus (.txt) < prev   
Encoding:
RISC OS BBC BASIC V Source  |  1997-03-23  |  10.4 KB  |  343 lines

  1.  >Internal.Menus
  2.  1996 M Richard G & J Richard F
  3.  This file generates and handles all of the internal menu
  4.  structures
  5.  Do not edit this file, use the Overload_AddMenuEntries method
  6.  for adding options to menus
  7.  04 Jan 1997 - MG: Started                              v1.00
  8.  05 Jan 1997 - JF: Basic overload system for adding     v1.01
  9.  07 Jan 1997 - JF: Bug fixes and CTCP menu added        v1.02
  10.  18 Jan 1997 - JF: User windows now overloadable        v1.03
  11.  18 Jan 1997 - JF: Channels moved to the main window    v1.04
  12.  23 Mar 1997 - MG: Fixed channel menu, classified       v1.05
  13. Menus_Initialise
  14. Online=
  15. Menu_Entries=0
  16. Online
  17. Online=
  18.  And pass it on
  19. Offline
  20. Online=
  21.  And pass it on
  22.  We need to reset the number of entries
  23. NewMenu(a$,b$)
  24. Menu_Entries=0
  25. @(a$,b$)
  26.  We need to know the number of entries
  27. AddMenuEntry(a$,b$,c,d,e$)
  28. Menu_Entries+=1
  29. @(a$,b$,c,d,e$)
  30.  Overload this if you wish to add entries to an existing menu
  31. Overload_AddMenuEntries(menu$)
  32.  Overload this if you wish to create a menu for your window
  33.  If you wish to do so, use PROCNewMenu("TITLE!",menu$)
  34.  Return TRUE if you wish to have a 'Save' item at the bottom
  35.  Return FALSE otherwise
  36. Overload_UnknownWindowMenu(display$,menu$)
  37. 6    ret=
  38.  display$ 
  39.  "##server##"
  40. NewMenu("Server",menu$)
  41. AddMenuEntry("Disconnect","Disconnect",
  42.  Online,0,"")
  43.  "##InputBox##"
  44. NewMenu("Input",menu$)
  45. Overload_InputBoxMenu(SendingToDisplay$)
  46.  Nobody claimed it so we'll give them the default menu
  47.   ret=-2
  48.  Overload this if you wish to put some items on the InputBox
  49.  menu
  50. Overload_InputBoxMenu(disp$)
  51.  Overload this if you provide your own sub-menus
  52. Overload_UnknownMenu(menu$)
  53. Menu_OpenMenu(menu$,x,y)
  54.  name$,hassave,match
  55.  We'll mark us as having found a menu - if this is TRUE
  56.  it means that we have got a menu to create, if FALSE then
  57.  there was no match and we fault this. If this is TRUE*2
  58.  then we /found/ a match, but it didn't actually want a menu
  59. match=
  60.  menu$ 
  61.  "_Display"
  62.  Not an internal pane
  63.   name$=
  64. GetMenuParameter
  65. name$,2)="##" 
  66. Y1   
  67.  This means that no menu has been created
  68.    Menu_Entries=-2
  69. [)   
  70.  Ask them if they want a save box
  71. \7   hassave=
  72. Overload_UnknownWindowMenu(name$,menu$)
  73.  hassave 
  74. _?     
  75.  Nobody claimed it - just stick to a normal 'display'
  76. `"     
  77. NewMenu("Display",menu$)
  78. a(     
  79. Overload_AddMenuEntries(name$)
  80.      
  81.  Menu_Entries>0 
  82. c4      
  83.  Something has been added, so seperate it
  84.       
  85. AddDottedLine
  86.      
  87. f0     
  88. AddMenuEntry("Save","",1,0,">SaveBox")
  89. i$     
  90.  They want a save entry...
  91.      
  92.  Menu_Entries=-2 
  93. kC      
  94.  ... but no menu created, so we'll create a standard one
  95. l#      
  96. NewMenu("Display",menu$)
  97.      
  98. n(     
  99. Overload_AddMenuEntries(name$)
  100.      
  101.  Menu_Entries>0 
  102. p4      
  103.  Something has been added, so seperate it
  104.       
  105. AddDottedLine
  106.      
  107. s0     
  108. AddMenuEntry("Save","",1,0,">SaveBox")
  109. v8     
  110.  They don't want a save entry at the bottom...
  111.      
  112.  Menu_Entries=-2 
  113. xC      
  114.  ... but no menu created, so we'll create a standard one
  115. y#      
  116. NewMenu("Display",menu$)
  117.      
  118. {(     
  119. Overload_AddMenuEntries(name$)
  120.      
  121.  Menu_Entries=0 
  122. }D      
  123.  ... and we've not got any entries at all so we'll ignore
  124.       match=
  125.      
  126.         
  127. v     
  128. Display(
  129. Colour(11)+"*** Menu routine error - bad return code from window menu '"+name$+"'","","##server##")
  130. name$,1)="#" 
  131.      
  132.  This is a channel menu
  133. '    
  134. Menu_ChannelStuff(name$,menu$)
  135. '    
  136. Overload_AddMenuEntries(menu$)
  137. AddDottedLine
  138. /    
  139. AddMenuEntry("Save","",1,0,">SaveBox")
  140.  This is a user menu
  141. 8    hassave=
  142. Overload_UnknownWindowMenu(name$,menu$)
  143.  hassave 
  144.      
  145. 1      
  146.  Nobody claimed it - normal users menu
  147.       
  148. NewMenu(name$,menu$)
  149. A      
  150. AddMenuEntry("User '"+name$+"'","",0,0,"_User_Action")
  151.      
  152.       
  153.  Menu_Entries=-2 
  154. D       
  155.  ... but no menu created, so we'll create a standard one
  156.         
  157. NewMenu(name$,menu$)
  158.       
  159. )      
  160. Overload_AddMenuEntries(name$)
  161.       
  162.  Menu_Entries>0 
  163. 5       
  164.  Something has been added, so seperate it
  165.        
  166. AddDottedLine
  167.       
  168. 1      
  169. AddMenuEntry("Save","",1,0,">SaveBox")
  170.      
  171.       
  172.  Menu_Entries=-2 
  173. D       
  174.  ... but no menu created, so we'll create a standard one
  175.         
  176. NewMenu(name$,menu$)
  177.       
  178. )      
  179. Overload_AddMenuEntries(name$)
  180.       
  181.  Menu_Entries=0 
  182. A       
  183.  ... we've not got any entries at all so we'll ignore
  184.        match=
  185.       
  186.      
  187. w      
  188. Display(
  189. Colour(11)+"*** Menu routine error - bad return code from window menu '"+name$+"'","","##server##")
  190.         
  191.  "_Iconbar"
  192. NewMenu("IRClient",menu$)
  193. AddMenuEntry("Info","",0,0,">Info")
  194. AddMenuEntry("Hotlist...","Menu_OpenHotlist",0,0,"")
  195. AddMenuEntry("Connect","",Online,0,">Connect")
  196. AddMenuEntry("Disconnect","Disconnect",
  197.  Online,0,"")
  198. AddMenuEntry("Choices...","Menu_OpenPrefs",0,0,"")
  199. Overload_AddMenuEntries(menu$)
  200. AddDottedLine
  201. AddMenuEntry("Quit","Menu_Quit",0,0,"")
  202.  "_User"
  203.  They clicked on the user pane list thingy
  204.  user$
  205.   user$=
  206. GetMenuParameter
  207. NewMenu("User",menu$)
  208.  user$="*" 
  209.  Lots of people selected
  210. AddMenuEntry("Selection","",0,0,"_User_Action")
  211.  Just one person selected (or possibly none)
  212. AddMenuEntry("User '"+user$+"'","",(user$=""),0,"_User_Action")
  213. AddMenuEntry("Select all","",1,0,"")
  214. AddMenuEntry("Clear selection","",1,0,"")
  215. Overload_AddMenuEntries(menu$)
  216.  "_User_Action"
  217.  The menu that deals with things to do to users
  218.  user$,chan$,usopped
  219.   user$=
  220. GetMenuParameter
  221.   chan$=
  222. GetMenuChannel
  223. )  usopped=
  224. UserHasOps(chan$,OurNick$)
  225. NewMenu("Actions",menu$)
  226. AddMenuEntry("CTCP","",0,0,"_CTCPList")
  227.  I'm not sure we /can/ do these ;-(
  228. AddMenuEntry("DCCSend","",1,0,"_DCCSend")
  229. AddMenuEntry("Query window","UserDoubleClicked("""+user$+""")",0,0,"")
  230. AddMenuEntry("DCCChat","DCCChat("""+user$+""")",0,0,"")
  231. AddMenuEntry("Operator","Op("""+chan$+""","""+user$+""","+
  232. UserHasOps(chan$,user$))+")", 
  233.  usopped,
  234. UserHasOps(chan$,user$),"")
  235. AddMenuEntry("Voice","Voice("""+chan$+""","""+user$+""","+
  236. UserHasVoice(chan$,user$))+")",
  237.  usopped,
  238. UserHasVoice(chan$,user$),"")
  239. AddMenuEntry("Kick","Kick("""+chan$+""","""+user$+""")",
  240.  usopped,0,"")
  241. Overload_AddMenuEntries(menu$)
  242.  "_Channel_Action"
  243.  If the user clicked on the channel pane list
  244.  chan$
  245.   chan$=
  246. GetMenuParameter
  247. Menu_ChannelStuff(chan$,menu$)
  248. Overload_AddMenuEntries(menu$)
  249.  "_Channel"
  250.  chan$
  251.   chan$=
  252. GetMenuParameter
  253. NewMenu("Channel",menu$)
  254. AddMenuEntry("Channel '"+chan$+"'","",(chan$=""),0,"_Channel_Action")
  255. AddMenuEntry("Join new...","",0,0,">JoinChannel")
  256. AddMenuEntry("Disconnect","Disconnect",0,0,"")
  257. Overload_AddMenuEntries(menu$)
  258.  "_CTCPList"
  259. '  to$="("""+
  260. GetMenuParameter+""")"
  261. NewMenu("CTCP requests",menu$)
  262. AddMenuEntry("ClientInfo","CTCP_DoClientInfo"+to$,0,0,"")
  263. AddMenuEntry("Finger","CTCP_DoFinger"+to$,0,0,"")
  264. AddMenuEntry("Ping","CTCP_DoPing"+to$,0,0,"")
  265. AddMenuEntry("Time","CTCP_DoTime"+to$,0,0,"")
  266. AddMenuEntry("UserInfo","CTCP_DoUserInfo"+to$,0,0,"")
  267. AddMenuEntry("Version","CTCP_DoVersion"+to$,0,0,"")
  268. Overload_AddMenuEntries(menu$)
  269.  "_FontList"
  270. NewMenu("List of fonts",menu$)
  271.  file
  272. J  filelist = 
  273. newListOfFilenames("<IRClient$Dir>.Resources.Fonts","*")
  274. filelist.Iterate("_AddToFontList")
  275.   LOCAL file$,fileblock,fileptr,numread
  276.   fileptr = 0
  277.   fileblock = FNClaim(512)
  278.   numread = 1
  279.   WHILE fileptr<>-1 AND numread<>0
  280.    SYS "OS_GBPB",9,"<IRClient$Dir>.Resources.Fonts",fileblock,1,fileptr,512,0 TO ,,,numread,fileptr
  281.    IF numread=1 THEN
  282.     file$ = $(fileblock)
  283.     PROCAddMenuEntry(file$,"Menu_ChooseFont("""+file$+""")",0,0,"")
  284.    ENDIF
  285.   ENDWHILE
  286.   PROCRelease(fileblock)
  287. Overload_AddMenuEntries(menu$)
  288.  "_Hotlist"
  289. NewMenu("Hotlist",menu$)
  290.  hot$
  291.   hot$=
  292. GetMenuParameter
  293.  hot$ 
  294. :    
  295. AddMenuEntry("Selection","",0,0,"_Hotlist_Entry")
  296. 9    
  297. AddMenuEntry("Entry ''","",1,0,"_Hotlist_Entry")
  298. A    
  299. AddMenuEntry("Entry '"+hot$+"'","",0,0,"_Hotlist_Entry")
  300. AddMenuEntry("Select all","Menu_HotlistSelectAll",0,0,"")
  301. AddMenuEntry("Clear selection","Menu_HotlistClearSel",0,0,"")
  302. AddMenuEntry("Add entry...","Menu_HotlistAdd",0,0,"")
  303. Overload_AddMenuEntries(menu$)
  304.  "_Hotlist_Entry"
  305.  hot$,hot
  306.   hot$=
  307. GetMenuParameter
  308.   hot=hot$="*"
  309.  hot 
  310. NewMenu(hot$,menu$)
  311. !"   
  312. NewMenu("Selection",menu$)
  313. AddMenuEntry("Edit...","Menu_HotlistEdit",hot,0,"")
  314. AddMenuEntry("Make default","Menu_HotlistMakeDefault",hot,0,"")
  315. AddMenuEntry("Delete","Menu_HotlistDelete",0,0,"")
  316. Overload_AddMenuEntries(menu$)
  317.  We haven't spotted it so call the Overload to check
  318. Overload_UnknownMenu(menu$)
  319.   match=(Menu_Entries<>0)
  320.  Menu_Entries<>0 
  321. ->   
  322.  If somebody handled it we can pass it around the rest
  323. .&   
  324. Overload_AddMenuEntries(menu$)
  325.  match 
  326.  Yeah ! We've got a menu
  327. OpenMenu(x,y)
  328.  Damn, a menu with no parent - badly written module ?
  329. Display(
  330. Colour(11)+"*** Menu routine error - nobody caught '"+menu$+"' ","","##server##")
  331.  Nah, we don't /really/ want a menu lads...
  332.  ******************** Internal calls ************************
  333. _AddToFontList(iterand)
  334.  file$
  335. file$=iterand.data$
  336. AddMenuEntry(file$,"Menu_ChooseFont("""+file$+""")",0,0,"")
  337. Menu_ChannelStuff(chan$,menu$)
  338. NewMenu("Channel "+chan$,menu$)
  339. AddMenuEntry("CTCP","",0,0,"_CTCPList")
  340. AddMenuEntry("Change topic","",0,0,">ChangeTopic")
  341. AddMenuEntry("Ban...","",1,0,"")
  342. AddMenuEntry("Leave","Leave("""+chan$+""")",0,0,"")
  343.