diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4af5e4f88a..040f601cfe 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -628,13 +628,14 @@ class CuraApplication(QtApplication): # This should be called directly before creating an instance of CuraApplication. # \returns \type{bool} True if the whole Cura app should continue running. @classmethod - def preStartUp(cls): + def preStartUp(cls, parser = None, parsed_command_line = {}): # Peek the arguments and look for the 'single-instance' flag. - parser = argparse.ArgumentParser(prog = "cura", add_help = False) # pylint: disable=bad-whitespace + if not parser: + parser = argparse.ArgumentParser(prog = "cura", add_help = False) # pylint: disable=bad-whitespace CuraApplication.addCommandLineOptions(parser) # Important: It is important to keep this line here! # In Uranium we allow to pass unknown arguments to the final executable or script. - parsed_command_line = vars(parser.parse_known_args()[0]) + parsed_command_line.update(vars(parser.parse_known_args()[0])) if parsed_command_line["single_instance"]: Logger.log("i", "Checking for the presence of an ready running Cura instance.") diff --git a/cura_app.py b/cura_app.py index fd36aa5a24..c719fe3e10 100755 --- a/cura_app.py +++ b/cura_app.py @@ -3,23 +3,34 @@ # Copyright (c) 2015 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import argparse import os import sys + from UM.Platform import Platform -def get_cura_dir_path(): - if Platform.isWindows(): - return os.path.expanduser("~/AppData/Roaming/cura/") - elif Platform.isLinux(): - return os.path.expanduser("~/.local/share/cura") - elif Platform.isOSX(): - return os.path.expanduser("~/Library/Logs/cura") +parser = argparse.ArgumentParser() +parser.add_argument('--debug', + action='store_true', + default = False + ) +known_args, unknown_args = parser.parse_known_args() +known_args = vars(known_args) -if hasattr(sys, "frozen"): - dirpath = get_cura_dir_path() - os.makedirs(dirpath, exist_ok = True) - sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w") - sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w") +if known_args["debug"]: + def get_cura_dir_path(): + if Platform.isWindows(): + return os.path.expanduser("~/AppData/Roaming/cura/") + elif Platform.isLinux(): + return os.path.expanduser("~/.local/share/cura") + elif Platform.isOSX(): + return os.path.expanduser("~/Library/Logs/cura") + + if hasattr(sys, "frozen"): + dirpath = get_cura_dir_path() + os.makedirs(dirpath, exist_ok = True) + sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w") + sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w") import platform import faulthandler @@ -78,8 +89,8 @@ faulthandler.enable() cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance() # This pre-start up check is needed to determine if we should start the application at all. -if not cura.CuraApplication.CuraApplication.preStartUp(): +if not cura.CuraApplication.CuraApplication.preStartUp(parser = parser, parsed_command_line = known_args): sys.exit(0) -app = cura.CuraApplication.CuraApplication.getInstance() +app = cura.CuraApplication.CuraApplication.getInstance(parser = parser, parsed_command_line = known_args) app.run()