Ejemplo n.º 1
0
    def _RegisterWndClass(self):
        message_map = {}
        wc = win32gui.WNDCLASS()
        wc.SetDialogProc()  # Make it a dialog class.
        wc.hInstance = self.hinst
        wc.lpszClassName = self.className
        wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        wc.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        wc.hbrBackground = win32con.COLOR_WINDOW + 1
        wc.lpfnWndProc = message_map  # could also specify a wndproc.

        # C code: wc.cbWndExtra = DLGWINDOWEXTRA + sizeof(HBRUSH) +
        #                         (sizeof(COLORREF));
        wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi")

        #  py.ico went away in python 2.5, load from executable instead
        this_app = win32api.GetModuleHandle(None)
        try:
            # python.exe and pythonw.exe
            wc.hIcon = win32gui.LoadIcon(this_app, 1)
        except win32gui.error:
            # pythonwin's icon
            wc.hIcon = win32gui.LoadIcon(this_app, 135)
        try:
            self.classAtom = win32gui.RegisterClass(wc)
        except win32gui.error, err_info:
            if err_info.winerror != winerror.ERROR_CLASS_ALREADY_EXISTS:
                raise
Ejemplo n.º 2
0
 def run(self):
     message_map = {
         win32con.WM_DESTROY: self.destroy,
         win32con.WM_COMMAND: self.command,
         self.MSG_NOTIFYICON: self.notify,
         self.MSG_POOLER: self.msg_pooler
     }
     # Register the Window class.
     window_class = win32gui.WNDCLASS()
     hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
     window_class.lpszClassName = self.controller.CLASSNAME
     window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
     window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     window_class.hbrBackground = win32con.COLOR_WINDOW
     window_class.lpfnWndProc = message_map  # could also specify a wndproc.
     classAtom = win32gui.RegisterClass(window_class)
     # Create the Window.
     style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
     self.hwnd = win32gui.CreateWindow(classAtom, self.controller.CLASSNAME,
                                       style, 0, 0, win32con.CW_USEDEFAULT,
                                       win32con.CW_USEDEFAULT, 0, 0, hinst,
                                       None)
     win32gui.UpdateWindow(self.hwnd)
     self.notify_id = None
     self.refresh_icon()
     self.evt_gui_ready.set()
     win32gui.PumpMessages()
Ejemplo n.º 3
0
 def __init__(self):
     message_map = {
         win32con.WM_DESTROY: self.OnDestroy,
         win32con.WM_COMMAND: self.OnCommand,
         win32con.WM_USER + 20: self.OnTaskbarNotify,
     }
     # Register the Window class.
     wc = gui.WNDCLASS()
     hinst = wc.hInstance = api.GetModuleHandle(None)
     wc.lpszClassName = "IdlerPopupHandler"
     wc.lpfnWndProc = message_map  # could also specify a wndproc.
     classAtom = gui.RegisterClass(wc)
     self.classAtom = classAtom
     # Create the Window.
     style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
     self.hwnd = gui.CreateWindow( classAtom, "Idling Notifications", style,  \
            0, 0, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,     \
            0, 0, hinst, None)
     gui.UpdateWindow(self.hwnd)
     iconPathName = os.path.abspath(os.path.join(sys.prefix, "pyc.ico"))
     icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
     try:
         hicon = gui.LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0,
                               0, icon_flags)
     except:
         hicon = gui.LoadIcon(0, win32con.IDI_APPLICATION)
     flags = gui.NIF_ICON | gui.NIF_MESSAGE | gui.NIF_TIP
     nid = (self.hwnd, 0, flags, win32con.WM_USER + 20, hicon,
            "Idling Notifications")
     gui.Shell_NotifyIcon(gui.NIM_ADD, nid)
Ejemplo n.º 4
0
 def create_window(self):
     message_map = {
         win32gui.RegisterWindowMessage('TaskbarCreated'): self.on_restart,
         win32con.WM_DESTROY: self.on_destroy,
         win32con.WM_COMMAND: self.on_command,
         win32con.WM_USER + 20: self.on_notify_icon,
     }
     # Register the Window class.
     window_class = win32gui.WNDCLASS()
     hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
     window_class.lpszClassName = self.WINDOW_CLASS_NAME
     # window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW  # 垂直/水平方向变化自动重绘,似乎没啥用
     window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     window_class.hbrBackground = win32con.COLOR_WINDOW
     window_class.lpfnWndProc = message_map
     classAtom = win32gui.RegisterClass(window_class)
     # Create the Window.
     style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
     self.hwnd = win32gui.CreateWindow(
         classAtom,
         self.WINDOW_CLASS_NAME,
         style,
         0,
         0,
         win32con.CW_USEDEFAULT,
         win32con.CW_USEDEFAULT,
         0,
         0,
         hinst,
         None,
     )
     win32gui.UpdateWindow(self.hwnd)
