diff --git a/app/lib/display/index.js b/app/lib/display/index.js index 592bd07..903933d 100644 --- a/app/lib/display/index.js +++ b/app/lib/display/index.js @@ -1,127 +1,113 @@ 'use strict'; - -const path = require('path'); +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const spawn = require("spawn"); +const delay = require("delay"); const { BrowserWindow } = require('electron'); - -const exec = require('exec'); -const spawn = require('spawn'); -const delay = require('delay'); - let wv; let cp; let system = {}; let digitalWindow; - let TMPDIR; - class WebView { - constructor() { - - } - async open () { - digitalWindow = new BrowserWindow({ - webPreferences: { - nodeIntegration: true, - allowRunningInsecureContent: false, - 'unsafe-eval' : false - }, - width: 800, - height: 600, - minWidth : 800, - minHeight : 600//, - //icon: path.join(__dirname, '../../assets/icons/icon.png') - }); - digitalWindow.loadURL('file://' + __dirname + '../../../display.html'); - if (process.argv.indexOf('-d') !== -1 || process.argv.indexOf('--dev') !== -1) { - digitalWindow.webContents.openDevTools(); - } - digitalWindow.on('closed', () => { - digitalWindow = null - }); - } - async fullScreen () { - return digitalWindow.setFullScreen(true); - } - async setImage (src) { - return digitalWindow.webContents.send('display', { src }); - } - async setMeter () { - return digitalWindow.webContents.send('display', { meter : true }); - } - async setGrid () { - return digitalWindow.webContents.send('display', { grid : true }); - } - async close () { - if (digitalWindow) { - digitalWindow.close(); - } - return true - } - async move () { - - } + constructor() { + } + async open() { + digitalWindow = new BrowserWindow({ + webPreferences: { + nodeIntegration: true, + allowRunningInsecureContent: false, + 'unsafe-eval': false + }, + width: 800, + height: 600, + minWidth: 800, + minHeight: 600 //, + //icon: path.join(__dirname, '../../assets/icons/icon.png') + }); + digitalWindow.loadURL('file://' + __dirname + '../../../display.html'); + if (process.argv.indexOf('-d') !== -1 || process.argv.indexOf('--dev') !== -1) { + digitalWindow.webContents.openDevTools(); + } + digitalWindow.on('closed', () => { + digitalWindow = null; + }); + } + async fullScreen() { + return digitalWindow.setFullScreen(true); + } + async setImage(src) { + return digitalWindow.webContents.send('display', { src }); + } + async setMeter() { + return digitalWindow.webContents.send('display', { meter: true }); + } + async setGrid() { + return digitalWindow.webContents.send('display', { grid: true }); + } + async close() { + if (digitalWindow) { + digitalWindow.close(); + } + return true; + } + async move() { + } } - -function padded_frame (i) { - let len = (i + '').length; - let str = i + ''; - for (let x = 0; x < 5 - len; x++) { - str = '0' + str; - } - return str; +function padded_frame(i) { + let len = (i + '').length; + let str = i + ''; + for (let x = 0; x < 5 - len; x++) { + str = '0' + str; + } + return str; } - -async function display_eog (src) { - //timeout 3 eog --fullscreen ${src} - cp = spawn('eog', ['--fullscreen', src]); +async function display_eog(src) { + //timeout 3 eog --fullscreen ${src} + cp = spawn('eog', ['--fullscreen', src]); } - - -async function display_wv (src) { - await wv.open(); - await wv.fullScreen(); - await delay(200); - await wv.setImage(src); +async function display_wv(src) { + await wv.open(); + await wv.fullScreen(); + await delay(200); + await wv.setImage(src); } - -async function end () { - if (system.platform !== 'nix') { - await wv.close(); - } else { - if (cp) cp.kill() - } +async function end() { + if (system.platform !== 'nix') { + await wv.close(); + } + else { + if (cp) + cp.kill(); + } } - -async function start (frame) { - let padded = padded_frame(frame); - let ext = 'tif'; - let tmppath; - - if (system.platform !== 'nix') { - ext = 'png'; - } - - tmppath = path.join(TMPDIR, `export-${padded}.${ext}`); - - if (system.platform !== 'nix') { - display_wv(tmppath); - } else { - display_eog(tmppath); - } +async function start(frame) { + let padded = padded_frame(frame); + let ext = 'tif'; + let tmppath; + if (system.platform !== 'nix') { + ext = 'png'; + } + tmppath = path.join(TMPDIR, `export-${padded}.${ext}`); + if (system.platform !== 'nix') { + display_wv(tmppath); + } + else { + display_eog(tmppath); + } } - module.exports = function (sys) { - system = sys; - TMPDIR = path.join(system.tmp, 'mcopy_digital'); - - if (system.platform !== 'nix') { - wv = new WebView(); - } else { - //child process - } - - return { - start, - end - } -} \ No newline at end of file + system = sys; + TMPDIR = path.join(system.tmp, 'mcopy_digital'); + if (system.platform !== 'nix') { + wv = new WebView(); + } + else { + //child process + } + return { + start, + end + }; +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/app/lib/display/index.js.map b/app/lib/display/index.js.map new file mode 100644 index 0000000..7e7060d --- /dev/null +++ b/app/lib/display/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/cli/lib/display/index.js b/cli/lib/display/index.js new file mode 100644 index 0000000..903933d --- /dev/null +++ b/cli/lib/display/index.js @@ -0,0 +1,113 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const spawn = require("spawn"); +const delay = require("delay"); +const { BrowserWindow } = require('electron'); +let wv; +let cp; +let system = {}; +let digitalWindow; +let TMPDIR; +class WebView { + constructor() { + } + async open() { + digitalWindow = new BrowserWindow({ + webPreferences: { + nodeIntegration: true, + allowRunningInsecureContent: false, + 'unsafe-eval': false + }, + width: 800, + height: 600, + minWidth: 800, + minHeight: 600 //, + //icon: path.join(__dirname, '../../assets/icons/icon.png') + }); + digitalWindow.loadURL('file://' + __dirname + '../../../display.html'); + if (process.argv.indexOf('-d') !== -1 || process.argv.indexOf('--dev') !== -1) { + digitalWindow.webContents.openDevTools(); + } + digitalWindow.on('closed', () => { + digitalWindow = null; + }); + } + async fullScreen() { + return digitalWindow.setFullScreen(true); + } + async setImage(src) { + return digitalWindow.webContents.send('display', { src }); + } + async setMeter() { + return digitalWindow.webContents.send('display', { meter: true }); + } + async setGrid() { + return digitalWindow.webContents.send('display', { grid: true }); + } + async close() { + if (digitalWindow) { + digitalWindow.close(); + } + return true; + } + async move() { + } +} +function padded_frame(i) { + let len = (i + '').length; + let str = i + ''; + for (let x = 0; x < 5 - len; x++) { + str = '0' + str; + } + return str; +} +async function display_eog(src) { + //timeout 3 eog --fullscreen ${src} + cp = spawn('eog', ['--fullscreen', src]); +} +async function display_wv(src) { + await wv.open(); + await wv.fullScreen(); + await delay(200); + await wv.setImage(src); +} +async function end() { + if (system.platform !== 'nix') { + await wv.close(); + } + else { + if (cp) + cp.kill(); + } +} +async function start(frame) { + let padded = padded_frame(frame); + let ext = 'tif'; + let tmppath; + if (system.platform !== 'nix') { + ext = 'png'; + } + tmppath = path.join(TMPDIR, `export-${padded}.${ext}`); + if (system.platform !== 'nix') { + display_wv(tmppath); + } + else { + display_eog(tmppath); + } +} +module.exports = function (sys) { + system = sys; + TMPDIR = path.join(system.tmp, 'mcopy_digital'); + if (system.platform !== 'nix') { + wv = new WebView(); + } + else { + //child process + } + return { + start, + end + }; +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/cli/lib/display/index.js.map b/cli/lib/display/index.js.map new file mode 100644 index 0000000..7e7060d --- /dev/null +++ b/cli/lib/display/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/cli/lib/display/package.json b/cli/lib/display/package.json new file mode 100644 index 0000000..62e044a --- /dev/null +++ b/cli/lib/display/package.json @@ -0,0 +1,11 @@ +{ + "name": "display", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/lib/display/index.js b/lib/display/index.js new file mode 100644 index 0000000..903933d --- /dev/null +++ b/lib/display/index.js @@ -0,0 +1,113 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const path = require("path"); +const spawn = require("spawn"); +const delay = require("delay"); +const { BrowserWindow } = require('electron'); +let wv; +let cp; +let system = {}; +let digitalWindow; +let TMPDIR; +class WebView { + constructor() { + } + async open() { + digitalWindow = new BrowserWindow({ + webPreferences: { + nodeIntegration: true, + allowRunningInsecureContent: false, + 'unsafe-eval': false + }, + width: 800, + height: 600, + minWidth: 800, + minHeight: 600 //, + //icon: path.join(__dirname, '../../assets/icons/icon.png') + }); + digitalWindow.loadURL('file://' + __dirname + '../../../display.html'); + if (process.argv.indexOf('-d') !== -1 || process.argv.indexOf('--dev') !== -1) { + digitalWindow.webContents.openDevTools(); + } + digitalWindow.on('closed', () => { + digitalWindow = null; + }); + } + async fullScreen() { + return digitalWindow.setFullScreen(true); + } + async setImage(src) { + return digitalWindow.webContents.send('display', { src }); + } + async setMeter() { + return digitalWindow.webContents.send('display', { meter: true }); + } + async setGrid() { + return digitalWindow.webContents.send('display', { grid: true }); + } + async close() { + if (digitalWindow) { + digitalWindow.close(); + } + return true; + } + async move() { + } +} +function padded_frame(i) { + let len = (i + '').length; + let str = i + ''; + for (let x = 0; x < 5 - len; x++) { + str = '0' + str; + } + return str; +} +async function display_eog(src) { + //timeout 3 eog --fullscreen ${src} + cp = spawn('eog', ['--fullscreen', src]); +} +async function display_wv(src) { + await wv.open(); + await wv.fullScreen(); + await delay(200); + await wv.setImage(src); +} +async function end() { + if (system.platform !== 'nix') { + await wv.close(); + } + else { + if (cp) + cp.kill(); + } +} +async function start(frame) { + let padded = padded_frame(frame); + let ext = 'tif'; + let tmppath; + if (system.platform !== 'nix') { + ext = 'png'; + } + tmppath = path.join(TMPDIR, `export-${padded}.${ext}`); + if (system.platform !== 'nix') { + display_wv(tmppath); + } + else { + display_eog(tmppath); + } +} +module.exports = function (sys) { + system = sys; + TMPDIR = path.join(system.tmp, 'mcopy_digital'); + if (system.platform !== 'nix') { + wv = new WebView(); + } + else { + //child process + } + return { + start, + end + }; +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/display/index.js.map b/lib/display/index.js.map new file mode 100644 index 0000000..7e7060d --- /dev/null +++ b/lib/display/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/display/package.json b/lib/display/package.json new file mode 100644 index 0000000..62e044a --- /dev/null +++ b/lib/display/package.json @@ -0,0 +1,11 @@ +{ + "name": "display", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/src/display/index.ts b/src/display/index.ts new file mode 100644 index 0000000..e0c0271 --- /dev/null +++ b/src/display/index.ts @@ -0,0 +1,127 @@ +'use strict'; + +import path = require('path'); +import exec = require('exec'); +import spawn = require('spawn'); +import delay = require('delay'); + +const { BrowserWindow } = require('electron'); + +let wv : any; +let cp : any; +let system : any = {}; +let digitalWindow : any; + +let TMPDIR : any; + +class WebView { + constructor() { + + } + async open () { + digitalWindow = new BrowserWindow({ + webPreferences: { + nodeIntegration: true, + allowRunningInsecureContent: false, + 'unsafe-eval' : false + }, + width: 800, + height: 600, + minWidth : 800, + minHeight : 600//, + //icon: path.join(__dirname, '../../assets/icons/icon.png') + }); + digitalWindow.loadURL('file://' + __dirname + '../../../display.html'); + if (process.argv.indexOf('-d') !== -1 || process.argv.indexOf('--dev') !== -1) { + digitalWindow.webContents.openDevTools(); + } + digitalWindow.on('closed', () => { + digitalWindow = null + }); + } + async fullScreen () { + return digitalWindow.setFullScreen(true); + } + async setImage (src : string) { + return digitalWindow.webContents.send('display', { src }); + } + async setMeter () { + return digitalWindow.webContents.send('display', { meter : true }); + } + async setGrid () { + return digitalWindow.webContents.send('display', { grid : true }); + } + async close () { + if (digitalWindow) { + digitalWindow.close(); + } + return true + } + async move () { + + } +} + +function padded_frame (i : number) { + let len = (i + '').length; + let str = i + ''; + for (let x = 0; x < 5 - len; x++) { + str = '0' + str; + } + return str; +} + +async function display_eog (src : string) { + //timeout 3 eog --fullscreen ${src} + cp = spawn('eog', ['--fullscreen', src]); +} + + +async function display_wv (src : string) { + await wv.open(); + await wv.fullScreen(); + await delay(200); + await wv.setImage(src); +} + +async function end () { + if (system.platform !== 'nix') { + await wv.close(); + } else { + if (cp) cp.kill(); + } +} + +async function start (frame : number) { + let padded = padded_frame(frame); + let ext = 'tif'; + let tmppath; + + if (system.platform !== 'nix') { + ext = 'png'; + } + + tmppath = path.join(TMPDIR, `export-${padded}.${ext}`); + + if (system.platform !== 'nix') { + display_wv(tmppath); + } else { + display_eog(tmppath); + } +} + +module.exports = function (sys : any) { + system = sys; + TMPDIR = path.join(system.tmp, 'mcopy_digital'); + + if (system.platform !== 'nix') { + wv = new WebView(); + } else { + //child process + } + + return { + start, + end + } +} \ No newline at end of file