From e1b071c0d8635fab5f9da23c1aec9d5feaa9cc71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Fri, 5 Dec 2014 11:46:55 +0100 Subject: [PATCH] Removed old printer parameter and appearance settings and added auto migration of config --- src/octoprint/server/api/settings.py | 8 -- src/octoprint/settings.py | 89 +++++++++++++++---- .../static/js/app/viewmodels/settings.js | 44 --------- src/octoprint/templates/settings.jinja2 | 20 +---- 4 files changed, 71 insertions(+), 90 deletions(-) diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py index b8283d51..77604d06 100644 --- a/src/octoprint/server/api/settings.py +++ b/src/octoprint/server/api/settings.py @@ -35,10 +35,6 @@ def getSettings(): "key": s.get(["api", "key"]) if admin_permission.can() else "n/a", "allowCrossOrigin": s.get(["api", "allowCrossOrigin"]) }, - "appearance": { - "name": s.get(["appearance", "name"]), - "color": s.get(["appearance", "color"]) - }, "printer": { "defaultExtrusionLength": s.getInt(["printerParameters", "defaultExtrusionLength"]) }, @@ -124,10 +120,6 @@ def setSettings(): if "key" in data["api"].keys(): s.set(["api", "key"], data["api"]["key"], True) if "allowCrossOrigin" in data["api"].keys(): s.setBoolean(["api", "allowCrossOrigin"], data["api"]["allowCrossOrigin"]) - if "appearance" in data.keys(): - if "name" in data["appearance"].keys(): s.set(["appearance", "name"], data["appearance"]["name"]) - if "color" in data["appearance"].keys(): s.set(["appearance", "color"], data["appearance"]["color"]) - if "printer" in data.keys(): if "defaultExtrusionLength" in data["printer"]: s.setInt(["printerParameters", "defaultExtrusionLength"], data["printer"]["defaultExtrusionLength"]) diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py index 4aa6fa95..8f7f2a4a 100644 --- a/src/octoprint/settings.py +++ b/src/octoprint/settings.py @@ -108,27 +108,9 @@ default_settings = { "defaultProfile": {} }, "printerParameters": { - "movementSpeed": { - "x": 6000, - "y": 6000, - "z": 200, - "e": 300 - }, "pauseTriggers": [], - "invertAxes": [], - "numExtruders": 1, - "extruderOffsets": [ - {"x": 0.0, "y": 0.0} - ], - "bedDimensions": { - "x": 200.0, "y": 200.0, "r": 100, "circular": False - }, "defaultExtrusionLength": 5 }, - "appearance": { - "name": "", - "color": "default" - }, "controls": [], "system": { "actions": [] @@ -240,11 +222,80 @@ class Settings(object): def _migrateConfig(self): dirty = False - for migrate in (self._migrate_event_config, self._migrate_reverse_proxy_config): + for migrate in (self._migrate_event_config, self._migrate_reverse_proxy_config, self._migrate_printer_parameters): dirty = migrate() or dirty if dirty: self.save(force=True) + def _migrate_printer_parameters(self): + default_profile = self._config["printerProfiles"]["defaultProfile"] if "printerProfiles" in self._config and "defaultProfile" in self._config["printerProfiles"] else dict() + dirty = False + + if "printerParameters" in self._config: + printer_parameters = self._config["printerParameters"] + + if "movementSpeed" in printer_parameters or "invertAxes" in printer_parameters: + default_profile["axes"] = dict(x=dict(), y=dict(), z=dict(), e=dict()) + if "movementSpeed" in printer_parameters: + for axis in ("x", "y", "z", "e"): + if axis in printer_parameters["movementSpeed"]: + default_profile["axes"][axis]["speed"] = printer_parameters["movementSpeed"][axis] + del self._config["printerParameters"]["movementSpeed"] + if "invertedAxes" in printer_parameters: + for axis in ("x", "y", "z", "e"): + if axis in printer_parameters["invertedAxes"]: + default_profile["axes"][axis]["inverted"] = True + del self._config["printerParameters"]["invertedAxes"] + + if "numExtruders" in printer_parameters or "extruderOffsets" in printer_parameters: + if not "extruder" in default_profile: + default_profile["extruder"] = dict() + + if "numExtruders" in printer_parameters: + default_profile["extruder"]["count"] = printer_parameters["numExtruders"] + del self._config["printerParameters"]["numExtruders"] + if "extruderOffsets" in printer_parameters: + extruder_offsets = [] + for offset in printer_parameters["extruderOffsets"]: + if "x" in offset and "y" in offset: + extruder_offsets.append((offset["x"], offset["y"])) + default_profile["extruder"]["offsets"] = extruder_offsets + del self._config["printerParameters"]["extruderOffsets"] + + if "bedDimensions" in printer_parameters: + bed_dimensions = printer_parameters["bedDimensions"] + if not "volume" in default_profile: + default_profile["volume"] = dict() + + if "circular" in bed_dimensions and "r" in bed_dimensions and bed_dimensions["circular"]: + default_profile["volume"]["formFactor"] = "circular" + default_profile["volume"]["width"] = 2 * bed_dimensions["r"] + default_profile["volume"]["depth"] = default_profile["volume"]["width"] + elif "x" in bed_dimensions or "y" in bed_dimensions: + default_profile["volume"]["formFactor"] = "rectangular" + if "x" in bed_dimensions: + default_profile["volume"]["width"] = bed_dimensions["x"] + if "y" in bed_dimensions: + default_profile["volume"]["depth"] = bed_dimensions["y"] + del self._config["printerParameters"]["bedDimensions"] + + dirty = True + + if "appearance" in self._config: + if "name" in self._config["appearance"]: + default_profile["name"] = self._config["appearance"]["name"] + if "color" in self._config["appearance"]: + default_profile["color"] = self._config["appearance"]["color"] + + del self._config["appearance"] + dirty = True + + if dirty: + if not "printerProfiles" in self._config: + self._config["printerProfiles"] = dict() + self._config["printerProfiles"]["defaultProfile"] = default_profile + return dirty + def _migrate_reverse_proxy_config(self): if "server" in self._config.keys() and ("baseUrl" in self._config["server"] or "scheme" in self._config["server"]): prefix = "" diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index 67bfd645..07a17241 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -9,43 +9,6 @@ function SettingsViewModel(loginStateViewModel, usersViewModel, printerProfilesV self.api_key = ko.observable(undefined); self.api_allowCrossOrigin = ko.observable(undefined); - self.appearance_name = ko.observable(undefined); - self.appearance_color = ko.observable(undefined); - - self.appearance_available_colors = ko.observable([ - {key: "default", name: gettext("default")}, - {key: "red", name: gettext("red")}, - {key: "orange", name: gettext("orange")}, - {key: "yellow", name: gettext("yellow")}, - {key: "green", name: gettext("green")}, - {key: "blue", name: gettext("blue")}, - {key: "violet", name: gettext("violet")}, - {key: "black", name: gettext("black")} - ]); - - self.appearance_colorName = function(color) { - switch (color) { - case "red": - return gettext("red"); - case "orange": - return gettext("orange"); - case "yellow": - return gettext("yellow"); - case "green": - return gettext("green"); - case "blue": - return gettext("blue"); - case "violet": - return gettext("violet"); - case "black": - return gettext("black"); - case "default": - return gettext("default"); - default: - return color; - } - }; - self.printer_defaultExtrusionLength = ko.observable(undefined); self.webcam_streamUrl = ko.observable(undefined); @@ -138,9 +101,6 @@ function SettingsViewModel(loginStateViewModel, usersViewModel, printerProfilesV self.api_key(response.api.key); self.api_allowCrossOrigin(response.api.allowCrossOrigin); - self.appearance_name(response.appearance.name); - self.appearance_color(response.appearance.color); - self.printer_defaultExtrusionLength(response.printer.defaultExtrusionLength); self.webcam_streamUrl(response.webcam.streamUrl); @@ -198,10 +158,6 @@ function SettingsViewModel(loginStateViewModel, usersViewModel, printerProfilesV "key": self.api_key(), "allowCrossOrigin": self.api_allowCrossOrigin() }, - "appearance" : { - "name": self.appearance_name(), - "color": self.appearance_color() - }, "printer": { "defaultExtrusionLength": self.printer_defaultExtrusionLength() }, diff --git a/src/octoprint/templates/settings.jinja2 b/src/octoprint/templates/settings.jinja2 index 02e917d7..51f04136 100644 --- a/src/octoprint/templates/settings.jinja2 +++ b/src/octoprint/templates/settings.jinja2 @@ -18,7 +18,6 @@
  • {{ _('API') }}
  • {{ _('Folders') }}
  • -
  • {{ _('Appearance') }}
  • {{ _('Logs') }}
  • {% if settingsPlugins %} @@ -229,7 +228,7 @@ mm/min
    @@ -478,23 +477,6 @@
    -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -