def window(tmpdir_factory): api_key = hexlify(os.urandom(16)) root_state_dir = str(tmpdir_factory.mktemp('tribler_state_dir')) app = TriblerApplication("triblerapp-guitest", sys.argv) # We must create a separate instance of QSettings and clear it. # Otherwise, previous runs of the same app will affect this run. settings = QSettings("tribler-guitest") settings.clear() window = TriblerWindow( # pylint: disable=W0621 settings, root_state_dir, api_key=api_key, core_args=[ str(RUN_TRIBLER_PY.absolute()), '--core', '--gui-test-mode' ], ) # pylint: disable=W0621 app.set_activation_window(window) QTest.qWaitForWindowExposed(window) screenshot(window, name="tribler_loading") wait_for_signal( window.core_manager.events_manager.tribler_started, flag=window.core_manager.events_manager.tribler_started_flag, ) window.downloads_page.can_update_items = True yield window window.close_tribler() screenshot(window, name="tribler_closing") QApplication.quit()
def window(api_port): core_manager.START_FAKE_API = True tribler_gui.defs.DEFAULT_API_PORT = api_port app = TriblerApplication("triblerapp-guitest", sys.argv) window = TriblerWindow(api_port=api_port) app.set_activation_window(window) QTest.qWaitForWindowExposed(window) screenshot(window, name="tribler_loading") wait_for_signal(window.core_manager.events_manager.tribler_started) window.downloads_page.can_update_items = True yield window QApplication.quit()
app.installTranslator(app.translator) if app.is_running(): logger.info('Application is running') for arg in sys.argv[1:]: if os.path.exists(arg) and arg.endswith(".torrent"): app.send_message(f"file:{arg}") elif arg.startswith('magnet'): app.send_message(arg) sys.exit(1) logger.info('Start Tribler Window') window = TriblerWindow() window.setWindowTitle("Tribler") app.set_activation_window(window) app.parse_sys_args(sys.argv) sys.exit(app.exec_()) except ImportError as ie: logger.exception(ie) error_and_exit("Import Error", f"Import error: {ie}") except TriblerException as te: logger.exception(te) error_and_exit("Tribler Exception", f"{te}") except SystemExit: logger.info("Shutting down Tribler") if trace_logger: trace_logger.close()
def run_gui(api_port, api_key, root_state_dir, parsed_args): logger.info('Running GUI' + ' in gui_test_mode' if parsed_args.gui_test_mode else '') # Workaround for macOS Big Sur, see https://github.com/Tribler/tribler/issues/5728 if sys.platform == "darwin": logger.info('Enabling a workaround for macOS Big Sur') os.environ["QT_MAC_WANTS_LAYER"] = "1" # Workaround for Ubuntu 21.04+, see https://github.com/Tribler/tribler/issues/6701 elif sys.platform == "linux": logger.info( 'Enabling a workaround for Ubuntu 21.04+ wayland environment') os.environ["GDK_BACKEND"] = "x11" # Set up logging load_logger_config('tribler-gui', root_state_dir) # Enable tracer using commandline args: --trace-debug or --trace-exceptions trace_logger = check_and_enable_code_tracing('gui', root_state_dir) try: enable_fault_handler(root_state_dir) # Exit if we cant read/write files, etc. check_environment() check_free_space() app_name = os.environ.get('TRIBLER_APP_NAME', 'triblerapp') app = TriblerApplication(app_name, sys.argv) # Note (@ichorid): translator MUST BE created and assigned to a separate variable # before calling installTranslator on app. Otherwise, it won't work for some reason settings = QSettings('nl.tudelft.tribler') translator = get_translator(settings.value('translation', None)) app.installTranslator(translator) if app.is_running(): # if an application is already running, then send the command line # argument to it and close the current instance logger.info( 'GUI Application is already running. Passing a torrent file path to it.' ) for arg in sys.argv[1:]: if os.path.exists(arg) and arg.endswith(".torrent"): app.send_message(path_to_uri(arg)) elif arg.startswith('magnet'): app.send_message(arg) logger.info('Close the current application.') sys.exit(1) logger.info('Start Tribler Window') window = TriblerWindow(settings, root_state_dir, api_port=api_port, api_key=api_key) window.setWindowTitle("Tribler") app.set_activation_window(window) app.parse_sys_args(sys.argv) sys.exit(app.exec_()) except ImportError as ie: logger.exception(ie) error_and_exit("Import Error", f"Import error: {ie}") except TriblerException as te: logger.exception(te) error_and_exit("Tribler Exception", f"{te}") except SystemExit: logger.info("Shutting down Tribler") if trace_logger: trace_logger.close() # Flush all the logs to make sure it is written to file before it exits for handler in logging.getLogger().handlers: handler.flush() gui_sentry_reporter.global_strategy = SentryStrategy.SEND_SUPPRESSED raise