Ejemplo n.º 5
0
    def __init__(self,
                 icon,
                 gui,
                 hover_text,
                 menu_options,
                 on_quit=None,
                 default_menu_index=None,
                 window_class_name=None,):

        self.icon = icon
        self.gui = gui  # 增加了这个参数,是产生托盘的GUI类的实例,参见后面代码
        self.hover_text = hover_text
        self.on_quit = on_quit

        # 生成菜单
        # 改了选项的文字,把'quit'替换成自己想用的代表'退出'的文字
        menu_options = menu_options + ((u'退出', None, self.QUIT),)
        self._next_action_id = self.FIRST_ID
        self.menu_actions_by_id = set()
        self.menu_options = self._add_ids_to_menu_options(list(menu_options))
        self.menu_actions_by_id = dict(self.menu_actions_by_id)
        del self._next_action_id

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SysTrayIconPy"

        message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,  # 注册窗体消息,传递给相同名字的窗体
                       win32con.WM_DESTROY: self.destroy,
                       win32con.WM_COMMAND: self.command,
                       win32con.WM_USER + 20: self.notify, }
        # Register the Window class.
        window_class = win32gui.WNDCLASS()  # 生成窗口结构对象
        self.hinst = window_class.hInstance = win32gui.GetModuleHandle(
            None)  # 实例化
        window_class.lpszClassName = self.window_class_name  # 窗口类名
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW         # 窗口类型
        window_class.hCursor = win32gui.LoadCursor(
            0, win32con.IDC_ARROW)  # 窗口鼠标光标
        window_class.hbrBackground = win32con.COLOR_WINDOW  # 窗口背景色
        # could also specify a wndproc.   #定义窗口处理函数
        window_class.lpfnWndProc = message_map
        self.classAtom = win32gui.RegisterClass(window_class)  # 注册窗口类
        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(self.classAtom,  # 生成窗口   类名
                                          self.window_class_name,  # 窗口title
                                          style,  # 类型
                                          0,  # x
                                          0,  # y
                                          win32con.CW_USEDEFAULT,  # 宽度
                                          win32con.CW_USEDEFAULT,  # 高度
                                          0,  # 父窗口
                                          0,  # 菜单
                                          self.hinst,  # 句柄实例
                                          None)  # 必须为None,未知项
        win32gui.UpdateWindow(self.hwnd)  # 更新窗口
        self.notify_id = None
        self.refresh_icon()

        win32gui.PumpMessages()  # 消息循环直到窗口退出
Ejemplo n.º 6
0
 def start_icon(self):
     message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
                    win32con.WM_DESTROY: self.destroy,
                    win32con.WM_COMMAND: self.command,
                    win32con. WM_USER +20 : self.notify ,}
     # Register the Window class.
     window_class = win32gui.WNDCLASS()
     hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
     window_class.lpszClassName = self.window_class_name
     window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
     window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     window_class.hbrBackground = win32con.COLOR_WINDOW
     window_class.lpfnWndProc = message_map # could also specify a wndproc.
     classAtom = win32gui.RegisterClass(window_class)
     # Create the Window.
     style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
     self.hwnd = win32gui.CreateWindow(classAtom,
                                       self.window_class_name,
                                       style,
                                       0,
                                       0,
                                       win32con.CW_USEDEFAULT,
                                       win32con.CW_USEDEFAULT,
                                       0,
                                       0,
                                       hinst,
                                       None)
     win32gui.UpdateWindow(self.hwnd)
     self.notify_id = None
     self.refresh_icon()
     win32gui.PumpMessages()
