From 952bcc353455f98feeeee26d64158ced0c6ca277 Mon Sep 17 00:00:00 2001 From: meowtec Date: Thu, 13 Jul 2017 16:57:57 +0800 Subject: [PATCH 1/6] fix: On Windows and Linux can not both open a file selector and a directory selector --- modules/backend/menu-actions.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/backend/menu-actions.ts b/modules/backend/menu-actions.ts index 51a9aad..6ba7312 100644 --- a/modules/backend/menu-actions.ts +++ b/modules/backend/menu-actions.ts @@ -1,3 +1,4 @@ +import * as os from 'os' import { Menu, dialog, shell } from 'electron' import { EventEmitter } from 'events' import controller from './controller' @@ -19,6 +20,15 @@ export const about = () => { } export const open = () => { + const properties = [ + 'openFile', + 'multiSelections', + ] + + if (os.platform() === 'darwin') { + properties.push('openDirectory') + } + dialog.showOpenDialog({ title: __('choose_images'), filters: [{ @@ -28,11 +38,7 @@ export const open = () => { 'png', ], }], - properties: [ - 'openFile', - 'openDirectory', - 'multiSelections', - ], + properties: properties as any, }, filePaths => { controller.receiveFiles(filePaths) }) From 0b792c1e869169353d8898ca96a3d2df72986101 Mon Sep 17 00:00:00 2001 From: meowtec Date: Fri, 14 Jul 2017 11:17:44 +0800 Subject: [PATCH 2/6] Update en-US --- modules/locales/en-US.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/locales/en-US.ts b/modules/locales/en-US.ts index 4c3053e..0ecda47 100644 --- a/modules/locales/en-US.ts +++ b/modules/locales/en-US.ts @@ -18,5 +18,5 @@ export default { ok: 'OK', before_optimized: 'before', after_optimized: 'after', - new_version: 'New version available', + new_version: 'Upgrade', } From 5163d5e4ce8f6b6c0ce5e55fae713b128928ce08 Mon Sep 17 00:00:00 2001 From: meowtec Date: Fri, 14 Jul 2017 18:11:58 +0800 Subject: [PATCH 3/6] update: add `READY` channel for main process sending update info after renderer ready. --- modules/backend/controller.ts | 11 +++++++++-- modules/backend/updater.ts | 4 ++-- modules/common/constants.ts | 1 + modules/renderer/App.tsx | 1 - modules/renderer/Index.tsx | 4 ++++ modules/renderer/containers/ActionBar.less | 2 +- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/modules/backend/controller.ts b/modules/backend/controller.ts index e5e63ca..aa6dc0a 100644 --- a/modules/backend/controller.ts +++ b/modules/backend/controller.ts @@ -24,8 +24,13 @@ import __ from '../locales' type BrowserWindow = Electron.BrowserWindow class Controller { - windows: number[] = [] - menu = menuManager + private windows: number[] = [] + private menu = menuManager + private readyHook: () => void + + ready = new Promise((resolve) => { + this.readyHook = resolve + }) start() { const shouldQuit = app.makeSingleInstance(this.onOtherInstance) @@ -155,6 +160,8 @@ class Controller { menu.aloneMode = state.aloneMode menu.render() }) + + ipcMain.on(IpcChannel.READY, this.readyHook) } } diff --git a/modules/backend/updater.ts b/modules/backend/updater.ts index 6bff688..ac8e0a1 100644 --- a/modules/backend/updater.ts +++ b/modules/backend/updater.ts @@ -13,12 +13,12 @@ autoUpdater.autoDownload = false autoUpdater.on('update-available', (info: IUpdateInfo) => { log.info('update available', info.version, info.path) - setTimeout(() => { + controller.ready.then(() => { const win = controller.getMainWindow() if (win) { win.webContents.send(IpcChannel.APP_UPDATE, info) } - }, 2000) + }) }) export default autoUpdater diff --git a/modules/common/constants.ts b/modules/common/constants.ts index 83e42b5..a836f2e 100644 --- a/modules/common/constants.ts +++ b/modules/common/constants.ts @@ -15,6 +15,7 @@ export const IpcChannel = Enum( 'SAVED', 'SYNC', 'APP_UPDATE', + 'READY', ) export type IpcChannel = Enum diff --git a/modules/renderer/App.tsx b/modules/renderer/App.tsx index 8fd880e..1f34363 100644 --- a/modules/renderer/App.tsx +++ b/modules/renderer/App.tsx @@ -8,7 +8,6 @@ import List from './containers/List' import ActionBar from './containers/ActionBar' import Alone from './containers/Alone' import { prevent } from './utils/dom-event' -import { IpcChannel } from '../common/constants' import store from './store/store' import * as apis from './apis' diff --git a/modules/renderer/Index.tsx b/modules/renderer/Index.tsx index 3714206..d14c210 100644 --- a/modules/renderer/Index.tsx +++ b/modules/renderer/Index.tsx @@ -1,8 +1,10 @@ +import { ipcRenderer } from 'electron' import * as React from 'react' import * as ReactDOM from 'react-dom' import { AppContainer } from 'react-hot-loader' import store from './store/store' import App from './App' +import { IpcChannel } from '../common/constants' if (process.env.NODE_ENV === 'development') { const render = () => { @@ -26,3 +28,5 @@ if (process.env.NODE_ENV === 'development') { document.getElementById('app'), ) } + +ipcRenderer.send(IpcChannel.READY) diff --git a/modules/renderer/containers/ActionBar.less b/modules/renderer/containers/ActionBar.less index 7fac4ab..5fd4a2b 100644 --- a/modules/renderer/containers/ActionBar.less +++ b/modules/renderer/containers/ActionBar.less @@ -14,7 +14,7 @@ background: none; border: 0; outline: none; - width: 60px; + width: 70px; .icon, span { transition: all .2s; From 3b2c98911db849c76553463250fc8d46541c3ca9 Mon Sep 17 00:00:00 2001 From: meowtec Date: Sun, 16 Jul 2017 12:57:15 +0800 Subject: [PATCH 4/6] i18n: apply `nl-NL` --- modules/locales/index.ts | 16 +++++++++++----- modules/renderer/containers/ActionBar.less | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/locales/index.ts b/modules/locales/index.ts index a76a2c3..cf33ec6 100644 --- a/modules/locales/index.ts +++ b/modules/locales/index.ts @@ -1,23 +1,29 @@ import { app } from 'electron' import createLocale, { Gettext } from '../common/i18n' -import zh_CN from './zh-CN' import en_US from './en-US' +import zh_CN from './zh-CN' +import nl_NL from './nl-NL' const texts = { 'zh-CN': zh_CN, 'en-US': en_US, + 'nl-NL': nl_NL, } let gettext: Gettext // get os language in main or renderer export const setup = () => { - const locale = app ? app.getLocale() : navigator.language - gettext = createLocale(texts, {}, 'en-US', locale) + // const locale = app ? app.getLocale() : navigator.language + const locale = 'nl-TW' + gettext = createLocale(texts, { + zh: 'zh-CN', + nl: 'nl-NL', + }, 'en-US', locale) } -// renderer will auto setup -// main process should call setup on app ready +// renderer process: auto setup +// main process: should call setup on app ready if (!app) { setup() } diff --git a/modules/renderer/containers/ActionBar.less b/modules/renderer/containers/ActionBar.less index 5fd4a2b..707d0af 100644 --- a/modules/renderer/containers/ActionBar.less +++ b/modules/renderer/containers/ActionBar.less @@ -14,7 +14,7 @@ background: none; border: 0; outline: none; - width: 70px; + width: 80px; .icon, span { transition: all .2s; From e757c179386c743078fcea06ace0c740be52e3a3 Mon Sep 17 00:00:00 2001 From: meowtec Date: Sun, 16 Jul 2017 13:01:48 +0800 Subject: [PATCH 5/6] bump version to 0.1.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a30821f..eba187e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Imagine", - "version": "0.1.3", + "version": "0.1.4", "description": "pngquant gui", "homepage": "https://github.com/meowtec/Imagine", "main": "./lib/bootstrap.js", From db8f83e3b9d72e7742add5719a243f96feca7ea4 Mon Sep 17 00:00:00 2001 From: meowtec Date: Sun, 16 Jul 2017 13:06:22 +0800 Subject: [PATCH 6/6] update readme: add Nederlands to language list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e15938..c4f4b7a 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ For Windows and macOS, download the binary below: - Cross platform - Visual - Batch optimization - - i18n (简体中文, English) + - i18n (English, 简体中文, Nederlands) ## Built on