mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-23 10:35:35 -04:00
369 lines
9.9 KiB
JavaScript
369 lines
9.9 KiB
JavaScript
// @ts-check
|
|
/**
|
|
* A set of wrappers around the Electron windowing APIs.
|
|
* They don't have any effect on non Electron runtimes.
|
|
*
|
|
* Docstrings are only used for typing here, for proper
|
|
* documentation check the electron docs at
|
|
* https://www.electronjs.org/docs/api.
|
|
*
|
|
* @filedescriptor
|
|
* @author arthuro555
|
|
*/
|
|
|
|
/**
|
|
* Tools to manipulate the game window positioning and
|
|
* interactions with the operating system.
|
|
* @namespace
|
|
*/
|
|
gdjs.evtTools.advancedWindow = {
|
|
/**
|
|
* The game's BrowserWindow instance (or null on
|
|
* non-electron platforms).
|
|
* @type {?Object}
|
|
*/
|
|
electronBrowserWindow: null,
|
|
};
|
|
|
|
// @ts-ignore
|
|
if (typeof require === 'function') {
|
|
// @ts-ignore
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow = require('electron').remote.getCurrentWindow();
|
|
}
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.focus = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow) {
|
|
if (activate) {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.focus();
|
|
} else {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.blur();
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isFocused = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isFocused();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.show = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow) {
|
|
if (activate) {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.showInactive();
|
|
} else {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.hide();
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isVisible = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isVisible();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.maximize = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow) {
|
|
if (activate) {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.maximize();
|
|
} else {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.unmaximize();
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isMaximized = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isMaximized();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.minimize = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow) {
|
|
if (activate) {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.minimize();
|
|
} else {
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.restore();
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isMinimized = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isMinimized();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.enable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setEnabled(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isEnabled = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isEnabled();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setResizable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setResizable(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isResizable = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isResizable();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setMovable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setMovable(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isMovable = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isMovable();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setMaximizable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setMaximizable(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isMaximizable = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isMaximizable();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setMinimizable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setMinimizable(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isMinimizable = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isMinimizable();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setFullScreenable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setFullScreenable(
|
|
activate
|
|
);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isFullScreenable = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isFullScreenable();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setClosable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setClosable(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isClosable = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isClosable();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
* @param {"normal" | "floating" | "torn-off-menu" | "modal-panel" |"main-menu" | "status" | "pop-up-menu" | "screen-saver"} level
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setAlwaysOnTop = function (activate, level) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setAlwaysOnTop(
|
|
activate,
|
|
level
|
|
);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isAlwaysOnTop = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isAlwaysOnTop();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {number} x
|
|
* @param {number} y
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setPosition = function (x, y) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setPosition(x, y);
|
|
};
|
|
|
|
/**
|
|
* @return {number}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.getPositionX = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow) {
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.getPosition()[0];
|
|
}
|
|
return 0;
|
|
};
|
|
|
|
/**
|
|
* @return {number}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.getPositionY = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow) {
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.getPosition()[1];
|
|
}
|
|
return 0;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setKiosk = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setKiosk(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.isKiosk = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.isKiosk();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.flash = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.flashFrame(activate);
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setHasShadow = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setHasShadow(activate);
|
|
};
|
|
|
|
/**
|
|
* @return {boolean}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.hasShadow = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.hasShadow();
|
|
return false;
|
|
};
|
|
|
|
/**
|
|
* @param {number} opacity
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setOpacity = function (opacity) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setOpacity(opacity);
|
|
};
|
|
|
|
/**
|
|
* @return {number}
|
|
*/
|
|
gdjs.evtTools.advancedWindow.getOpacity = function () {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
return gdjs.evtTools.advancedWindow.electronBrowserWindow.getOpacity();
|
|
return 1;
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setContentProtection = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setContentProtection(
|
|
activate
|
|
);
|
|
};
|
|
|
|
/**
|
|
* @param {boolean} activate
|
|
*/
|
|
gdjs.evtTools.advancedWindow.setFocusable = function (activate) {
|
|
if (gdjs.evtTools.advancedWindow.electronBrowserWindow)
|
|
gdjs.evtTools.advancedWindow.electronBrowserWindow.setFocusable(activate);
|
|
};
|