Commit d306d25e authored by Danil Boldyrev's avatar Danil Boldyrev

Made tooltip optional.

You can disable it in the settings.
Enabled by default
parent 38aca6f6
...@@ -39,13 +39,23 @@ function createHotkeyConfig(defaultHotkeysConfig, hotkeysConfigOpts) { ...@@ -39,13 +39,23 @@ function createHotkeyConfig(defaultHotkeysConfig, hotkeysConfigOpts) {
const usedKeys = new Set(); const usedKeys = new Set();
for (const key in defaultHotkeysConfig) { for (const key in defaultHotkeysConfig) {
if (hotkeysConfigOpts[key] && isSingleLetter(hotkeysConfigOpts[key]) && !usedKeys.has(hotkeysConfigOpts[key].toUpperCase())) { if (typeof hotkeysConfigOpts[key] === "boolean") {
result[key] = hotkeysConfigOpts[key];
continue;
}
if (
hotkeysConfigOpts[key] &&
isSingleLetter(hotkeysConfigOpts[key]) &&
!usedKeys.has(hotkeysConfigOpts[key].toUpperCase())
) {
// If the property passed the test and has not yet been used, add 'Key' before it and save it // If the property passed the test and has not yet been used, add 'Key' before it and save it
result[key] = 'Key' + hotkeysConfigOpts[key].toUpperCase(); result[key] = "Key" + hotkeysConfigOpts[key].toUpperCase();
usedKeys.add(hotkeysConfigOpts[key].toUpperCase()); usedKeys.add(hotkeysConfigOpts[key].toUpperCase());
} else { } else {
// If the property does not pass the test or has already been used, we keep the default value // If the property does not pass the test or has already been used, we keep the default value
console.error(`Hotkey: ${hotkeysConfigOpts[key]} for ${key} is repeated and conflicts with another hotkey or is not 1 letter. The default hotkey is used: ${defaultHotkeysConfig[key]}`); console.error(
`Hotkey: ${hotkeysConfigOpts[key]} for ${key} is repeated and conflicts with another hotkey or is not 1 letter. The default hotkey is used: ${defaultHotkeysConfig[key]}`
);
result[key] = defaultHotkeysConfig[key]; result[key] = defaultHotkeysConfig[key];
} }
} }
...@@ -62,7 +72,8 @@ onUiLoaded(async() => { ...@@ -62,7 +72,8 @@ onUiLoaded(async() => {
canvas_hotkey_reset: "KeyR", canvas_hotkey_reset: "KeyR",
canvas_hotkey_fullscreen: "KeyS", canvas_hotkey_fullscreen: "KeyS",
canvas_hotkey_move: "KeyF", canvas_hotkey_move: "KeyF",
canvas_hotkey_overlap: "KeyO" canvas_hotkey_overlap: "KeyO",
canvas_show_tooltip: true
}; };
const hotkeysConfig = createHotkeyConfig( const hotkeysConfig = createHotkeyConfig(
...@@ -97,54 +108,63 @@ onUiLoaded(async() => { ...@@ -97,54 +108,63 @@ onUiLoaded(async() => {
let fullScreenMode = false; let fullScreenMode = false;
// Create tooltip // Create tooltip
const toolTipElemnt = targetElement.querySelector(".image-container"); function createTooltip() {
const tooltip = document.createElement("div"); const toolTipElemnt =
tooltip.className = "tooltip"; targetElement.querySelector(".image-container");
const tooltip = document.createElement("div");
// Creating an item of information tooltip.className = "tooltip";
const info = document.createElement("i");
info.className = "tooltip-info"; // Creating an item of information
info.textContent = ""; const info = document.createElement("i");
info.className = "tooltip-info";
// Create a container for the contents of the tooltip info.textContent = "";
const tooltipContent = document.createElement("div");
tooltipContent.className = "tooltip-content"; // Create a container for the contents of the tooltip
const tooltipContent = document.createElement("div");
// Add info about hotkets tooltipContent.className = "tooltip-content";
const hotkeys = [
{key: "Shift + wheel", action: "Zoom canvas"}, // Add info about hotkets
{key: "Ctr+wheel", action: "Adjust brush size"}, const hotkeys = [
{ {key: "Shift + wheel", action: "Zoom canvas"},
key: hotkeysConfig.canvas_hotkey_reset.charAt( {key: "Ctr+wheel", action: "Adjust brush size"},
hotkeysConfig.canvas_hotkey_reset.length - 1 {
), key: hotkeysConfig.canvas_hotkey_reset.charAt(
action: "Reset zoom" hotkeysConfig.canvas_hotkey_reset.length - 1
}, ),
{ action: "Reset zoom"
key: hotkeysConfig.canvas_hotkey_fullscreen.charAt( },
hotkeysConfig.canvas_hotkey_fullscreen.length - 1 {
), key: hotkeysConfig.canvas_hotkey_fullscreen.charAt(
action: "Fullscreen mode" hotkeysConfig.canvas_hotkey_fullscreen.length - 1
}, ),
{ action: "Fullscreen mode"
key: hotkeysConfig.canvas_hotkey_move.charAt( },
hotkeysConfig.canvas_hotkey_move.length - 1 {
), key: hotkeysConfig.canvas_hotkey_move.charAt(
action: "Move canvas" hotkeysConfig.canvas_hotkey_move.length - 1
} ),
]; action: "Move canvas"
hotkeys.forEach(function(hotkey) { }
const p = document.createElement("p"); ];
p.innerHTML = "<b>" + hotkey.key + "</b>" + " - " + hotkey.action; hotkeys.forEach(function(hotkey) {
tooltipContent.appendChild(p); const p = document.createElement("p");
}); p.innerHTML =
"<b>" + hotkey.key + "</b>" + " - " + hotkey.action;
// Add information and content elements to the tooltip element tooltipContent.appendChild(p);
tooltip.appendChild(info); });
tooltip.appendChild(tooltipContent);
// Add information and content elements to the tooltip element
tooltip.appendChild(info);
tooltip.appendChild(tooltipContent);
// Add a hint element to the target element
toolTipElemnt.appendChild(tooltip);
}
// Add a hint element to the target element //Show tool tip if setting enable
toolTipElemnt.appendChild(tooltip); if (hotkeysConfig.canvas_show_tooltip) {
createTooltip();
}
// In the course of research, it was found that the tag img is very harmful when zooming and creates white canvases. This hack allows you to almost never think about this problem, it has no effect on webui. // In the course of research, it was found that the tag img is very harmful when zooming and creates white canvases. This hack allows you to almost never think about this problem, it has no effect on webui.
function fixCanvas() { function fixCanvas() {
......
...@@ -5,4 +5,5 @@ shared.options_templates.update(shared.options_section(('canvas_hotkey', "Canvas ...@@ -5,4 +5,5 @@ shared.options_templates.update(shared.options_section(('canvas_hotkey', "Canvas
"canvas_hotkey_fullscreen": shared.OptionInfo("S", "Fullscreen Mode, maximizes the picture so that it fits into the screen and stretches it to its full width "), "canvas_hotkey_fullscreen": shared.OptionInfo("S", "Fullscreen Mode, maximizes the picture so that it fits into the screen and stretches it to its full width "),
"canvas_hotkey_reset": shared.OptionInfo("R", "Reset zoom and canvas positon"), "canvas_hotkey_reset": shared.OptionInfo("R", "Reset zoom and canvas positon"),
"canvas_hotkey_overlap": shared.OptionInfo("O", "Toggle overlap ( Technical button, neededs for testing )"), "canvas_hotkey_overlap": shared.OptionInfo("O", "Toggle overlap ( Technical button, neededs for testing )"),
"canvas_show_tooltip": shared.OptionInfo(True, "Enable tooltip on the canvas"),
})) }))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment