def start(func=None, args=None, localization={}, gui=None, debug=False, http_server=False, user_agent=None): global guilib, _debug, _multiprocessing, _http_server, _user_agent def _create_children(other_windows): if not windows[0].shown.wait(10): raise WebViewException('Main window failed to load') for window in other_windows: guilib.create_window(window) _debug = debug _user_agent = user_agent #_multiprocessing = multiprocessing multiprocessing = False # TODO _http_server = http_server if multiprocessing: from multiprocessing import Process as Thread else: from threading import Thread original_localization.update(localization) if threading.current_thread().name != 'MainThread': raise WebViewException('This function must be run from a main thread.') if len(windows) == 0: raise WebViewException( 'You must create a window first before calling this function.') guilib = initialize(gui) # thanks to the buggy EdgeHTML, http server must be used for local urls if guilib.renderer == 'edgehtml': http_server = True for window in windows: window._initialize(guilib, multiprocessing, http_server) if len(windows) > 1: t = Thread(target=_create_children, args=(windows[1:], )) t.start() if func: if args is not None: if not hasattr(args, '__iter__'): args = (args, ) t = Thread(target=func, args=args) else: t = Thread(target=func) t.start() guilib.create_window(windows[0])
def start(func=None, args=None, localization={}, gui=None, debug=False, http_server=False, user_agent=None, block=True): global guilib, _debug, _multiprocessing, _http_server, _user_agent def _create_children(other_windows): if not windows[0].shown.wait(10): raise WebViewException('Main window failed to load') for window in other_windows: guilib.create_window(window) _debug = debug _user_agent = user_agent _multiprocessing = not block _http_server = http_server original_localization.update(localization) if threading.current_thread().name != 'MainThread': raise WebViewException('This function must be run from a main thread.') if len(windows) == 0: raise WebViewException( 'You must create a window first before calling this function.') guilib = initialize(gui) for window in windows: window._initialize(guilib, http_server) if len(windows) > 1: t = threading.Thread(target=_create_children, args=(windows[1:], )) t.start() if func: if args is not None: if not hasattr(args, '__iter__'): args = (args, ) t = threading.Thread(target=func, args=args) else: t = threading.Thread(target=func) t.start() return guilib.create_window(windows[0])
def start(func=None, args=None, localization={}, gui=None, debug=False, http_server=False, user_agent=None): """ Start a GUI loop and display previously created windows. This function must be called from a main thread. :param func: Function to invoke upon starting the GUI loop. :param args: Function arguments. Can be either a single value or a tuple of values. :param localization: A dictionary with localized strings. Default strings and their keys are defined in localization.py. :param gui: Force a specific GUI. Allowed values are ``cef``, ``qt``, or ``gtk`` depending on a platform. :param debug: Enable debug mode. Default is False. :param http_server: Enable built-in HTTP server. If enabled, local files will be served using a local HTTP server on a random port. For each window, a separate HTTP server is spawned. This option is ignored for non-local URLs. :param user_agent: Change user agent string. Not supported in EdgeHTML. """ global guilib, _debug, _multiprocessing, _http_server, _user_agent def _create_children(other_windows): if not windows[0].shown.wait(10): raise WebViewException('Main window failed to load') for window in other_windows: guilib.create_window(window) _debug = debug _user_agent = user_agent #_multiprocessing = multiprocessing multiprocessing = False # TODO _http_server = http_server if multiprocessing: from multiprocessing import Process as Thread else: from threading import Thread original_localization.update(localization) if threading.current_thread().name != 'MainThread': raise WebViewException('This function must be run from a main thread.') if len(windows) == 0: raise WebViewException('You must create a window first before calling this function.') guilib = initialize(gui) for window in windows: window._initialize(guilib, multiprocessing, http_server) if len(windows) > 1: t = Thread(target=_create_children, args=(windows[1:],)) t.start() if func: if args is not None: if not hasattr(args, '__iter__'): args = (args,) t = Thread(target=func, args=args) else: t = Thread(target=func) t.start() guilib.create_window(windows[0])
def screens(): guilib = initialize() screens = guilib.get_screens() return screens