From beff34013d8cf6c7ee550ab3ef0b6b4d0e602a32 Mon Sep 17 00:00:00 2001 From: anapnoe <124302297+anapnoe@users.noreply.github.com> Date: Tue, 21 Feb 2023 09:10:50 +0200 Subject: [PATCH] added ui hidden tabs in settings --- .../sd_theme_editor/javascript/ui_theme.js | 5 +- javascript/ui.js | 82 +++++++++++++++---- modules/shared.py | 1 + 3 files changed, 71 insertions(+), 17 deletions(-) diff --git a/extensions-builtin/sd_theme_editor/javascript/ui_theme.js b/extensions-builtin/sd_theme_editor/javascript/ui_theme.js index 4fc69b62..149675b4 100644 --- a/extensions-builtin/sd_theme_editor/javascript/ui_theme.js +++ b/extensions-builtin/sd_theme_editor/javascript/ui_theme.js @@ -217,11 +217,12 @@ function updateTheme(vars){ if(preview_styles){ preview_styles.innerHTML = ':host {'+ inner_styles +'}'; }else{ - const r = gradioApp().querySelector('style'); + + const r = gradioApp(); const style = document.createElement('style'); style.id="preview-styles"; style.innerHTML = ':host {'+ inner_styles +'}'; - r.appendChild(style); + r.appendChild(style); } const vars_textarea = gradioApp().querySelector('#theme_vars textarea'); diff --git a/javascript/ui.js b/javascript/ui.js index 64ebb9b7..fd9cfe8f 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -435,25 +435,22 @@ onUiUpdate(function(){ } quick_menu.addEventListener('click', toggleQuickMenu); + // additional ui styles let styleobj = {}; - function updateOpStyles() { - + const r = gradioApp(); + const style = document.createElement('style'); + style.id="ui-styles"; + r.appendChild(style); + + function updateOpStyles() { let ops_styles = ""; for (const key in styleobj) { ops_styles += styleobj[key]; - } - - const ui_styles = gradioApp().querySelector('ui_styles'); - if(ui_styles){ - ui_styles.innerHTML = ops_styles; - }else{ - const r = gradioApp().querySelector('style'); - const style = document.createElement('style'); - style.id="ui-styles"; - style.innerHTML = ops_styles; - r.appendChild(style); - } + } + const ui_styles = gradioApp().getElementById('ui-styles'); + ui_styles.innerHTML = ops_styles; + //console.log(ui_styles); } function imagePreviewFitMethod(value) { @@ -469,10 +466,65 @@ onUiUpdate(function(){ imagePreviewFitMethod(opts.live_preview_image_fit.toLowerCase()); - /* anapnoe ui end */ + //hidden ui tabs + let radio_html=""; + let styletabs={}; + const setting_ui_hidden_tabs = gradioApp().querySelector('#setting_ui_hidden_tabs textarea'); + setting_ui_hidden_tabs.style.display = "none"; + + function tabsHiddenNthMarkup() { + const keys = Object.keys(styletabs); + setting_ui_hidden_tabs.value = ""; + keys.forEach((key, index) => { + //console.log(`${key}: ${styletabs[key]} ${index}`); + if(styletabs[key] == true){ + styleobj[key] = "#tabs > div > button:nth-child("+(index+1)+"){display:none;}"; + setting_ui_hidden_tabs.value += key + ","; + }else{ + delete styleobj[key]; + } + }) + + const iEvent = new Event("input"); + Object.defineProperty(iEvent, "target", {value: setting_ui_hidden_tabs}) + setting_ui_hidden_tabs.dispatchEvent(iEvent); + + updateOpStyles(); + } + + gradioApp().querySelectorAll('#tabs > div > button').forEach(function (elem) { + let tabvalue = elem.innerText.replace(" ", ""); + styletabs[tabvalue] = false; + let checked = ""; + if(setting_ui_hidden_tabs.value.indexOf(tabvalue) != -1){ + styletabs[tabvalue] = true; + checked = "checked"; + } + radio_html += ''; + }) + + let div = document.createElement("div") + div.id = "hidden_radio_tabs_container" + div.classList.add("flex", "flex-wrap", "gap-2"); + div.innerHTML = radio_html; + setting_ui_hidden_tabs.parentElement.appendChild(div); + tabsHiddenNthMarkup(); + + gradioApp().querySelector("#hidden_radio_tabs_container").addEventListener('click', function (e) { + if (e.target && e.target.matches("input[type='checkbox']")) { + let tabvalue = e.target.value.replace(" ", ""); + if(e.target.checked){ + styletabs[tabvalue] = true; + }else{ + styletabs[tabvalue] = false; + } + tabsHiddenNthMarkup(); + } + }) + /* anapnoe ui end */ }) diff --git a/modules/shared.py b/modules/shared.py index 681547e8..eb8e16be 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -461,6 +461,7 @@ options_templates.update(options_section(('ui', "User interface"), { "keyedit_precision_extra": OptionInfo(0.05, "Ctrl+up/down precision when editing ", gr.Slider, {"minimum": 0.01, "maximum": 0.2, "step": 0.001}), "quicksettings": OptionInfo("sd_model_checkpoint", "Quicksettings list"), "ui_reorder": OptionInfo(", ".join(ui_reorder_categories), "txt2img/img2img UI item order"), + "ui_hidden_tabs": OptionInfo("", "Hidden Tabs"), "ui_extra_networks_tab_reorder": OptionInfo("", "Extra networks tab order"), "localization": OptionInfo("None", "Localization (requires restart)", gr.Dropdown, lambda: {"choices": ["None"] + list(localization.localizations.keys())}, refresh=lambda: localization.list_localizations(cmd_opts.localizations_dir)), }))