Refactor display module into typescript
This commit is contained in:
parent
d264429726
commit
0ff1b5ff7d
|
@ -1,127 +1,113 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const path = require('path');
|
const path = require("path");
|
||||||
|
const spawn = require("spawn");
|
||||||
|
const delay = require("delay");
|
||||||
const { BrowserWindow } = require('electron');
|
const { BrowserWindow } = require('electron');
|
||||||
|
|
||||||
const exec = require('exec');
|
|
||||||
const spawn = require('spawn');
|
|
||||||
const delay = require('delay');
|
|
||||||
|
|
||||||
let wv;
|
let wv;
|
||||||
let cp;
|
let cp;
|
||||||
let system = {};
|
let system = {};
|
||||||
let digitalWindow;
|
let digitalWindow;
|
||||||
|
|
||||||
let TMPDIR;
|
let TMPDIR;
|
||||||
|
|
||||||
class WebView {
|
class WebView {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
}
|
||||||
}
|
async open() {
|
||||||
async open () {
|
digitalWindow = new BrowserWindow({
|
||||||
digitalWindow = new BrowserWindow({
|
webPreferences: {
|
||||||
webPreferences: {
|
nodeIntegration: true,
|
||||||
nodeIntegration: true,
|
allowRunningInsecureContent: false,
|
||||||
allowRunningInsecureContent: false,
|
'unsafe-eval': false
|
||||||
'unsafe-eval' : false
|
},
|
||||||
},
|
width: 800,
|
||||||
width: 800,
|
height: 600,
|
||||||
height: 600,
|
minWidth: 800,
|
||||||
minWidth : 800,
|
minHeight: 600 //,
|
||||||
minHeight : 600//,
|
//icon: path.join(__dirname, '../../assets/icons/icon.png')
|
||||||
//icon: path.join(__dirname, '../../assets/icons/icon.png')
|
});
|
||||||
});
|
digitalWindow.loadURL('file://' + __dirname + '../../../display.html');
|
||||||
digitalWindow.loadURL('file://' + __dirname + '../../../display.html');
|
if (process.argv.indexOf('-d') !== -1 || process.argv.indexOf('--dev') !== -1) {
|
||||||
if (process.argv.indexOf('-d') !== -1 || process.argv.indexOf('--dev') !== -1) {
|
digitalWindow.webContents.openDevTools();
|
||||||
digitalWindow.webContents.openDevTools();
|
}
|
||||||
}
|
digitalWindow.on('closed', () => {
|
||||||
digitalWindow.on('closed', () => {
|
digitalWindow = null;
|
||||||
digitalWindow = null
|
});
|
||||||
});
|
}
|
||||||
}
|
async fullScreen() {
|
||||||
async fullScreen () {
|
return digitalWindow.setFullScreen(true);
|
||||||
return digitalWindow.setFullScreen(true);
|
}
|
||||||
}
|
async setImage(src) {
|
||||||
async setImage (src) {
|
return digitalWindow.webContents.send('display', { src });
|
||||||
return digitalWindow.webContents.send('display', { src });
|
}
|
||||||
}
|
async setMeter() {
|
||||||
async setMeter () {
|
return digitalWindow.webContents.send('display', { meter: true });
|
||||||
return digitalWindow.webContents.send('display', { meter : true });
|
}
|
||||||
}
|
async setGrid() {
|
||||||
async setGrid () {
|
return digitalWindow.webContents.send('display', { grid: true });
|
||||||
return digitalWindow.webContents.send('display', { grid : true });
|
}
|
||||||
}
|
async close() {
|
||||||
async close () {
|
if (digitalWindow) {
|
||||||
if (digitalWindow) {
|
digitalWindow.close();
|
||||||
digitalWindow.close();
|
}
|
||||||
}
|
return true;
|
||||||
return true
|
}
|
||||||
}
|
async move() {
|
||||||
async move () {
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
function padded_frame(i) {
|
||||||
function padded_frame (i) {
|
let len = (i + '').length;
|
||||||
let len = (i + '').length;
|
let str = i + '';
|
||||||
let str = i + '';
|
for (let x = 0; x < 5 - len; x++) {
|
||||||
for (let x = 0; x < 5 - len; x++) {
|
str = '0' + str;
|
||||||
str = '0' + str;
|
}
|
||||||
}
|
return str;
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
async function display_eog(src) {
|
||||||
async function display_eog (src) {
|
//timeout 3 eog --fullscreen ${src}
|
||||||
//timeout 3 eog --fullscreen ${src}
|
cp = spawn('eog', ['--fullscreen', src]);
|
||||||
cp = spawn('eog', ['--fullscreen', src]);
|
|
||||||
}
|
}
|
||||||
|
async function display_wv(src) {
|
||||||
|
await wv.open();
|
||||||
async function display_wv (src) {
|
await wv.fullScreen();
|
||||||
await wv.open();
|
await delay(200);
|
||||||
await wv.fullScreen();
|
await wv.setImage(src);
|
||||||
await delay(200);
|
|
||||||
await wv.setImage(src);
|
|
||||||
}
|
}
|
||||||
|
async function end() {
|
||||||
async function end () {
|
if (system.platform !== 'nix') {
|
||||||
if (system.platform !== 'nix') {
|
await wv.close();
|
||||||
await wv.close();
|
}
|
||||||
} else {
|
else {
|
||||||
if (cp) cp.kill()
|
if (cp)
|
||||||
}
|
cp.kill();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
async function start(frame) {
|
||||||
async function start (frame) {
|
let padded = padded_frame(frame);
|
||||||
let padded = padded_frame(frame);
|
let ext = 'tif';
|
||||||
let ext = 'tif';
|
let tmppath;
|
||||||
let tmppath;
|
if (system.platform !== 'nix') {
|
||||||
|
ext = 'png';
|
||||||
if (system.platform !== 'nix') {
|
}
|
||||||
ext = 'png';
|
tmppath = path.join(TMPDIR, `export-${padded}.${ext}`);
|
||||||
}
|
if (system.platform !== 'nix') {
|
||||||
|
display_wv(tmppath);
|
||||||
tmppath = path.join(TMPDIR, `export-${padded}.${ext}`);
|
}
|
||||||
|
else {
|
||||||
if (system.platform !== 'nix') {
|
display_eog(tmppath);
|
||||||
display_wv(tmppath);
|
}
|
||||||
} else {
|
|
||||||
display_eog(tmppath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = function (sys) {
|
module.exports = function (sys) {
|
||||||
system = sys;
|
system = sys;
|
||||||
TMPDIR = path.join(system.tmp, 'mcopy_digital');
|
TMPDIR = path.join(system.tmp, 'mcopy_digital');
|
||||||
|
if (system.platform !== 'nix') {
|
||||||
if (system.platform !== 'nix') {
|
wv = new WebView();
|
||||||
wv = new WebView();
|
}
|
||||||
} else {
|
else {
|
||||||
//child process
|
//child process
|
||||||
}
|
}
|
||||||
|
return {
|
||||||
return {
|
start,
|
||||||
start,
|
end
|
||||||
end
|
};
|
||||||
}
|
};
|
||||||
}
|
//# sourceMappingURL=index.js.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"}
|
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue