def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) proxy_setting = config.get(["modules", "launcher", "proxy"], "pac") if proxy_setting == "pac": self.on_enable_pac() elif proxy_setting == "gae": self.on_enable_gae_proxy() elif proxy_setting == "disable": # Don't disable proxy setting, just do nothing. pass else: xlog.warn("proxy_setting:%r", proxy_setting)
def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "icon", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS)
def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "python.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show)
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "python.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) def make_menu(self): menu_options = (("Config", None, self.on_show), ("Check update", None, self.on_check_update), ("Enable Proxy", None, self.on_enable_proxy), ("Disable Proxy", None, self.on_disable_proxy), ("restart goagent", None, self.on_restart_goagent)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_goagent(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def set_register(self, reg_path, name, reg_type, value): #_, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name) winreg.SetValueEx(reg_path, name, 0, reg_type, value) logging.info("set register path:%r name:%s type:%d value:%s", reg_path, name, reg_type, value) def on_enable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 1) self.set_register(self.INTERNET_SETTINGS, 'ProxyOverride', 1, '*.local;<local>') # Bypass the proxy for localhost self.set_register(self.INTERNET_SETTINGS, 'ProxyServer', 1, '127.0.0.1:8087') def on_disable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 0) def show_control_web(self, widget=None, data=None): webbrowser.open("http://127.0.0.1:8085/") def on_quit(self, widget, data=None): pass def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "python.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS)
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "python.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show) def make_menu(self): menu_options = (("Show", None, self.on_show), ("Check update", None, self.on_check_update), ("restart goagent", None, self.on_restart_goagent)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_goagent(self, widget=None, data=None): module_init.stop() module_init.start() def on_check_update(self, widget=None, data=None): update.check_update() def show_control_web(self, widget=None, data=None): webbrowser.open("http://127.0.0.1:8085/") def on_quit(self, widget, data=None): pass def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class TrayIco: def __init__(self): self.menu_options = (("Open window", None, restore), ) self.tray_instance = SysTrayIcon(resource_path("ghost.ico"), "Ready!", self.menu_options, on_quit=ask_quit) def init_icon_tray(self): self.tray_instance.start() def kill_icon_tray(self): self.tray_instance.shutdown() def tip_info(self, text='Example', coords=(0, 0)): self.text = text self.tip = Toplevel(root) if coords == (0, 0): x1, y1 = work_area[2] - 310, work_area[3] - 20 coords = (x1, y1) self.tip.wm_overrideredirect(1) self.tip.wm_geometry("+%d+%d" % coords) label = Label(self.tip, text=self.text, justify=LEFT, foreground="white", background=theme_color, relief=SOLID, borderwidth=2, font=("tahoma", "9", "normal")) label.pack(ipadx=1) self.tip.after(1200, self.tip_kill) def tip_kill(self): self.tip.after(1400, lambda: self.tip.wm_attributes('-alpha', 0.6)) self.tip.after(1600, lambda: self.tip.wm_attributes('-alpha', 0.5)) self.tip.after(1800, lambda: self.tip.wm_attributes('-alpha', 0.3)) self.tip.after(2000, lambda: self.tip.wm_attributes('-alpha', 0.2)) self.tip.after(2200, lambda: self.tip.wm_attributes('-alpha', 0.1)) self.tip.after(2400, self.tip.destroy)
def __init__(self): self.image_dir = os.path.join(plexpy.PROG_DIR, 'data/interfaces/', plexpy.CONFIG.INTERFACE, 'images') self.icon = os.path.join(self.image_dir, 'logo-circle.ico') if plexpy.UPDATE_AVAILABLE: self.hover_text = common.PRODUCT + ' - Update Available!' self.update_title = 'Check for Updates - Update Available!' else: self.hover_text = common.PRODUCT self.update_title = 'Check for Updates' if plexpy.CONFIG.LAUNCH_STARTUP: launch_start_icon = os.path.join(self.image_dir, 'check-solid.ico') else: launch_start_icon = None if plexpy.CONFIG.LAUNCH_BROWSER: launch_browser_icon = os.path.join(self.image_dir, 'check-solid.ico') else: launch_browser_icon = None self.menu = [['Open Tautulli', None, self.tray_open, 'default'], ['', None, 'separator', None], [ 'Start Tautulli at Login', launch_start_icon, self.tray_startup, None ], [ 'Open Browser when Tautulli Starts', launch_browser_icon, self.tray_browser, None ], ['', None, 'separator', None], [self.update_title, None, self.tray_check_update, None], ['Restart', None, self.tray_restart, None]] if not plexpy.FROZEN: self.menu.insert(6, ['Update', None, self.tray_update, None]) self.tray_icon = SysTrayIcon(self.icon, self.hover_text, self.menu, on_quit=self.tray_quit)
class WindowsSystemTray(object): def __init__(self): self.image_dir = os.path.join(plexpy.PROG_DIR, 'data/interfaces/', plexpy.CONFIG.INTERFACE, 'images') if plexpy.UPDATE_AVAILABLE: self.icon = os.path.join(self.image_dir, 'logo-circle-update.ico') self.hover_text = common.PRODUCT + ' - Update Available!' else: self.icon = os.path.join(self.image_dir, 'logo-circle.ico') self.hover_text = common.PRODUCT if plexpy.CONFIG.LAUNCH_STARTUP: launch_start_icon = os.path.join(self.image_dir, 'check-solid.ico') else: launch_start_icon = None if plexpy.CONFIG.LAUNCH_BROWSER: launch_browser_icon = os.path.join(self.image_dir, 'check-solid.ico') else: launch_browser_icon = None self.menu = [['Open Tautulli', None, self.tray_open, 'default'], ['', None, 'separator', None], [ 'Start Tautulli at Login', launch_start_icon, self.tray_startup, None ], [ 'Open Browser when Tautulli Starts', launch_browser_icon, self.tray_browser, None ], ['', None, 'separator', None], ['Check for Updates', None, self.tray_check_update, None], ['Restart', None, self.tray_restart, None]] if not plexpy.FROZEN: self.menu.insert(6, ['Update', None, self.tray_update, None]) self.tray_icon = SysTrayIcon(self.icon, self.hover_text, self.menu, on_quit=self.tray_quit) def start(self): logger.info("Launching Windows system tray icon.") try: self.tray_icon.start() except Exception as e: logger.error("Unable to launch system tray icon: %s." % e) def shutdown(self): self.tray_icon.shutdown() def update(self, **kwargs): self.tray_icon.update(**kwargs) def tray_open(self, tray_icon): plexpy.launch_browser(plexpy.CONFIG.HTTP_HOST, plexpy.HTTP_PORT, plexpy.HTTP_ROOT) def tray_startup(self, tray_icon): plexpy.CONFIG.LAUNCH_STARTUP = not plexpy.CONFIG.LAUNCH_STARTUP set_startup() def tray_browser(self, tray_icon): plexpy.CONFIG.LAUNCH_BROWSER = not plexpy.CONFIG.LAUNCH_BROWSER set_startup() def tray_check_update(self, tray_icon): versioncheck.check_update() def tray_update(self, tray_icon): if plexpy.UPDATE_AVAILABLE: plexpy.SIGNAL = 'update' else: hover_text = common.PRODUCT + ' - No Update Available' self.update(hover_text=hover_text) def tray_restart(self, tray_icon): plexpy.SIGNAL = 'restart' def tray_quit(self, tray_icon): plexpy.SIGNAL = 'shutdown' def change_tray_update_icon(self): if plexpy.UPDATE_AVAILABLE: self.icon = os.path.join(self.image_dir, 'logo-circle-update.ico') self.hover_text = common.PRODUCT + ' - Update Available!' else: self.icon = os.path.join(self.image_dir, 'logo-circle.ico') self.hover_text = common.PRODUCT + ' - No Update Available' self.update(icon=self.icon, hover_text=self.hover_text) def change_tray_icons(self): if plexpy.CONFIG.LAUNCH_STARTUP: launch_start_icon = os.path.join(self.image_dir, 'check-solid.ico') else: launch_start_icon = None if plexpy.CONFIG.LAUNCH_BROWSER: launch_browser_icon = os.path.join(self.image_dir, 'check-solid.ico') else: launch_browser_icon = None self.menu[2][1] = launch_start_icon self.menu[3][1] = launch_browser_icon self.update(menu_options=self.menu)
class Win_tray: def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "icon", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) # proxy_setting = config.get(["modules", "launcher", "proxy"], "smart_router") # if proxy_setting == "pac": # self.on_enable_pac() # elif proxy_setting == "gae": # self.on_enable_gae_proxy() # elif proxy_setting == "x_tunnel": # self.on_enable_x_tunnel() # elif proxy_setting == "smart_router": # self.on_enable_smart_router() # elif proxy_setting == "disable": # # Don't disable proxy setting, just do nothing. # pass # else: # xlog.warn("proxy_setting:%r", proxy_setting) def get_proxy_state(self): try: AutoConfigURL, reg_type = winreg.QueryValueEx( self.INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: if AutoConfigURL == "https://www.txthinking.com/pac/white.pac": return "pac" else: return "unknown" except: pass try: ProxyEnable, reg_type = winreg.QueryValueEx( self.INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: ProxyServer, reg_type = winreg.QueryValueEx( self.INTERNET_SETTINGS, 'ProxyServer') if ProxyServer == "127.0.0.1:8087": return "gae" if ProxyServer == "127.0.0.1:1080": return "Socks5" else: return "unknown" except: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): global menu_options proxy_stat = self.get_proxy_state() proxy_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "disable" else 0 pac_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "pac" else 0 # x_tunnel_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "x_tunnel" else 0 # smart_router_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "smart_router" else 0 # pac_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "pac" else 0 # disable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "disable" else 0 if lang_code == "zh_CN": menu_options = [(u"设置(待完善)", None, self.on_show, 0)] # if config.get(["modules", "gae_proxy", "auto_start"], 0) == 1: # menu_options.append((u"全局通过GAEProxy代理", None, self.on_enable_gae_proxy, win32_adapter.fState.MFS_CHECKED)) # if config.get(["modules", "x_tunnel", "auto_start"], 0) == 1: # menu_options.append((u"全局通过X-Tunnel代理", None, self.on_enable_x_tunnel, 0)) # if config.get(["modules", "smart_router", "auto_start"], 0) == 1: # menu_options.append((u"全局通过智能路由代理", None, self.on_enable_smart_router, win32_adapter.fState.MFS_CHECKED)) menu_options += [ (u"全局PAC智能代理", None, self.on_enable_pac, pac_checked), (u"取消全局代理", None, self.on_disable_proxy, proxy_checked), (u'退出', None, SysTrayIcon.QUIT, False) ] return tuple(menu_options) def on_show(self, widget=None, data=None): self.show_control_web() def on_enable_gae_proxy(self, widget=None, data=None): win32_proxy_manager.set_proxy("127.0.0.1:8087") def on_enable_pac(self, widget=None, data=None): curr_path = os.path.dirname(os.path.abspath(__file__)) try: cmd = r'""%s\brook_windows_386.exe" systemproxy -u https://www.txthinking.com/pac/white.pac"' % curr_path os.system(cmd) proxy_stat = self.get_proxy_state() if proxy_stat != "pac": logging.error("failed to enable pac!") except Exception: logging.error('on_enable_pac:%s' % traceback.format_exc()) # win32_proxy_manager.set_proxy("https://www.txthinking.com/pac/white.pac") # config.set(["modules", "launcher", "proxy"], "pac") # config.save() def on_disable_proxy(self, widget=None, data=None): curr_path = os.path.dirname(os.path.abspath(__file__)) try: cmd = r'""%s\brook_windows_386.exe" systemproxy -r"' % curr_path os.system(cmd) proxy_stat = self.get_proxy_state() if proxy_stat != "disable": logging.error("failed to disable pac!") except Exception: logging.error("on_disable_proxy:%s" % traceback.format_exc()) # win32_proxy_manager.set_proxy("") # win32_proxy_manager.disable_proxy() # config.set(["modules", "launcher", "proxy"], "disable") # config.save() def show_control_web(self, widget=None, data=None): # host_port = config.get(["modules", "launcher", "control_port"], 8085) host_port = 8085 webbrowser.open("http://127.0.0.1:%s/" % host_port) ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): # proxy_setting = config.get(["modules", "launcher", "proxy"], "disable") # if proxy_setting != "disable": # win32_proxy_manager.disable_proxy() # module_init.stop_all() cmd = 'taskkill /F /IM brook_windows_386.exe' os.system(cmd) nid = win32_adapter.NotifyData(self.systray._hwnd, 0) win32_adapter.Shell_NotifyIcon(2, ctypes.byref(nid)) os._exit(0) def serve_forever(self): logging.info("\n\n[step3]:enter win_tray") self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) proxy_setting = config.os_proxy_mode if proxy_setting == "pac": self.on_enable_pac() elif proxy_setting == "gae": self.on_enable_gae_proxy() elif proxy_setting == "x_tunnel": self.on_enable_x_tunnel() elif proxy_setting == "smart_router": self.on_enable_smart_router() elif proxy_setting == "disable": # Don't disable proxy setting, just do nothing. pass else: xlog.warn("proxy_setting:%r", proxy_setting) def get_proxy_state(self): try: AutoConfigURL, reg_type = winreg.QueryValueEx(self.INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: if AutoConfigURL == "http://127.0.0.1:8086/proxy.pac": return "pac" else: return "unknown" except: pass try: ProxyEnable, reg_type = winreg.QueryValueEx(self.INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: ProxyServer, reg_type = winreg.QueryValueEx(self.INTERNET_SETTINGS, 'ProxyServer') if ProxyServer == "127.0.0.1:8087": return "gae" if ProxyServer == "127.0.0.1:1080": return "x_tunnel" if ProxyServer == "127.0.0.1:8086": return "smart_router" else: return "unknown" except: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): proxy_stat = self.get_proxy_state() gae_proxy_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "gae" else 0 x_tunnel_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "x_tunnel" else 0 smart_router_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "smart_router" else 0 pac_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "pac" else 0 disable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "disable" else 0 if lang_code == "zh_CN": menu_options = [("设置", None, self.on_show, 0)] if config.enable_gae_proxy == 1: menu_options.append(("全局通过GAEProxy代理", None, self.on_enable_gae_proxy, gae_proxy_checked)) if config.enable_x_tunnel == 1: menu_options.append(("全局通过X-Tunnel代理", None, self.on_enable_x_tunnel, x_tunnel_checked)) if config.enable_smart_router == 1: menu_options.append(("全局通过智能路由代理", None, self.on_enable_smart_router, smart_router_checked)) menu_options += [ ("全局PAC智能代理", None, self.on_enable_pac, pac_checked), ("取消全局代理", None, self.on_disable_proxy, disable_checked), ("重启各模块", None, self.on_restart_each_module, 0), ('退出', None, SysTrayIcon.QUIT, False)] else: menu_options = [("Config", None, self.on_show, 0)] if config.enable_gae_proxy == 1: menu_options.append(("Set Global GAEProxy Proxy", None, self.on_enable_gae_proxy, gae_proxy_checked)) if config.enable_x_tunnel == 1: menu_options.append(("Set Global X-Tunnel Proxy", None, self.on_enable_x_tunnel, x_tunnel_checked)) if config.enable_smart_router == 1: menu_options.append(("Set Global Smart-Router Proxy", None, self.on_enable_smart_router, smart_router_checked)) menu_options += [ ("Set Global PAC Proxy", None, self.on_enable_pac, pac_checked), ("Disable Global Proxy", None, self.on_disable_proxy, disable_checked), ("Reset Each module", None, self.on_restart_each_module, 0), ('Quit', None, SysTrayIcon.QUIT, False)] return tuple(menu_options) def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_each_module(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def on_enable_gae_proxy(self, widget=None, data=None): win32_proxy_manager.set_proxy("127.0.0.1:8087") config.os_proxy_mode = "gae" config.save() def on_enable_x_tunnel(self, widget=None, data=None): win32_proxy_manager.set_proxy("127.0.0.1:1080") config.os_proxy_mode = "x_tunnel" config.save() def on_enable_smart_router(self, widget=None, data=None): win32_proxy_manager.set_proxy("127.0.0.1:8086") config.os_proxy_mode = "smart_router" config.save() def on_enable_pac(self, widget=None, data=None): win32_proxy_manager.set_proxy("http://127.0.0.1:8086/proxy.pac") config.os_proxy_mode = "pac" config.save() def on_disable_proxy(self, widget=None, data=None): win32_proxy_manager.disable_proxy() config.os_proxy_mode = "disable" config.save() def show_control_web(self, widget=None, data=None): host_port = config.control_port webbrowser.open("http://127.0.0.1:%s/" % host_port) ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): if self.get_proxy_state() != "unknown": win32_proxy_manager.disable_proxy() module_init.stop_all() nid = win32_adapter.NotifyData(self.systray._hwnd, 0) win32_adapter.Shell_NotifyIcon(2, ctypes.byref(nid)) os._exit(0) def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "OSS-FTP", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) def get_proxy_state(self): REG_PATH = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,REG_PATH,0, winreg.KEY_ALL_ACCESS) try: AutoConfigURL, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: return "auto" except Exception as e: pass try: ProxyEnable, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: return "enable" except Exception as e: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): import locale lang_code, code_page = locale.getdefaultlocale() proxy_stat = self.get_proxy_state() enable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="enable" else 0 auto_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="auto" else 0 if lang_code == "zh_CN": menu_options = ((u"设置", None, self.on_show, 0), (u"重启 OSS Ftp 代理服务器", None, self.on_restart_ossftp_proxy, 0)) else: menu_options = ((u"Config", None, self.on_show, 0), (u"Restart OSS Ftp Proxy", None, self.on_restart_ossftp_proxy, 0)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_ossftp_proxy(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def show_control_web(self, widget=None, data=None): webbrowser.open("http://127.0.0.1:8192/") ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): win32_proxy_manager.disable_proxy() def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) def get_proxy_state(self): REG_PATH = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_ALL_ACCESS) try: AutoConfigURL, reg_type = winreg.QueryValueEx( INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: return "auto" ProxyEnable, reg_type = winreg.QueryValueEx( INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: return "enable" except Exception as e: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): import locale lang_code, code_page = locale.getdefaultlocale() proxy_stat = self.get_proxy_state() enable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "enable" else 0 auto_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "auto" else 0 disable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "disable" else 0 if lang_code == "zh_CN": menu_options = ((u"设置", None, self.on_show, 0), (u"全局通过GoAgent代理", None, self.on_enable_proxy, enable_checked), (u"全局PAC智能代理", None, self.on_enable_pac, auto_checked), (u"取消全局代理", None, self.on_disable_proxy, disable_checked), (u"重启 GoAgent", None, self.on_restart_goagent, 0)) else: menu_options = ((u"Config", None, self.on_show, 0), (u"Set Global GoAgent Proxy", None, self.on_enable_proxy, enable_checked), (u"Set Global PAC Proxy", None, self.on_enable_pac, auto_checked), (u"Disable Global Proxy", None, self.on_disable_proxy, disable_checked), (u"Reset GoAgent", None, self.on_restart_goagent, 0)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_goagent(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def set_register(self, reg_path, name, reg_type, value): #_, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name) winreg.SetValueEx(reg_path, name, 0, reg_type, value) logging.info("set register path:%r name:%s type:%d value:%s", reg_path, name, reg_type, value) def on_enable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "") # disable auto proxy self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 1) self.set_register(self.INTERNET_SETTINGS, 'ProxyOverride', 1, '*.local;<local>') # Bypass the proxy for localhost self.set_register(self.INTERNET_SETTINGS, 'ProxyServer', 1, '127.0.0.1:8087') def on_enable_pac(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 0) # disable goagent proxy self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "http://127.0.0.1:8086/proxy.pac") def on_disable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 0) # disable goagent proxy self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "") # disable auto proxy def show_control_web(self, widget=None, data=None): webbrowser.open("http://127.0.0.1:8085/") ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): pass def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) proxy_setting = config.get(["modules", "launcher", "proxy"], "pac") if proxy_setting == "pac": self.on_enable_pac() elif proxy_setting == "gae": self.on_enable_gae_proxy() elif proxy_setting == "disable": # Don't disable proxy setting, just do nothing. pass else: xlog.warn("proxy_setting:%r", proxy_setting) def get_proxy_state(self): REG_PATH = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_ALL_ACCESS) try: AutoConfigURL, reg_type = winreg.QueryValueEx( INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: if AutoConfigURL == "http://127.0.0.1:8086/proxy.pac": return "pac" else: return "unknown" except Exception as e: pass try: ProxyEnable, reg_type = winreg.QueryValueEx( INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: ProxyServer, reg_type = winreg.QueryValueEx( INTERNET_SETTINGS, 'ProxyServer') if ProxyServer == "127.0.0.1:8087": return "gae" else: return "unknown" except Exception as e: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): import locale lang_code, code_page = locale.getdefaultlocale() proxy_stat = self.get_proxy_state() gae_proxy_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "gae" else 0 pac_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "pac" else 0 disable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "disable" else 0 if lang_code == "zh_CN": menu_options = ((u"设置", None, self.on_show, 0), (u"全局通过GAEProxy代理", None, self.on_enable_gae_proxy, gae_proxy_checked), (u"全局PAC智能代理", None, self.on_enable_pac, pac_checked), (u"取消全局代理", None, self.on_disable_proxy, disable_checked), (u"重启 GAEProxy", None, self.on_restart_gae_proxy, 0)) else: menu_options = ((u"Config", None, self.on_show, 0), (u"Set Global GAEProxy Proxy", None, self.on_enable_gae_proxy, gae_proxy_checked), (u"Set Global PAC Proxy", None, self.on_enable_pac, pac_checked), (u"Disable Global Proxy", None, self.on_disable_proxy, disable_checked), (u"Reset GAEProxy", None, self.on_restart_gae_proxy, 0)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_gae_proxy(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def on_enable_gae_proxy(self, widget=None, data=None): win32_proxy_manager.set_proxy_server("127.0.0.1", 8087) config.set(["modules", "launcher", "proxy"], "gae") config.save() def on_enable_pac(self, widget=None, data=None): win32_proxy_manager.set_proxy_auto("http://127.0.0.1:8086/proxy.pac") config.set(["modules", "launcher", "proxy"], "pac") config.save() def on_disable_proxy(self, widget=None, data=None): win32_proxy_manager.disable_proxy() config.set(["modules", "launcher", "proxy"], "disable") config.save() def show_control_web(self, widget=None, data=None): host_port = config.get(["modules", "launcher", "control_port"], 8085) webbrowser.open("http://127.0.0.1:%s/" % host_port) ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): proxy_setting = config.get(["modules", "launcher", "proxy"], "disable") if proxy_setting != "disable": win32_proxy_manager.disable_proxy() module_init.stop_all() nid = win32_adapter.NotifyData(self.systray._hwnd, 0) win32_adapter.Shell_NotifyIcon(2, ctypes.byref(nid)) os._exit(0) def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) def get_proxy_state(self): REG_PATH = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,REG_PATH,0, winreg.KEY_ALL_ACCESS) try: AutoConfigURL, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: return "auto" ProxyEnable, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: return "enable" except Exception as e: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): import locale lang_code, code_page = locale.getdefaultlocale() proxy_stat = self.get_proxy_state() enable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="enable" else 0 auto_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="auto" else 0 disable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="disable" else 0 if lang_code == "zh_CN": menu_options = ((u"设置", None, self.on_show, 0), (u"全局通过GAEProxy代理", None, self.on_enable_proxy, enable_checked), (u"全局PAC智能代理", None, self.on_enable_pac, auto_checked), (u"取消全局代理", None, self.on_disable_proxy, disable_checked), (u"重启 GAEProxy", None, self.on_restart_gae_proxy, 0)) else: menu_options = ((u"Config", None, self.on_show, 0), (u"Set Global GAEProxy Proxy", None, self.on_enable_proxy, enable_checked), (u"Set Global PAC Proxy", None, self.on_enable_pac, auto_checked), (u"Disable Global Proxy", None, self.on_disable_proxy, disable_checked), (u"Reset GAEProxy", None, self.on_restart_gae_proxy, 0)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_gae_proxy(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def set_register(self, reg_path, name, reg_type, value): #_, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name) winreg.SetValueEx(reg_path, name, 0, reg_type, value) launcher_log.info("set register path:%r name:%s type:%d value:%s", reg_path, name, reg_type, value) def on_enable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "") # disable auto proxy self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 1) self.set_register(self.INTERNET_SETTINGS, 'ProxyOverride', 1, '*.local;<local>') # Bypass the proxy for localhost self.set_register(self.INTERNET_SETTINGS, 'ProxyServer', 1, '127.0.0.1:8087') def on_enable_pac(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 0) # disable gae_proxy proxy self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "http://127.0.0.1:8086/proxy.pac") def on_disable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 0) # disable gae_proxy proxy self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "") # disable auto proxy def show_control_web(self, widget=None, data=None): webbrowser.open("http://127.0.0.1:8085/") ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): pass def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
def __init__(self): self.menu_options = (("Open window", None, restore), ) self.tray_instance = SysTrayIcon(resource_path("ghost.ico"), "Ready!", self.menu_options, on_quit=ask_quit)
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "OSS-FTP", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) def get_proxy_state(self): REG_PATH = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_ALL_ACCESS) try: AutoConfigURL, reg_type = winreg.QueryValueEx( INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: return "auto" except Exception as e: pass try: ProxyEnable, reg_type = winreg.QueryValueEx( INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: return "enable" except Exception as e: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): import locale lang_code, code_page = locale.getdefaultlocale() proxy_stat = self.get_proxy_state() enable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "enable" else 0 auto_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat == "auto" else 0 if lang_code == "zh_CN": menu_options = ((u"设置", None, self.on_show, 0), (u"重启 OSS Ftp 代理服务器", None, self.on_restart_ossftp_proxy, 0)) else: menu_options = ((u"Config", None, self.on_show, 0), (u"Restart OSS Ftp Proxy", None, self.on_restart_ossftp_proxy, 0)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_ossftp_proxy(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def show_control_web(self, widget=None, data=None): webbrowser.open("http://127.0.0.1:8192/") ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): win32_proxy_manager.disable_proxy() def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) def make_menu(self): import locale lang_code, code_page = locale.getdefaultlocale() if lang_code == "zh_CN": menu_options = ((u"设置", None, self.on_show), (u"全局通过GoAgent代理上网", None, self.on_enable_proxy), (u"全局PAC智能代理切换", None, self.on_enable_pac), (u"取消全局代理", None, self.on_disable_proxy), (u"重启 GoAgent", None, self.on_restart_goagent)) else: menu_options = ((u"Config", None, self.on_show), (u"Set Global GoAgent Proxy", None, self.on_enable_proxy), (u"Set Global PAC Proxy", None, self.on_enable_pac), (u"Disable Global Proxy", None, self.on_disable_proxy), (u"Reset GoAgent", None, self.on_restart_goagent)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_goagent(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def set_register(self, reg_path, name, reg_type, value): #_, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name) winreg.SetValueEx(reg_path, name, 0, reg_type, value) logging.info("set register path:%r name:%s type:%d value:%s", reg_path, name, reg_type, value) def on_enable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "") # disable auto proxy self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 1) self.set_register(self.INTERNET_SETTINGS, 'ProxyOverride', 1, '*.local;<local>') # Bypass the proxy for localhost self.set_register(self.INTERNET_SETTINGS, 'ProxyServer', 1, '127.0.0.1:8087') def on_enable_pac(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 0) # disable goagent proxy self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "http://127.0.0.1:8086/proxy.pac") def on_disable_proxy(self, widget=None, data=None): self.set_register(self.INTERNET_SETTINGS, 'ProxyEnable', 4, 0) # disable goagent proxy self.set_register(self.INTERNET_SETTINGS, 'AutoConfigURL', 1, "") # disable auto proxy def show_control_web(self, widget=None, data=None): webbrowser.open("http://127.0.0.1:8085/") def on_quit(self, widget, data=None): pass def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
class Win_tray(): def __init__(self): icon_path = os.path.join(os.path.dirname(__file__), "web_ui", "favicon.ico") self.systray = SysTrayIcon(icon_path, "XX-Net", self.make_menu(), self.on_quit, left_click=self.on_show, right_click=self.on_right_click) reg_path = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' self.INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path, 0, winreg.KEY_ALL_ACCESS) proxy_setting = config.get(["modules", "launcher", "proxy"], "pac") if proxy_setting == "pac": self.on_enable_pac() elif proxy_setting == "gae": self.on_enable_gae_proxy() elif proxy_setting == "disable": # Don't disable proxy setting, just do nothing. pass else: xlog.warn("proxy_setting:%r", proxy_setting) def get_proxy_state(self): REG_PATH = r'Software\Microsoft\Windows\CurrentVersion\Internet Settings' INTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER,REG_PATH,0, winreg.KEY_ALL_ACCESS) try: AutoConfigURL, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, 'AutoConfigURL') if AutoConfigURL: if AutoConfigURL == "http://127.0.0.1:8086/proxy.pac": return "pac" else: return "unknown" except Exception as e: pass try: ProxyEnable, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, 'ProxyEnable') if ProxyEnable: ProxyServer, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, 'ProxyServer') if ProxyServer == "127.0.0.1:8087": return "gae" else: return "unknown" except Exception as e: pass return "disable" def on_right_click(self): self.systray.update(menu=self.make_menu()) self.systray._show_menu() def make_menu(self): import locale lang_code, code_page = locale.getdefaultlocale() proxy_stat = self.get_proxy_state() gae_proxy_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="gae" else 0 pac_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="pac" else 0 disable_checked = win32_adapter.fState.MFS_CHECKED if proxy_stat=="disable" else 0 if lang_code == "zh_CN": menu_options = ((u"设置", None, self.on_show, 0), (u"全局通过GAEProxy代理", None, self.on_enable_gae_proxy, gae_proxy_checked), (u"全局PAC智能代理", None, self.on_enable_pac, pac_checked), (u"取消全局代理", None, self.on_disable_proxy, disable_checked), (u"重启 GAEProxy", None, self.on_restart_gae_proxy, 0)) else: menu_options = ((u"Config", None, self.on_show, 0), (u"Set Global GAEProxy Proxy", None, self.on_enable_gae_proxy, gae_proxy_checked), (u"Set Global PAC Proxy", None, self.on_enable_pac, pac_checked), (u"Disable Global Proxy", None, self.on_disable_proxy, disable_checked), (u"Reset GAEProxy", None, self.on_restart_gae_proxy, 0)) return menu_options def on_show(self, widget=None, data=None): self.show_control_web() def on_restart_gae_proxy(self, widget=None, data=None): module_init.stop_all() module_init.start_all_auto() def on_check_update(self, widget=None, data=None): update.check_update() def on_enable_gae_proxy(self, widget=None, data=None): win32_proxy_manager.set_proxy_server("127.0.0.1", 8087) config.set(["modules", "launcher", "proxy"], "gae") config.save() def on_enable_pac(self, widget=None, data=None): win32_proxy_manager.set_proxy_auto("http://127.0.0.1:8086/proxy.pac") config.set(["modules", "launcher", "proxy"], "pac") config.save() def on_disable_proxy(self, widget=None, data=None): win32_proxy_manager.disable_proxy() config.set(["modules", "launcher", "proxy"], "disable") config.save() def show_control_web(self, widget=None, data=None): host_port = config.get(["modules", "launcher", "control_port"], 8085) webbrowser.open("http://127.0.0.1:%s/" % host_port) ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0) def on_quit(self, widget, data=None): proxy_setting = config.get(["modules", "launcher", "proxy"], "disable") if proxy_setting != "disable": win32_proxy_manager.disable_proxy() module_init.stop_all() nid = win32_adapter.NotifyData(self.systray._hwnd, 0) win32_adapter.Shell_NotifyIcon(2, ctypes.byref(nid)) os._exit(0) def serve_forever(self): self.systray._message_loop_func() def dialog_yes_no(self, msg="msg", title="Title", data=None, callback=None): res = ctypes.windll.user32.MessageBoxW(None, msg, title, 1) # Yes:1 No:2 if callback: callback(data, res) return res
def __init__(self): '''GUI的初始化 ''' self.logger = logging.getLogger(__name__) self.logger.info("开始记录日志") try: self.logger.info("开始检查网络连接") # requests.get("https://www.baidu.com", verify=False) # 访问百度以验证网络是否通畅 # self.logger.info("网络连接成功") self.logger.info("开始加载配置文件") self.cf = Config() self.APP_ID = self.cf.APP_ID self.API_KEY = self.cf.API_KEY self.SECRET_KEY = self.cf.SECRET_KEY self.MK_APIKEY = self.cf.MK_APIKEY self.logger.info("开始加载窗体") self.window = tk.Tk() self.window.title('截图翻译工具(V4.5)') self.window.attributes("-alpha", 0.9) self.window['background'] = 'PowderBlue' self.filename = resource_path(os.path.join("res", "bitbug_favicon.ico")) self.window.iconbitmap(self.filename) self.window.resizable(0, 0) self.menubar = tk.Menu(self.window) self.filemenu = tk.Menu(self.menubar, tearoff=0) self.menubar.add_cascade(label='导入文件', menu=self.filemenu) self.filemenu.add_command(label='从文本文件导入', command=self.getFromTXT) self.filemenu.add_command(label='从图像文件导入', command=self.getFromImage) self.setmenu = tk.Menu(self.menubar, tearoff=0) self.menubar.add_cascade(label='设置', menu=self.setmenu) self.setmenu.add_command(label='查看APP_ID', command=self.getAppId) self.setmenu.add_command(label='生成配置文件', command=self.useConfig) self.picButton = tk.IntVar() self.picButton.set(0) self.setmenu.add_checkbutton(label='只监听图片', variable=self.picButton) self.helpmenu = tk.Menu(self.menubar, tearoff=0) self.menubar.add_cascade(label='帮助', menu=self.helpmenu) self.helpmenu.add_command(label='关于', command=self.aboutClick) self.helpmenu.add_command(label='更新与反馈', command=self.upClick) self.window.config(menu=self.menubar) tk.Label(self.window, text="原文:", background='PowderBlue').grid( row=0, column=0, sticky=tk.W) self.comboxlist0 = ttk.Combobox(self.window) self.comboxlist0["values"] = ("使用百度翻译","使用谷歌翻译", "C/C++代码美化") self.comboxlist0.bind("<<ComboboxSelected>>", self.comboxlist0_msg) self.comboxlist0["state"] = "readonly" self.comboxlist0.current(0) self.comboxlist0.grid(row=0, column=0, columnspan=2, padx=38, sticky=tk.W) self.comboxlist = ttk.Combobox(self.window) self.comboxlist["values"] = ("翻译为中文(简体)", "翻译为中文(繁体)", "翻译为英文", "翻译为日文", "翻译为韩文") self.comboxlist["state"] = "readonly" self.comboxlist.current(0) self.comboxlist.grid(row=0, column=1, sticky=tk.E) self.inputText = tk.Text(self.window, height=12, width=50) self.inputText.grid(row=1, column=0, columnspan=2, padx=8, pady=8) self.inputTextsection = section() self.inputTextsection.s = self.inputText self.inputTextmenu = tk.Menu(self.window, tearoff=0) self.inputTextmenu.add_command(label="复制", command=self.inputTextsection.onCopy) self.inputTextmenu.add_separator() self.inputTextmenu.add_command(label="粘贴", command=self.inputTextsection.onPaste) self.inputTextmenu.add_separator() self.inputTextmenu.add_command(label="剪切", command=self.inputTextsection.onCut) self.inputText.bind("<Button-3>", lambda event: self.inputTextmenu.post(event.x_root, event.y_root)) tk.Label(self.window, text="译文:", background='PowderBlue').grid( row=2, column=0, sticky=tk.W) self.translateBtn = tk.Button( self.window, text="翻译", bg='Lavender', command=self.translateBtnClick) self.translateBtn.grid(row=2, column=0, padx=40, sticky=tk.W) self.OCRLANGUAGE = 'eng' self.comboxlist1 = ttk.Combobox(self.window) self.comboxlist1["values"] = ("使用百度OCR") self.comboxlist1.bind("<<ComboboxSelected>>", self.comboxlist1_OCR) self.comboxlist1["state"] = "readonly" self.comboxlist1.current(0) self.comboxlist1.grid(row=2, column=0, padx=80, columnspan=2, sticky=tk.W) self.clearBtn = tk.Button( self.window, text="清屏", bg='Lavender', command=self.clearBtnClick) self.clearBtn.grid(row=2, column=1, padx=90, sticky=tk.E) self.cb1var = tk.IntVar() self.cb1var.set(1) self.cb1 = tkinter.Checkbutton( self.window, text='监听剪切板', background='PowderBlue', variable=self.cb1var) self.cb1.grid(row=2, column=0, columnspan=2, sticky=tk.E) self.outText = tk.Text(self.window, height=12, width=50) self.outText.grid(row=3, column=0, columnspan=2, padx=8, pady=8) self.outTextsection = section() self.outTextsection.s = self.outText self.outTextmenu = tk.Menu(self.window, tearoff=0) self.outTextmenu.add_command(label="复制", command=self.outTextsection.onCopy) self.outTextmenu.add_separator() self.outTextmenu.add_command(label="粘贴", command=self.outTextsection.onPaste) self.outTextmenu.add_separator() self.outTextmenu.add_command(label="剪切", command=self.outTextsection.onCut) self.outText.bind("<Button-3>", lambda event: self.outTextmenu.post(event.x_root, event.y_root)) # self.window.bind(sequence="<Key>", func=self.outTexeP) self.window.state('normal') self.window.wm_attributes('-topmost', 1) self.window.protocol("WM_DELETE_WINDOW", self.on_closing) self.menu_options = (("显示", None, self.showwin),) systray = SysTrayIcon(self.filename, "截图翻译工具", self.menu_options, on_quit=self.on_quit_callback) systray.start() self.logger.info("窗体加载成功") self.logger.info("开始加载插件模块") self.maindll = WinDLL(resource_path(os.path.join("res", "pymain.dll"))) dlllist = [i for i in glob.glob(r"*.dll") if i[0]=='p' and i[1] == 'y'] self.logger.info("搜寻到如下插件{0}" .format(str(dlllist))) self.logger.info("开始载入dll") self.dlllist = [] s = create_string_buffer(''.encode(), 8192) #in dll is 8192 for i in dlllist: self.logger.info("正在载入{0}".format(i)) dll = WinDLL(os.path.join(os.getcwd(), i)) self.dlllist.append(dll) self.logger.info("载入{0}成功".format(i)) self.logger.info("正在获取{0}的名字".format(i)) s = create_string_buffer(''.encode(), 9000) #in dll is 8192 dll.name(s) s = string_at(s).decode('utf-8') self.logger.info("{0}的名字为:{1}".format(i,s)) self.comboxlist0["values"] = self.comboxlist0["values"] + (s,) self.logger.info("开始启动插件事件监听线程") _thread.start_new_thread(self.apiloop, ("",)) # 用于插件的监听 self.logger.info("插件事件监听线程启动成功") self.logger.info("开始启动剪切板事件监听线程") _thread.start_new_thread(self.thread_fun, (self.window, self.inputText, self.outText)) self.logger.info("剪切板事件监听线程启动成功") self.logger.info("进入窗体消息循环") self.window.mainloop() except Exception as e: self.logger.error(str(e)) tk.messagebox.showerror( title="致命错误", message="请将具体信息发送给开发者:\n网页:https://github.com/super1207/translate\n错误信息:" + str(e))