Ejemplo n.º 7
0
 def __init__(self,
              icon,
              hover_text,
              menu_options,
              on_quit=None,
              default_menu_index=None,
              window_class_name=None,
              passClass=True):
     
     self.icon = icon
     self.hover_text = hover_text
     self.on_quit = on_quit
     self.passClass = passClass
     
     menu_options =(('退出程序', None, self.QUIT),) + menu_options
     self._next_action_id = self.FIRST_ID
     self.menu_actions_by_id = set()
     self.menu_options = self._add_ids_to_menu_options(list(menu_options))
     self.menu_actions_by_id = dict(self.menu_actions_by_id)
     del self._next_action_id
     
     
     self.default_menu_index = (default_menu_index or 0)
     self.window_class_name = window_class_name or "SysTrayIconPy"
     
     message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
                    win32con.WM_DESTROY: self.destroy,
                    win32con.WM_COMMAND: self.command,
                    win32con.WM_USER+20: self.notify,}
     # Register the Window class.
     window_class = win32gui.WNDCLASS()
     self.window_class = window_class
     hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
     self.hinst = hinst
     window_class.lpszClassName = self.window_class_name
     window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
     window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     window_class.hbrBackground = win32con.COLOR_WINDOW
     window_class.lpfnWndProc = message_map # could also specify a wndproc.
     classAtom = win32gui.RegisterClass(window_class)
     self.classAtom = classAtom
     # Create the Window.
     style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
     self.hwnd = win32gui.CreateWindow(classAtom,
                                       self.window_class_name,
                                       style,
                                       0,
                                       0,
                                       win32con.CW_USEDEFAULT,
                                       win32con.CW_USEDEFAULT,
                                       0,
                                       0,
                                       hinst,
                                       None)
     win32gui.UpdateWindow(self.hwnd)
     self.notify_id = None
     self.refresh_icon()
     
     win32gui.PumpMessages()
Ejemplo n.º 8
0
    def __init__(self,
                 icon,
                 hover_text,
                 menu_options,
                 on_quit=None,
                 default_menu_index=None,
                 window_class_name=None,
                 lock=None,
                 init_callback=None):

        self.icon = icon
        self.hover_text = hover_text
        self.on_quit = on_quit

        self.hmenu = None
        self.lock = lock

        self.init_menu_options(menu_options)

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SysTrayIconPy"

        try:
            message_map = {
                win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
                win32con.WM_DESTROY: self.destroy,
                win32con.WM_COMMAND: self.command,
                win32con.WM_USER + 20: self.notify,
                win32con.WM_USER + 21: self._refresh_icon_event
            }
            # Register the Window class.
            window_class = win32gui.WNDCLASS()
            hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
            window_class.lpszClassName = self.window_class_name
            window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
            window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
            window_class.hbrBackground = win32con.COLOR_WINDOW
            window_class.lpfnWndProc = message_map  # could also specify a wndproc.
            classAtom = win32gui.RegisterClass(window_class)
            # Create the Window.
            style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
            self.hwnd = win32gui.CreateWindow(classAtom,
                                              self.window_class_name, style, 0,
                                              0, win32con.CW_USEDEFAULT,
                                              win32con.CW_USEDEFAULT, 0, 0,
                                              hinst, None)
            win32gui.UpdateWindow(self.hwnd)
            self.notify_id = None
            self.refresh_icon()
            atexit.register(self.destroy, None, None, None, None)
            SysTrayIcon.instance = self
            self.threadid = win32api.GetCurrentThreadId()
        finally:
            if init_callback is not None:
                init_callback(self)
        win32gui.PumpMessages()
Ejemplo n.º 9
0
 def register_wnd_class(self, message_map):
     # Register the Window class.
     window_class = win32gui.WNDCLASS()
     self.hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
     window_class.lpszClassName = self.window_class_name
     window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
     window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     window_class.hbrBackground = win32con.COLOR_WINDOW
     window_class.lpfnWndProc = message_map  # could also specify a wndproc.
     return win32gui.RegisterClass(window_class)
Ejemplo n.º 10
0
 def register_window_class(self, message_map, window_class_name=None):
     #self.window_class_name = window_class_name or "SysTrayIconPy"                
     self.window_class = win32gui.WNDCLASS()
     self.window_class.hInstance = win32gui.GetModuleHandle(None)
     self.window_class.lpszClassName = window_class_name or "SysTrayIconPy"        #self.window_class_name
     self.window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
     self.window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     self.window_class.hbrBackground = win32con.COLOR_WINDOW
     self.window_class.lpfnWndProc = message_map # could also specify a wndproc.        
     self.classAtom = win32gui.RegisterClass(self.window_class)
