diff --git a/javascript/ui.js b/javascript/ui.js index e4ec8ec9..17145ca2 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -292,9 +292,16 @@ onUiUpdate(function(){ * matches any position $ matches the end */ + /* anapnoe ui start */ /* auto grow textarea */ - gradioApp().querySelectorAll('[id $= "_prompt"] textarea, [id^="setting_"] textarea').forEach(function (elem) { + function autoGrowPromptTextarea(){ + gradioApp().querySelectorAll('[id$="_prompt"] textarea').forEach(function (elem) { + elem.focus(); + }); + } + + gradioApp().querySelectorAll('[id$="_prompt"] textarea, [id^="setting_"] textarea').forEach(function (elem) { elem.style.boxSizing = 'border-box'; var offset = elem.offsetHeight - elem.clientHeight; elem.addEventListener('input', function (e) { @@ -308,10 +315,8 @@ onUiUpdate(function(){ }); }); - - /* anapnoe ui start */ + /* resizable split view */ - const resizeEvent = window.document.createEvent('UIEvents'); resizeEvent.initUIEvent('resize', true, false, window, 0); @@ -980,7 +985,52 @@ onUiUpdate(function(){ e.preventDefault(); return false; } - + let sdCheckpointModels = []; + function getSdCheckpointModels(){ + gradioApp().querySelectorAll("#quicksettings #setting_sd_model_checkpoint option").forEach(function (elem, i){ + sdCheckpointModels[i] = elem.value; + }) + } + getSdCheckpointModels(); + + function remove_overrides(){ + let checked_overrides = []; + gradioApp().querySelectorAll("#setting_ignore_overrides input").forEach(function (elem, i){ + if(elem.checked){ + checked_overrides[i] = elem.nextElementSibling.innerHTML; + } + }) + //console.log(checked_overrides); + gradioApp().querySelectorAll("[id$='2img_override_settings'] .token").forEach(function (token){ + let token_arr = token.querySelector("span").innerHTML.split(":"); + let token_name = token_arr[0]; + let token_value = token_arr[1]; + token_value = token_value.replaceAll(" ", ""); + + if(token_name.indexOf("Model hash") != -1){ + const info_label = gradioApp().querySelector("[id$='2img_override_settings'] label span"); + info_label.innerHTML = "Override settings MDL: unknown"; + for (let m=0; m"; + break; + } + } + } + if(checked_overrides.indexOf(token_name) != -1){ + token.querySelector(".token-remove").click(); + gradioApp().querySelector("[id$='2img_override_settings']").classList.add("show"); + }else{ + // maybe we add them again, for now we can select and add the removed tokens manually from the drop down + } + }) + } + gradioApp().querySelector("#setting_ignore_overrides").addEventListener('click', function (e) { + setTimeout(function() { remove_overrides(); }, 100); + }) + + function update_performant_inputs(tab){ let input_selectors = "#tab_"+ tab + " [id^='num_clone']:is(input[type='number'])"; //console.log(input_selectors); @@ -988,7 +1038,9 @@ onUiUpdate(function(){ let elem_source = elem.previousElementSibling; elem.value = elem_source.value; updateInput(elem); - }) + }) + remove_overrides(); + autoGrowPromptTextarea(); } gradioApp().querySelectorAll("#tab_pnginfo #png_2img_results button, [id$='2img_actions_column'] #paste").forEach(function (elem){ @@ -1021,6 +1073,14 @@ onUiUpdate(function(){ }else if(selectedTabItemId == "tab_img2img"){ pnginfo.querySelector('#img2img_tab').click(); } + + /* const test = gradioApp().querySelector('#txt2img_gallery_container img'); + new PanZoom( test,{ + minScale: 1.0, + maxScale: 10.0, + zoomFactor: 0.1, + zoomConstraintContent: true + }); */ //setTimeout(function() { update_performant_inputs(button_id.split("_")[0]); }, 100); } @@ -1213,6 +1273,8 @@ onUiUpdate(function(){ updateOpStyles(); + + /* anapnoe ui end */ diff --git a/modules/shared.py b/modules/shared.py index 9b788d90..8a3ed291 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -15,8 +15,7 @@ import modules.styles import modules.devices as devices from modules import localization, extensions, script_loading, errors, ui_components, shared_items from modules.paths import models_path, script_path, data_path - - +from modules.generation_parameters_copypaste import infotext_to_setting_name_mapping demo = None sd_configs_path = os.path.join(script_path, "configs") @@ -304,6 +303,7 @@ def list_samplers(): return modules.sd_samplers.all_samplers + hide_dirs = {"visible": not cmd_opts.hide_ui_dir_config} options_templates = {} @@ -414,6 +414,7 @@ options_templates.update(options_section(('sd', "Stable Diffusion"), { "CLIP_stop_at_last_layers": OptionInfo(1, "Clip skip", gr.Slider, {"minimum": 1, "maximum": 12, "step": 1}), "upcast_attn": OptionInfo(False, "Upcast cross attention layer to float32"), "sd_max_resolution": OptionInfo(2048, "Max resolution output for txt2img and img2img"), + "ignore_overrides": OptionInfo([], "Ignore Overrides", gr.CheckboxGroup, lambda: {"choices": [x[0] for x in infotext_to_setting_name_mapping]}), })) diff --git a/style.css b/style.css index 1d23a2d4..02253510 100644 --- a/style.css +++ b/style.css @@ -2302,15 +2302,33 @@ ul.list-none { max-height:unset; } +[id$="2img_override_settings"] .token{ + max-height: 30px; + min-height: 30px; + padding: 3px 10px 3px 0; +} + [id$="2img_override_settings"] .token > div{ top:1px !important; left:4px !important; } +[id$="2img_override_settings"] div > input, +[id$="2img_override_settings"] .token + div > input{ + margin: 0; + margin-right: 8px; + border-right: 1px solid var(--panel-border-color); + min-height: 32px; +} + [id$="2img_override_settings"] .token span{ position:relative; top:-2px; } +.show{ + display:block !important; +} + /* x svg icon styles */ .gr-input-label div:first-child { position: relative; @@ -2319,6 +2337,7 @@ ul.list-none { } + /**********/ /* tokens */ /**********/ @@ -3697,6 +3716,9 @@ input[type=range]::after:: { width: 100%; } +#quicksettings_overflow_container, +#theme_overflow_container, +[id$="2img_checkpoints_cards"], [id$="2img_results"], [id$="2img_settings_scroll"] {