diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py index 9e3d337e..90fc3c6b 100644 --- a/src/octoprint/server/api/settings.py +++ b/src/octoprint/server/api/settings.py @@ -125,7 +125,8 @@ def getSettings(): "pollWatched": s.getBoolean(["feature", "pollWatched"]), "ignoreIdenticalResends": s.getBoolean(["feature", "ignoreIdenticalResends"]), "modelSizeDetection": s.getBoolean(["feature", "modelSizeDetection"]), - "firmwareDetection": s.getBoolean(["feature", "firmwareDetection"]) + "firmwareDetection": s.getBoolean(["feature", "firmwareDetection"]), + "printCancelConfirmation": s.getBoolean(["feature", "printCancelConfirmation"]) }, "serial": { "port": connectionOptions["portPreference"], @@ -309,6 +310,7 @@ def _saveSettings(data): if "ignoreIdenticalResends" in data["feature"]: s.setBoolean(["feature", "ignoreIdenticalResends"], data["feature"]["ignoreIdenticalResends"]) if "modelSizeDetection" in data["feature"]: s.setBoolean(["feature", "modelSizeDetection"], data["feature"]["modelSizeDetection"]) if "firmwareDetection" in data["feature"]: s.setBoolean(["feature", "firmwareDetection"], data["feature"]["firmwareDetection"]) + if "printCancelConfirmation" in data["feature"]: s.setBoolean(["feature", "printCancelConfirmation"], data["feature"]["printCancelConfirmation"]) if "serial" in data.keys(): if "autoconnect" in data["serial"].keys(): s.setBoolean(["serial", "autoconnect"], data["serial"]["autoconnect"]) diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py index d43de3b6..8775a93f 100644 --- a/src/octoprint/settings.py +++ b/src/octoprint/settings.py @@ -200,7 +200,8 @@ default_settings = { "identicalResendsCountdown": 7, "supportFAsCommand": False, "modelSizeDetection": True, - "firmwareDetection": True + "firmwareDetection": True, + "printCancelConfirmation": True }, "folder": { "uploads": None, diff --git a/src/octoprint/static/js/app/viewmodels/printerstate.js b/src/octoprint/static/js/app/viewmodels/printerstate.js index 745d3551..075c2ba8 100644 --- a/src/octoprint/static/js/app/viewmodels/printerstate.js +++ b/src/octoprint/static/js/app/viewmodels/printerstate.js @@ -3,6 +3,7 @@ $(function() { var self = this; self.loginState = parameters[0]; + self.settings = parameters[1]; self.stateString = ko.observable(undefined); self.isErrorOrClosed = ko.observable(undefined); @@ -288,18 +289,22 @@ $(function() { }; self.cancel = function() { - showConfirmationDialog({ - message: gettext("This will cancel your print."), - onproceed: function() { - OctoPrint.job.cancel(); - } - }); + if (!self.settings.feature_printCancelConfirmation()) { + OctoPrint.job.cancel(); + } else { + showConfirmationDialog({ + message: gettext("This will cancel your print."), + onproceed: function() { + OctoPrint.job.cancel(); + } + }); + }; }; } OCTOPRINT_VIEWMODELS.push([ PrinterStateViewModel, - ["loginStateViewModel"], + ["loginStateViewModel", "settingsViewModel"], ["#state_wrapper", "#drop_overlay"] ]); }); diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index 43482ee1..7b9394e5 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -138,6 +138,7 @@ $(function() { self.feature_ignoreIdenticalResends = ko.observable(undefined); self.feature_modelSizeDetection = ko.observable(undefined); self.feature_firmwareDetection = ko.observable(undefined); + self.feature_printCancelConfirmation = ko.observable(undefined); self.serial_port = ko.observable(); self.serial_baudrate = ko.observable(); diff --git a/src/octoprint/templates/dialogs/settings/features.jinja2 b/src/octoprint/templates/dialogs/settings/features.jinja2 index 3d146167..af770096 100644 --- a/src/octoprint/templates/dialogs/settings/features.jinja2 +++ b/src/octoprint/templates/dialogs/settings/features.jinja2 @@ -34,7 +34,13 @@ - +