Ejemplo n.º 11
0
 def __init__(self, apiServer):
     
     self.apiServer = apiServer
     
     self.icon = AppFolders.iconsPath("logo.ico")
     print self.icon
     self.hover_text = "iBrew"
         
     menu_options = (
                     ('Interface', None, self.show),
                    )
     
     menu_options = menu_options + (('Quit', None, self.QUIT),)
     self._next_action_id = self.FIRST_ID
     self.menu_actions_by_id = set()
     self.menu_options = self._add_ids_to_menu_options(list(menu_options))
     self.menu_actions_by_id = dict(self.menu_actions_by_id)
     del self._next_action_id
     
     
     self.default_menu_index = 1
     self.window_class_name = "ComicStreamerTrayIcon"
     
     message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
                    win32con.WM_DESTROY: self.destroy,
                    win32con.WM_COMMAND: self.command,
                    win32con.WM_USER+20 : self.notify,}
     # Register the Window class.
     window_class = win32gui.WNDCLASS()
     hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
     window_class.lpszClassName = self.window_class_name
     window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
     window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     window_class.hbrBackground = win32con.COLOR_WINDOW
     window_class.lpfnWndProc = message_map # could also specify a wndproc.
     classAtom = win32gui.RegisterClass(window_class)
     # Create the Window.
     style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
     self.hwnd = win32gui.CreateWindow(classAtom,
                                       self.window_class_name,
                                       style,
                                       0,
                                       0,
                                       win32con.CW_USEDEFAULT,
                                       win32con.CW_USEDEFAULT,
                                       0,
                                       0,
                                       hinst,
                                       None)
     win32gui.UpdateWindow(self.hwnd)
     self.notify_id = None
     self.refresh_icon()
Ejemplo n.º 12
0
    def __init__(
        self,
        icon,
        hover_text,
        static_options,
        left_click_callback=None,
        addition_menu_callback=None,
        on_restart=None,
        default_menu_index=None,
        window_class_name=None,
    ):

        self.icon = icon
        self.hover_text = hover_text
        self.on_restart = on_restart
        self.LCC = left_click_callback
        self.AMC = addition_menu_callback

        self._next_action_id = self.FIRST_ID
        self.static_actions = dict()
        self.static_options = self._add_ids_to_menu_options(
            list(static_options), self.static_actions)

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SysTrayIconPy"

        message_map = {
            win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
            win32con.WM_DESTROY: self.destroy,
            win32con.WM_COMMAND: self.command,
            win32con.WM_USER + 20: self.notify,
        }
        # Register the Window class.
        window_class = win32gui.WNDCLASS()
        hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map  # could also specify a wndproc.
        classAtom = win32gui.RegisterClass(window_class)
        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(classAtom, self.window_class_name,
                                          style, 0, 0, win32con.CW_USEDEFAULT,
                                          win32con.CW_USEDEFAULT, 0, 0, hinst,
                                          None)
        win32gui.UpdateWindow(self.hwnd)
        self.notify_id = None
        self.refresh_icon()
Ejemplo n.º 13
0
 def __init__(self,
              icon,
              hover_text,
              menu_cb,
              on_quit=None,
              default_menu_index=None,
              window_class_name=None,):
     
     self.icon = icon
     self.hover_text = hover_text
     self.on_quit = on_quit
     
     self.menu_cb = menu_cb
     self.default_menu_index = (default_menu_index or 0)
     self.window_class_name = window_class_name or "SysTrayIconPy"
     
     message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
                    win32con.WM_DESTROY: self.destroy,
                    win32con.WM_COMMAND: self.command,
                    win32con.WM_USER+20 : self.notify,}
     # Register the Window class.
     window_class = win32gui.WNDCLASS()
     hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
     window_class.lpszClassName = self.window_class_name
     window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
     window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     window_class.hbrBackground = win32con.COLOR_WINDOW
     window_class.lpfnWndProc = message_map # could also specify a wndproc.
     classAtom = win32gui.RegisterClass(window_class)
     # Create the Window.
     style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
     self.hwnd = win32gui.CreateWindow(classAtom,
                                       self.window_class_name,
                                       style,
                                       0,
                                       0,
                                       win32con.CW_USEDEFAULT,
                                       win32con.CW_USEDEFAULT,
                                       0,
                                       0,
                                       hinst,
                                       None)
     win32gui.UpdateWindow(self.hwnd)
     self.notify_id = None
     self.refresh_icon()
     
     win32gui.PumpMessages()
Ejemplo n.º 14
0
Archivo: win32.py Proyecto: djon3s/APAF
    def __init__(self, reactor, callback):
        self.icon = os.path.join(config.drawable_dir, 'systray.ico')
        self.hover_text = config.description
        self.window_class_name = config.appname
        self.default_menu_index = 1
        self.reactor = reactor

        self.menu_actions_by_id = dict()
        self._next_action_id = 0
        self.SPECIAL_ACTIONS = list()
        self.menu_options = self._add_ids_to_menu_options((
            ('Open Panel service in Browser', None, base.open_panel_browser),
            # services list submenu
            ('Services', None, (('Fooo', None, self.bye), ('bar', None,
                                                           self.bye))),
            ('Quit', None, self.bye),
        ))

        message_map = {
            win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
            win32con.WM_DESTROY: self.destroy,
            win32con.WM_COMMAND: self.command,
            win32con.WM_USER + 20: self.notify,
        }
        # Register the Window class.
        window_class = win32gui.WNDCLASS()
        hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map  # could also specify a wndproc.
        classAtom = win32gui.RegisterClass(window_class)
        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(classAtom, self.window_class_name,
                                          style, 0, 0, win32con.CW_USEDEFAULT,
                                          win32con.CW_USEDEFAULT, 0, 0, hinst,
                                          None)
        win32gui.UpdateWindow(self.hwnd)
        self.notify_id = None
        self.refresh_icon()

        ## finally start the reactor
        callback()
        reactor.run()
        win32gui.PumpMessages()
Ejemplo n.º 15
0
 def __init__(self):
     self.window_class = win32gui.WNDCLASS()
     self.hinstance = self.window_class.hInstance = win32gui.GetModuleHandle(
         None)
     self.window_class.lpszClassName = self.CLASS_NAME
     self.window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
     self.window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     self.window_class.hbrBackground = win32con.COLOR_WINDOW
     self.window_class.lpfnWndProc = self.dispatch
     self.class_atom = win32gui.RegisterClass(self.window_class)
     self.hwnd = win32gui.CreateWindow(
         self.class_atom, self.CLASS_NAME,
         win32con.WS_OVERLAPPED | win32con.WS_SYSMENU, 0, 0,
         win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 0, 0,
         self.hinstance, None)
     win32gui.UpdateWindow(self.hwnd)
     self.set_icon()
Ejemplo n.º 16
0
    def _RegisterWndClass(self):
        message_map = {}
        wc = win32gui.WNDCLASS()
        wc.SetDialogProc()  # Make it a dialog class.
        wc.hInstance = self.hinst
        wc.lpszClassName = self.className
        wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        wc.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        wc.hbrBackground = win32con.COLOR_WINDOW + 1
        wc.lpfnWndProc = message_map  # could also specify a wndproc.
        wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi")

        try:
            self.classAtom = win32gui.RegisterClass(wc)
        except win32gui.error, err_info:
            if err_info.winerror != winerror.ERROR_CLASS_ALREADY_EXISTS:
                raise
    def __init__(self, autostart):
        self.autostart = autostart
        self.thread_id = win32api.GetCurrentThreadId()
        if not self.autostart:
            launch(self)
        name = "Open Media Library"
        self.icon = "ico/oml.ico"
        self.hover_text = name
        self.on_quit = quit

        menu_options = (('Open Media Library', None, None),
                        ('Launch', None, launch), ('Quit', None, self.QUIT))
        self._next_action_id = self.FIRST_ID
        self.menu_actions_by_id = set()
        self.menu_options = self._add_ids_to_menu_options(list(menu_options))
        self.menu_actions_by_id = dict(self.menu_actions_by_id)
        del self._next_action_id

        self.default_menu_index = 1
        self.window_class_name = name

        message_map = {
            win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
            win32con.WM_DESTROY: self.destroy,
            win32con.WM_COMMAND: self.command,
            win32con.WM_USER + 20: self.notify,
        }
        # Register the Window class.
        window_class = win32gui.WNDCLASS()
        hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map  # could also specify a wndproc.
        classAtom = win32gui.RegisterClass(window_class)
        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(classAtom, self.window_class_name,
                                          style, 0, 0, win32con.CW_USEDEFAULT,
                                          win32con.CW_USEDEFAULT, 0, 0, hinst,
                                          None)
        win32gui.UpdateWindow(self.hwnd)
        self.notify_id = None
        self.refresh_icon()
        win32gui.PumpMessages()
