diff --git a/package.json b/package.json
index 920ba31..9d06bc0 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,7 @@
"jquery": "^3.5.1",
"jsdom": "^16.4.0",
"jsonschema": "^1.4.0",
+ "minimist": "^1.2.5",
"typescript": "^4.1.3"
},
"devDependencies": {
diff --git a/src/index.ts b/src/index.ts
index ad989cd..473585a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -13,6 +13,7 @@ import * as fs from "fs";
import * as path from "path";
import * as util from 'util';
import * as log from "electron-log";
+import * as parseArgs from "minimist";
import { Validator } from "jsonschema";
import * as jsdom from "jsdom";
const { JSDOM } = jsdom;
@@ -149,10 +150,22 @@ app.on("before-quit", (event) => {
})
function start() {
- if (process.argv.includes("--debug")) {
+ let args = parseArgs(process.argv.slice(1));
+ if (args["_"][0] == ".") {
+ args["_"].splice(0, 1);
+ }
+
+ if (args["debug"]) {
debug = true;
}
- createSplashScreen();
+ if (args["_"].length > 0) {
+ for (let file_path of args["_"]) {
+ log.info(file_path);
+ openFile(file_path, true, true);
+ }
+ } else {
+ createSplashScreen();
+ }
}
function createSplashScreen() {
@@ -240,7 +253,7 @@ function chooseFile(title, for_save=false) {
}
}
-function openFile(file_path="", new_file=false) {
+function openFile(file_path="", make_new_file=false, make_new_window=false) {
if (file_path === "") {
file_path = chooseFile("Open website data");
}
@@ -249,10 +262,12 @@ function openFile(file_path="", new_file=false) {
if (result) {
let json = getUpdatedJson(result);
updateRecentFiles(file_path);
- if (new_file) {
+ if (make_new_file) {
let old_window = BrowserWindow.getFocusedWindow();
createEditorWindow(file_path, json);
- old_window.close();
+ if (old_window && !make_new_window) {
+ old_window.close();
+ }
} else {
let window = BrowserWindow.getFocusedWindow();
window.webContents.send("open", file_path, json);
@@ -416,12 +431,16 @@ ipcMain.on("save", (event, file_name, json_data) => {
saveFile(file_name, json_data);
})
-ipcMain.on("open", (event, file_path="", new_file=false) => {
+ipcMain.on("open", (event, file_path="", new_file=false, new_window=false) => {
openFile(file_path, new_file)
})
ipcMain.on("quit", (event) => {
- app.exit();
+ if (BrowserWindow.getAllWindows().length > 1) {
+ BrowserWindow.getFocusedWindow().destroy();
+ } else {
+ app.exit();
+ }
})
ipcMain.on("close-window", (event) => {
diff --git a/src/js/splash.ts b/src/js/splash.ts
index 90b9faa..b7a1268 100644
--- a/src/js/splash.ts
+++ b/src/js/splash.ts
@@ -1,6 +1,6 @@
import { ipcRenderer } from 'electron';
import * as $ from "../../third_party/js/jquery-3.5.1.js";
-let recent_files_div = $("#recent-files")
+let recent_files_div = $("#recent-files");
async function showRecentFiles() {
let recent_files = await ipcRenderer.invoke("get-store-value", "recent_files");
@@ -42,3 +42,36 @@ $("#create-new").on("click", () => {
$("#open-file").on("click", () => {
ipcRenderer.send("open", "", true);
})
+
+$("#file-drop").on('drop', (event) => {
+ if (event.originalEvent.dataTransfer.types.includes("Files")) {
+ event.preventDefault();
+ event.stopPropagation();
+ let files = event.originalEvent.dataTransfer.files;
+ for (const f of files) {
+ ipcRenderer.send("open", f.path, true, true);
+ }
+ $("#file-drop").css("display", "none");
+ }
+})
+ .on('dragover', (event) => {
+ if (event.originalEvent.dataTransfer.types.includes("Files")) {
+ event.preventDefault();
+ event.stopPropagation();
+ $("#file-drop").css("display", "block");
+ }
+})
+ .on('dragleave', (event) => {
+ if (event.originalEvent.dataTransfer.types.includes("Files")) {
+ $("#file-drop").css("display", "none");
+ }
+ });
+
+
+$(window).on('dragenter', (event) => {
+ if (event.originalEvent.dataTransfer.types.includes("Files")) {
+ let width = $(document).width();
+ let height = $(document).height();
+ $("#file-drop").css({"display": "block", "width": width, "height": height});
+ }
+});
diff --git a/src/splash.html b/src/splash.html
index 5dce29a..6fe64d5 100644
--- a/src/splash.html
+++ b/src/splash.html
@@ -14,6 +14,9 @@
+