mirror of
https://github.com/TheGreyDiamond/open360viewer.git
synced 2025-07-17 20:33:48 +02:00
161 lines
3.9 KiB
JavaScript
161 lines
3.9 KiB
JavaScript
const {
|
|
app,
|
|
BrowserWindow,
|
|
protocol,
|
|
Menu,
|
|
dialog,
|
|
ipcMain,
|
|
} = require("electron");
|
|
const url = require("url");
|
|
const path = require("path");
|
|
const FileType = require("file-type");
|
|
const glob = require("glob");
|
|
const fs = require("fs");
|
|
|
|
|
|
let win;
|
|
const isMac = process.platform === "darwin";
|
|
|
|
const template = [
|
|
// { role: 'fileMenu' }
|
|
{
|
|
label: "File",
|
|
submenu: [
|
|
{
|
|
label: "Open",
|
|
accelerator: "CmdOrCtrl+O",
|
|
click: function () {
|
|
dialog
|
|
.showOpenDialog({ properties: ["openFile", "multiSelections"] })
|
|
.then(function (data) {
|
|
if (data.canceled == false) {
|
|
FileType.fromFile(data.filePaths[0]).then((type) => {
|
|
data.type = type["mime"].split("/")[0];
|
|
win.webContents.send("FileData", data);
|
|
});
|
|
}
|
|
// console.log(await FileType.fromFile(data));
|
|
// win.webContents.send("FileData", data);
|
|
});
|
|
},
|
|
},
|
|
isMac ? { role: "close" } : { role: "quit" },
|
|
],
|
|
},
|
|
{
|
|
role: "help",
|
|
submenu: [
|
|
{ role: "toggleDevTools" },
|
|
{
|
|
label: "About",
|
|
click: async () => {
|
|
createStartupInfo();
|
|
},
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
function createStartupInfo() {
|
|
// aka. loading screen
|
|
const win2 = new BrowserWindow({
|
|
width: 500,
|
|
height: 400,
|
|
frame: true,
|
|
webPreferences: {
|
|
nodeIntegration: true,
|
|
contextIsolation: false,
|
|
},
|
|
});
|
|
|
|
win2.setFullScreen(false);
|
|
win2.setAlwaysOnTop(false);
|
|
win2.loadFile(path.join(__dirname, "dist/ui_templates/about.html"));
|
|
win2.show();
|
|
return win2;
|
|
}
|
|
|
|
function createWindow() {
|
|
win = new BrowserWindow({
|
|
width: 800,
|
|
height: 600,
|
|
webPreferences: {
|
|
nodeIntegration: true,
|
|
contextIsolation: false,
|
|
},
|
|
});
|
|
|
|
win.loadURL(
|
|
url.format({
|
|
pathname: path.join(__dirname, "dist/ui_templates/index.html"),
|
|
protocol: "file:",
|
|
slashes: true,
|
|
})
|
|
);
|
|
// win.webContents.openDevTools();
|
|
const menu = Menu.buildFromTemplate(template);
|
|
Menu.setApplicationMenu(menu);
|
|
}
|
|
|
|
app.on("ready", function () {
|
|
createWindow();
|
|
|
|
|
|
console.log(process.argv)
|
|
|
|
ipcMain.on("synchronous-message", (event, arg) => {
|
|
console.log(arg);
|
|
if (arg == "openFile") {
|
|
dialog
|
|
.showOpenDialog({ properties: ["openFile", "multiSelections"] })
|
|
.then(function (data) {
|
|
FileType.fromFile(data.filePaths[0]).then((type) => {
|
|
data.type = type["mime"].split("/")[0];
|
|
console.info(data)
|
|
win.webContents.send("FileData", data);
|
|
});
|
|
});
|
|
event.returnValue = "";
|
|
} else if (arg == "resize") {
|
|
// A really ugly hack to force the window to update, so the canvas shows up
|
|
win.setSize(win.getSize()[0] + 1, win.getSize()[1]);
|
|
setTimeout(function () {
|
|
win.setSize(win.getSize()[0] + 1, win.getSize()[1]);
|
|
}, 200);
|
|
event.returnValue = "";
|
|
} else if (arg.includes("indexFolder")) {
|
|
const fold = arg.split(";")[1];
|
|
folder = fs.readdirSync(fold);
|
|
let result = [];
|
|
for (const file in folder) {
|
|
const myFile = folder[file];
|
|
if (fs.statSync(fold + "/" + myFile).isFile()) {
|
|
result.push(myFile)
|
|
}
|
|
}
|
|
event.returnValue = result;
|
|
} else if (arg == "finishedLoading") {
|
|
const tryOpenFile = process.argv[1];
|
|
|
|
if (tryOpenFile != undefined) {
|
|
console.log("Opening file: ", process.argv[1])
|
|
if (fs.existsSync(tryOpenFile)) {
|
|
data = {
|
|
canceled: false,
|
|
filePaths: [process.argv[1]]
|
|
};
|
|
FileType.fromFile(data.filePaths[0]).then((type) => {
|
|
data.type = type["mime"].split("/")[0];
|
|
console.log(data)
|
|
win.webContents.send("FileData", data);
|
|
});
|
|
} else {
|
|
console.log("Argument file does not exist")
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
});
|