diff --git a/warped/actions.py b/warped/actions.py index 8eee943..18cbfd2 100644 --- a/warped/actions.py +++ b/warped/actions.py @@ -90,7 +90,7 @@ class ActionContainer(): internal_dict = {} internal_dict['uuid'] = str(self.uuid) internal_dict['actions'] = [action.as_dict() for action in self.actions] - internal_dict['groups'] = [[action.as_dict() for action in group] for group in self.groups] + internal_dict['groups'] = [group.as_dict() for group in self.groups] return internal_dict class StoreAction(Action): @@ -110,4 +110,4 @@ class MutuallyExclusiveGroup(ActionContainer): super().__init__() def __repr__(self): - return "Group Object: ( Actions: {}, Groups: {} )".format(self.actions, self.mutex_groups) + return "Group Object: ( Actions: {}, Groups: {} )".format(self.actions, self.groups) diff --git a/warped/hook.py b/warped/hook.py index fde1ae8..06098e9 100644 --- a/warped/hook.py +++ b/warped/hook.py @@ -112,6 +112,7 @@ def start_module(name, is_module): views.app.output.stop() ioerr.write("Process stopped ({})\n".format(views.app.module_process.exitcode)) + views.app.output.queue.put(("sig", "stop")) views.app.restart.wait() diff --git a/warped/samples/subparsertest.py b/warped/samples/subparsertest.py index 428cc48..22d0fa2 100644 --- a/warped/samples/subparsertest.py +++ b/warped/samples/subparsertest.py @@ -11,3 +11,4 @@ if __name__ == "__main__": args = parser.parse_args() print("Subparser %s was selected" % args.command) + print(args) diff --git a/warped/static/css/app.css b/warped/static/css/app.css index b440f4d..71204b1 100644 --- a/warped/static/css/app.css +++ b/warped/static/css/app.css @@ -7,6 +7,15 @@ display: block; } +.checkbox { + height:100%; +} + +input[type=checkbox] { + width: 2em; + height: 2em; + -moz-appearance: none; +} #output { flex:1; diff --git a/warped/static/js/app.js b/warped/static/js/app.js index 41a20c8..52ac852 100644 --- a/warped/static/js/app.js +++ b/warped/static/js/app.js @@ -21,6 +21,9 @@ function createSubparserAction(action) { var content_div = $("
", { id: choice['uuid'] }) .addClass("tabs-panel").appendTo(tab_content); + choice['groups'].forEach(function(group) { + content_div.append(createGroup(group)); + }); choice['actions'].forEach(function(action) { content_div.append(createAction(action)); }); @@ -31,13 +34,14 @@ function createSubparserAction(action) { } function createCheckboxAction(action) { - var switch_div = $("").addClass("switch"); + //var switch_div = $("").addClass("switch"); + var switch_div = $("").addClass("checkbox"); var input = $("", { id: action["uuid"], type: 'checkbox', name: action['uuid'] - }).addClass('switch-input').data("name", action['dest']).appendTo(switch_div); - var paddle = $("", {for: action["uuid"]}).addClass("switch-paddle") + }).data("name", action['dest']).appendTo(switch_div); + var paddle = $("", {for: action["uuid"]}).addClass("css-label") .appendTo(switch_div); if(action['checked'] === true) { input.attr('checked', true); diff --git a/warped/views.py b/warped/views.py index 0e268e0..0caaf01 100644 --- a/warped/views.py +++ b/warped/views.py @@ -12,21 +12,35 @@ from flask import Flask, render_template, request, Response, \ app = Flask(__name__) app.mutex_groups=[] -def parse_argument(name, json, action): +def parse_argument(name, json, action, namespace): + print(name) try: argument = json[name] if type(argument) == list: if len(argument) == 1: - return action.type_function(argument[0]) + setattr(namespace, action.name, action.type_function(argument[0])) else: - return [action.type_function(elem) for elem in argument] + setattr(namespace, action.name, [action.type_function(elem) for elem in argument]) else: - return action.type_function(argument) + setattr(namespace, action.name, action.type_function(argument)) except (KeyError, ValueError): if name.endswith("[]"): - return action.on_none + setattr(namespace, action.name, action.on_none) else: - return parse_argument(name + "[]", json, action) + parse_argument(name + "[]", json, action, namespace) + + try: + for name, choice in action.choices.items(): + print(choice) + actions = choice.actions + for group in choice.groups: + action.extend(group.actions) + for action in actions: + parse_argument(action.name, json, action, namespace) + except AttributeError: + pass + + @app.route("/arguments", methods=['POST']) @@ -34,13 +48,13 @@ def fill_namespace(): json = dict(request.form) namespace = argparse.Namespace() all_actions = app.actions + print(all_actions) for group in app.mutex_groups: all_actions.extend(group.actions) for action in all_actions: - value = parse_argument(action.name, json, action) - setattr(namespace, action.name, value) + parse_argument(action.name, json, action, namespace) app.namespaceQueue.put(namespace) app.output.queue.put(("sig", "start")) @@ -57,7 +71,6 @@ def get_arguments(): def stop(): os.kill(app.module_process.pid, signal.SIGCONT) app.module_process.terminate() - app.output.queue.put(("sig", "stop")) return "OK" @app.route("/resume")