init commit for Forge branch
This commit is contained in:
commit
50ed94e647
63 changed files with 30825 additions and 0 deletions
80
src/window.js
Normal file
80
src/window.js
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
const path = require("path");
|
||||
const { app, BrowserWindow, ipcMain } = require("electron");
|
||||
|
||||
const store = require("./utils/store");
|
||||
const { sendMessage } = require("./io");
|
||||
const { backgroundMitt } = require("./utils/emitter");
|
||||
|
||||
let win;
|
||||
|
||||
function updateWindowPosition()
|
||||
{
|
||||
const bounds = win.getBounds();
|
||||
const position = win.getPosition();
|
||||
|
||||
store.set("window-position", {
|
||||
width: bounds.width,
|
||||
height: bounds.height,
|
||||
x: position[0],
|
||||
y: position[1]
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
function onNav(_e, cmd)
|
||||
{
|
||||
cmd === "close" ? win.close() : win.minimize();
|
||||
}
|
||||
|
||||
function createWin()
|
||||
{
|
||||
if (win) return;
|
||||
|
||||
let pos = store.get("window-position");
|
||||
if (!pos) pos = { width: 350, height: 750, x: null, y: null }
|
||||
|
||||
win = new BrowserWindow({
|
||||
width: pos.width,
|
||||
height: pos.height,
|
||||
x: pos.x,
|
||||
y: pos.y,
|
||||
resizable: true,
|
||||
frame: false,
|
||||
minWidth: 350,
|
||||
minHeight: 500,
|
||||
backgroundColor: "#EBEBEB",
|
||||
webPreferences: { preload: path.join(__dirname, "render/preload.js") }
|
||||
})
|
||||
|
||||
// TODO: find a simpler way to notify platform of user events
|
||||
.on("focus", () => store.set("focus", true))
|
||||
.on("blur", () => store.set("focus", false))
|
||||
|
||||
.on("closed", () => {
|
||||
store.set("focus", false);
|
||||
win = null;
|
||||
})
|
||||
|
||||
.on("moved", updateWindowPosition)
|
||||
.on("resize", updateWindowPosition);
|
||||
|
||||
win.loadFile(path.join(__dirname, "render/index.html"));
|
||||
|
||||
win.webContents.on("did-finish-load", () => {
|
||||
|
||||
backgroundMitt.removeAllListeners("ipc-renderer");
|
||||
|
||||
backgroundMitt.on("ipc-renderer", (channel, ...args) => {
|
||||
if (win)
|
||||
{
|
||||
win.webContents.send(channel, ...args);
|
||||
}
|
||||
});
|
||||
|
||||
win.webContents.send("account", store.get("account"));
|
||||
});
|
||||
}
|
||||
|
||||
ipcMain.on("nav", onNav);
|
||||
|
||||
exports.createWin = createWin;
|
||||
Loading…
Reference in a new issue