Ejemplo n.º 18
0
    def _dialog_register_windowclass(cls, instance, name):
        if not cls._dialog_registered_windowclass:
            wc = win32gui.WNDCLASS()
            wc.SetDialogProc()
            wc.hInstance = instance
            wc.lpszClassName = name
            wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
            wc.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
            wc.hbrBackground = win32con.COLOR_WINDOW + 1
            wc.lpfnWndProc = {}

            # C code: wc.cbWndExtra = DLGWINDOWEXTRA + sizeof(HBRUSH) + (sizeof(COLORREF));
            wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi")

            cls._dialog_atom = win32gui.RegisterClass(wc)
            cls._dialog_registered_windowclass = True

        return cls._dialog_atom
    def __init__(
        self,
        keyboard_handler,
        icon,
        hover_text,
        menu_options,
        on_quit=None,
        default_menu_index=None,
        window_class_name=None,
    ):

        threading.Thread.__init__(self)

        self.icon = icon
        self.hover_text = hover_text
        self.on_quit = on_quit
        self.KbH = keyboard_handler

        menu_options = menu_options + (('Quit', None, self.QUIT), )
        self._next_action_id = self.FIRST_ID
        self.menu_actions_by_id = set()
        self.menu_options = self._add_ids_to_menu_options(list(menu_options))
        self.menu_actions_by_id = dict(self.menu_actions_by_id)
        del self._next_action_id

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SysTrayIconPy"

        message_map = {
            win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
            win32con.WM_DESTROY: self.destroy,
            win32con.WM_COMMAND: self.command,
            win32con.WM_USER + 20: self.notify,
        }
        # Register the Window class.
        window_class = win32gui.WNDCLASS()
        self.hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map  # could also specify a wndproc.
        self.classAtom = win32gui.RegisterClass(window_class)
Ejemplo n.º 20
0
 def __init__(self):
     # initial projector pixel values
     pixels = [[513, 959], [488, 1129], [531, 1148], [570,
                                                      1117], [595, 1049],
               [605, 960], [597, 871], [573, 802], [535, 771], [491, 789],
               [507, 1335], [602, 1355], [673, 1278], [715,
                                                       1136], [730, 961],
               [719, 787], [679, 644], [610, 565], [514, 583], [619, 1604],
               [761, 1584], [848, 1439], [895, 1220], [912, 963],
               [901, 707], [858, 486], [773, 339], [632, 317], [745, 1760],
               [892, 1698], [974, 1513], [1016, 1256], [1032, 964],
               [1022, 673], [985, 415], [907, 228], [761, 164]]
     points = [[p[1], p[0]] for p in pixels]
     # convert (u,v) to (row, column)
     self._pixels = [[int(p[1]) + 0.5, int(p[0]) + 0.5] for p in points]
     # initialize the increment for each pixel in the image
     self._increment = 10
     # initialize the pixel selected for moving
     self._selected_pixel = 0
     # setup the window
     self._name = "MainWindow"
     self._title = "Dome Calibration"
     self._width = PROJECTOR_PIXEL_WIDTH
     self._height = PROJECTOR_PIXEL_HEIGHT
     self._style = window_styles["regular"]
     self._fullscreen = False
     win32gui.InitCommonControls()
     self._hinstance = win32gui.dllhandle
     wc = win32gui.WNDCLASS()
     wc.lpszClassName = self._name
     wc.style = win32con.CS_GLOBALCLASS | win32con.CS_VREDRAW | win32con.CS_HREDRAW
     wc.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
     wc.lpfnWndProc = self.window_process
     try:
         classAtom = win32gui.RegisterClass(wc)
     except win32gui.error, err_info:
         if err_info.winerror != winerror.ERROR_CLASS_ALREADY_EXISTS:
             raise
