def launch(): _prepare_thonny_user_dir() _misc_prepare() try: from thonny import workbench if _should_delegate(): # First check if there is existing Thonny instance to handle the request delegation_result = _try_delegate_to_existing_instance( sys.argv[1:]) if delegation_result == True: # pylint: disable=singleton-comparison # we're done print("Delegated to an existing Thonny instance. Exiting now.") return 0 if hasattr(delegation_result, "accept"): # we have server socket to put in use server_socket = delegation_result else: server_socket = None bench = workbench.Workbench(server_socket) else: bench = workbench.Workbench() try: bench.mainloop() except SystemExit: bench.destroy() return 0 except SystemExit as e: from tkinter import messagebox messagebox.showerror("System exit", str(e), parent=get_workbench()) return -1 except Exception: from logging import exception exception("Internal launch or mainloop error") from thonny import ui_utils import traceback dlg = ui_utils.LongTextDialog("Internal error", traceback.format_exc(), parent=get_workbench()) ui_utils.show_dialog(dlg, get_workbench()) return -1 finally: runner = get_runner() if runner is not None: runner.destroy_backend() return 0
def launch(): import runpy if sys.executable.endswith("thonny.exe"): # otherwise some library may try to run its subprocess with thonny.exe # NB! Must be pythonw.exe not python.exe, otherwise Runner thinks console # is already allocated. sys.executable = sys.executable[:-len("thonny.exe")] + "pythonw.exe" set_dpi_aware() try: runpy.run_module("thonny.customize", run_name="__main__") except ImportError: pass _prepare_thonny_user_dir() if not _check_welcome(): return 0 if _should_delegate(): try: _delegate_to_existing_instance(sys.argv[1:]) print("Delegated to an existing Thonny instance. Exiting now.") return 0 except Exception: traceback.print_exc() # Did not or could not delegate try: from thonny import workbench bench = workbench.Workbench() try: bench.mainloop() except SystemExit: bench.destroy() return 0 except SystemExit as e: from tkinter import messagebox messagebox.showerror("System exit", str(e)) return -1 except Exception: from logging import exception exception("Internal launch or mainloop error") from thonny import ui_utils dlg = ui_utils.LongTextDialog("Internal error", traceback.format_exc()) ui_utils.show_dialog(dlg, get_workbench()) return -1 finally: runner = get_runner() if runner is not None: runner.destroy_backend() return 0
def launch(): import gettext import runpy if sys.executable.endswith("thonny.exe"): # otherwise some library may try to run its subprocess with thonny.exe # NB! Must be pythonw.exe not python.exe, otherwise Runner thinks console # is already allocated. sys.executable = sys.executable[:-len("thonny.exe")] + "pythonw.exe" set_dpi_aware() gettext.install("thonny", "locale") try: runpy.run_module("thonny.customize", run_name="__main__") except ImportError: pass if not _check_welcome(): return try: from thonny import workbench if _should_delegate(): # First check if there is existing Thonny instance to handle the request delegation_result = _try_delegate_to_existing_instance( sys.argv[1:]) if delegation_result == True: # pylint: disable=singleton-comparison # we're done print("Delegated to an existing Thonny instance. Exiting now.") return 0 if hasattr(delegation_result, "accept"): # we have server socket to put in use server_socket = delegation_result else: server_socket = None bench = workbench.Workbench(server_socket) else: bench = workbench.Workbench() try: bench.mainloop() except SystemExit: bench.destroy() return 0 except SystemExit as e: from tkinter import messagebox messagebox.showerror("System exit", str(e), parent=get_workbench()) return -1 except Exception: from logging import exception exception("Internal launch or mainloop error") from thonny import ui_utils import traceback dlg = ui_utils.LongTextDialog("Internal error", traceback.format_exc(), parent=get_workbench()) ui_utils.show_dialog(dlg, get_workbench()) return -1 finally: runner = get_runner() if runner is not None: runner.destroy_backend() return 0