- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
let fallbackFunc = ()=>console.log("Hello, World!");
let settings = {
fallbackButtonName: "Hello, World!",
fallbackWidth: 512,
fallbackHeight: 512,
settingsMenuExitButtonHeight: 32,
settingsMenuExitButtonName: "X",
settingElementHeight: 32,
settingsMenuExitButtonAtBeginning: true,
settingElementTrueName: "ON",
settingElementFalseName: "OFF",
settingsMenuBooleanSeperatorName: "- $",
hideExtraButtonsToolbar: true,
updateToolbar: updateToolbar,
updateSettingsMenu: updateSettingsMenu,
activateFallbackFunc: fallbackFunc
};
let settingsMenu = document.getElementById("settings");
let settingsElement = document.querySelector(".setting-element#hide");
// -------------------------------------------------------------------
function updateSettingsMenu() {
settingsMenu.innerHTML = "";
let exitButton = document.createElement("button");
exitButton.style.height = settings.settingsMenuExitButtonHeight+"px";
exitButton.innerText = settings.settingsMenuExitButtonName;
exitButton.onclick = function() {
settingsMenu.style.display = "none";
}
if (settings.settingsMenuExitButtonAtBeginning) settingsMenu.appendChild(exitButton);
for (let k in settings) {
let v = settings[k];
let setting = settingsElement.cloneNode(true);
setting.id = "";
console.log(setting)
setting.style.height = settings.settingElementHeight+"px";
let [name,value] = setting.children;
if (typeof v !== "function") {
name.innerText = k;
function booleanToString(bool) {
return (bool?settings.settingsMenuBooleanSeperatorName.replaceAll("$",settings.settingElementTrueName):settings.settingsMenuBooleanSeperatorName.replaceAll("$",settings.settingElementFalseName))
}
value.innerText = (typeof v === "boolean")?booleanToString(v):v;
value.onclick = function() {
if (typeof v === "boolean") {
settings[k] = !settings[k];
value.innerText = booleanToString(settings[k]);
} else {
let input = prompt(`New value for ${k}:`);
let newValue = isNaN(input)?input:Number(input);
value.innerText = newValue;
settings[k] = newValue
}
}
} else {
name.remove()
value.innerText = k;
value.onclick = v;
}
settingsMenu.appendChild(setting);
}
if (!settings.settingsMenuExitButtonAtBeginning) settingsMenu.appendChild(exitButton);
}
function showSettings() {
settingsMenu.style.display = "flex";
updateSettingsMenu();
}