Select WaitEvent() Case EVENT_MENUEVENT Select EventData() Case MENU_ACTION If MenuItem[MENU_ACTION] CheckMenu MenuItem[MENU_ACTION]
SuperStrictImport maxgui.maxguiImport brl.retroImport brl.pngloaderPrivateGlobal MenuMap:TMap=New TMapPublicFunction GetMenu:TGadget(menuname:String) Return TGadget(menumap.valueforkey(menuname))EndFunctionFunction LoadMenu:Int(url:Object,root:TGadget) Local text:String,s:String,command:String,parent:TGadget,item:Tgadget,p:Int,params:String,tagname:String,hotkeyname:String Local hotkey:Int,modifier:Int,f:TStream,title:String,menu:TGadget,sarr:String[],menuname:String,actionname:String,pixmap:TPixmap f=ReadStream(url) If Not f Return False While Not f.Eof() s$=f.ReadLine() s=Trim(s) If Left(s,1)="[" And Right(s,1)="]" title$=Mid(s,2,Len(s)-2) item:TGadget=Null menu:TGadget=CreateMenu(title,0,root) parent:TGadget=menu Else p=Instr(s," ") If p command$=Left(s,p-1) Else command=s EndIf command=Trim(command) command=Lower(command) If p params$=Right(s,Len(s)-p) Else params="" EndIf Select command Case "<>" If parent CreateMenu("",0,parent) Case "{" If item:TGadget<>Null parent=item Case "}" parent=menu Case "menu" If parent sarr=params.split(",")[..4] 'Text to show on menu menuname=sarr[0].Trim() menuname=menuname.Replace("~q","") 'Hotkey hotkeyname=sarr[1].Trim() hotkey=KeyCode(hotkeyname) 'Hotkey modifier modifier=Int(sarr[2]) 'Menu action, stored in gadget extra actionname=sarr[3].Trim() If Not actionname actionname=menuname item:TGadget=CreateMenu(menuname,0,parent,hotkey,modifier) SetGadgetExtra item,actionname MenuMap.insert(actionname,item) pixmap=LoadPixmap(actionname+".png") If pixmap SetGadgetPixmap(item,pixmap) EndIf EndSelect EndIf Wend f.close() Return TrueEndFunctionPrivateFunction KeyCode:Int(keyname$) keyname=Upper(keyname) keyname=Trim(keyname) Select keyname Case "A" Return KEY_A Case "B" Return KEY_B Case "C" Return KEY_C Case "D" Return KEY_D Case "E" Return KEY_E Case "F" Return KEY_F Case "G" Return KEY_G Case "H" Return KEY_H Case "I" Return KEY_I Case "J" Return KEY_J Case "K" Return KEY_K Case "L" Return KEY_L Case "M" Return KEY_M Case "N" Return KEY_N Case "O" Return KEY_O Case "P" Return KEY_P Case "Q" Return KEY_Q Case "R" Return KEY_R Case "S" Return KEY_S Case "T" Return KEY_T Case "U" Return KEY_U Case "V" Return KEY_V Case "W" Return KEY_W Case "X" Return KEY_X Case "Y" Return KEY_Y Case "Z" Return KEY_Z Case "0" Return KEY_0 Case "1" Return KEY_1 Case "2" Return KEY_2 Case "3" Return KEY_3 Case "4" Return KEY_4 Case "5" Return KEY_5 Case "6" Return KEY_6 Case "7" Return KEY_7 Case "8" Return KEY_8 Case "9" Return KEY_9 Case "F1" Return KEY_F1 Case "F2" Return KEY_F2 Case "F3" Return KEY_F3 Case "F4" Return KEY_F4 Case "F5" Return KEY_F5 Case "F6" Return KEY_F6 Case "F7" Return KEY_F7 Case "F8" Return KEY_F8 Case "F9" Return KEY_F9 Case "F10" Return KEY_F10 Case "F11" Return KEY_F11 Case "F12" Return KEY_F12 Case "SPACE" Return KEY_SPACE Case "ESCAPE" Return KEY_ESCAPE Case "BACKSPACE" Return KEY_BACKSPACE Case "CLEAR" Return KEY_CLEAR Case "RETURN" Return KEY_RETURN Case "ENTER" Return KEY_ENTER 'Case "PAUSE" Return KEY_PAUSE 'Case "CAPSLOCK" Return KEY_CAPSLOCK Case "PAGEUP" Return KEY_PAGEUP Case "PAGEDOWN" Return KEY_PAGEDOWN Case "END" Return KEY_END Case "HOME" Return KEY_HOME Case "LEFT" Return KEY_LEFT Case "RIGHT" Return KEY_RIGHT Case "UP" Return KEY_UP Case "DOWN" Return KEY_DOWN Case "SELECT" Return KEY_SELECT Case "PRINT" Return KEY_PRINT Case "EXECUTE" Return KEY_EXECUTE Case "SCREEN" Return KEY_SCREEN Case "INSERT" Return KEY_INSERT Case "DELETE" Return KEY_DELETE 'Case "HELP" Return KEY_HELP 'Case "NUMLOCK" Return KEY_NUMLOCK 'Case "SCROLL" Return KEY_SCROLL Case "-","_" Return KEY_MINUS Case "="."+" Return KEY_EQUALS Case "[","{" Return KEY_OPENBRACKET Case "]","}" Return KEY_CLOSEBRACKET Case "","|" Return KEY_BACKSLASH Case ";",":" Return KEY_SEMICOLON Case "'","~q" Return KEY_QUOTES Case ",","<" Return KEY_COMMA Case ".".">" Return KEY_PERIOD Case "/","?" Return KEY_SLASH EndSelectEndFunctionPublic
If EventID()=EVENT_MENUACTION Local menu:TGadget menu=TGadget(EventSource()) Select String(menu.extra) Case "OpenFile" RequestFile("") EndSelect EndIf
[File]menu "New"<>menu "Open...", O, 2, OpenFile
menu menuname [, hotkey, modifier, actionname ]