From d6b686cf26e8dfed4a74fec165244203cc04247e Mon Sep 17 00:00:00 2001 From: Attila Nagy Date: Sun, 22 Jan 2017 03:23:20 -0500 Subject: [PATCH] zoom in-out --- src/browser/actions/application.js | 26 +++++++++++- src/browser/services/application-control.js | 17 +++++++- src/browser/services/ipc-dispatcher.js | 5 ++- src/node/index.js | 46 ++++++++++++++++++++- 4 files changed, 90 insertions(+), 4 deletions(-) diff --git a/src/browser/actions/application.js b/src/browser/actions/application.js index fabab521..efdf6fe0 100644 --- a/src/browser/actions/application.js +++ b/src/browser/actions/application.js @@ -57,6 +57,27 @@ function quitAndInstallUpdates() { }; } +function zoomIn() { + return function (dispatch) { + return applicationControl.zoomIn().then(function () { + }).catch(error => dispatch(errorCaught(error))); + }; +} + +function zoomOut() { + return function (dispatch) { + return applicationControl.zoomOut().then(function () { + }).catch(error => dispatch(errorCaught(error))); + }; +} + +function zoomToDefault() { + return function (dispatch) { + return applicationControl.zoomToDefault().then(function () { + }).catch(error => dispatch(errorCaught(error))); + }; +} + export function errorCaught(error) { /* eslint no-console: 0 */ console.error(error); @@ -75,5 +96,8 @@ export default { showStartupWindow, quit, quitAndInstallUpdates, - toggleDevTools + toggleDevTools, + zoomIn, + zoomOut, + zoomToDefault }; diff --git a/src/browser/services/application-control.js b/src/browser/services/application-control.js index 8b9a9a10..82520420 100644 --- a/src/browser/services/application-control.js +++ b/src/browser/services/application-control.js @@ -102,6 +102,18 @@ function showStartupWindow() { return api.send('showStartupWindow'); } +function zoomIn() { + return api.send('zoomIn'); +} + +function zoomOut() { + return api.send('zoomOut'); +} + +function zoomToDefault() { + return api.send('zoomToDefault'); +} + export default { checkForUpdates, createWindow, @@ -110,5 +122,8 @@ export default { surveyTabs, toggleDevTools, quitAndInstall, - quit + quit, + zoomIn, + zoomOut, + zoomToDefault }; diff --git a/src/browser/services/ipc-dispatcher.js b/src/browser/services/ipc-dispatcher.js index 25cc9fd4..3f64ff3c 100644 --- a/src/browser/services/ipc-dispatcher.js +++ b/src/browser/services/ipc-dispatcher.js @@ -29,7 +29,10 @@ const dispatchMap = { FOCUS_ACTIVE_TERMINAL: () => freeTabGroupActions.focusFirstTabByType('document-terminal-viewer'), FOCUS_NEWEST_PLOT: () => freeTabGroupActions.focusNewestPlot(), TERMINAL_INTERRUPT: () => kernelActions.interrupt(), - TERMINAL_RESTART: () => kernelActions.restart() + TERMINAL_RESTART: () => kernelActions.restart(), + ZOOM_IN: () => applicationActions.zoomIn(), + ZOOM_OUT: () => applicationActions.zoomOut(), + ZOOM_TO_DEFAULT: () => applicationActions.zoomToDefault() }, detectVariables = _.debounce(function (dispatch) { dispatch(kernelActions.detectKernelVariables()); diff --git a/src/node/index.js b/src/node/index.js index 512592a8..cb71bfc4 100644 --- a/src/node/index.js +++ b/src/node/index.js @@ -797,6 +797,47 @@ function onToggleFullScreen() { }); } +/** + * Increases zoom + * @returns {Promise} + */ +function onZoomIn() { + const window = browserWindows.getFocusedWindow() || this; + + return bluebird.try(function () { + window.webContents.getZoomLevel(function (zoomLevel){ + window.webContents.setZoomLevel(zoomLevel + 1); + }); + }); +} + +/** + * Decreases zoom + * @returns {Promise} + */ +function onZoomOut() { + const window = browserWindows.getFocusedWindow() || this; + + return bluebird.try(function () { + window.webContents.getZoomLevel(function (zoomLevel){ + window.webContents.setZoomLevel(zoomLevel - 1); + }); + }); +} + +/** + * Zooms to the default level + * @returns {Promise} + */ +function onZoomToDefault() { + const window = browserWindows.getFocusedWindow() || this; + + return bluebird.try(function () { + window.webContents.setZoomLevel(0); + }); +} + + /** * @param {string} name * @param {object} options @@ -918,7 +959,10 @@ function attachIpcMainEvents() { onSaveDialog, onToggleDevTools, onToggleFullScreen, - onKillKernelInstance + onKillKernelInstance, + onZoomIn, + onZoomOut, + onZoomToDefault ]); }