home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1997-03-23 | 10.4 KB | 343 lines |
- >Internal.Menus
- 1996 M Richard G & J Richard F
- This file generates and handles all of the internal menu
- structures
- Do not edit this file, use the Overload_AddMenuEntries method
- for adding options to menus
- 04 Jan 1997 - MG: Started v1.00
- 05 Jan 1997 - JF: Basic overload system for adding v1.01
- 07 Jan 1997 - JF: Bug fixes and CTCP menu added v1.02
- 18 Jan 1997 - JF: User windows now overloadable v1.03
- 18 Jan 1997 - JF: Channels moved to the main window v1.04
- 23 Mar 1997 - MG: Fixed channel menu, classified v1.05
- Menus_Initialise
- Online=
- Menu_Entries=0
- Online
- Online=
- And pass it on
- Offline
- Online=
- And pass it on
- We need to reset the number of entries
- NewMenu(a$,b$)
- Menu_Entries=0
- @(a$,b$)
- We need to know the number of entries
- AddMenuEntry(a$,b$,c,d,e$)
- Menu_Entries+=1
- @(a$,b$,c,d,e$)
- Overload this if you wish to add entries to an existing menu
- Overload_AddMenuEntries(menu$)
- Overload this if you wish to create a menu for your window
- If you wish to do so, use PROCNewMenu("TITLE!",menu$)
- Return TRUE if you wish to have a 'Save' item at the bottom
- Return FALSE otherwise
- Overload_UnknownWindowMenu(display$,menu$)
- 6 ret=
- display$
- "##server##"
- NewMenu("Server",menu$)
- AddMenuEntry("Disconnect","Disconnect",
- Online,0,"")
- "##InputBox##"
- NewMenu("Input",menu$)
- Overload_InputBoxMenu(SendingToDisplay$)
- Nobody claimed it so we'll give them the default menu
- ret=-2
- Overload this if you wish to put some items on the InputBox
- menu
- Overload_InputBoxMenu(disp$)
- Overload this if you provide your own sub-menus
- Overload_UnknownMenu(menu$)
- Menu_OpenMenu(menu$,x,y)
- name$,hassave,match
- We'll mark us as having found a menu - if this is TRUE
- it means that we have got a menu to create, if FALSE then
- there was no match and we fault this. If this is TRUE*2
- then we /found/ a match, but it didn't actually want a menu
- match=
- menu$
- "_Display"
- Not an internal pane
- name$=
- GetMenuParameter
- name$,2)="##"
- Y1
- This means that no menu has been created
- Menu_Entries=-2
- [)
- Ask them if they want a save box
- \7 hassave=
- Overload_UnknownWindowMenu(name$,menu$)
- hassave
- _?
- Nobody claimed it - just stick to a normal 'display'
- `"
- NewMenu("Display",menu$)
- a(
- Overload_AddMenuEntries(name$)
-
- Menu_Entries>0
- c4
- Something has been added, so seperate it
-
- AddDottedLine
-
- f0
- AddMenuEntry("Save","",1,0,">SaveBox")
- i$
- They want a save entry...
-
- Menu_Entries=-2
- kC
- ... but no menu created, so we'll create a standard one
- l#
- NewMenu("Display",menu$)
-
- n(
- Overload_AddMenuEntries(name$)
-
- Menu_Entries>0
- p4
- Something has been added, so seperate it
-
- AddDottedLine
-
- s0
- AddMenuEntry("Save","",1,0,">SaveBox")
- v8
- They don't want a save entry at the bottom...
-
- Menu_Entries=-2
- xC
- ... but no menu created, so we'll create a standard one
- y#
- NewMenu("Display",menu$)
-
- {(
- Overload_AddMenuEntries(name$)
-
- Menu_Entries=0
- }D
- ... and we've not got any entries at all so we'll ignore
- match=
-
-
- v
- Display(
- Colour(11)+"*** Menu routine error - bad return code from window menu '"+name$+"'","","##server##")
- name$,1)="#"
-
- This is a channel menu
- '
- Menu_ChannelStuff(name$,menu$)
- '
- Overload_AddMenuEntries(menu$)
- AddDottedLine
- /
- AddMenuEntry("Save","",1,0,">SaveBox")
- This is a user menu
- 8 hassave=
- Overload_UnknownWindowMenu(name$,menu$)
- hassave
-
- 1
- Nobody claimed it - normal users menu
-
- NewMenu(name$,menu$)
- A
- AddMenuEntry("User '"+name$+"'","",0,0,"_User_Action")
-
-
- Menu_Entries=-2
- D
- ... but no menu created, so we'll create a standard one
-
- NewMenu(name$,menu$)
-
- )
- Overload_AddMenuEntries(name$)
-
- Menu_Entries>0
- 5
- Something has been added, so seperate it
-
- AddDottedLine
-
- 1
- AddMenuEntry("Save","",1,0,">SaveBox")
-
-
- Menu_Entries=-2
- D
- ... but no menu created, so we'll create a standard one
-
- NewMenu(name$,menu$)
-
- )
- Overload_AddMenuEntries(name$)
-
- Menu_Entries=0
- A
- ... we've not got any entries at all so we'll ignore
- match=
-
-
- w
- Display(
- Colour(11)+"*** Menu routine error - bad return code from window menu '"+name$+"'","","##server##")
-
- "_Iconbar"
- NewMenu("IRClient",menu$)
- AddMenuEntry("Info","",0,0,">Info")
- AddMenuEntry("Hotlist...","Menu_OpenHotlist",0,0,"")
- AddMenuEntry("Connect","",Online,0,">Connect")
- AddMenuEntry("Disconnect","Disconnect",
- Online,0,"")
- AddMenuEntry("Choices...","Menu_OpenPrefs",0,0,"")
- Overload_AddMenuEntries(menu$)
- AddDottedLine
- AddMenuEntry("Quit","Menu_Quit",0,0,"")
- "_User"
- They clicked on the user pane list thingy
- user$
- user$=
- GetMenuParameter
- NewMenu("User",menu$)
- user$="*"
- Lots of people selected
- AddMenuEntry("Selection","",0,0,"_User_Action")
- Just one person selected (or possibly none)
- AddMenuEntry("User '"+user$+"'","",(user$=""),0,"_User_Action")
- AddMenuEntry("Select all","",1,0,"")
- AddMenuEntry("Clear selection","",1,0,"")
- Overload_AddMenuEntries(menu$)
- "_User_Action"
- The menu that deals with things to do to users
- user$,chan$,usopped
- user$=
- GetMenuParameter
- chan$=
- GetMenuChannel
- ) usopped=
- UserHasOps(chan$,OurNick$)
- NewMenu("Actions",menu$)
- AddMenuEntry("CTCP","",0,0,"_CTCPList")
- I'm not sure we /can/ do these ;-(
- AddMenuEntry("DCCSend","",1,0,"_DCCSend")
- AddMenuEntry("Query window","UserDoubleClicked("""+user$+""")",0,0,"")
- AddMenuEntry("DCCChat","DCCChat("""+user$+""")",0,0,"")
- AddMenuEntry("Operator","Op("""+chan$+""","""+user$+""","+
- UserHasOps(chan$,user$))+")",
- usopped,
- UserHasOps(chan$,user$),"")
- AddMenuEntry("Voice","Voice("""+chan$+""","""+user$+""","+
- UserHasVoice(chan$,user$))+")",
- usopped,
- UserHasVoice(chan$,user$),"")
- AddMenuEntry("Kick","Kick("""+chan$+""","""+user$+""")",
- usopped,0,"")
- Overload_AddMenuEntries(menu$)
- "_Channel_Action"
- If the user clicked on the channel pane list
- chan$
- chan$=
- GetMenuParameter
- Menu_ChannelStuff(chan$,menu$)
- Overload_AddMenuEntries(menu$)
- "_Channel"
- chan$
- chan$=
- GetMenuParameter
- NewMenu("Channel",menu$)
- AddMenuEntry("Channel '"+chan$+"'","",(chan$=""),0,"_Channel_Action")
- AddMenuEntry("Join new...","",0,0,">JoinChannel")
- AddMenuEntry("Disconnect","Disconnect",0,0,"")
- Overload_AddMenuEntries(menu$)
- "_CTCPList"
- ' to$="("""+
- GetMenuParameter+""")"
- NewMenu("CTCP requests",menu$)
- AddMenuEntry("ClientInfo","CTCP_DoClientInfo"+to$,0,0,"")
- AddMenuEntry("Finger","CTCP_DoFinger"+to$,0,0,"")
- AddMenuEntry("Ping","CTCP_DoPing"+to$,0,0,"")
- AddMenuEntry("Time","CTCP_DoTime"+to$,0,0,"")
- AddMenuEntry("UserInfo","CTCP_DoUserInfo"+to$,0,0,"")
- AddMenuEntry("Version","CTCP_DoVersion"+to$,0,0,"")
- Overload_AddMenuEntries(menu$)
- "_FontList"
- NewMenu("List of fonts",menu$)
- file
- J filelist =
- newListOfFilenames("<IRClient$Dir>.Resources.Fonts","*")
- filelist.Iterate("_AddToFontList")
- LOCAL file$,fileblock,fileptr,numread
- fileptr = 0
- fileblock = FNClaim(512)
- numread = 1
- WHILE fileptr<>-1 AND numread<>0
- SYS "OS_GBPB",9,"<IRClient$Dir>.Resources.Fonts",fileblock,1,fileptr,512,0 TO ,,,numread,fileptr
- IF numread=1 THEN
- file$ = $(fileblock)
- PROCAddMenuEntry(file$,"Menu_ChooseFont("""+file$+""")",0,0,"")
- ENDIF
- ENDWHILE
- PROCRelease(fileblock)
- Overload_AddMenuEntries(menu$)
- "_Hotlist"
- NewMenu("Hotlist",menu$)
- hot$
- hot$=
- GetMenuParameter
- hot$
- :
- AddMenuEntry("Selection","",0,0,"_Hotlist_Entry")
- 9
- AddMenuEntry("Entry ''","",1,0,"_Hotlist_Entry")
- A
- AddMenuEntry("Entry '"+hot$+"'","",0,0,"_Hotlist_Entry")
- AddMenuEntry("Select all","Menu_HotlistSelectAll",0,0,"")
- AddMenuEntry("Clear selection","Menu_HotlistClearSel",0,0,"")
- AddMenuEntry("Add entry...","Menu_HotlistAdd",0,0,"")
- Overload_AddMenuEntries(menu$)
- "_Hotlist_Entry"
- hot$,hot
- hot$=
- GetMenuParameter
- hot=hot$="*"
- hot
- NewMenu(hot$,menu$)
- !"
- NewMenu("Selection",menu$)
- AddMenuEntry("Edit...","Menu_HotlistEdit",hot,0,"")
- AddMenuEntry("Make default","Menu_HotlistMakeDefault",hot,0,"")
- AddMenuEntry("Delete","Menu_HotlistDelete",0,0,"")
- Overload_AddMenuEntries(menu$)
- We haven't spotted it so call the Overload to check
- Overload_UnknownMenu(menu$)
- match=(Menu_Entries<>0)
- Menu_Entries<>0
- ->
- If somebody handled it we can pass it around the rest
- .&
- Overload_AddMenuEntries(menu$)
- match
- Yeah ! We've got a menu
- OpenMenu(x,y)
- Damn, a menu with no parent - badly written module ?
- Display(
- Colour(11)+"*** Menu routine error - nobody caught '"+menu$+"' ","","##server##")
- Nah, we don't /really/ want a menu lads...
- ******************** Internal calls ************************
- _AddToFontList(iterand)
- file$
- file$=iterand.data$
- AddMenuEntry(file$,"Menu_ChooseFont("""+file$+""")",0,0,"")
- Menu_ChannelStuff(chan$,menu$)
- NewMenu("Channel "+chan$,menu$)
- AddMenuEntry("CTCP","",0,0,"_CTCPList")
- AddMenuEntry("Change topic","",0,0,">ChangeTopic")
- AddMenuEntry("Ban...","",1,0,"")
- AddMenuEntry("Leave","Leave("""+chan$+""")",0,0,"")
-