From b8120f5078055aceafa04bd515146d72705419ed Mon Sep 17 00:00:00 2001 From: Samuel Gaist <samuel.gaist@idiap.ch> Date: Thu, 21 Mar 2019 15:38:20 +0100 Subject: [PATCH] [scripts][editor_cli] Implement editor start for specific asset Part of #186 Replaces !51 --- beat/editor/scripts/editor_cli.py | 86 ++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 25 deletions(-) diff --git a/beat/editor/scripts/editor_cli.py b/beat/editor/scripts/editor_cli.py index d85bc57c..5b534482 100644 --- a/beat/editor/scripts/editor_cli.py +++ b/beat/editor/scripts/editor_cli.py @@ -35,6 +35,7 @@ import click import pkg_resources from click_plugins import with_plugins + from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import QCoreApplication @@ -45,23 +46,21 @@ from beat.cmdline.decorators import verbosity_option from ..utils import setup_logger from ..widgets.mainwindow import MainWindow +from ..widgets.assetwidget import AssetWidget +from ..backend.assetmodel import AssetType + +global logger +logger = None -EPILOG = """\b +START_EPILOG = """\b Example: $ beat editor start - """ +""" @with_plugins(pkg_resources.iter_entry_points("beat.editor.cli")) @click.group(cls=AliasedGroup) -@click.pass_context -def editor(ctx): - """beat.editor commands.""" - pass - - -@editor.command(epilog=EPILOG) @click.option( "--prefix", "-p", @@ -76,35 +75,72 @@ def editor(ctx): ) @verbosity_option() @click.pass_context +def editor(ctx, prefix, cache): + """beat.editor commands.""" + ctx.meta["prefix"] = prefix + ctx.meta["cache"] = cache + + global logger + logger = setup_logger("beat.editor", ctx.meta["verbosity"]) + + QCoreApplication.setApplicationName("beat.editor") + QCoreApplication.setOrganizationName("Idiap") + QCoreApplication.setOrganizationDomain("ch.idiap") + + +@editor.command(epilog=START_EPILOG) +@click.pass_context @raise_on_error -def start(ctx, prefix, cache): +def start(ctx): """Start the beat editor """ - ctx.meta["prefix"] = prefix - ctx.meta["cache"] = cache + config = Configuration(ctx.meta) + global logger + logger.info("BEAT prefix set to `%s'", config.path) + logger.info("BEAT cache set to `%s'", config.cache) - completions = dict( - prog=os.path.basename(sys.argv[0]), - version=pkg_resources.require("beat.editor")[0].version, - ) + app = QApplication(sys.argv) - completions.update(Configuration({}).as_dict()) + mainwindow = MainWindow() + mainwindow.set_prefix_root(os.path.abspath(config.path)) + mainwindow.show() + + return app.exec_() + + +EDIT_EPILOG = """\b +Example: + $ beat editor edit algorithm user/my_algo/1 + +""" - # Check that we are in a BEAT working folder - logger = setup_logger("beat.editor", ctx.meta["verbosity"]) + +@editor.command(epilog=EDIT_EPILOG) +@click.argument("asset_type") +@click.argument("asset_name") +@click.pass_context +@raise_on_error +def edit(ctx, asset_type, asset_name): + """Edit one specific asset + """ config = Configuration(ctx.meta) + global logger logger.info("BEAT prefix set to `%s'", config.path) logger.info("BEAT cache set to `%s'", config.cache) + prefix_root = os.path.abspath(config.path) app = QApplication(sys.argv) - QCoreApplication.setApplicationName("beat.editor") - QCoreApplication.setOrganizationName("Idiap") - QCoreApplication.setOrganizationDomain("ch.idiap") + asset_widget = AssetWidget() + asset_widget.set_prefix_root(prefix_root) + + asset_path = os.path.join( + prefix_root, AssetType.path(AssetType[asset_type.upper()]), asset_name + ".json" + ) + + asset_widget.load_json(asset_path) + asset_widget.show() - mainwindow = MainWindow() - mainwindow.set_prefix_root(config.path) - mainwindow.show() return app.exec_() -- GitLab