Ejemplo n.º 21
0
    def __init__(
        self,
        icon,
        hover_text,
        menu_options,
        on_quit=None,
        default_menu_index=None,
        window_class_name=None,
    ):

        self.icon = icon
        self.hover_text = hover_text
        self.on_quit = on_quit

        menu_options = menu_options + (('Quit', None, self.QUIT), )
        self._next_action_id = self.FIRST_ID
        self.menu_actions_by_id = set()
        self.menu_options = self._add_ids_to_menu_options(list(menu_options))
        self.menu_actions_by_id = dict(self.menu_actions_by_id)
        del self._next_action_id

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SysTrayIconPy"

        message_map = {
            win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
            win32con.WM_DESTROY: self.destroy,
            win32con.WM_COMMAND: self.command,
            # owner-draw related handlers.
            win32con.WM_MEASUREITEM: self.OnMeasureItem,
            win32con.WM_DRAWITEM: self.OnDrawItem,
            win32con.WM_USER + 20: self.notify,
        }
        # Register the Window class.
        window_class = win32gui.WNDCLASS()
        hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map  # could also specify a wndproc.
        classAtom = win32gui.RegisterClass(window_class)
        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(classAtom, self.window_class_name,
                                          style, 0, 0, win32con.CW_USEDEFAULT,
                                          win32con.CW_USEDEFAULT, 0, 0, hinst,
                                          None)
        win32gui.UpdateWindow(self.hwnd)
        self.notify_id = None
        self.refresh_icon()

        # Load up some information about menus needed by our owner-draw code.
        # The font to use on the menu.
        ncm = win32gui.SystemParametersInfo(win32con.SPI_GETNONCLIENTMETRICS)
        self.font_menu = win32gui.CreateFontIndirect(ncm['lfMenuFont'])
        # spacing for our ownerdraw menus - not sure exactly what constants
        # should be used (and if you owner-draw all items on the menu, it
        # doesn't matter!)
        self.menu_icon_height = win32api.GetSystemMetrics(
            win32con.SM_CYMENU) - 4
        self.menu_icon_width = self.menu_icon_height
        self.icon_x_pad = 8  # space from end of icon to start of text.
        # A map we use to stash away data we need for ownerdraw.  Keyed
        # by integer ID - that ID will be set in dwTypeData of the menu item.
        self.menu_item_map = {}

        win32gui.PumpMessages()
Ejemplo n.º 22
0
    def __init__(
        self,
        icon,
        hover_text,
        menu_options,
        menu_options2,
        on_quit=None,
        default_menu_index=None,
        window_class_name=None,
    ):

        self.button_doubleclicked = False
        self.playing = None
        self.playingID = ''
        self.toggle = False
        self.vlc = vlcimp.Instance()
        self.player = self.vlc.media_player_new()
        self.icon = icon
        self.hover_text = hover_text
        self.on_quit = on_quit
        self.menu = None

        self.media_list = []
        self.icon_list = []
        opt_default = ''
        menu_options = menu_options + (
            ('Stop', None, self.STOP, opt_default), )
        menu_options2 = menu_options2 + (
            ('Quit', None, self.QUIT, opt_default), )

        self._next_action_id = self.FIRST_ID
        self.menu_actions_by_id = set()
        self.menu_options = self._add_ids_to_menu_options(list(menu_options))

        self.menu_options2 = self._add_ids_to_menu_options(list(menu_options2))
        self.menu_actions_by_id = dict(self.menu_actions_by_id)
        del self._next_action_id

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SystemTrayRadio"

        message_map = {
            win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
            win32con.WM_DESTROY: self.destroy,
            win32con.WM_COMMAND: self.command,
            win32con.WM_USER + 20: self.notify,
        }

        hinst = win32gui.GetModuleHandle(None)
        window_class = win32gui.WNDCLASS()
        window_class.hInstance = hinst
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map
        classAtom = win32gui.RegisterClass(window_class)
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(classAtom, self.window_class_name,
                                          style, 0, 0, win32con.CW_USEDEFAULT,
                                          win32con.CW_USEDEFAULT, 0, 0, hinst,
                                          None)
        win32gui.UpdateWindow(self.hwnd)
        self.notify_id = None
        self.refresh_icon()
        win32gui.PumpMessages()
