kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
188 wiersze
4.0 KiB
JavaScript
188 wiersze
4.0 KiB
JavaScript
var s_title = null;
|
|
var s_screenSettings = {};
|
|
var s_zoomLevel = 0;
|
|
|
|
nw.Screen.Init();
|
|
|
|
var g_screenLost = false;
|
|
var g_windowInfo = {};
|
|
var g_initialScreenCount = nw.Screen.screens.length;
|
|
|
|
function setWindowInfo()
|
|
{
|
|
// if we've lost a screen, stop saving our info
|
|
if (g_screenLost) return;
|
|
var win = nw.Window.get();
|
|
var windowInfo = {};
|
|
windowInfo.x = win.x;
|
|
windowInfo.y = win.y;
|
|
windowInfo.width = win.width;
|
|
windowInfo.height = win.height;
|
|
g_windowInfo = windowInfo;
|
|
}
|
|
|
|
function clearAllScreenTimers()
|
|
{
|
|
if (g_windowMoveTimer != null)
|
|
{
|
|
clearTimeout(g_windowMoveTimer);
|
|
g_windowMoveTimer = null;
|
|
}
|
|
if (g_windowResizeTimer != null)
|
|
{
|
|
clearTimeout(g_windowResizeTimer);
|
|
g_windowResizeTimer = null;
|
|
}
|
|
}
|
|
|
|
var screenCB = {
|
|
onDisplayAdded: function (screen)
|
|
{
|
|
clearAllScreenTimers();
|
|
if (
|
|
g_screenLost == true &&
|
|
g_initialScreenCount == nw.Screen.screens.length
|
|
)
|
|
{
|
|
// Lets restore the position now
|
|
var win = nw.Window.get();
|
|
win.x = g_windowInfo.x;
|
|
win.y = g_windowInfo.y;
|
|
win.width = g_windowInfo.width;
|
|
win.height = g_windowInfo.height;
|
|
g_screenLost = false;
|
|
}
|
|
},
|
|
|
|
onDisplayRemoved: function (screen)
|
|
{
|
|
clearAllScreenTimers();
|
|
if (g_initialScreenCount != nw.Screen.screens.length)
|
|
{
|
|
g_screenLost = true;
|
|
}
|
|
}
|
|
};
|
|
|
|
function saveScreenSettings()
|
|
{
|
|
var setting = { showing: g_isShowing, zoomLevel: s_zoomLevel };
|
|
|
|
s_screenSettings = JSON.parse(localStorage.screenSettings);
|
|
|
|
s_screenSettings[s_title] = setting;
|
|
|
|
localStorage.screenSettings = JSON.stringify(s_screenSettings);
|
|
}
|
|
// listen to screen events
|
|
nw.Screen.on("displayAdded", screenCB.onDisplayAdded);
|
|
nw.Screen.on("displayRemoved", screenCB.onDisplayRemoved);
|
|
|
|
var g_isShowing = false;
|
|
|
|
nw.Window.get().on("loaded", function ()
|
|
{
|
|
// Use the first 16 bytes of the title(trimmed) as storage names
|
|
// This cannot be changed as current installs (12,000+) use this naming convention
|
|
s_title = document.title.substr(0, 16).trim();
|
|
g_isShowing = false;
|
|
if (typeof localStorage.screenSettings == "undefined")
|
|
{
|
|
localStorage.screenSettings = "{}";
|
|
}
|
|
s_screenSettings = JSON.parse(localStorage.screenSettings);
|
|
|
|
if (!(s_title in s_screenSettings))
|
|
{
|
|
saveScreenSettings();
|
|
}
|
|
if (!("zoomLevel" in s_screenSettings[s_title]))
|
|
{
|
|
saveScreenSettings();
|
|
}
|
|
g_isShowing = s_screenSettings[s_title].showing;
|
|
nw.Window.get().zoomLevel = s_zoomLevel = s_screenSettings[s_title].zoomLevel;
|
|
|
|
// Check the first part of the string, only one window has "GridTracker" in the name.
|
|
// It is reserved to the main app window.
|
|
if (g_isShowing || s_title.indexOf("GridTracker") == 0)
|
|
{
|
|
this.show();
|
|
}
|
|
else
|
|
{
|
|
this.hide();
|
|
}
|
|
|
|
g_initialScreenCount = nw.Screen.screens.length;
|
|
setWindowInfo();
|
|
|
|
document.addEventListener("keydown", onZoomControlDown, true);
|
|
});
|
|
|
|
var g_windowMoveTimer = null;
|
|
nw.Window.get().on("move", function (x, y)
|
|
{
|
|
if (g_windowMoveTimer != null)
|
|
{
|
|
clearTimeout(g_windowMoveTimer);
|
|
}
|
|
g_windowMoveTimer = setTimeout(setWindowInfo, 1000);
|
|
});
|
|
|
|
var g_windowResizeTimer = null;
|
|
nw.Window.get().on("resize", function (w, h)
|
|
{
|
|
if (g_windowResizeTimer != null)
|
|
{
|
|
clearTimeout(g_windowResizeTimer);
|
|
}
|
|
g_windowResizeTimer = setTimeout(setWindowInfo, 1000);
|
|
});
|
|
|
|
var g_zoomKeys = {
|
|
NumpadSubtract: reduceZoom,
|
|
Minus: reduceZoom,
|
|
NumpadAdd: increaseZoom,
|
|
Equal: increaseZoom,
|
|
Numpad0: resetZoom,
|
|
Digit0: resetZoom
|
|
};
|
|
|
|
function onZoomControlDown(event)
|
|
{
|
|
if (event.ctrlKey)
|
|
{
|
|
if (event.code in g_zoomKeys)
|
|
{
|
|
g_zoomKeys[event.code]();
|
|
}
|
|
}
|
|
}
|
|
|
|
function reduceZoom()
|
|
{
|
|
s_zoomLevel -= 0.2;
|
|
nw.Window.get().zoomLevel = s_zoomLevel;
|
|
saveScreenSettings();
|
|
}
|
|
|
|
function increaseZoom()
|
|
{
|
|
s_zoomLevel += 0.2;
|
|
nw.Window.get().zoomLevel = s_zoomLevel;
|
|
|
|
saveScreenSettings();
|
|
}
|
|
|
|
function resetZoom()
|
|
{
|
|
s_zoomLevel = 0;
|
|
nw.Window.get().zoomLevel = s_zoomLevel;
|
|
saveScreenSettings();
|
|
}
|
|
|
|
var g_process = require("process");
|
|
|
|
g_process.on("uncaughtException", function (e) {});
|