Update commands
This commit is contained in:
parent
fbe954280f
commit
174b900cd8
|
@ -186,7 +186,10 @@
|
|||
"capper_on": "A",
|
||||
"capper_off": "B",
|
||||
"takeup_forward": "D",
|
||||
"takeup_backward": "E"
|
||||
"takeup_backward": "F",
|
||||
"error" : "E",
|
||||
"camera_exposure" : "G",
|
||||
"state" : "H"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,267 +1,293 @@
|
|||
/* jslint esversion: 6*/
|
||||
|
||||
const gui = {};
|
||||
|
||||
//GUI
|
||||
gui.init = function () {
|
||||
gui.version();
|
||||
'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());
|
||||
});
|
||||
};
|
||||
|
||||
gui.fmtZero = function (val, len) {
|
||||
'use strict';
|
||||
const raw = val;
|
||||
let str = val + '';
|
||||
let output = '';
|
||||
if (raw < 0) {
|
||||
output = '-' + Array(len - (str.length - 1)).join('0') + str.replace('-', '');
|
||||
} else {
|
||||
if (str.length < len) {
|
||||
output = Array(len - str.length).join('0') + str;
|
||||
} else if (str.length >= len) {
|
||||
str = parseInt(str) + '';
|
||||
output = Array(len - str.length).join('0') + str;
|
||||
}
|
||||
}
|
||||
return output;
|
||||
};
|
||||
gui.counterFormat = function (t, normal, prevent) {
|
||||
'use strict';
|
||||
const raw = t.value;
|
||||
t.value = gui.fmtZero(raw, 6);
|
||||
if (typeof normal !== 'undefined' && parseInt(raw) !== normal) {
|
||||
$(t).addClass('changed');
|
||||
} else {
|
||||
$(t).removeClass('changed');
|
||||
}
|
||||
};
|
||||
gui.counterUpdate = function (which, raw) {
|
||||
'use strict';
|
||||
const formattedVal = gui.fmtZero(raw, 6);
|
||||
$(`.${which} .count`).val(formattedVal);
|
||||
};
|
||||
gui.notifierWorking = true;
|
||||
gui.notify = function (title, message) {
|
||||
'use strict';
|
||||
if (!gui.notifierWorking) {
|
||||
return true;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
notifier.notify({
|
||||
title: title,
|
||||
message: message,
|
||||
//icon: path.join(__dirname, 'coulson.jpg'), // Absolute path (doesn't work on balloons)
|
||||
sound: true, // Only Notification Center or Windows Toasters
|
||||
wait: true // Wait with callback, until user action is taken against notification
|
||||
}, function (err, response) {
|
||||
// Response is response from notification
|
||||
if (err) {
|
||||
gui.notifierWorking = false;
|
||||
log.error(`Error with notification`, err);
|
||||
return reject(err);
|
||||
}
|
||||
return resolve(true);
|
||||
});
|
||||
} catch (err) {
|
||||
gui.notifierWorking = false;
|
||||
//notify-send is not found
|
||||
//determine an alternate for raspian
|
||||
//this feels like a hack
|
||||
}
|
||||
});
|
||||
};
|
||||
gui.updateCam = async function (t) {
|
||||
'use strict';
|
||||
const val = t.value;
|
||||
let change;
|
||||
|
||||
if (parseInt(val) === cam.pos) {
|
||||
return false;
|
||||
}
|
||||
change = await gui.confirm(`Are you sure you want to set camera counter to ${val}?`);
|
||||
|
||||
if (change) {
|
||||
cam.pos = parseInt(val);
|
||||
gui.updateState();
|
||||
} else {
|
||||
t.value = cam.pos;
|
||||
gui.counterFormat(t);
|
||||
}
|
||||
};
|
||||
gui.updateCam2 = async function (t) {
|
||||
'use strict';
|
||||
const val = t.value;
|
||||
let change;
|
||||
|
||||
if (parseInt(val) === cam.pos) {
|
||||
return false;
|
||||
}
|
||||
change = await gui.confirm(`Are you sure you want to set second camera counter to ${val}?`);
|
||||
|
||||
if (change) {
|
||||
cam.second.pos = parseInt(val);
|
||||
gui.updateState();
|
||||
} else {
|
||||
t.value = cam.second.pos;
|
||||
gui.counterFormat(t);
|
||||
}
|
||||
};
|
||||
gui.updateProj = async function (t) {
|
||||
'use strict';
|
||||
const val = t.value;
|
||||
let change;
|
||||
if (parseInt(val) === proj.pos) {
|
||||
return false;
|
||||
}
|
||||
change = await gui.confirm(`Are you sure you want to set projector counter to ${val}?`);
|
||||
if (change) {
|
||||
proj.pos = parseInt(val);
|
||||
gui.updateState();
|
||||
} else {
|
||||
t.value = proj.pos;
|
||||
gui.counterFormat(t);
|
||||
}
|
||||
proj.setValue(t.value);
|
||||
};
|
||||
gui.updateProj2 = async function (t) {
|
||||
'use strict';
|
||||
const val = t.value;
|
||||
let change;
|
||||
if (parseInt(val) === proj.second.pos) {
|
||||
return false;
|
||||
}
|
||||
change = await gui.confirm(`Are you sure you want to set second projector counter to ${val}?`);
|
||||
if (change) {
|
||||
proj.second.pos = parseInt(val);
|
||||
gui.updateState();
|
||||
} else {
|
||||
t.value = proj.second.pos;
|
||||
gui.counterFormat(t);
|
||||
}
|
||||
proj.setValue(t.value);
|
||||
};
|
||||
|
||||
gui.updateState = function () {
|
||||
'use strict';
|
||||
const cpos = cam.pos;
|
||||
const ppos = proj.pos;
|
||||
|
||||
const p2pos = proj.second.pos;
|
||||
const c2pos = cam.second.pos;
|
||||
|
||||
$('#seq_cam_count').val(cpos).change();
|
||||
$('#seq_proj_count').val(ppos).change();
|
||||
|
||||
$('#seq_cam_count_2').val(cpos).change();
|
||||
$('#seq_proj_count_2').val(ppos).change();
|
||||
|
||||
$('#seq_cam_2_count').val(c2pos).change();
|
||||
$('#seq_proj_2_count').val(p2pos).change();
|
||||
|
||||
$('#seq_cam_2_count_2').val(c2pos).change();
|
||||
$('#seq_proj_2_count_2').val(p2pos).change();
|
||||
};
|
||||
gui.spinnerCfg = {
|
||||
lines: 11, // The number of lines to draw
|
||||
length: 15, // The length of each line
|
||||
width: 7, // The line thickness
|
||||
radius: 20, // The radius of the inner circle
|
||||
corners: 1, // Corner roundness (0..1)
|
||||
rotate: 0, // The rotation offset
|
||||
direction: 1, // 1: clockwise, -1: counterclockwise
|
||||
color: '#F2F2F1', // #rgb or #rrggbb or array of colors
|
||||
speed: 1, // Rounds per second
|
||||
trail: 60, // Afterglow percentage
|
||||
shadow: true, // Whether to render a shadow
|
||||
hwaccel: true, // Whether to use hardware acceleration
|
||||
className: 'spinner', // The CSS class to assign to the spinner
|
||||
zIndex: 2e9, // The z-index (defaults to 2000000000)
|
||||
top: '50%', // Top position relative to parent
|
||||
left: '50%' // Left position relative to parent
|
||||
};
|
||||
gui.spinner = function (state, msg, progress, cancel) {
|
||||
'use strict';
|
||||
let target;
|
||||
let spinner;
|
||||
if (msg && msg !== '') {
|
||||
gui.spinnerMsg(msg);
|
||||
}
|
||||
if (state && !$('#spinner').hasClass('created')) {
|
||||
target = document.getElementById('spinner');
|
||||
spinner = new Spinner(gui.spinnerCfg).spin(target);
|
||||
$('#spinnerProgress').hide();
|
||||
$('#spinner').addClass('created');
|
||||
} else if (state) {
|
||||
$('#spinner').show();
|
||||
} else if (!state) {
|
||||
$('#spinner').hide();
|
||||
gui.spinnerMsg('');
|
||||
}
|
||||
if (progress) {
|
||||
$('#spinnerProgress').show();
|
||||
} else {
|
||||
$('#spinnerProgress').hide();
|
||||
}
|
||||
if (cancel) {
|
||||
$('#spinnerCancel').show();
|
||||
} else {
|
||||
$('#spinnerCancel').hide();
|
||||
}
|
||||
};
|
||||
gui.spinnerMsg = function (msg) {
|
||||
'use strict';
|
||||
$('#spinnerMsg').text(msg);
|
||||
};
|
||||
gui.overlay = function (state) {
|
||||
'use strict';
|
||||
if (state) {
|
||||
$('#overlay').show();
|
||||
} else {
|
||||
$('#overlay').hide();
|
||||
}
|
||||
};
|
||||
|
||||
gui.info = async function (title, message) {
|
||||
'use strict';
|
||||
const config = {
|
||||
type : 'info',
|
||||
buttons : ['Ok'],
|
||||
title: title,
|
||||
message : message
|
||||
};
|
||||
return dialog.showMessageBox(config);
|
||||
};
|
||||
gui.confirm = async function (message, cancel = 'Cancel') {
|
||||
const config = {
|
||||
buttons : ['Yes', cancel],
|
||||
message
|
||||
}
|
||||
const res = await dialog.showMessageBox(config);
|
||||
return res.response === 0;
|
||||
};
|
||||
gui.choice = async function (message, choices) {
|
||||
const config = {
|
||||
buttons : choices,
|
||||
defaultId : 0,
|
||||
message
|
||||
}
|
||||
const res = await dialog.showMessageBox(config);
|
||||
return res.response;
|
||||
};
|
||||
gui.warn = async function (title, message) {
|
||||
'use strict';
|
||||
const config = {
|
||||
type : 'warning',
|
||||
buttons : ['Ok'],
|
||||
title: title,
|
||||
message : message
|
||||
};
|
||||
return dialog.showMessageBox(config);
|
||||
};
|
||||
gui.error = function () {};
|
||||
|
||||
gui.version = function () {
|
||||
$('#version').text(PACKAGE.version);
|
||||
let gui;
|
||||
class GUI {
|
||||
constructor() {
|
||||
this.id = 'gui';
|
||||
this.notifierWorking = true;
|
||||
this.spinnerCfg = {
|
||||
lines: 11,
|
||||
length: 15,
|
||||
width: 7,
|
||||
radius: 20,
|
||||
corners: 1,
|
||||
rotate: 0,
|
||||
direction: 1,
|
||||
color: '#F2F2F1',
|
||||
speed: 1,
|
||||
trail: 60,
|
||||
shadow: true,
|
||||
hwaccel: true,
|
||||
className: 'spinner',
|
||||
zIndex: 2e9,
|
||||
top: '50%',
|
||||
left: '50%' // Left position relative to parent
|
||||
};
|
||||
}
|
||||
init() {
|
||||
this.version();
|
||||
this.listen();
|
||||
}
|
||||
listen() {
|
||||
ipcRenderer.on(this.id, this.listener.bind(this));
|
||||
}
|
||||
listener(event, arg) {
|
||||
if (arg.notify) {
|
||||
this.notify(arg.notify.title, arg.notify.message);
|
||||
}
|
||||
}
|
||||
fmtZero(val, len) {
|
||||
const raw = val;
|
||||
let str = val + '';
|
||||
let output = '';
|
||||
if (raw < 0) {
|
||||
output = '-' + Array(len - (str.length - 1)).join('0') + str.replace('-', '');
|
||||
}
|
||||
else {
|
||||
if (str.length < len) {
|
||||
output = Array(len - str.length).join('0') + str;
|
||||
}
|
||||
else if (str.length >= len) {
|
||||
str = parseInt(str) + '';
|
||||
output = Array(len - str.length).join('0') + str;
|
||||
}
|
||||
}
|
||||
return output;
|
||||
}
|
||||
counterFormat(t, normal = null) {
|
||||
const raw = t.value;
|
||||
t.value = gui.fmtZero(raw, 6);
|
||||
if (typeof normal !== 'undefined' && parseInt(raw) !== normal) {
|
||||
$(t).addClass('changed');
|
||||
}
|
||||
else {
|
||||
$(t).removeClass('changed');
|
||||
}
|
||||
}
|
||||
counterUpdate(which, raw) {
|
||||
const formattedVal = this.fmtZero(raw, 6);
|
||||
$(`.${which} .count`).val(formattedVal);
|
||||
}
|
||||
notify(title, message) {
|
||||
const config = {
|
||||
title,
|
||||
message,
|
||||
//icon: path.join(__dirname, 'coulson.jpg'), // Absolute path (doesn't work on balloons)
|
||||
sound: true,
|
||||
wait: true // Wait with callback, until user action is taken against notification
|
||||
};
|
||||
if (!this.notifierWorking) {
|
||||
return new Promise((resolve, reject) => { return resolve(true); });
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
notifier.notify(config, function (err, response) {
|
||||
// Response is response from notification
|
||||
if (err) {
|
||||
this.notifierWorking = false;
|
||||
log.error(`Error with notification`, err);
|
||||
return reject(err);
|
||||
}
|
||||
return resolve(true);
|
||||
}.bind(this));
|
||||
}
|
||||
catch (err) {
|
||||
this.notifierWorking = false;
|
||||
//notify-send is not found
|
||||
//determine an alternate for raspian
|
||||
//this feels like a hack
|
||||
}
|
||||
});
|
||||
}
|
||||
updateCam(t) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const val = t.value;
|
||||
let change;
|
||||
if (parseInt(val) === cam.pos) {
|
||||
return false;
|
||||
}
|
||||
change = yield this.confirm(`Are you sure you want to set camera counter to ${val}?`);
|
||||
if (change) {
|
||||
cam.pos = parseInt(val);
|
||||
this.updateState();
|
||||
}
|
||||
else {
|
||||
t.value = cam.pos;
|
||||
this.counterFormat(t);
|
||||
}
|
||||
});
|
||||
}
|
||||
updateCam2(t) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const val = t.value;
|
||||
let change;
|
||||
if (parseInt(val) === cam.pos) {
|
||||
return false;
|
||||
}
|
||||
change = yield this.confirm(`Are you sure you want to set second camera counter to ${val}?`);
|
||||
if (change) {
|
||||
cam.second.pos = parseInt(val);
|
||||
this.updateState();
|
||||
}
|
||||
else {
|
||||
t.value = cam.second.pos;
|
||||
this.counterFormat(t);
|
||||
}
|
||||
});
|
||||
}
|
||||
updateProj(t) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const val = t.value;
|
||||
let change;
|
||||
if (parseInt(val) === proj.pos) {
|
||||
return false;
|
||||
}
|
||||
change = yield this.confirm(`Are you sure you want to set projector counter to ${val}?`);
|
||||
if (change) {
|
||||
proj.pos = parseInt(val);
|
||||
this.updateState();
|
||||
}
|
||||
else {
|
||||
t.value = proj.pos;
|
||||
this.counterFormat(t);
|
||||
}
|
||||
proj.setValue(t.value);
|
||||
});
|
||||
}
|
||||
updateProj2(t) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const val = t.value;
|
||||
let change;
|
||||
if (parseInt(val) === proj.second.pos) {
|
||||
return false;
|
||||
}
|
||||
change = yield this.confirm(`Are you sure you want to set second projector counter to ${val}?`);
|
||||
if (change) {
|
||||
proj.second.pos = parseInt(val);
|
||||
this.updateState();
|
||||
}
|
||||
else {
|
||||
t.value = proj.second.pos;
|
||||
this.counterFormat(t);
|
||||
}
|
||||
proj.setValue(t.value);
|
||||
});
|
||||
}
|
||||
updateState() {
|
||||
const cpos = cam.pos;
|
||||
const ppos = proj.pos;
|
||||
const p2pos = proj.second.pos;
|
||||
const c2pos = cam.second.pos;
|
||||
$('#seq_cam_count').val(cpos).change();
|
||||
$('#seq_proj_count').val(ppos).change();
|
||||
$('#seq_cam_count_2').val(cpos).change();
|
||||
$('#seq_proj_count_2').val(ppos).change();
|
||||
$('#seq_cam_2_count').val(c2pos).change();
|
||||
$('#seq_proj_2_count').val(p2pos).change();
|
||||
$('#seq_cam_2_count_2').val(c2pos).change();
|
||||
$('#seq_proj_2_count_2').val(p2pos).change();
|
||||
}
|
||||
spinner(state, msg = null, progress = false, cancel = false) {
|
||||
let target;
|
||||
let spinner;
|
||||
if (msg && msg !== '') {
|
||||
this.spinnerMsg(msg);
|
||||
}
|
||||
if (state && !$('#spinner').hasClass('created')) {
|
||||
target = document.getElementById('spinner');
|
||||
spinner = new Spinner(this.spinnerCfg).spin(target);
|
||||
$('#spinnerProgress').hide();
|
||||
$('#spinner').addClass('created');
|
||||
}
|
||||
else if (state) {
|
||||
$('#spinner').show();
|
||||
}
|
||||
else if (!state) {
|
||||
$('#spinner').hide();
|
||||
this.spinnerMsg('');
|
||||
}
|
||||
if (progress) {
|
||||
$('#spinnerProgress').show();
|
||||
}
|
||||
else {
|
||||
$('#spinnerProgress').hide();
|
||||
}
|
||||
if (cancel) {
|
||||
$('#spinnerCancel').show();
|
||||
}
|
||||
else {
|
||||
$('#spinnerCancel').hide();
|
||||
}
|
||||
}
|
||||
spinnerMsg(msg) {
|
||||
$('#spinnerMsg').text(msg);
|
||||
}
|
||||
overlay(state) {
|
||||
if (state) {
|
||||
$('#overlay').show();
|
||||
}
|
||||
else {
|
||||
$('#overlay').hide();
|
||||
}
|
||||
}
|
||||
info(title, message) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const config = {
|
||||
type: 'info',
|
||||
buttons: ['Ok'],
|
||||
title: title,
|
||||
message: message
|
||||
};
|
||||
return dialog.showMessageBox(config);
|
||||
});
|
||||
}
|
||||
confirm(message, cancel = 'Cancel') {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const config = {
|
||||
buttons: ['Yes', cancel],
|
||||
message
|
||||
};
|
||||
const res = yield dialog.showMessageBox(config);
|
||||
return res.response === 0;
|
||||
});
|
||||
}
|
||||
choice(message, choices) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const config = {
|
||||
buttons: choices,
|
||||
defaultId: 0,
|
||||
message
|
||||
};
|
||||
const res = yield dialog.showMessageBox(config);
|
||||
return res.response;
|
||||
});
|
||||
}
|
||||
warn(title, message) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const config = {
|
||||
type: 'warning',
|
||||
buttons: ['Ok'],
|
||||
title,
|
||||
message
|
||||
};
|
||||
return dialog.showMessageBox(config);
|
||||
});
|
||||
}
|
||||
version() {
|
||||
$('#version').text(PACKAGE.version);
|
||||
}
|
||||
error() {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = gui;
|
||||
gui = new GUI();
|
||||
module.exports = gui;
|
||||
//# sourceMappingURL=index.js.map
|
|
@ -186,7 +186,10 @@
|
|||
"capper_on": "A",
|
||||
"capper_off": "B",
|
||||
"takeup_forward": "D",
|
||||
"takeup_backward": "E"
|
||||
"takeup_backward": "F",
|
||||
"error" : "E",
|
||||
"camera_exposure" : "G",
|
||||
"state" : "H"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -186,7 +186,10 @@
|
|||
"capper_on": "A",
|
||||
"capper_off": "B",
|
||||
"takeup_forward": "D",
|
||||
"takeup_backward": "E"
|
||||
"takeup_backward": "F",
|
||||
"error" : "E",
|
||||
"camera_exposure" : "G",
|
||||
"state" : "H"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue