From 5287b2f0f8f5396e1ebbd5bcaa0a67437dbd40f3 Mon Sep 17 00:00:00 2001 From: Toinane Date: Wed, 2 Aug 2017 14:07:34 +0200 Subject: [PATCH] refacto(storage): use other module for storage --- colorpicker-build-nightly.json | 2 +- colorpicker-build.json | 7 ++- package.json | 11 ++-- src/browsers/colorpicker.js | 47 +++++----------- src/main.js | 33 ++++++++++-- src/{settings.js => storage.js} | 96 ++++++++++++++++++--------------- 6 files changed, 108 insertions(+), 88 deletions(-) rename src/{settings.js => storage.js} (59%) diff --git a/colorpicker-build-nightly.json b/colorpicker-build-nightly.json index 68f2146..e9b5a29 100644 --- a/colorpicker-build-nightly.json +++ b/colorpicker-build-nightly.json @@ -7,7 +7,7 @@ "output": "out" }, "files": [ - "**/*" + "src/*" ], "mac": { "category": "public.app-category.graphics-design", diff --git a/colorpicker-build.json b/colorpicker-build.json index 26ebcbc..02fe281 100644 --- a/colorpicker-build.json +++ b/colorpicker-build.json @@ -7,7 +7,7 @@ "output": "out" }, "files": [ - "**/*" + "src/*" ], "mac": { "category": "public.app-category.graphics-design", @@ -22,6 +22,11 @@ "height": 380 } }, + "linux": { + "icon": "./build", + "synopsis": "Colorpicker App", + "category": "Graphics" + }, "win": { "icon": "build/icon.ico" } diff --git a/package.json b/package.json index fb0d0d8..b7d9e7a 100644 --- a/package.json +++ b/package.json @@ -23,16 +23,15 @@ "Crea-THAT", "crea-that" ], + "dependencies": { + "electron-json-storage": "^3.0.7", + "robotjs": "^0.4.7" + }, "devDependencies": { "electron": "1.6.11", "electron-builder": "19.6.3" }, "author": "Toinane", "homepage": "https://toinane.crea-th.at", - "license": "GNU GPLv3", - "dependencies": { - "electron-json-storage": "^3.0.7", - "electron-storage": "^1.0.7", - "robotjs": "^0.4.7" - } + "license": "GNU GPLv3" } diff --git a/src/browsers/colorpicker.js b/src/browsers/colorpicker.js index dc2dcc0..0537eb6 100644 --- a/src/browsers/colorpicker.js +++ b/src/browsers/colorpicker.js @@ -1,7 +1,7 @@ 'use strict'; -const {BrowserWindow, Menu} = require('electron'); -const config = require('../settings'); +const {BrowserWindow} = require('electron'); +const config = require('../storage'); let win, dirname, settings; @@ -14,8 +14,8 @@ let init = folder => { config.getSettings('colorpicker').then(config => { settings = config; if(win === null || win === undefined) { - setMenu(); - createWindow(settings.size.width, settings.size.height); + console.log(config) + createWindow(settings.size.width, settings.size.height, settings.pos.x, settings.pos.y); } else { win.show(); } }); }; @@ -26,12 +26,14 @@ let init = folder => { * @param {int} height [height of the window] * @return {void} */ -let createWindow = (width, height) => { +let createWindow = (width, height, x, y) => { win = new BrowserWindow({ frame:false, 'auto-hide-menu-bar': true, width: width, height: height, + x: x, + y: y, minWidth: 438, minHeight: 139, icon: `${dirname}/build/logo.png` @@ -53,41 +55,20 @@ let createWindow = (width, height) => { */ let windowEvents = win => { - - win.on('resize', event => { const size = win.getBounds(); settings.size.width = size.width; settings.size.height = size.height; config.saveSettings('colorpicker', settings); }); -}; -/** - * [setMenu - set new app menu] - * @return {void} - */ -let setMenu = () => { - let template = [{ - label: "Colorpicker", - submenu: [ - { label: "About Colorpicker", selector: "orderFrontStandardAboutPanel:" }, - { type: "separator" }, - { label: "Quit", accelerator: "Command+Q", click:() => { app.quit(); }} - ]}, { - label: "Edit", - submenu: [ - { label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" }, - { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" }, - { type: "separator" }, - { label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" }, - { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" }, - { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" }, - { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" } - ]} - ]; - Menu.setApplicationMenu(Menu.buildFromTemplate(template)); -} + win.on('move', event => { + const size = win.getBounds(); + settings.pos.x = size.x; + settings.pos.y = size.y; + config.saveSettings('colorpicker', settings); + }); +}; module.exports = { init: init diff --git a/src/main.js b/src/main.js index 8ef7f95..ff70899 100644 --- a/src/main.js +++ b/src/main.js @@ -1,7 +1,7 @@ 'use strict'; -const {app, Tray} = require('electron'); -const settings = require('./settings'); +const {app, Tray, Menu} = require('electron'); +const settings = require('./storage'); const {colorpicker, hexacolor, picker} = require('./browsers'); let tray; @@ -15,10 +15,37 @@ let createTray = () => { tray.on('click', event => colorpicker.init(__dirname)); } +/** + * [setMenu - set new app menu] + * @return {void} + */ +let setMenu = () => { + let template = [{ + label: "Colorpicker", + submenu: [ + { label: "About Colorpicker", selector: "orderFrontStandardAboutPanel:" }, + { type: "separator" }, + { label: "Quit", accelerator: "Command+Q", click:() => { app.quit(); }} + ]}, { + label: "Edit", + submenu: [ + { label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" }, + { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" }, + { type: "separator" }, + { label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" }, + { label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" }, + { label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" }, + { label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" } + ]} + ]; + Menu.setApplicationMenu(Menu.buildFromTemplate(template)); +} + app.on('ready', () => { createTray(); + setMenu(); colorpicker.init(__dirname); - // picker.init(__dirname); + //picker.init(__dirname); }); app.on('activate', () => { diff --git a/src/settings.js b/src/storage.js similarity index 59% rename from src/settings.js rename to src/storage.js index 8d8ab6c..6bb218e 100644 --- a/src/settings.js +++ b/src/storage.js @@ -1,20 +1,27 @@ 'use strict'; -const storage = require('electron-storage'); +const storage = require('electron-json-storage'); // @TODO utiliser electron-json-storage quand async & await est possible let settings = {}; - -/** - * [getSettings - return settings] - * @return {object} [App settings] - */ -let getSettings = name => storage.get(name); - -let saveSettings = (name, config) => { - settings = config; - return storage.set(name, config); -} +let templateWindows = { + 'size': { 'width': 484, 'height': 190 }, + 'pos': { 'x': 300, 'y': 300}, + 'buttonsPosition': 'right', + 'buttonsType': 'window' +}; +let templateMacOS = { + 'size': { 'width': 484, 'height': 190 }, + 'pos': { 'x': 300, 'y': 300}, + 'buttonsPosition': 'left', + 'buttonsType': 'osx' +}; +let templaceLinux = { + 'size': { 'width': 484, 'height': 190 }, + 'pos': { 'x': 300, 'y': 300}, + 'buttonsPosition': 'right', + 'buttonsType': 'linux' +}; /** * [init - init settings] @@ -22,32 +29,51 @@ let saveSettings = (name, config) => { */ let init = name => ( new Promise((resolve, reject) => ( - storage.isPathExists(name) - .then(result => { - if (result) { resolve(initStorage(name)); } + storage.has(name, (err, exist) => { + if (err) throw err; + if (exist) { resolve(getSettings(name)); } else { resolve(initDefaultSettings(name)); } }) - .catch(err => reject(err)) )) ); /** - * [initStorage - load settings from storage] - * @return {Promise} [promise for load settings] + * [getSettings - return settings] + * @return {object} [App settings] */ -let checkStorage = name => { - console.log('init storage'); - return storage.get(name).then(result => { - settings = result; - }); -} +let getSettings = name => ( + new Promise((resolve, reject) => { + console.log('get Settings'); + storage.get(name, (err, data) => { + if (err) throw err; + settings = data; + resolve(data); + }); + }) +); + +/** + * [saveSettings - save settings] + * @param {[type]} name [description] + * @param {[type]} config [description] + * @return {[type]} [description] + */ +let saveSettings = (name, config) => ( + new Promise((resolve, reject) => { + settings = config; + storage.set(name, config, (err, data) => { + if (err) throw err; + resolve(true); + }); + }) +); /** * [initDefaultSettings - save default settings to storage] * @return {Promise} [promise for save settings] */ let initDefaultSettings = name => { - console.log('init default settings'); + console.log('Init default settings'); switch(process.platform) { case 'darwin': settings = templateMacOS; break; case 'win32': settings = templateWindows; break; @@ -56,27 +82,9 @@ let initDefaultSettings = name => { case 'sunos': settings = templaceLinux; break; default: settings = templateMacOS; break; } - return storage.set(name, settings); + return saveSettings(name, settings); } -let templateWindows = { - 'size': { 'width': 484, 'height': 190 }, - 'buttonsPosition': 'right', - 'buttonsType': 'window' -}; - -let templateMacOS = { - 'size': { 'width': 484, 'height': 190 }, - 'buttonsPosition': 'left', - 'buttonsType': 'osx' -}; - -let templaceLinux = { - 'size': { 'width': 484, 'height': 190 }, - 'buttonsPosition': 'right', - 'buttonsType': 'linux' -}; - module.exports = { init: init, getSettings: getSettings,