diff --git a/cura/MachineAction.py b/cura/MachineAction.py new file mode 100644 index 0000000000..6c2e4db32c --- /dev/null +++ b/cura/MachineAction.py @@ -0,0 +1,8 @@ +from PyQt5.QtCore import QObject +from UM.PluginObject import PluginObject + + +class MachineAction(QObject, PluginObject): + def __init__(self, key, label = ""): + self._key = key + self._label = label diff --git a/cura/MachineActionManager.py b/cura/MachineActionManager.py new file mode 100644 index 0000000000..b8d1c4f9b2 --- /dev/null +++ b/cura/MachineActionManager.py @@ -0,0 +1,53 @@ +from UM.Logger import Logger + + +class MachineActionManager: + def __init__(self): + ## Dict of all known machine actions + self._machine_actions = {} + + ## Dict of all required actions by machine reference. + self._required_actions = {} + + ## Dict of all supported actions by machine reference + self._supported_actions = {} + + ## Dict of all actions that need to be done when first added by machine reference. + self._first_start_actions = {} + + ## Add a required action + def addRequiredAction(self, machine, action_key): + if action_key in self._machine_actions: + if machine in self._required_actions: + self._required_actions[machine].append(action_key) + else: + self._required_actions[machine] = set(action_key) + else: + # Todo: define specific Exception types (instead of general type) + raise Exception("Action %s, which is required for %s is not known." % (action_key, machine.getKey())) + + ## Add a (unique) MachineAction + # if the Key of the action is not unique, an exception is raised. + def addMachineAction(self, action): + if action.getKey() not in self._machine_action: + self._machine_action[action.getKey()] = action + else: + # Todo: define specific Exception types (instead of general type) + raise Exception("MachineAction with key %s was already added. Actions must have unique keys.", action.getKey()) + + ## Remove Machine action from manager + # \param action to remove + def removeMachineAction(self, action): + try: + del self._machine_actions[action.getKey()] + except KeyError: + Logger.log("w", "Trying to remove MachineAction (%s) that was already removed", action.getKey()) + + ## Get MachineAction by key + # \param key String of key to select + # \return Machine action if found, None otherwise + def getMachineAction(self, key): + if key in self._machine_actions: + return self._machine_actions[key] + else: + return None \ No newline at end of file