From c3dabb73529561864c7c0350fa86c8a64649cd30 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Tue, 14 May 2019 21:53:19 -0400 Subject: [PATCH] added copy/paste menu for MacOS --- main-electron.js | 228 ++++++++++-------- package-lock.json | 2 +- package.json | 2 +- .../settings/settings.component.html | 3 +- 4 files changed, 132 insertions(+), 103 deletions(-) diff --git a/main-electron.js b/main-electron.js index 5a633912..bdebb198 100644 --- a/main-electron.js +++ b/main-electron.js @@ -1,123 +1,153 @@ -const { app, Menu, server, BrowserWindow, shell } = require('electron'); -const path = require('path'); -const url = require('url'); -const http = require('http'); -const fs = require('fs'); +const { app, Menu, server, BrowserWindow, shell } = require("electron"); +const path = require("path"); +const url = require("url"); +const http = require("http"); +const fs = require("fs"); // 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 win +let win; function createWindow() { - // Create the browser window. - win = new BrowserWindow({ width: 377, height: 800, title: "Sengi", backgroundColor: '#FFF', 'useContentSize': true }); - - var server = http.createServer(requestHandler).listen(9527); - win.loadURL('http://localhost:9527'); - - - const template = [ + // Create the browser window. + win = new BrowserWindow({ + width: 377, + height: 800, + title: "Sengi", + backgroundColor: "#FFF", + useContentSize: true + }); + + var server = http.createServer(requestHandler).listen(9527); + win.loadURL("http://localhost:9527"); + + const template = [ + { + label: "View", + submenu: [ + { role: "reload" }, + { role: "forcereload" }, + { type: "separator" }, + { role: "close" } + ] + }, + { + role: "help", + submenu: [ + { role: "toggledevtools" }, { - label: 'View', - submenu: [ - { role: 'reload' }, - { role: 'forcereload' }, - { type: 'separator' }, - { role: 'close' } - - ] - }, - { - role: 'help', - submenu: [ - { role: 'toggledevtools' }, - { - label: 'Open GitHub project', - click() { require('electron').shell.openExternal('https://github.com/NicolasConstant/sengi') } - } - ] + label: "Open GitHub project", + click() { + require("electron").shell.openExternal( + "https://github.com/NicolasConstant/sengi" + ); + } } - ] - - const menu = Menu.buildFromTemplate(template); - win.setMenu(menu); - - // Open the DevTools. - // win.webContents.openDevTools() - - //open external links to browser - win.webContents.on('new-window', function (event, url) { - event.preventDefault(); - shell.openExternal(url); - }); + ] + } + ]; - // Emitted when the window is closed. - win.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. - win = null - }) -}; + const menu = Menu.buildFromTemplate(template); + win.setMenu(menu); + // Check if we are on a MAC + if (process.platform === "darwin") { + // Create our menu entries so that we can use MAC shortcuts + Menu.setApplicationMenu( + Menu.buildFromTemplate([ + { + label: "Edit", + submenu: [ + { role: "undo" }, + { role: "redo" }, + { type: "separator" }, + { role: "cut" }, + { role: "copy" }, + { role: "paste" }, + { role: "pasteandmatchstyle" }, + { role: "delete" }, + { role: "selectall" } + ] + } + ]) + ); + } + + // Open the DevTools. + // win.webContents.openDevTools() + + //open external links to browser + win.webContents.on("new-window", function(event, url) { + event.preventDefault(); + shell.openExternal(url); + }); + + // Emitted when the window is closed. + win.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. + win = null; + }); +} function requestHandler(req, res) { - var file = req.url == '/' ? '/index.html' : req.url, - root = __dirname + '/dist', - page404 = root + '/404.html'; + var file = req.url == "/" ? "/index.html" : req.url, + root = __dirname + "/dist", + page404 = root + "/404.html"; - if (file.includes('register') || file.includes('home')) file = '/index.html'; + if (file.includes("register") || file.includes("home")) file = "/index.html"; - getFile((root + file), res, page404); -}; + getFile(root + file, res, page404); +} function getFile(filePath, res, page404) { - console.warn(`filePath: ${filePath}`) - fs.exists(filePath, function (exists) { - if (exists) { - fs.readFile(filePath, function (err, contents) { - if (!err) { - res.end(contents); - } else { - console.dir(err); - } - }); + console.warn(`filePath: ${filePath}`); + fs.exists(filePath, function(exists) { + if (exists) { + fs.readFile(filePath, function(err, contents) { + if (!err) { + res.end(contents); + } else { + console.dir(err); + } + }); + } else { + fs.readFile(page404, function(err, contents) { + if (!err) { + res.writeHead(404, { "Content-Type": "text/html" }); + res.end(contents); } else { - fs.readFile(page404, function (err, contents) { - if (!err) { - res.writeHead(404, { 'Content-Type': 'text/html' }); - res.end(contents); - } else { - console.dir(err); - } - }); + console.dir(err); } - }); -}; + }); + } + }); +} -app.commandLine.appendSwitch('force-color-profile', 'srgb'); +app.commandLine.appendSwitch("force-color-profile", "srgb"); // 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) +app.on("ready", createWindow); // Quit when all windows are closed. -app.on('window-all-closed', () => { - // On macOS it is common for applications and their menu bar - // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== 'darwin') { - app.quit() - } -}) - -app.on('activate', () => { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (win === null) { - createWindow() - } -}) - - // In this file you can include the rest of your app's specific main process - // code. You can also put them in separate files and require them here. +app.on("window-all-closed", () => { + // On macOS it is common for applications and their menu bar + // to stay active until the user quits explicitly with Cmd + Q + if (process.platform !== "darwin") { + app.quit(); + } +}); + +app.on("activate", () => { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (win === null) { + createWindow(); + } +}); + +// In this file you can include the rest of your app's specific main process +// code. You can also put them in separate files and require them here. diff --git a/package-lock.json b/package-lock.json index bc2bb044..743d185b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sengi", - "version": "0.6.0", + "version": "0.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2c6965e7..46fe868c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sengi", - "version": "0.7.0", + "version": "0.7.1", "license": "AGPL-3.0-or-later", "main": "main-electron.js", "description": "A multi-account desktop client for Mastodon and Pleroma", diff --git a/src/app/components/floating-column/settings/settings.component.html b/src/app/components/floating-column/settings/settings.component.html index 911485e0..18bf67a3 100644 --- a/src/app/components/floating-column/settings/settings.component.html +++ b/src/app/components/floating-column/settings/settings.component.html @@ -1,6 +1,5 @@

settings

-

Sengi version: 0.7.0

- +

Sengi version: 0.7.1

\ No newline at end of file