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