From e5a8d4ad94d89d8316b3cd0b1aa9672555eb1ab1 Mon Sep 17 00:00:00 2001 From: agarwali Date: Thu, 7 Apr 2016 23:28:41 -0400 Subject: [PATCH 1/5] Added buttons to change layer in the gcodeviewer canvas, and fixed bug for layer up and down key-binding. It is now disabled when no file is uploaded --- .../static/js/app/viewmodels/gcode.js | 63 ++++++++++++------- .../templates/tabs/gcodeviewer.jinja2 | 10 +++ 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/gcode.js b/src/octoprint/static/js/app/viewmodels/gcode.js index a4498903..c6b1cb95 100644 --- a/src/octoprint/static/js/app/viewmodels/gcode.js +++ b/src/octoprint/static/js/app/viewmodels/gcode.js @@ -419,6 +419,9 @@ $(function() { self.layerSlider.slider("disable"); self.layerSlider.slider("setMax", 1); self.layerSlider.slider("setValue", 0); + $('#btn_layer_up').prop('disabled', true); + $('#btn_layer_down').prop('disabled', true); + } self.currentLayer = 0; } else { @@ -434,6 +437,8 @@ $(function() { self.layerSlider.slider("enable"); self.layerSlider.slider("setMax", model.layersPrinted - 1); self.layerSlider.slider("setValue", 0); + $('#btn_layer_up').prop('disabled', false); + $('#btn_layer_down').prop('disabled', false); } } }; @@ -498,16 +503,16 @@ $(function() { }; self.onMouseOver = function(data, event) { - if (!self.settings.feature_keyboardControl()) return; + if (!self.settings.feature_keyboardControl() || self.layerSlider != undefined) return; $("#canvas_container").focus(); }; self.onMouseOut = function(data, event) { - if (!self.settings.feature_keyboardControl()) return; + if (!self.settings.feature_keyboardControl() || self.layerSlider != undefined) return; $("#canvas_container").blur(); }; self.onKeyDown = function(data, event) { - if (!self.settings.feature_keyboardControl()) return; + if (!self.settings.feature_keyboardControl() || self.layerSlider != undefined) return; var value = self.currentLayer; switch(event.which){ @@ -524,25 +529,7 @@ $(function() { value = value - 1; // No need to check against min, this is done by the Slider anyway break; } - - if (value != self.currentLayer) { - event.preventDefault(); - - self.layerSlider.slider('setValue', value); - value = self.layerSlider.slider('getValue'); - self.layerSlider - .trigger({ - type: 'slideStart', - value: value - }) - .trigger({ - type: 'slide', - value: value - }).trigger({ - type: 'slideStop', - value: value - }); - } + self.incrementLayer(value); }; self.changeCommandRange = function(event) { @@ -566,6 +553,38 @@ $(function() { self.onTabChange = function(current, previous) { self.tabActive = current == "#gcode"; }; + + self.incrementLayer = function(value){ + if (value != self.currentLayer) { + event.preventDefault(); + + self.layerSlider.slider('setValue', value); + value = self.layerSlider.slider('getValue'); + //This sets the srollbar to the appropriate position. + self.layerSlider + .trigger({ + type: 'slideStart', + value: value + }) + .trigger({ + type: 'slide', + value: value + }).trigger({ + type: 'slideStop', + value: value + }); + } + }; + + $( "#btn_layer_up" ).click(function() { + var value = self.layerSlider.slider('getValue')+1; + self.incrementLayer(value); + }); + + $( "#btn_layer_down" ).click(function() { + var value = self.layerSlider.slider('getValue')-1; + self.incrementLayer(value); + }); } OCTOPRINT_VIEWMODELS.push([ diff --git a/src/octoprint/templates/tabs/gcodeviewer.jinja2 b/src/octoprint/templates/tabs/gcodeviewer.jinja2 index 223720a9..fd733b3f 100644 --- a/src/octoprint/templates/tabs/gcodeviewer.jinja2 +++ b/src/octoprint/templates/tabs/gcodeviewer.jinja2 @@ -3,6 +3,16 @@ +
+ + +
From 173c544a5e5b40ab0a30a60576126e2259a86cdb Mon Sep 17 00:00:00 2001 From: agarwali Date: Thu, 7 Apr 2016 23:49:33 -0400 Subject: [PATCH 2/5] Forgot to add names to Authors.md --- AUTHORS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AUTHORS.md b/AUTHORS.md index a3ed687b..68ed85f7 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -62,6 +62,8 @@ date of first contribution): * ["geoporalis"](https://github.com/geoporalis) * [Andrew Malota](https://github.com/2bitoperations) * [Alexander Leisentritt](https://github.com/Alex9779) + * [Ishwar Agarwal](https://github.com/agarwali) + * [Kye Hoover](https://github.com/eykrevooh) OctoPrint started off as a fork of [Cura](https://github.com/daid/Cura) by [Daid Braam](https://github.com/daid). Parts of its communication layer and From a514096622726442748c49ea5a830079041fe39c Mon Sep 17 00:00:00 2001 From: eykrevooh Date: Mon, 11 Apr 2016 22:47:02 -0400 Subject: [PATCH 3/5] Fixed the button names wrapping them in {{_(...)}} so that they can be translated --- src/octoprint/templates/tabs/gcodeviewer.jinja2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/octoprint/templates/tabs/gcodeviewer.jinja2 b/src/octoprint/templates/tabs/gcodeviewer.jinja2 index fd733b3f..a876f8f0 100644 --- a/src/octoprint/templates/tabs/gcodeviewer.jinja2 +++ b/src/octoprint/templates/tabs/gcodeviewer.jinja2 @@ -6,11 +6,11 @@
From 09559c5bbc502c55fa332eddd27262e915d46d7e Mon Sep 17 00:00:00 2001 From: eykrevooh Date: Mon, 11 Apr 2016 23:13:00 -0400 Subject: [PATCH 4/5] Renamed the self.incrementLayer to self.changeLayer in all four instances --- src/octoprint/static/js/app/viewmodels/gcode.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/gcode.js b/src/octoprint/static/js/app/viewmodels/gcode.js index c6b1cb95..2e0bf50d 100644 --- a/src/octoprint/static/js/app/viewmodels/gcode.js +++ b/src/octoprint/static/js/app/viewmodels/gcode.js @@ -529,7 +529,7 @@ $(function() { value = value - 1; // No need to check against min, this is done by the Slider anyway break; } - self.incrementLayer(value); + self.changeLayer(value); }; self.changeCommandRange = function(event) { @@ -554,7 +554,7 @@ $(function() { self.tabActive = current == "#gcode"; }; - self.incrementLayer = function(value){ + self.changeLayer = function(value){ if (value != self.currentLayer) { event.preventDefault(); @@ -578,12 +578,12 @@ $(function() { $( "#btn_layer_up" ).click(function() { var value = self.layerSlider.slider('getValue')+1; - self.incrementLayer(value); + self.changeLayer(value); }); $( "#btn_layer_down" ).click(function() { var value = self.layerSlider.slider('getValue')-1; - self.incrementLayer(value); + self.changeLayer(value); }); } From 4f793de9996f063a436b52faed754fd8a5dad477 Mon Sep 17 00:00:00 2001 From: Ishwar Agarwal Date: Wed, 13 Apr 2016 15:18:34 +0000 Subject: [PATCH 5/5] Replaced jquery with ko functions e.g. the button clicks and enabling button. Fixed an error in last commit: renamed a function that was already being used, self.changeLayer to self.shiftLayer. --- .../static/js/app/viewmodels/gcode.js | 26 +++++++++---------- .../templates/tabs/gcodeviewer.jinja2 | 8 +++--- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/gcode.js b/src/octoprint/static/js/app/viewmodels/gcode.js index c6b1cb95..abcd8b2c 100644 --- a/src/octoprint/static/js/app/viewmodels/gcode.js +++ b/src/octoprint/static/js/app/viewmodels/gcode.js @@ -52,6 +52,8 @@ $(function() { self.reader_sortLayers = ko.observable(true); self.reader_hideEmptyLayers = ko.observable(true); + + self.layerSelectionEnabled = ko.observable(false) self.synchronizeOptions = function(additionalRendererOptions, additionalReaderOptions) { var renderer = { @@ -419,9 +421,7 @@ $(function() { self.layerSlider.slider("disable"); self.layerSlider.slider("setMax", 1); self.layerSlider.slider("setValue", 0); - $('#btn_layer_up').prop('disabled', true); - $('#btn_layer_down').prop('disabled', true); - + self.layerSelectionEnabled(false); } self.currentLayer = 0; } else { @@ -437,8 +437,7 @@ $(function() { self.layerSlider.slider("enable"); self.layerSlider.slider("setMax", model.layersPrinted - 1); self.layerSlider.slider("setValue", 0); - $('#btn_layer_up').prop('disabled', false); - $('#btn_layer_down').prop('disabled', false); + self.layerSelectionEnabled(true); } } }; @@ -529,7 +528,7 @@ $(function() { value = value - 1; // No need to check against min, this is done by the Slider anyway break; } - self.incrementLayer(value); + self.shiftLayer(value); }; self.changeCommandRange = function(event) { @@ -554,7 +553,7 @@ $(function() { self.tabActive = current == "#gcode"; }; - self.incrementLayer = function(value){ + self.shiftLayer = function(value){ if (value != self.currentLayer) { event.preventDefault(); @@ -576,15 +575,16 @@ $(function() { } }; - $( "#btn_layer_up" ).click(function() { + self.incrementLayer = function() { var value = self.layerSlider.slider('getValue')+1; - self.incrementLayer(value); - }); + self.shiftLayer(value); + } - $( "#btn_layer_down" ).click(function() { + self.decrementLayer = function() { var value = self.layerSlider.slider('getValue')-1; - self.incrementLayer(value); - }); + self.shiftLayer(value); + } + } OCTOPRINT_VIEWMODELS.push([ diff --git a/src/octoprint/templates/tabs/gcodeviewer.jinja2 b/src/octoprint/templates/tabs/gcodeviewer.jinja2 index fd733b3f..784747e3 100644 --- a/src/octoprint/templates/tabs/gcodeviewer.jinja2 +++ b/src/octoprint/templates/tabs/gcodeviewer.jinja2 @@ -4,13 +4,13 @@
- -