From 45740f5e692902570661860552f32ec847566f4f Mon Sep 17 00:00:00 2001 From: Amanda Ghassaei <amandaghassaei@gmail.com> Date: Wed, 11 Mar 2015 18:46:49 -0400 Subject: [PATCH] working on gcode editor --- css/main.css | 4 ++++ js/cam/Assembler.js | 48 +++++++++++++++++++-------------------- js/cam/GCodeExporter.js | 2 -- js/cam/ShopbotExporter.js | 6 ++--- js/menus/CamMenuView.js | 2 +- js/menus/SendMenuView.js | 10 +++++++- js/models/AppState.js | 1 + 7 files changed, 42 insertions(+), 31 deletions(-) diff --git a/css/main.css b/css/main.css index 0b56c36a..8dd5b138 100644 --- a/css/main.css +++ b/css/main.css @@ -156,3 +156,7 @@ hr { border-width: 0px; background-color: rgba(255,255,255,0.5); } + +#gcodeEditor:focus { + outline-width: 0; +} diff --git a/js/cam/Assembler.js b/js/cam/Assembler.js index cac5ebe1..c5b31d38 100644 --- a/js/cam/Assembler.js +++ b/js/cam/Assembler.js @@ -15,6 +15,8 @@ Assembler = Backbone.Model.extend({ initialize: function(){ + _.bindAll(this, "postProcess"); + //bind events this.listenTo(this, "change:camProcess", this._setNeedsPostProcessing); this.listenTo(dmaGlobals.appState, "change:units", this._setNeedsPostProcessing); @@ -25,8 +27,9 @@ Assembler = Backbone.Model.extend({ this.set("needsPostProcessing", true); }, - setProgramEditsMade: function(){ - this.set("editsMadeToProgram", true); + makeProgramEdits: function(data){ + this.set("dataOut", data, {silent:true}); + this.set("editsMadeToProgram", true, {silent: true}); }, _getExporter: function(){ @@ -43,40 +46,37 @@ Assembler = Backbone.Model.extend({ } else { return new GCodeExporter(); } - } + } else console.warn("cam process not supported"); }, postProcess: function(){ - var exporter = this._getExporter(); - if (exporter) { - var data = ""; - data += exporter.makeHeader(); - data += "\n\n"; - data += exporter.addComment("begin program"); - data += "\n"; - data += exporter.moveZ(3); - data += exporter.move3(1, 4, 5); - data += "\n\n"; - data += exporter.addComment("end program"); - data += "\n"; - data += exporter.makeFooter(); - this.set("dataOut", data); - this.set("exporter", exporter); - } - else console.warn("cam process not supported"); this.set("needsPostProcessing", false); + var exporter = this._getExporter(); + + var data = ""; + data += exporter.makeHeader(); + data += "\n\n"; + data += exporter.addComment("begin program"); + data += "\n"; + data += exporter.moveZ(3); + data += exporter.move3(1, 4, 5); + data += "\n\n"; + data += exporter.addComment("end program"); + data += "\n"; + data += exporter.makeFooter(); + + this.set("dataOut", data); + this.set("exporter", exporter); return {data:data, exporter:exporter}; }, - save: function(data, exporter){ + save: function(){ if (this.get("needsPostProcessing")){ var output = this.postProcess(); output.exporter.save(output.data); return; } - if (!data) data = this.get("dataOut"); - if (!exporter) exporter = this.get("exporter"); - exporter.save(data); + this.get("exporter").save(this.get("dataOut")); }, destroy: function(){ diff --git a/js/cam/GCodeExporter.js b/js/cam/GCodeExporter.js index 968641e8..d2ef3bd2 100644 --- a/js/cam/GCodeExporter.js +++ b/js/cam/GCodeExporter.js @@ -59,8 +59,6 @@ GCodeExporter.prototype.moveZ = function(z){ GCodeExporter.prototype.makeFooter = function(){ var data = ""; - data += "\n"; - data += "\n"; data += this.goHome(); data += this.addLine("M30", [], "program stop"); diff --git a/js/cam/ShopbotExporter.js b/js/cam/ShopbotExporter.js index 2852fabb..9845103a 100644 --- a/js/cam/ShopbotExporter.js +++ b/js/cam/ShopbotExporter.js @@ -10,9 +10,9 @@ ShopbotExporter.prototype.makeHeader = function(){ data += this.addLine("FG", [], "single step mode"); data += this.goHome(); data += this.addLine("SA", [], "absolute distances"); - data += this.addLine("SM", [], "move/cut mode (as opposed to preview mode)"); - data += this.addLine("JS", [4, 1], "jog speed- xy, z inches per sec"); - data += this.addLine("MS", [2, 0.5], "move speed- xy, z inches per sec"); + data += this.addLine("SM", [], "move/cut mode"); + data += this.addLine("JS", [4, 1], "jog speed xy, z"); + data += this.addLine("MS", [2, 0.5], "move speed xy, z"); return data; }; diff --git a/js/menus/CamMenuView.js b/js/menus/CamMenuView.js index 2e8bc61c..4edc02b2 100644 --- a/js/menus/CamMenuView.js +++ b/js/menus/CamMenuView.js @@ -63,7 +63,7 @@ CamMenuView = Backbone.View.extend({ <% }); %>\ </ul>\ </div><br/><br/>\ - <a href="#" id="saveCam" class=" btn btn-block btn-lg btn-default">Save</a><br/>\ + <a href="#" id="saveCam" class=" btn btn-block btn-lg btn-default">Process and Save</a><br/>\ ') }); \ No newline at end of file diff --git a/js/menus/SendMenuView.js b/js/menus/SendMenuView.js index 765e48ef..a92e62d8 100644 --- a/js/menus/SendMenuView.js +++ b/js/menus/SendMenuView.js @@ -15,6 +15,7 @@ SendMenuView = Backbone.View.extend({ //bind events this.listenTo(dmaGlobals.assembler, "change", this.render); + $(document).bind('keyup', {state:false}, this._codeEdit); _.bindAll(this, "render"); }, @@ -29,6 +30,13 @@ SendMenuView = Backbone.View.extend({ dmaGlobals.assembler.postProcess(); }, + _codeEdit: function(e){ + var textarea = $("#gcodeEditor"); + if (!textarea.is(":focus")) return; + e.preventDefault(); + dmaGlobals.assembler.makeProgramEdits(textarea.val()); + }, + render: function(){ if (this.model.get("currentTab") != "send") return; if (dmaGlobals.assembler.get("needsPostProcessing")) dmaGlobals.assembler.postProcess(); @@ -37,7 +45,7 @@ SendMenuView = Backbone.View.extend({ template: _.template('\ <a href="#" id="saveSendMenu" class=" btn btn-block btn-lg btn-default">Save</a><br/>\ - <textarea id="gcodeEditor"><%= dataOut %></textarea>\ + <textarea id="gcodeEditor"><%= dataOut %></textarea><br/><br/>\ <a href="#" id="overrideEdits" class=" btn btn-block btn-lg btn-default">Undo Changes</a><br/>\ ') diff --git a/js/models/AppState.js b/js/models/AppState.js index 09b7b2bd..846148a8 100644 --- a/js/models/AppState.js +++ b/js/models/AppState.js @@ -186,6 +186,7 @@ AppState = Backbone.Model.extend({ _handleKeyStroke: function(e){//receives keyup and keydown if ($("input").is(':focus')) return;//we are typing in an input + if ($("textarea").is(':focus')) return;//we are typing in an input var state = e.data.state; var currentTab = this.get("currentTab"); -- GitLab