import logging
import sys
from contextlib import contextmanager
from ...orange_version import ORANGE_VERSION
if ORANGE_VERSION == ORANGE_VERSION.oasys_fork:
from oasys.canvas import conf as _oasys_conf_module
from oasys.canvas.__main__ import main as _main
from ..canvas.config import Config as _Config
_oasys_conf_module.oasysconf = _Config
def arg_parser():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"--no-discovery",
action="store_true",
help="Don't run widget discovery (use full cache instead)",
)
parser.add_argument(
"--force-discovery",
action="store_true",
help="Force full widget discovery (invalidate cache)",
)
parser.add_argument(
"--clear-widget-settings",
action="store_true",
help="Remove stored widget setting",
)
parser.add_argument(
"--no-welcome", action="store_true", help="Don't show welcome dialog."
)
parser.add_argument(
"--no-splash", action="store_true", help="Don't show splash screen."
)
parser.add_argument(
"-l",
"--log-level",
help="Logging level (0, 1, 2, 3, 4)",
type=int,
default=1,
)
parser.add_argument(
"--no-redirect",
action="store_true",
help="Do not redirect stdout/err to canvas output view.",
)
parser.add_argument("--style", help="QStyle to use", type=str, default="Fusion")
parser.add_argument(
"--stylesheet",
help="Application level CSS style sheet to use",
type=str,
default="orange.qss",
)
parser.add_argument(
"--qt",
help="Additional arguments for QApplication",
type=str,
default=None,
)
parser.add_argument(
"--no-update",
action="store_true",
help="Stop automatic update internal libraries",
)
return parser
elif ORANGE_VERSION == ORANGE_VERSION.latest_orange:
from Orange.canvas.__main__ import main as _main
from orangecanvas.main import arg_parser
else:
from orangecanvas.main import arg_parser
from orangecanvas.main import main as _main
@contextmanager
def _temporary_log_handlers(log_level):
logger = logging.getLogger("ewoksorange")
logger.setLevel(log_level)
if logger.hasHandlers():
yield
else:
stdouthandler = logging.StreamHandler(sys.stdout)
logger.addHandler(stdouthandler)
yield
logger.removeHandler(stdouthandler)
[docs]
def main(argv=None):
parser = arg_parser()
parser.add_argument(
"--with-examples",
action="store_true",
help="Register Orange add-on for 'ewoksorange' example Ewoks tasks.",
)
parser.add_argument(
"--with-demo",
action="store_true",
help="Register Orange add-on for 'ewokscore' demo Ewoks tasks.",
)
if argv is None:
argv = sys.argv
options, _ = parser.parse_known_args(argv[1:])
if "--with-examples" in argv:
argv.pop(argv.index("--with-examples"))
if "--with-demo" in argv:
argv.pop(argv.index("--with-demo"))
if "--force-discovery" not in argv:
argv.append("--force-discovery")
if ORANGE_VERSION != ORANGE_VERSION.oasys_fork:
if "--config" not in argv:
argv += ["--config", "ewoksorange.gui.canvas.config.Config"]
with _temporary_log_handlers(options.log_level):
if options.with_examples:
from orangecontrib.ewokstest import enable_ewokstest_category
enable_ewokstest_category()
if options.with_demo:
from orangecontrib.ewoksdemo import enable_ewoksdemo_category
enable_ewoksdemo_category()
_main(argv)