diff --git a/VERSION b/VERSION index 336c3677..0c64b5c3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.0-dev +1.2.0-dev diff --git a/run b/run index 634809ee..35ebbef8 100755 --- a/run +++ b/run @@ -1,13 +1,5 @@ #!/usr/bin/env python -print """ -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!!! You are using an old startup method for OctoPrint. !!! -!!! Please perform 'sudo python setup.py install' and !!! -!!! use the 'octoprint' executable instead. !!! -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -""" - import os import sys diff --git a/src/octoprint/printer.py b/src/octoprint/printer.py index b7948d58..f992b78d 100644 --- a/src/octoprint/printer.py +++ b/src/octoprint/printer.py @@ -613,11 +613,12 @@ class Printer(): "target": self._temp[tool][1], "offset": tempOffset[tool] if tool in tempOffset.keys() and tempOffset[tool] is not None else 0 } - result["bed"] = { - "actual": self._bedTemp[0], - "target": self._bedTemp[1], - "offset": bedTempOffset - } + if self._bedTemp is not None: + result["bed"] = { + "actual": self._bedTemp[0], + "target": self._bedTemp[1], + "offset": bedTempOffset + } return result diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py index 0cb14375..07195af0 100644 --- a/src/octoprint/server/api/settings.py +++ b/src/octoprint/server/api/settings.py @@ -59,6 +59,7 @@ def getSettings(): "waitForStart": s.getBoolean(["feature", "waitForStartOnConnect"]), "alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]), "sdSupport": s.getBoolean(["feature", "sdSupport"]), + "sdAlwaysAvailable": s.getBoolean(["feature", "sdAlwaysAvailable"]), "swallowOkAfterResend": s.getBoolean(["feature", "swallowOkAfterResend"]), "repetierTargetTemp": s.getBoolean(["feature", "repetierTargetTemp"]) }, @@ -71,6 +72,8 @@ def getSettings(): "timeoutConnection": s.getFloat(["serial", "timeout", "connection"]), "timeoutDetection": s.getFloat(["serial", "timeout", "detection"]), "timeoutCommunication": s.getFloat(["serial", "timeout", "communication"]), + "timeoutTemperature": s.getFloat(["serial", "timeout", "temperature"]), + "timeoutSdStatus": s.getFloat(["serial", "timeout", "sdStatus"]), "log": s.getBoolean(["serial", "log"]) }, "folder": { @@ -136,6 +139,7 @@ def setSettings(): if "waitForStart" in data["feature"].keys(): s.setBoolean(["feature", "waitForStartOnConnect"], data["feature"]["waitForStart"]) if "alwaysSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "alwaysSendChecksum"], data["feature"]["alwaysSendChecksum"]) if "sdSupport" in data["feature"].keys(): s.setBoolean(["feature", "sdSupport"], data["feature"]["sdSupport"]) + if "sdAlwaysAvailable" in data["feature"].keys(): s.setBoolean(["feature", "sdAlwaysAvailable"], data["feature"]["sdAlwaysAvailable"]) if "swallowOkAfterResend" in data["feature"].keys(): s.setBoolean(["feature", "swallowOkAfterResend"], data["feature"]["swallowOkAfterResend"]) if "repetierTargetTemp" in data["feature"].keys(): s.setBoolean(["feature", "repetierTargetTemp"], data["feature"]["repetierTargetTemp"]) @@ -146,6 +150,8 @@ def setSettings(): if "timeoutConnection" in data["serial"].keys(): s.setFloat(["serial", "timeout", "connection"], data["serial"]["timeoutConnection"]) if "timeoutDetection" in data["serial"].keys(): s.setFloat(["serial", "timeout", "detection"], data["serial"]["timeoutDetection"]) if "timeoutCommunication" in data["serial"].keys(): s.setFloat(["serial", "timeout", "communication"], data["serial"]["timeoutCommunication"]) + if "timeoutTemperature" in data["serial"].keys(): s.setFloat(["serial", "timeout", "temperature"], data["serial"]["timeoutTemperature"]) + if "timeoutSdStatus" in data["serial"].keys(): s.setFloat(["serial", "timeout", "sdStatus"], data["serial"]["timeoutSdStatus"]) oldLog = s.getBoolean(["serial", "log"]) if "log" in data["serial"].keys(): s.setBoolean(["serial", "log"], data["serial"]["log"]) diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py index 8c2684bf..a0091928 100644 --- a/src/octoprint/settings.py +++ b/src/octoprint/settings.py @@ -31,7 +31,9 @@ default_settings = { "timeout": { "detection": 0.5, "connection": 2, - "communication": 5 + "communication": 5, + "temperature": 5, + "sdStatus": 1 }, "additionalPorts": [] }, @@ -66,6 +68,7 @@ default_settings = { "waitForStartOnConnect": False, "alwaysSendChecksum": False, "sdSupport": True, + "sdAlwaysAvailable": False, "swallowOkAfterResend": True, "repetierTargetTemp": False }, @@ -146,7 +149,8 @@ default_settings = { "okWithLinenumber": False, "numExtruders": 1, "includeCurrentToolInTemps": True, - "hasBed": True + "hasBed": True, + "repetierStyleTargetTemperature": False } } } diff --git a/src/octoprint/static/gcodeviewer/js/renderer.js b/src/octoprint/static/gcodeviewer/js/renderer.js index 7fe9c032..a374724a 100644 --- a/src/octoprint/static/gcodeviewer/js/renderer.js +++ b/src/octoprint/static/gcodeviewer/js/renderer.js @@ -407,14 +407,15 @@ GCODE.renderer = (function(){ var applyZoom = function(mdlInfo) { var pt = ctx.transformedPoint(canvas.width/2,canvas.height/2); var transform = ctx.getTransform(); - var scaleF; if (scaleX && scaleY && transform.a && transform.d) { ctx.translate(pt.x, pt.y); ctx.scale(1 / scaleX, 1 / scaleY); ctx.translate(-pt.x, -pt.y); + transform = ctx.getTransform(); } + if (mdlInfo && renderOptions["zoomInOnModel"]) { - scaleF = mdlInfo.modelSize.x > mdlInfo.modelSize.y ? (canvas.width - 10) / mdlInfo.modelSize.x : (canvas.height - 10) / mdlInfo.modelSize.y; + var scaleF = mdlInfo.modelSize.x > mdlInfo.modelSize.y ? (canvas.width - 10) / mdlInfo.modelSize.x : (canvas.height - 10) / mdlInfo.modelSize.y; scaleF /= zoomFactor; if (transform.a && transform.d) { scaleX = scaleF / transform.a; @@ -451,10 +452,11 @@ GCODE.renderer = (function(){ var mustRefresh = false; var dirty = false; for (var opt in options) { - if (!options.hasOwnProperty(opt)) continue; + if (!renderOptions.hasOwnProperty(opt) || !options.hasOwnProperty(opt)) continue; if (options[opt] === undefined) continue; + if (renderOptions[opt] == options[opt]) continue; - dirty = dirty || (renderOptions[opt] != options[opt]); + dirty = true; renderOptions[opt] = options[opt]; if ($.inArray(opt, ["moveModel", "centerViewport", "zoomInOnModel", "bed"])) { mustRefresh = true; diff --git a/src/octoprint/static/js/app/dataupdater.js b/src/octoprint/static/js/app/dataupdater.js index 3304fd64..978613d2 100644 --- a/src/octoprint/static/js/app/dataupdater.js +++ b/src/octoprint/static/js/app/dataupdater.js @@ -42,6 +42,7 @@ function DataUpdater(loginStateViewModel, connectionViewModel, printerStateViewM $("#offline_overlay").hide(); self.logViewModel.requestData(); self.timelapseViewModel.requestData(); + $("#webcam_image").attr("src", CONFIG_WEBCAM_STREAM + "?" + new Date().getTime()); self.loginStateViewModel.requestData(); self.gcodeFilesViewModel.requestData(); self.gcodeViewModel.reset(); diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index 80379743..22442e93 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -101,6 +101,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.feature_waitForStart = ko.observable(undefined); self.feature_alwaysSendChecksum = ko.observable(undefined); self.feature_sdSupport = ko.observable(undefined); + self.feature_sdAlwaysAvailable = ko.observable(undefined); self.feature_swallowOkAfterResend = ko.observable(undefined); self.feature_repetierTargetTemp = ko.observable(undefined); @@ -112,6 +113,8 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.serial_timeoutConnection = ko.observable(undefined); self.serial_timeoutDetection = ko.observable(undefined); self.serial_timeoutCommunication = ko.observable(undefined); + self.serial_timeoutTemperature = ko.observable(undefined); + self.serial_timeoutSdStatus = ko.observable(undefined); self.serial_log = ko.observable(undefined); self.folder_uploads = ko.observable(undefined); @@ -211,6 +214,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.feature_waitForStart(response.feature.waitForStart); self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum); self.feature_sdSupport(response.feature.sdSupport); + self.feature_sdAlwaysAvailable(response.feature.sdAlwaysAvailable); self.feature_swallowOkAfterResend(response.feature.swallowOkAfterResend); self.feature_repetierTargetTemp(response.feature.repetierTargetTemp); @@ -222,6 +226,8 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { self.serial_timeoutConnection(response.serial.timeoutConnection); self.serial_timeoutDetection(response.serial.timeoutDetection); self.serial_timeoutCommunication(response.serial.timeoutCommunication); + self.serial_timeoutTemperature(response.serial.timeoutTemperature); + self.serial_timeoutSdStatus(response.serial.timeoutSdStatus); self.serial_log(response.serial.log); self.folder_uploads(response.folder.uploads); @@ -275,6 +281,7 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { "waitForStart": self.feature_waitForStart(), "alwaysSendChecksum": self.feature_alwaysSendChecksum(), "sdSupport": self.feature_sdSupport(), + "sdAlwaysAvailable": self.feature_sdAlwaysAvailable(), "swallowOkAfterResend": self.feature_swallowOkAfterResend(), "repetierTargetTemp": self.feature_repetierTargetTemp() }, @@ -285,6 +292,8 @@ function SettingsViewModel(loginStateViewModel, usersViewModel) { "timeoutConnection": self.serial_timeoutConnection(), "timeoutDetection": self.serial_timeoutDetection(), "timeoutCommunication": self.serial_timeoutCommunication(), + "timeoutTemperature": self.serial_timeoutTemperature(), + "timeoutSdStatus": self.serial_timeoutSdStatus(), "log": self.serial_log() }, "folder": { diff --git a/src/octoprint/templates/index.jinja2 b/src/octoprint/templates/index.jinja2 index 46a721f2..cf323a0b 100644 --- a/src/octoprint/templates/index.jinja2 +++ b/src/octoprint/templates/index.jinja2 @@ -267,7 +267,7 @@ - + diff --git a/src/octoprint/templates/settings.jinja2 b/src/octoprint/templates/settings.jinja2 index 1a3d8ace..67d4ddd6 100644 --- a/src/octoprint/templates/settings.jinja2 +++ b/src/octoprint/templates/settings.jinja2 @@ -46,7 +46,7 @@
- +
@@ -55,7 +55,25 @@
- + +
+
+ + s +
+
+
+
+ +
+
+ + s +
+
+
+
+
@@ -64,7 +82,7 @@
- +
@@ -245,6 +263,13 @@
+
+
+ +
+
ActualActual Target Offset