Beispiel #1
0
def main():
    logger.info(f'\n#\n# Booting Kanmail {get_version()}\n#')

    init_window_hacks()
    boot()

    server_thread = Thread(name='Server', target=run_server)
    server_thread.daemon = True
    server_thread.start()

    run_thread(validate_or_remove_license)
    run_thread(run_cache_cleanup_later)

    # Ensure the webserver is up & running by polling it
    waits = 0
    while waits < 10:
        try:
            response = requests.get(
                f'http://{SERVER_HOST}:{server.get_port()}/ping')
            response.raise_for_status()
        except requests.RequestException as e:
            logger.warning(f'Waiting for main window: {e}')
            sleep(0.1 * waits)
            waits += 1
        else:
            break
    else:
        logger.critical('Webserver did not start properly!')
        sys.exit(2)

    create_window(
        unique_key='main',
        **get_window_settings(),
    )

    # Let's hope this thread doesn't fail!
    monitor_thread = Thread(
        name='Thread monitor',
        target=monitor_threads,
        args=(server_thread, ),
    )
    monitor_thread.daemon = True
    monitor_thread.start()

    if DEBUG:
        sleep(1)  # give webpack a second to start listening

    # Start the GUI - this will block until the main window is destroyed
    webview.start(gui=GUI_LIB, debug=DEBUG)

    # Main window closed, cleanup/exit
    sys.exit()
Beispiel #2
0
def open_window():
    link = request.args['url']

    if not create_window(
            link,
            width=int(request.args['width']),
            height=int(request.args['height']),
            unique_key=request.args.get('unique_key'),
    ):
        return abort(500, f'Could not open {link} window')
    return '', 204
Beispiel #3
0
def open_window() -> Tuple[str, int]:
    link = request.args['url']

    if not create_window(
            link,
            width=int(request.args['width']),
            height=int(request.args['height']),
            unique_key=request.args.get('unique_key'),
            confirm_close=request.args.get('confirm_close'),
            resizable=not (request.args.get('resizable') == 'false'),
    ):
        abort(500, f'Could not open {link} window')
    return '', 204