コード例 #1
0
    def show_menu(self):
        menu = win32gui.CreatePopupMenu()
        self.create_menu(menu, self.menu_options)
        #win32gui.SetMenuDefaultItem(menu, 1000, 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)
コード例 #2
0
    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_id in self.menu_actions_by_id:
                item, extras = win32gui_struct.PackMENUITEMINFO(text=option_text,
                                                                hbmpItem=option_icon,
                                                                wID=option_id)
                win32gui.InsertMenuItem(menu, 0, 1, item)
            else:
                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)
コード例 #3
0
ファイル: systrayiconthread.py プロジェクト: usermonk/sabnzbd
    def show_menu(self):
        menu = win32gui.CreatePopupMenu()
        self.create_menu(menu, self.menu_options)
        #win32gui.SetMenuDefaultItem(menu, 1000, 0)

        try:
            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)
        except pywintypes.error:
            # Weird PyWin/win32gui bug, just ignore it for now
            pass
コード例 #4
0
ファイル: tray.py プロジェクト: duke79/dukepy
    def create_menu(self, menu, menu_options):
        for menu_option in menu_options[::-1]:
            if isinstance(menu_option.icon, str):
                menu_option.icon = self.prep_menu_icon(menu_option.icon)

            if isinstance(menu_option, TraySubmenu):
                submenu = win32gui.CreatePopupMenu()
                self.create_menu(submenu, menu_option.items)
                item, extras = win32gui_struct.PackMENUITEMINFO(
                    text=menu_option.text,
                    hbmpItem=menu_option.icon,
                    hSubMenu=submenu,
                    fState=menu_option.style)
                win32gui.InsertMenuItem(menu, 0, 1, item)
            elif isinstance(menu_option, TrayItem):
                item, extras = win32gui_struct.PackMENUITEMINFO(
                    text=menu_option.text,
                    hbmpItem=menu_option.icon,
                    wID=menu_option._next_action_id,
                    fState=menu_option.style,
                    fType=menu_option.type)
                win32gui.InsertMenuItem(menu, 0, 1, item)
コード例 #5
0
	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)
コード例 #6
0
    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)
コード例 #7
0
 def show_menu(self):
     menu_options = self.menu_cb()
     menu_options = menu_options + [('Quit', None, self.QUIT),]
     self._next_action_id = self.FIRST_ID
     self.menu_actions_by_id = set()
     menu_options = self._add_ids_to_menu_options(menu_options)
     self.menu_actions_by_id = dict(self.menu_actions_by_id)
     del self._next_action_id
     menu = win32gui.CreatePopupMenu()
     self.create_menu(menu, menu_options)
     #win32gui.SetMenuDefaultItem(menu, 1000, 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)