diff --git a/app/index.html b/app/index.html index 3b3bab8d..4e7882a8 100644 --- a/app/index.html +++ b/app/index.html @@ -361,6 +361,16 @@ +
+ + +
+ File diff --git a/app/js/filemanager.js b/app/js/filemanager.js new file mode 100644 index 00000000..7977584d --- /dev/null +++ b/app/js/filemanager.js @@ -0,0 +1,28 @@ +const { EventEmitter } = require('events'); + +class FileManager extends EventEmitter { + constructor() { + super(); + this._lastFilePath = ""; + } + + get lastFilePath() { + return this._lastFilePath; + } + + set lastFilePath(path) { + this._lastFilePath = path; + this.raiseLastFilePathChangedEvent(); + } + + clear(){ + this._lastFilePath = ""; + this.raiseLastFilePathChangedEvent(); + } + + raiseLastFilePathChangedEvent() { + this.emit('lastFilePathChangedEvent', this._lastFilePath); + } +} + +module.exports = new FileManager(); diff --git a/app/js/main.js b/app/js/main.js index ad5aa9d4..f651b0b1 100644 --- a/app/js/main.js +++ b/app/js/main.js @@ -113,10 +113,12 @@ $(document).ready(function() { console.log("Native Dialog Button Enabled") $("#openGcodeBtn").hide() $("#openGcodeBtnElectron19").show() + $("#reloadGcodeBtnElectron19").show() } else { console.log("Native Dialog Button Disabled") $("#openGcodeBtn").show() $("#openGcodeBtnElectron19").hide() + $("#reloadGcodeBtnElectron19").hide() } diff --git a/app/js/websocket.js b/app/js/websocket.js index f8bff2fe..8c3d210e 100644 --- a/app/js/websocket.js +++ b/app/js/websocket.js @@ -154,6 +154,18 @@ function initSocket() { } }) + socket.on('lastFilePathChangedEvent', function(data) { + console.log('File path changed:', data); + + if (data.filePath) { + $("#reloadGcodeBtnElectron19").prop("disabled", false); + $("#reloadIcon").removeClass("fg-gray").addClass("fg-amber"); + } else { + $("#reloadGcodeBtnElectron19").prop("disabled", true); + $("#reloadIcon").removeClass("fg-amber").addClass("fg-gray"); + } + }); + socket.on('gcodeupload', function(data) { var icon = '' var source = "api" @@ -179,7 +191,9 @@ function initSocket() { } else { $('#gcodeeditortab').click() } - jobNeedsHoming(); + if(!data.isReload) { // on reload don't mention homing + jobNeedsHoming(); + } }); socket.on('gcodeupload', function(data) { diff --git a/index.js b/index.js index dbc4b299..1c8e07a9 100644 --- a/index.js +++ b/index.js @@ -62,6 +62,13 @@ config.posDecimals = process.env.DRO_DECIMALS || 3; config.grblWaitTime = 0.5; +const fileManager = require('./app/js/fileManager'); +fileManager.on('lastFilePathChangedEvent', function(filePath) { + io.sockets.emit('lastFilePathChangedEvent', { + filePath: filePath + }); +}); + var express = require("express"); var app = express(); var http = require("http").Server(app); @@ -722,6 +729,11 @@ io.on("connection", function(socket) { }) }) + socket.on("reloadFile", function(data) { + var lastFilePath= fileManager.lastFilePath; + readFile(lastFilePath, true); + }); + socket.on("openInterfaceDir", function(data) { dialog.showOpenDialog(jogWindow, { properties: ['openDirectory'], @@ -2231,7 +2243,7 @@ io.on("connection", function(socket) { }); -function readFile(filePath) { +function readFile(filePath, isReload=false) { if (filePath) { if (filePath.length > 1) { var filename = path.parse(filePath) @@ -2245,9 +2257,11 @@ function readFile(filePath) { 'command': '', 'response': "ERROR: File Upload Failed" } + fileManager.lastFilePath = ""; uploadedgcode = ""; } if (data) { + fileManager.lastFilePath = filePath; if (filePath.endsWith('.obc')) { // OpenBuildsCAM Workspace uploadedworkspace = data; const { @@ -2257,8 +2271,8 @@ function readFile(filePath) { } else { // GCODE var payload = { gcode: data, - filename: filename - } + filename: filename, + isReload: isReload, } io.sockets.emit('gcodeupload', payload); uploadedgcode = data; return data