From df0285547133b0f85e161ee4ec8472e7d65131ef Mon Sep 17 00:00:00 2001 From: Rocket Date: Mon, 11 May 2020 12:59:21 -0500 Subject: [PATCH 1/8] Added the API Power --- ElectronNET.API/Electron.cs | 5 + ElectronNET.API/PowerMonitor.cs | 109 ++++++++++++++++++ ElectronNET.Host/api/clipboard.js | 7 +- ElectronNET.Host/api/clipboard.js.map | 2 +- ElectronNET.Host/api/powerMonitor.js | 17 +++ ElectronNET.Host/api/powerMonitor.js.map | 1 + ElectronNET.Host/api/powerMonitor.ts | 16 +++ ElectronNET.Host/main.js | 3 + .../Controllers/HomeController.cs | 17 ++- .../ElectronHostHook/connector.js | 27 ----- .../ElectronHostHook/connector.js.map | 1 - .../ElectronHostHook/excelCreator.js | 31 ----- .../ElectronHostHook/excelCreator.js.map | 1 - ElectronNET.WebApp/ElectronHostHook/index.js | 29 ----- .../ElectronHostHook/index.js.map | 1 - 15 files changed, 171 insertions(+), 96 deletions(-) create mode 100644 ElectronNET.API/PowerMonitor.cs create mode 100644 ElectronNET.Host/api/powerMonitor.js create mode 100644 ElectronNET.Host/api/powerMonitor.js.map create mode 100644 ElectronNET.Host/api/powerMonitor.ts delete mode 100644 ElectronNET.WebApp/ElectronHostHook/connector.js delete mode 100644 ElectronNET.WebApp/ElectronHostHook/connector.js.map delete mode 100644 ElectronNET.WebApp/ElectronHostHook/excelCreator.js delete mode 100644 ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map delete mode 100644 ElectronNET.WebApp/ElectronHostHook/index.js delete mode 100644 ElectronNET.WebApp/ElectronHostHook/index.js.map diff --git a/ElectronNET.API/Electron.cs b/ElectronNET.API/Electron.cs index 4206f89..cbee25f 100644 --- a/ElectronNET.API/Electron.cs +++ b/ElectronNET.API/Electron.cs @@ -73,5 +73,10 @@ /// electronize add HostHook /// public static HostHook HostHook { get { return HostHook.Instance; } } + + /// + /// Allows you to execute native Lock and Unlock process. + /// + public static PowerMonitor PowerMonitor { get { return PowerMonitor.Instance; } } } } diff --git a/ElectronNET.API/PowerMonitor.cs b/ElectronNET.API/PowerMonitor.cs new file mode 100644 index 0000000..54a1604 --- /dev/null +++ b/ElectronNET.API/PowerMonitor.cs @@ -0,0 +1,109 @@ +using ElectronNET.API.Entities; +using ElectronNET.API.Extensions; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Serialization; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace ElectronNET.API +{ + /// + /// Add icons and context menus to the system's notification area. + /// + public sealed class PowerMonitor + { + + + + /// + /// Windows: Emitted when the tray balloon is closed + /// because of timeout or user manually closes it. + /// + public event Action OnLockScreen + { + add + { + if (_lockScreen == null) + { + BridgeConnector.Socket.On("pm-lock-screen" , () => + { + _lockScreen(); + }); + + BridgeConnector.Socket.Emit("register-pm-lock-screen"); + } + _lockScreen += value; + } + remove + { + _lockScreen -= value; + + if (_lockScreen == null) + BridgeConnector.Socket.Off("pm-lock-screen"); + } + } + + private event Action _lockScreen; + + /// + /// Windows: Emitted when the tray balloon is closed + /// because of timeout or user manually closes it. + /// + public event Action OnUnLockScreen + { + add + { + if (_unlockScreen == null) + { + BridgeConnector.Socket.On("pm-unlock-screen", () => + { + _unlockScreen(); + }); + + BridgeConnector.Socket.Emit("register-pm-unlock-screen"); + } + _unlockScreen += value; + } + remove + { + _unlockScreen -= value; + + if (_unlockScreen == null) + BridgeConnector.Socket.Off("pm-unlock-screen"); + } + } + + private event Action _unlockScreen; + + + + private static PowerMonitor _powerMonitor; + private static object _syncRoot = new object(); + + internal PowerMonitor() { } + + internal static PowerMonitor Instance + { + get + { + if (_powerMonitor == null) + { + lock (_syncRoot) + { + if (_powerMonitor == null) + { + _powerMonitor = new PowerMonitor(); + } + } + } + + return _powerMonitor; + } + } + + + + } +} diff --git a/ElectronNET.Host/api/clipboard.js b/ElectronNET.Host/api/clipboard.js index f32c6c7..5eedc7e 100644 --- a/ElectronNET.Host/api/clipboard.js +++ b/ElectronNET.Host/api/clipboard.js @@ -48,8 +48,8 @@ module.exports = (socket) => { socket.on('clipboard-write', (data, type) => { electron_1.clipboard.write(data, type); }); - socket.on('clipboard-readImage', (type) => { - const image = electron_1.clipboard.readImage(type); + socket.on('clipboard-readImage', (type) => { + var image = electron_1.clipboard.readImage(type); electronSocket.emit('clipboard-readImage-Completed', { 1: image.toPNG().toString('base64') }); }); socket.on('clipboard-writeImage', (data, type) => { @@ -59,9 +59,8 @@ module.exports = (socket) => { var scaleFactor = i; var bytes = data[i]; var buff = Buffer.from(bytes, 'base64'); - ni.addRepresentation({ scaleFactor: scaleFactor, buffer: buff }); + ni.addRepresentation({ scaleFactor: +scaleFactor, buffer: buff }); } - electron_1.clipboard.writeImage(ni, type); }); }; diff --git a/ElectronNET.Host/api/clipboard.js.map b/ElectronNET.Host/api/clipboard.js.map index 473f0b4..b3bd84b 100644 --- a/ElectronNET.Host/api/clipboard.js.map +++ b/ElectronNET.Host/api/clipboard.js.map @@ -1 +1 @@ -{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/ElectronNET.Host/api/powerMonitor.js b/ElectronNET.Host/api/powerMonitor.js new file mode 100644 index 0000000..be876e4 --- /dev/null +++ b/ElectronNET.Host/api/powerMonitor.js @@ -0,0 +1,17 @@ +"use strict"; +const electron_1 = require("electron"); +let electronSocket; +module.exports = (socket) => { + electronSocket = socket; + socket.on('register-pm-lock-screen', () => { + electron_1.powerMonitor.on('lock-screen', () => { + electronSocket.emit('pm-lock-screen'); + }); + }); + socket.on('register-pm-unlock-screen', () => { + electron_1.powerMonitor.on('unlock-screen', () => { + electronSocket.emit('pm-unlock-screen'); + }); + }); +}; +//# sourceMappingURL=powerMonitor.js.map \ No newline at end of file diff --git a/ElectronNET.Host/api/powerMonitor.js.map b/ElectronNET.Host/api/powerMonitor.js.map new file mode 100644 index 0000000..35ffbfd --- /dev/null +++ b/ElectronNET.Host/api/powerMonitor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"powerMonitor.js","sourceRoot":"","sources":["powerMonitor.ts"],"names":[],"mappings":";AAAA,uCAAwC;AACxC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAuB,EAAE,EAAE;IACjC,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACtC,uBAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YAChC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACxC,uBAAY,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YAClC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file diff --git a/ElectronNET.Host/api/powerMonitor.ts b/ElectronNET.Host/api/powerMonitor.ts new file mode 100644 index 0000000..f630a0a --- /dev/null +++ b/ElectronNET.Host/api/powerMonitor.ts @@ -0,0 +1,16 @@ +import { powerMonitor } from 'electron'; +let electronSocket; + +export = (socket: SocketIO.Socket) => { + electronSocket = socket; + socket.on('register-pm-lock-screen', () => { + powerMonitor.on('lock-screen', () => { + electronSocket.emit('pm-lock-screen'); + }); + }); + socket.on('register-pm-unlock-screen', () => { + powerMonitor.on('unlock-screen', () => { + electronSocket.emit('pm-unlock-screen'); + }); + }); +}; diff --git a/ElectronNET.Host/main.js b/ElectronNET.Host/main.js index 2442d05..c4e2d72 100644 --- a/ElectronNET.Host/main.js +++ b/ElectronNET.Host/main.js @@ -8,6 +8,7 @@ let io, server, browserWindows, ipc, apiProcess, loadURL; let appApi, menu, dialogApi, notification, tray, webContents; let globalShortcut, shellApi, screen, clipboard, autoUpdater; let commandLine, browserView; +let powerMonitor; let splashScreen, hostHook; let mainWindowId; @@ -152,6 +153,7 @@ function startSocketApiBridge(port) { delete require.cache[require.resolve('./api/screen')]; delete require.cache[require.resolve('./api/clipboard')]; delete require.cache[require.resolve('./api/browserView')]; + delete require.cache[require.resolve('./api/powerMonitor')]; }); global['electronsocket'] = socket; @@ -173,6 +175,7 @@ function startSocketApiBridge(port) { screen = require('./api/screen')(socket); clipboard = require('./api/clipboard')(socket); browserView = require('./api/browserView')(socket); + powerMonitor = require('./api/powerMonitor')(socket); diff --git a/ElectronNET.WebApp/Controllers/HomeController.cs b/ElectronNET.WebApp/Controllers/HomeController.cs index 3d997ef..44a8fee 100644 --- a/ElectronNET.WebApp/Controllers/HomeController.cs +++ b/ElectronNET.WebApp/Controllers/HomeController.cs @@ -1,4 +1,7 @@ using Microsoft.AspNetCore.Mvc; +using ElectronNET.API; +using ElectronNET.API.Entities; +using System; namespace ElectronNET.WebApp.Controllers { @@ -6,7 +9,19 @@ namespace ElectronNET.WebApp.Controllers { public IActionResult Index() { - return View(); + if (HybridSupport.IsElectronActive) + { + Electron.PowerMonitor.OnLockScreen += () => + { + Console.WriteLine("Screeen Bloqueado desde C#"); + }; + + Electron.PowerMonitor.OnUnLockScreen += () => + { + Console.WriteLine("Desbloquedo desde C#"); + }; + } + return View(); } } } \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/connector.js b/ElectronNET.WebApp/ElectronHostHook/connector.js deleted file mode 100644 index 6873400..0000000 --- a/ElectronNET.WebApp/ElectronHostHook/connector.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -class Connector { - constructor(socket, - // @ts-ignore - app) { - this.socket = socket; - this.app = app; - } - on(key, javaScriptCode) { - this.socket.on(key, (...args) => { - const id = args.pop(); - try { - javaScriptCode(...args, (data) => { - if (data) { - this.socket.emit(`${key}Complete${id}`, data); - } - }); - } - catch (error) { - this.socket.emit(`${key}Error${id}`, `Host Hook Exception`, error); - } - }); - } -} -exports.Connector = Connector; -//# sourceMappingURL=connector.js.map \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/connector.js.map b/ElectronNET.WebApp/ElectronHostHook/connector.js.map deleted file mode 100644 index 06a767a..0000000 --- a/ElectronNET.WebApp/ElectronHostHook/connector.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"connector.js","sourceRoot":"","sources":["connector.ts"],"names":[],"mappings":";;AAAA,MAAa,SAAS;IAClB,YAAoB,MAAuB;IACvC,aAAa;IACN,GAAiB;QAFR,WAAM,GAAN,MAAM,CAAiB;QAEhC,QAAG,GAAH,GAAG,CAAc;IAAI,CAAC;IAEjC,EAAE,CAAC,GAAW,EAAE,cAAwB;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,MAAM,EAAE,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9B,IAAI;gBACA,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,EAAE;wBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;qBACjD;gBACL,CAAC,CAAC,CAAC;aACN;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;aACtE;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApBD,8BAoBC"} \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/excelCreator.js b/ElectronNET.WebApp/ElectronHostHook/excelCreator.js deleted file mode 100644 index bab2f86..0000000 --- a/ElectronNET.WebApp/ElectronHostHook/excelCreator.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const Excel = require("exceljs"); -class ExcelCreator { - create(path) { - return __awaiter(this, void 0, void 0, function* () { - const workbook = new Excel.Workbook(); - const worksheet = workbook.addWorksheet("My Sheet"); - worksheet.columns = [ - { header: "Id", key: "id", width: 10 }, - { header: "Name", key: "name", width: 32 }, - { header: "Birthday", key: "birthday", width: 10, outlineLevel: 1 } - ]; - worksheet.addRow({ id: 1, name: "John Doe", birthday: new Date(1970, 1, 1) }); - worksheet.addRow({ id: 2, name: "Jane Doe", birthday: new Date(1965, 1, 7) }); - yield workbook.xlsx.writeFile(path + "\\sample.xlsx"); - return "Excel file created!"; - }); - } -} -exports.ExcelCreator = ExcelCreator; -//# sourceMappingURL=excelCreator.js.map \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map b/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map deleted file mode 100644 index b75f85d..0000000 --- a/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"excelCreator.js","sourceRoot":"","sources":["excelCreator.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAAiC;AAGjC,MAAa,YAAY;IACf,MAAM,CAAC,IAAY;;YACrB,MAAM,QAAQ,GAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,SAAS,GAAc,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC/D,SAAS,CAAC,OAAO,GAAG;gBAChB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;gBACtC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC1C,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;aACtE,CAAC;YACF,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9E,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;YAEtD,OAAO,qBAAqB,CAAC;QACjC,CAAC;KAAA;CACJ;AAhBD,oCAgBC"} \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/index.js b/ElectronNET.WebApp/ElectronHostHook/index.js deleted file mode 100644 index b6ea713..0000000 --- a/ElectronNET.WebApp/ElectronHostHook/index.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const connector_1 = require("./connector"); -const excelCreator_1 = require("./excelCreator"); -class HookService extends connector_1.Connector { - constructor(socket, app) { - super(socket, app); - this.app = app; - } - onHostReady() { - // execute your own JavaScript Host logic here - this.on("create-excel-file", (path, done) => __awaiter(this, void 0, void 0, function* () { - const excelCreator = new excelCreator_1.ExcelCreator(); - const result = yield excelCreator.create(path); - done(result); - })); - } -} -exports.HookService = HookService; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/index.js.map b/ElectronNET.WebApp/ElectronHostHook/index.js.map deleted file mode 100644 index 258351d..0000000 --- a/ElectronNET.WebApp/ElectronHostHook/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,2CAAwC;AACxC,iDAA8C;AAE9C,MAAa,WAAY,SAAQ,qBAAS;IACtC,YAAY,MAAuB,EAAS,GAAiB;QACzD,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QADqB,QAAG,GAAH,GAAG,CAAc;IAE7D,CAAC;IAED,WAAW;QACP,8CAA8C;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAO,IAAI,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,YAAY,GAAiB,IAAI,2BAAY,EAAE,CAAC;YACtD,MAAM,MAAM,GAAW,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAA,CAAC,CAAC;IACP,CAAC;CACJ;AAdD,kCAcC"} \ No newline at end of file From 13fcedc3a02aea1ea85682105855c2595d0b6c73 Mon Sep 17 00:00:00 2001 From: Gustavo Lara Molina Date: Tue, 12 May 2020 10:10:34 -0500 Subject: [PATCH 2/8] Updating Labesl --- ElectronNET.WebApp/Controllers/HomeController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ElectronNET.WebApp/Controllers/HomeController.cs b/ElectronNET.WebApp/Controllers/HomeController.cs index 44a8fee..227e243 100644 --- a/ElectronNET.WebApp/Controllers/HomeController.cs +++ b/ElectronNET.WebApp/Controllers/HomeController.cs @@ -13,12 +13,12 @@ namespace ElectronNET.WebApp.Controllers { Electron.PowerMonitor.OnLockScreen += () => { - Console.WriteLine("Screeen Bloqueado desde C#"); + Console.WriteLine("Screen Locked detected from C #"); }; Electron.PowerMonitor.OnUnLockScreen += () => { - Console.WriteLine("Desbloquedo desde C#"); + Console.WriteLine("Screen unlocked detected from C # "); }; } return View(); From 96a5189f143d7fd19f6d114000b6c6268735d8b9 Mon Sep 17 00:00:00 2001 From: Gustavo Lara Molina Date: Tue, 12 May 2020 10:11:04 -0500 Subject: [PATCH 3/8] Merge - from master --- .../ElectronHostHook/connector.js | 27 ++++++++++++++++ .../ElectronHostHook/connector.js.map | 1 + .../ElectronHostHook/excelCreator.js | 31 +++++++++++++++++++ .../ElectronHostHook/excelCreator.js.map | 1 + ElectronNET.WebApp/ElectronHostHook/index.js | 29 +++++++++++++++++ .../ElectronHostHook/index.js.map | 1 + 6 files changed, 90 insertions(+) create mode 100644 ElectronNET.WebApp/ElectronHostHook/connector.js create mode 100644 ElectronNET.WebApp/ElectronHostHook/connector.js.map create mode 100644 ElectronNET.WebApp/ElectronHostHook/excelCreator.js create mode 100644 ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map create mode 100644 ElectronNET.WebApp/ElectronHostHook/index.js create mode 100644 ElectronNET.WebApp/ElectronHostHook/index.js.map diff --git a/ElectronNET.WebApp/ElectronHostHook/connector.js b/ElectronNET.WebApp/ElectronHostHook/connector.js new file mode 100644 index 0000000..6873400 --- /dev/null +++ b/ElectronNET.WebApp/ElectronHostHook/connector.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class Connector { + constructor(socket, + // @ts-ignore + app) { + this.socket = socket; + this.app = app; + } + on(key, javaScriptCode) { + this.socket.on(key, (...args) => { + const id = args.pop(); + try { + javaScriptCode(...args, (data) => { + if (data) { + this.socket.emit(`${key}Complete${id}`, data); + } + }); + } + catch (error) { + this.socket.emit(`${key}Error${id}`, `Host Hook Exception`, error); + } + }); + } +} +exports.Connector = Connector; +//# sourceMappingURL=connector.js.map \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/connector.js.map b/ElectronNET.WebApp/ElectronHostHook/connector.js.map new file mode 100644 index 0000000..06a767a --- /dev/null +++ b/ElectronNET.WebApp/ElectronHostHook/connector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"connector.js","sourceRoot":"","sources":["connector.ts"],"names":[],"mappings":";;AAAA,MAAa,SAAS;IAClB,YAAoB,MAAuB;IACvC,aAAa;IACN,GAAiB;QAFR,WAAM,GAAN,MAAM,CAAiB;QAEhC,QAAG,GAAH,GAAG,CAAc;IAAI,CAAC;IAEjC,EAAE,CAAC,GAAW,EAAE,cAAwB;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,MAAM,EAAE,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9B,IAAI;gBACA,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,EAAE;wBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;qBACjD;gBACL,CAAC,CAAC,CAAC;aACN;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;aACtE;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApBD,8BAoBC"} \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/excelCreator.js b/ElectronNET.WebApp/ElectronHostHook/excelCreator.js new file mode 100644 index 0000000..bab2f86 --- /dev/null +++ b/ElectronNET.WebApp/ElectronHostHook/excelCreator.js @@ -0,0 +1,31 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const Excel = require("exceljs"); +class ExcelCreator { + create(path) { + return __awaiter(this, void 0, void 0, function* () { + const workbook = new Excel.Workbook(); + const worksheet = workbook.addWorksheet("My Sheet"); + worksheet.columns = [ + { header: "Id", key: "id", width: 10 }, + { header: "Name", key: "name", width: 32 }, + { header: "Birthday", key: "birthday", width: 10, outlineLevel: 1 } + ]; + worksheet.addRow({ id: 1, name: "John Doe", birthday: new Date(1970, 1, 1) }); + worksheet.addRow({ id: 2, name: "Jane Doe", birthday: new Date(1965, 1, 7) }); + yield workbook.xlsx.writeFile(path + "\\sample.xlsx"); + return "Excel file created!"; + }); + } +} +exports.ExcelCreator = ExcelCreator; +//# sourceMappingURL=excelCreator.js.map \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map b/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map new file mode 100644 index 0000000..b75f85d --- /dev/null +++ b/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"excelCreator.js","sourceRoot":"","sources":["excelCreator.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAAiC;AAGjC,MAAa,YAAY;IACf,MAAM,CAAC,IAAY;;YACrB,MAAM,QAAQ,GAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,SAAS,GAAc,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC/D,SAAS,CAAC,OAAO,GAAG;gBAChB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;gBACtC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC1C,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;aACtE,CAAC;YACF,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9E,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;YAEtD,OAAO,qBAAqB,CAAC;QACjC,CAAC;KAAA;CACJ;AAhBD,oCAgBC"} \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/index.js b/ElectronNET.WebApp/ElectronHostHook/index.js new file mode 100644 index 0000000..b6ea713 --- /dev/null +++ b/ElectronNET.WebApp/ElectronHostHook/index.js @@ -0,0 +1,29 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const connector_1 = require("./connector"); +const excelCreator_1 = require("./excelCreator"); +class HookService extends connector_1.Connector { + constructor(socket, app) { + super(socket, app); + this.app = app; + } + onHostReady() { + // execute your own JavaScript Host logic here + this.on("create-excel-file", (path, done) => __awaiter(this, void 0, void 0, function* () { + const excelCreator = new excelCreator_1.ExcelCreator(); + const result = yield excelCreator.create(path); + done(result); + })); + } +} +exports.HookService = HookService; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/ElectronNET.WebApp/ElectronHostHook/index.js.map b/ElectronNET.WebApp/ElectronHostHook/index.js.map new file mode 100644 index 0000000..258351d --- /dev/null +++ b/ElectronNET.WebApp/ElectronHostHook/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,2CAAwC;AACxC,iDAA8C;AAE9C,MAAa,WAAY,SAAQ,qBAAS;IACtC,YAAY,MAAuB,EAAS,GAAiB;QACzD,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QADqB,QAAG,GAAH,GAAG,CAAc;IAE7D,CAAC;IAED,WAAW;QACP,8CAA8C;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAO,IAAI,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,YAAY,GAAiB,IAAI,2BAAY,EAAE,CAAC;YACtD,MAAM,MAAM,GAAW,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAA,CAAC,CAAC;IACP,CAAC;CACJ;AAdD,kCAcC"} \ No newline at end of file From c8e51ef21bf7ab7f6fd0088d29e6d9b953561fde Mon Sep 17 00:00:00 2001 From: Gustavo Lara Molina Date: Tue, 12 May 2020 10:50:08 -0500 Subject: [PATCH 4/8] Updating Comments --- ElectronNET.API/PowerMonitor.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ElectronNET.API/PowerMonitor.cs b/ElectronNET.API/PowerMonitor.cs index 54a1604..4c3517b 100644 --- a/ElectronNET.API/PowerMonitor.cs +++ b/ElectronNET.API/PowerMonitor.cs @@ -10,7 +10,7 @@ using System.Threading.Tasks; namespace ElectronNET.API { /// - /// Add icons and context menus to the system's notification area. + /// Monitor power state changes.. /// public sealed class PowerMonitor { @@ -18,8 +18,7 @@ namespace ElectronNET.API /// - /// Windows: Emitted when the tray balloon is closed - /// because of timeout or user manually closes it. + /// Emitted when the system is about to lock the screen. /// public event Action OnLockScreen { @@ -48,8 +47,7 @@ namespace ElectronNET.API private event Action _lockScreen; /// - /// Windows: Emitted when the tray balloon is closed - /// because of timeout or user manually closes it. + /// Emitted when the system is about to unlock the screen. /// public event Action OnUnLockScreen { From 14587463e7661925e280b97fac2f55afbbd3e584 Mon Sep 17 00:00:00 2001 From: Gregor Biswanger Date: Wed, 13 May 2020 01:41:09 +0200 Subject: [PATCH 5/8] add new powerMonitor API js file - fix formating --- ElectronNET.API/PowerMonitor.cs | 18 +-------------- .../Actions/DeployEmbeddedElectronFiles.cs | 1 + ElectronNET.CLI/ElectronNET.CLI.csproj | 1 + ElectronNET.Host/api/clipboard.js | 19 ++++++++-------- ElectronNET.Host/api/clipboard.js.map | 2 +- ElectronNET.Host/api/clipboard.ts | 22 ++++++++++--------- ElectronNET.Host/main.js | 2 -- .../Controllers/HomeController.cs | 8 +++---- 8 files changed, 30 insertions(+), 43 deletions(-) diff --git a/ElectronNET.API/PowerMonitor.cs b/ElectronNET.API/PowerMonitor.cs index 4c3517b..2b1c802 100644 --- a/ElectronNET.API/PowerMonitor.cs +++ b/ElectronNET.API/PowerMonitor.cs @@ -1,11 +1,4 @@ -using ElectronNET.API.Entities; -using ElectronNET.API.Extensions; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Newtonsoft.Json.Serialization; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; +using System; namespace ElectronNET.API { @@ -14,9 +7,6 @@ namespace ElectronNET.API /// public sealed class PowerMonitor { - - - /// /// Emitted when the system is about to lock the screen. /// @@ -74,9 +64,6 @@ namespace ElectronNET.API } private event Action _unlockScreen; - - - private static PowerMonitor _powerMonitor; private static object _syncRoot = new object(); @@ -100,8 +87,5 @@ namespace ElectronNET.API return _powerMonitor; } } - - - } } diff --git a/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs b/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs index 95e086a..a807b6a 100644 --- a/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs +++ b/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs @@ -30,6 +30,7 @@ namespace ElectronNET.CLI.Commands.Actions EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "clipboard.js", "api."); EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "autoUpdater.js", "api."); EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "browserView.js", "api."); + EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "powerMonitor.js", "api."); string splashscreenFolder = Path.Combine(tempPath, "splashscreen"); if (Directory.Exists(splashscreenFolder) == false) diff --git a/ElectronNET.CLI/ElectronNET.CLI.csproj b/ElectronNET.CLI/ElectronNET.CLI.csproj index 4f72713..2df604d 100644 --- a/ElectronNET.CLI/ElectronNET.CLI.csproj +++ b/ElectronNET.CLI/ElectronNET.CLI.csproj @@ -71,6 +71,7 @@ + diff --git a/ElectronNET.Host/api/clipboard.js b/ElectronNET.Host/api/clipboard.js index 5eedc7e..f7e7ef1 100644 --- a/ElectronNET.Host/api/clipboard.js +++ b/ElectronNET.Host/api/clipboard.js @@ -49,19 +49,20 @@ module.exports = (socket) => { electron_1.clipboard.write(data, type); }); socket.on('clipboard-readImage', (type) => { - var image = electron_1.clipboard.readImage(type); + const image = electron_1.clipboard.readImage(type); electronSocket.emit('clipboard-readImage-Completed', { 1: image.toPNG().toString('base64') }); }); socket.on('clipboard-writeImage', (data, type) => { - var data = JSON.parse(data); - const ni = electron_1.nativeImage.createEmpty(); - for (var i in data) { - var scaleFactor = i; - var bytes = data[i]; - var buff = Buffer.from(bytes, 'base64'); - ni.addRepresentation({ scaleFactor: +scaleFactor, buffer: buff }); + const dataContent = JSON.parse(data); + const image = electron_1.nativeImage.createEmpty(); + // tslint:disable-next-line: forin + for (const key in dataContent) { + const scaleFactor = key; + const bytes = data[key]; + const buffer = Buffer.from(bytes, 'base64'); + image.addRepresentation({ scaleFactor: +scaleFactor, buffer: buffer }); } - electron_1.clipboard.writeImage(ni, type); + electron_1.clipboard.writeImage(image, type); }); }; //# sourceMappingURL=clipboard.js.map \ No newline at end of file diff --git a/ElectronNET.Host/api/clipboard.js.map b/ElectronNET.Host/api/clipboard.js.map index b3bd84b..447f1c0 100644 --- a/ElectronNET.Host/api/clipboard.js.map +++ b/ElectronNET.Host/api/clipboard.js.map @@ -1 +1 @@ -{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/ElectronNET.Host/api/clipboard.ts b/ElectronNET.Host/api/clipboard.ts index 0cbca39..1ad82bf 100644 --- a/ElectronNET.Host/api/clipboard.ts +++ b/ElectronNET.Host/api/clipboard.ts @@ -62,20 +62,22 @@ export = (socket: SocketIO.Socket) => { }); socket.on('clipboard-readImage', (type) => { - var image = clipboard.readImage(type); + const image = clipboard.readImage(type); electronSocket.emit('clipboard-readImage-Completed', { 1: image.toPNG().toString('base64') }); }); socket.on('clipboard-writeImage', (data, type) => { - var data = JSON.parse(data); - const ni = nativeImage.createEmpty(); - for (var i in data) { - var scaleFactor = i; - var bytes = data[i]; - var buff = Buffer.from(bytes, 'base64'); - ni.addRepresentation({ scaleFactor: +scaleFactor, buffer: buff }); + const dataContent = JSON.parse(data); + const image = nativeImage.createEmpty(); + + // tslint:disable-next-line: forin + for (const key in dataContent) { + const scaleFactor = key; + const bytes = data[key]; + const buffer = Buffer.from(bytes, 'base64'); + image.addRepresentation({ scaleFactor: +scaleFactor, buffer: buffer }); } - - clipboard.writeImage(ni, type); + + clipboard.writeImage(image, type); }); }; diff --git a/ElectronNET.Host/main.js b/ElectronNET.Host/main.js index c4e2d72..15fe47f 100644 --- a/ElectronNET.Host/main.js +++ b/ElectronNET.Host/main.js @@ -177,8 +177,6 @@ function startSocketApiBridge(port) { browserView = require('./api/browserView')(socket); powerMonitor = require('./api/powerMonitor')(socket); - - try { const hostHookScriptFilePath = path.join(__dirname, 'ElectronHostHook', 'index.js'); diff --git a/ElectronNET.WebApp/Controllers/HomeController.cs b/ElectronNET.WebApp/Controllers/HomeController.cs index 227e243..92a0441 100644 --- a/ElectronNET.WebApp/Controllers/HomeController.cs +++ b/ElectronNET.WebApp/Controllers/HomeController.cs @@ -1,6 +1,5 @@ using Microsoft.AspNetCore.Mvc; using ElectronNET.API; -using ElectronNET.API.Entities; using System; namespace ElectronNET.WebApp.Controllers @@ -13,15 +12,16 @@ namespace ElectronNET.WebApp.Controllers { Electron.PowerMonitor.OnLockScreen += () => { - Console.WriteLine("Screen Locked detected from C #"); + Console.WriteLine("Screen Locked detected from C#"); }; Electron.PowerMonitor.OnUnLockScreen += () => { - Console.WriteLine("Screen unlocked detected from C # "); + Console.WriteLine("Screen unlocked detected from C# "); }; } - return View(); + + return View(); } } } \ No newline at end of file From 12a3f2689eebb73c0d91988abad383b886581ee7 Mon Sep 17 00:00:00 2001 From: Gregor Biswanger Date: Wed, 13 May 2020 01:44:40 +0200 Subject: [PATCH 6/8] Update 8.31.3 --- Changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Changelog.md b/Changelog.md index 64214b1..0528fed 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,10 @@ # Not released +# 8.31.3 +ElectronNET.API: + +* New Feature: PowerMonitor API Support (thanks [gustavo-lara-molina](https://github.com/gustavo-lara-molina)) [\#399](https://github.com/ElectronNET/Electron.NET/pull/399) # Released From 169abc2376d4187fb747df182c7b522976760b69 Mon Sep 17 00:00:00 2001 From: Gregor Biswanger Date: Wed, 13 May 2020 14:16:36 +0200 Subject: [PATCH 7/8] implement NativeTheme API with shouldUseDarkColors --- ElectronNET.API/Electron.cs | 5 ++ ElectronNET.API/NativeTheme.cs | 55 +++++++++++++++++++ .../Actions/DeployEmbeddedElectronFiles.cs | 1 + ElectronNET.CLI/ElectronNET.CLI.csproj | 1 + ElectronNET.Host/api/nativeTheme.js | 11 ++++ ElectronNET.Host/api/nativeTheme.js.map | 1 + ElectronNET.Host/api/nativeTheme.ts | 12 ++++ ElectronNET.Host/main.js | 4 +- 8 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 ElectronNET.API/NativeTheme.cs create mode 100644 ElectronNET.Host/api/nativeTheme.js create mode 100644 ElectronNET.Host/api/nativeTheme.js.map create mode 100644 ElectronNET.Host/api/nativeTheme.ts diff --git a/ElectronNET.API/Electron.cs b/ElectronNET.API/Electron.cs index cbee25f..730287d 100644 --- a/ElectronNET.API/Electron.cs +++ b/ElectronNET.API/Electron.cs @@ -78,5 +78,10 @@ /// Allows you to execute native Lock and Unlock process. /// public static PowerMonitor PowerMonitor { get { return PowerMonitor.Instance; } } + + /// + /// Read and respond to changes in Chromium's native color theme. + /// + public static NativeTheme NativeTheme { get { return NativeTheme.Instance; } } } } diff --git a/ElectronNET.API/NativeTheme.cs b/ElectronNET.API/NativeTheme.cs new file mode 100644 index 0000000..3b1721a --- /dev/null +++ b/ElectronNET.API/NativeTheme.cs @@ -0,0 +1,55 @@ +using System.Threading.Tasks; + +namespace ElectronNET.API +{ + /// + /// Read and respond to changes in Chromium's native color theme. + /// + public sealed class NativeTheme + { + private static NativeTheme _nativeTheme; + private static object _syncRoot = new object(); + + internal NativeTheme() { } + + internal static NativeTheme Instance + { + get + { + if (_nativeTheme == null) + { + lock (_syncRoot) + { + if (_nativeTheme == null) + { + _nativeTheme = new NativeTheme(); + } + } + } + + return _nativeTheme; + } + } + + /// + /// A `Boolean` for if the OS / Chromium currently has a dark mode enabled or is + /// being instructed to show a dark-style UI.If you want to modify this value you + /// should use `themeSource` below. + /// + /// + public Task ShouldUseDarkColorsAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("nativeTheme-shouldUseDarkColors-completed", (shouldUseDarkColors) => { + BridgeConnector.Socket.Off("nativeTheme-shouldUseDarkColors-completed"); + + taskCompletionSource.SetResult((bool)shouldUseDarkColors); + }); + + BridgeConnector.Socket.Emit("nativeTheme-shouldUseDarkColors"); + + return taskCompletionSource.Task; + } + } +} diff --git a/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs b/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs index a807b6a..a82775d 100644 --- a/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs +++ b/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs @@ -31,6 +31,7 @@ namespace ElectronNET.CLI.Commands.Actions EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "autoUpdater.js", "api."); EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "browserView.js", "api."); EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "powerMonitor.js", "api."); + EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "nativeTheme.js", "api."); string splashscreenFolder = Path.Combine(tempPath, "splashscreen"); if (Directory.Exists(splashscreenFolder) == false) diff --git a/ElectronNET.CLI/ElectronNET.CLI.csproj b/ElectronNET.CLI/ElectronNET.CLI.csproj index 2df604d..8caf82d 100644 --- a/ElectronNET.CLI/ElectronNET.CLI.csproj +++ b/ElectronNET.CLI/ElectronNET.CLI.csproj @@ -72,6 +72,7 @@ + diff --git a/ElectronNET.Host/api/nativeTheme.js b/ElectronNET.Host/api/nativeTheme.js new file mode 100644 index 0000000..e18bde2 --- /dev/null +++ b/ElectronNET.Host/api/nativeTheme.js @@ -0,0 +1,11 @@ +"use strict"; +const electron_1 = require("electron"); +let electronSocket; +module.exports = (socket) => { + electronSocket = socket; + socket.on('nativeTheme-shouldUseDarkColors', () => { + const shouldUseDarkColors = electron_1.nativeTheme.shouldUseDarkColors; + electronSocket.emit('nativeTheme-shouldUseDarkColors-completed', shouldUseDarkColors); + }); +}; +//# sourceMappingURL=nativeTheme.js.map \ No newline at end of file diff --git a/ElectronNET.Host/api/nativeTheme.js.map b/ElectronNET.Host/api/nativeTheme.js.map new file mode 100644 index 0000000..4da7e71 --- /dev/null +++ b/ElectronNET.Host/api/nativeTheme.js.map @@ -0,0 +1 @@ +{"version":3,"file":"nativeTheme.js","sourceRoot":"","sources":["nativeTheme.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAuB,EAAE,EAAE;IACjC,cAAc,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC9C,MAAM,mBAAmB,GAAG,sBAAW,CAAC,mBAAmB,CAAC;QAE5D,cAAc,CAAC,IAAI,CAAC,2CAA2C,EAAE,mBAAmB,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file diff --git a/ElectronNET.Host/api/nativeTheme.ts b/ElectronNET.Host/api/nativeTheme.ts new file mode 100644 index 0000000..9781ffa --- /dev/null +++ b/ElectronNET.Host/api/nativeTheme.ts @@ -0,0 +1,12 @@ +import { nativeTheme } from 'electron'; +let electronSocket; + +export = (socket: SocketIO.Socket) => { + electronSocket = socket; + + socket.on('nativeTheme-shouldUseDarkColors', () => { + const shouldUseDarkColors = nativeTheme.shouldUseDarkColors; + + electronSocket.emit('nativeTheme-shouldUseDarkColors-completed', shouldUseDarkColors); + }); +}; diff --git a/ElectronNET.Host/main.js b/ElectronNET.Host/main.js index 15fe47f..60b4037 100644 --- a/ElectronNET.Host/main.js +++ b/ElectronNET.Host/main.js @@ -10,7 +10,7 @@ let globalShortcut, shellApi, screen, clipboard, autoUpdater; let commandLine, browserView; let powerMonitor; let splashScreen, hostHook; -let mainWindowId; +let mainWindowId, nativeTheme; let manifestJsonFileName = 'electron.manifest.json'; let watchable = false; @@ -154,6 +154,7 @@ function startSocketApiBridge(port) { delete require.cache[require.resolve('./api/clipboard')]; delete require.cache[require.resolve('./api/browserView')]; delete require.cache[require.resolve('./api/powerMonitor')]; + delete require.cache[require.resolve('./api/nativeTheme')]; }); global['electronsocket'] = socket; @@ -176,6 +177,7 @@ function startSocketApiBridge(port) { clipboard = require('./api/clipboard')(socket); browserView = require('./api/browserView')(socket); powerMonitor = require('./api/powerMonitor')(socket); + nativeTheme = require('./api/nativeTheme')(socket); try { const hostHookScriptFilePath = path.join(__dirname, 'ElectronHostHook', 'index.js'); From 05de4071d1256e400c7d9c250badac1cdc308979 Mon Sep 17 00:00:00 2001 From: Gregor Biswanger Date: Fri, 15 May 2020 00:18:38 +0200 Subject: [PATCH 8/8] Update --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 37f9975..e2368ac 100644 --- a/README.md +++ b/README.md @@ -54,13 +54,13 @@ PM> Install-Package ElectronNET.API You start Electron.NET up with an `UseElectron` WebHostBuilder-Extension. ```csharp - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseElectron(args); - webBuilder.UseStartup(); - }); +public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseElectron(args); + webBuilder.UseStartup(); + }); ``` ### Startup.cs @@ -167,6 +167,8 @@ Please make sure all commits are properly documented. ## 🧪 Working with this Repo +This video provides an introduction to development for Electron.NET: [Electron.NET - Contributing Getting Started](https://youtu.be/Po-saU_Z6Ws) + This repository consists of the main parts (API & CLI) and it's own "playground" ASP.NET Core application. Both main parts produce local NuGet packages, that are versioned with 99.0.0. The first thing you will need is to run one of the buildAll scripts (.cmd for Windows, the other for macOS/Linux). If you look for pure __[demo projects](https://github.com/ElectronNET)__ checkout the other repositories.