Ejemplo n.º 23
0
	def __init__(self,
				 icon,
				 hover_text,
				 menu_options,
				 on_quit=None,
				 default_menu_index=None,
				 window_class_name=None,
				 data_feedback=None,
				 extra_icon_paths=None):
		
		self.icon = icon
		self.hover_text = hover_text
		self.on_quit = on_quit
		self.extra_icon_paths = extra_icon_paths
		
		menu_options = menu_options + (('Quit', None, self.QUIT),)
		self._next_action_id = self.FIRST_ID
		self.menu_actions_by_id = set()
		self.menu_options = self._add_ids_to_menu_options(list(menu_options))
		self.menu_actions_by_id = dict(self.menu_actions_by_id)
		del self._next_action_id
		
		
		self.default_menu_index = (default_menu_index or 0)
		self.window_class_name = window_class_name or "SysTrayIconPy"
		
		# This dict sets up a coorespondance from received win32gui messages (in the form of standard integer constants as defined in win32con)
		#   and the desired action to take upon receiving the message.
		#   WM_USER is the beginning of a reserved block of user-definable messages.
		message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
					   win32con.WM_DESTROY: self.destroy,
					   win32con.WM_COMMAND: self.command,
					   win32con.WM_USER+self.OFFSET : self.notify,
					   win32con.WM_USER+self.OFFSET+1 : self.change_icon,}
		# Register the Window class.
		window_class = win32gui.WNDCLASS()
		hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
		window_class.lpszClassName = self.window_class_name
		window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW;
		window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
		window_class.hbrBackground = win32con.COLOR_WINDOW
		window_class.lpfnWndProc = message_map # could also specify a wndproc.
		classAtom = win32gui.RegisterClass(window_class)
		# Create the Window.
		style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
		self.hwnd = win32gui.CreateWindow(classAtom,
										  self.window_class_name,
										  style,
										  0,
										  0,
										  win32con.CW_USEDEFAULT,
										  win32con.CW_USEDEFAULT,
										  0,
										  0,
										  hinst,
										  None)
		win32gui.UpdateWindow(self.hwnd)
		self.notify_id = None
		self.refresh_icon()
		
		# Send data to calling script. Used to retrieve hwnd in order to send messages.
		if(data_feedback): data_feedback(self)
		
		# Runs the main loop that waits for messages in this thread
		win32gui.PumpMessages()
Ejemplo n.º 24
0
    def __init__(self,
                 icon,
                 hover_text,
                 menu_options,
                 on_exit=None,
                 default_menu_index=None,
                 window_class_name=None,
                 call_on_startup=None):
        """
        The SysTrayIcon class implements an icon in the windows system tray, which allows left click on the icon for an action
        and right click for a menu
        :param icon: Full path to icon file
        :param hover_text: Text to show when hovering above icon
        :param menu_options: List of menu options and functions to call
        :param on_exit: FUnction to call when exiting
        :param default_menu_index: The menu item to select when clicking the icon
        :param window_class_name: Classname
        :param call_on_startup: Function to call on startup
        """
        self.icon = icon
        self.hover_text = hover_text
        self.on_exit = on_exit

        menu_options = menu_options + [('Exit', None, self.EXIT)]
        self._next_action_id = self.FIRST_ID
        self.menu_actions_by_id = set()
        self.menu_options = self._add_ids_to_menu_options(list(menu_options))
        self.menu_actions_by_id = dict(self.menu_actions_by_id)
        del self._next_action_id

        self.default_menu_index = (default_menu_index or 0)
        self.window_class_name = window_class_name or "SysTrayIconPy"

        message_map = {
            win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart,
            win32con.WM_DESTROY: self.destroy,
            win32con.WM_COMMAND: self.command,
            win32con.WM_USER + 20: self.notify
        }
        if self.on_exit:
            message_map[win32con.WM_QUERYENDSESSION] = self.on_exit
        # Register the Window class.
        window_class = win32gui.WNDCLASS()
        hinst = window_class.hInstance = win32gui.GetModuleHandle(None)
        window_class.lpszClassName = self.window_class_name
        window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
        window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
        window_class.hbrBackground = win32con.COLOR_WINDOW
        window_class.lpfnWndProc = message_map  # could also specify a wndproc.
        classAtom = win32gui.RegisterClass(window_class)
        # Create the Window.
        style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU
        self.hwnd = win32gui.CreateWindow(classAtom, self.window_class_name,
                                          style, 0, 0, win32con.CW_USEDEFAULT,
                                          win32con.CW_USEDEFAULT, 0, 0, hinst,
                                          None)
        win32gui.UpdateWindow(self.hwnd)
        self.notify_id = None
        self.refresh_icon()

        if call_on_startup is not None:
            call_on_startup(self)
        win32gui.PumpMessages()