def create_menu(self, menu, menu_options): for option_text, option_icon, option_action, option_id in menu_options[:: -1]: if option_icon: # has icon if not callable(option_icon): option_icon = self.prep_menu_icon(option_icon) if option_text == "-": # separator win32gui.InsertMenu(menu, 0, win32con.MF_BYPOSITION, win32con.MF_SEPARATOR, None) elif option_id in self.menu_actions_by_id: # normal item checked = False if callable(option_icon): # checkbox item checked = option_icon() option_icon = None # no icon if checked: item, extras = win32gui_struct.PackMENUITEMINFO( text=option_text, fState=win32con.MFS_CHECKED, wID=option_id) else: item, extras = win32gui_struct.PackMENUITEMINFO( text=option_text, hbmpItem=option_icon, wID=option_id) win32gui.InsertMenuItem(menu, 0, 1, item) else: # submenu submenu = win32gui.CreatePopupMenu() self.create_menu(submenu, option_action) item, extras = win32gui_struct.PackMENUITEMINFO( text=option_text, hbmpItem=option_icon, hSubMenu=submenu) win32gui.InsertMenuItem(menu, 0, 1, item)
def QueryContextMenu(self, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags): s = LoadString(IDS_DISPLAY); win32gui.InsertMenu(hMenu, indexMenu, win32con.MF_BYPOSITION, idCmdFirst + MENUVERB_DISPLAY, s); indexMenu += 1 # other verbs could go here... # indicate that we added one verb. return 1
def create_menu(self, menu): # option_icon = self.prep_menu_icon(option_icon) item, extras = win32gui_struct.PackMENUITEMINFO( text=base.STR_EXIT, hbmpItem=None, wID=_ID_QUIT) win32gui.InsertMenuItem(menu, 0, 1, item) win32gui.InsertMenu(menu, 0, win32con.MF_BYPOSITION, win32con.MF_SEPARATOR, None) win32gui.InsertMenu(menu, 0, (win32con.MF_POPUP | win32con.MF_BYPOSITION), self.notices_menu, base.STR_NOTICES_MENU) win32gui.InsertMenu(menu, 0, win32con.MF_BYPOSITION, win32con.MF_SEPARATOR, None) win32gui.InsertMenu(menu, 0, win32con.MF_POPUP | win32con.MF_BYPOSITION, self.status_menu, base.STR_STATUS_MENU) win32gui.InsertMenu(menu, 0, win32con.MF_BYPOSITION, win32con.MF_SEPARATOR, None) # item, extras = win32gui_struct.PackMENUITEMINFO( # text=STR_OPEN_CONSOLE, # hbmpItem=None, # wID=_ID_OPEN_CONSOLE) # win32gui.InsertMenuItem(menu, 0, 1, item) item, extras = win32gui_struct.PackMENUITEMINFO( text=base.STR_OPEN_FOLDER, hbmpItem=None, wID=_ID_OPEN_FOLDER) win32gui.InsertMenuItem(menu, 0, 1, item) item, extras = win32gui_struct.PackMENUITEMINFO( text=base.STR_OPEN_WEBFRONT, hbmpItem=None, wID=_ID_OPEN_WEBFRONT) win32gui.InsertMenuItem(menu, 0, 1, item)
def create_menu(self, menu, menu_options): for option_text, option_icon, option_action, option_id in menu_options[:: -1]: if option_icon: option_icon = self.prep_menu_icon(option_icon) if option_text == "-": win32gui.InsertMenu(menu, 0, win32con.MF_BYPOSITION, win32con.MF_SEPARATOR, None) else: item, extras = win32gui_struct.PackMENUITEMINFO( text=option_text, hbmpItem=option_icon, wID=option_id) win32gui.InsertMenuItem(menu, 0, 1, item)
def show_menu(self): menu = win32gui.CreatePopupMenu() count = 0 for count, (option_text, option_id) in enumerate(self.menu_entries): win32gui.AppendMenu( menu, win32con.MF_STRING | win32con.MF_GRAYED | win32con.MF_DISABLED, option_id, option_text) win32gui.InsertMenu(menu, count + 1, win32con.MF_BYPOSITION, win32con.MF_SEPARATOR, None) win32gui.InsertMenuItem( menu, count + 2, 1, win32gui_struct.PackMENUITEMINFO( text="Quit", wID=0, hbmpItem=win32con.HBMMENU_MBAR_CLOSE)[0]) pos = win32gui.GetCursorPos() # See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/menus_0hdi.asp win32gui.SetForegroundWindow(self.hwnd) win32gui.TrackPopupMenu(menu, win32con.TPM_LEFTALIGN, pos[0], pos[1], 0, self.hwnd, None) win32gui.PostMessage(self.hwnd, win32con.WM_NULL, 0, 0)