summaryrefslogtreecommitdiff
path: root/electron/src/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'electron/src/main.js')
-rw-r--r--electron/src/main.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/electron/src/main.js b/electron/src/main.js
new file mode 100644
index 00000000..db52ac94
--- /dev/null
+++ b/electron/src/main.js
@@ -0,0 +1,62 @@
+import { app, BrowserWindow, ipcMain, dialog, shell } from 'electron';
+var fs = require('fs');
+var path = require('path')
+var tmp = require('tmp')
+
+// Keep a global reference of the window object, if you don't, the window will
+// be closed automatically when the JavaScript object is garbage collected.
+let mainWindow;
+
+const createWindow = () => {
+ // Create the browser window.
+ mainWindow = new BrowserWindow({icon: path.join(__dirname, 'assets/icons/png/512x512.png')});
+
+ mainWindow.maximize();
+
+ // and load the index.html of the app.
+ if (process.argv[1] == ".") {
+ // run in development mode with `electron . <url>`
+ var url = process.argv[2];
+ } else {
+ var url = process.argv[1];
+ }
+ mainWindow.loadURL(url);
+
+ //mainWindow.webContents.openDevTools();
+
+ // Emitted when the window is closed.
+ mainWindow.on('closed', () => {
+ // Dereference the window object, usually you would store windows
+ // in an array if your app supports multi windows, this is the time
+ // when you should delete the corresponding element.
+ mainWindow = null;
+ });
+};
+
+// This method will be called when Electron has finished
+// initialization and is ready to create browser windows.
+// Some APIs can only be used after this event occurs.
+app.on('ready', createWindow);
+
+// Quit when all windows are closed.
+app.on('window-all-closed', () => {
+ app.quit();
+});
+
+ipcMain.on('save-pdf', function (event, pageSize) {
+ mainWindow.webContents.printToPDF({"pageSize": pageSize}, function(error, data) {
+ dialog.showSaveDialog(mainWindow, {"defaultPath": "inkstitch.pdf"}, function(filename, bookmark) {
+ if (typeof filename !== 'undefined')
+ fs.writeFileSync(filename, data, 'utf-8');
+ })
+ })
+})
+
+ipcMain.on('open-pdf', function (event, pageSize) {
+ mainWindow.webContents.printToPDF({"pageSize": pageSize}, function(error, data) {
+ tmp.file({keep: true, discardDescriptor: true}, function(err, path, fd, cleanupCallback) {
+ fs.writeFileSync(path, data, 'utf-8');
+ shell.openItem(path);
+ })
+ })
+})