class CommandStackCommand (Command):
"""Subclass to avoid pushing control commands to the stack.
"""
+ def __init__(self, *args, **kwargs):
+ super(CommandStackCommand, self).__init__(*args, **kwargs)
+ stack = [a for a in self.arguments if a.name == 'stack'][0]
+ stack.default = False
+
def _set_state(self, state):
try:
self.plugin.set_state(state)
return
assert isinstance(msg, CommandMessage), type(msg)
cmd = hooke.command_by_name[msg.command]
- if isinstance(cmd, CommandStackCommand):
+ if (msg.explicit_user_call == False
+ or isinstance(cmd, CommandStackCommand)):
if isinstance(cmd, StopCaptureCommand):
outqueue = Queue() # Grab StopCaptureCommand's completion.
cmd.run(hooke, inqueue, outqueue, **msg.arguments)
StartCaptureCommand(self), StopCaptureCommand(self),
ReStartCaptureCommand(self),
PopCommand(self), GetCommand(self), GetStateCommand(self),
- SaveCommand(self), LoadCommand(self),
+ SaveCommand(self), LoadCommand(self), ExecuteCommand(self),
]
self._settings = [
Setting(section=self.setting_section, help=self.__doc__),
help=self.__doc__, plugin=plugin)
def _run(self, hooke, inqueue, outqueue, params):
- params = self.__setup_params(hooke, params)
+ params = self._setup_params(hooke, params)
self.plugin.command_stack.save(params['output'])
- def __setup_params(self, hooke, params):
+ def _setup_params(self, hooke, params):
if params['output'] == None and self.plugin.command_stack.path == None:
params['output'] = 'default'
if params['output'] != None:
help=self.__doc__, plugin=plugin)
def _run(self, hooke, inqueue, outqueue, params):
- params = self.__setup_params(hooke, params)
+ params = self._setup_params(hooke, params)
self.plugin.command_stack.clear()
self.plugin.command_stack.load(params['input'])
- def __setup_params(self, hooke, params):
+ def _setup_params(self, hooke, params):
if params['input'] == None and self.plugin.command_stack.path == None:
params['input'] = 'default'
if params['input'] != None:
params['input'] = os.path.join(
self.plugin.config['path'], params['input'])
return params
+
+
+class ExecuteCommand (Command):
+ """Execute a :class:`~hooke.command_stack.CommandStack`.
+ """
+ def __init__(self, plugin):
+ super(ExecuteCommand, self).__init__(
+ name='execute command stack',
+ arguments=[
+ Argument(name='commands', type='command stack',
+ help="""
+Command stack to apply to each curve. Defaults to the plugin's
+current stack.
+""".strip()),
+ ],
+ help=self.__doc__, plugin=plugin)
+
+ def _run(self, hooke, inqueue, outqueue, params):
+ params = self._setup_params(hooke=hooke, params=params)
+ if len(params['commands']) == 0:
+ return
+ params['commands'].execute(hooke=hooke, stack=params['stack'])
+
+ def _setup_params(self, hooke, params):
+ if params['commands'] == None:
+ params['commands'] = self.plugin.command_stack
+ return params