diff --git a/javascript/hires_fix.js b/javascript/hires_fix.js index 01e4fa40..9fc7543a 100644 --- a/javascript/hires_fix.js +++ b/javascript/hires_fix.js @@ -12,7 +12,7 @@ function onCalcResolutionHires(enable, width, height, hr_scale, hr_resize_x, hr_ hrResizeX = gradioApp().getElementById('txt2img_hr_resize_x') hrResizeY = gradioApp().getElementById('txt2img_hr_resize_y') - gradioApp().getElementById('txt2img_hires_fix_sub-group').style.display = opts.use_old_hires_fix_width_height ? "none" : "" + gradioApp().getElementById('txt2img_hires_fix_row2').style.display = opts.use_old_hires_fix_width_height ? "none" : "block" setInactive(hrUpscaleBy, opts.use_old_hires_fix_width_height || hr_resize_x > 0 || hr_resize_y > 0) setInactive(hrResizeX, opts.use_old_hires_fix_width_height || hr_resize_x == 0) diff --git a/javascript/progressbar.js b/javascript/progressbar.js index 04294f8d..7261f9e0 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -210,11 +210,11 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre if(res.live_preview && gallery){ - var rect = gallery.getBoundingClientRect() - if(rect.width){ - livePreview.style.width = rect.width + "px" - livePreview.style.height = rect.height + "px" - } + //var rect = gallery.getBoundingClientRect() + //if(rect.width){ + //livePreview.style.width = rect.width + "px" + //livePreview.style.height = rect.height + "px" + //} var img = new Image(); img.onload = function() { diff --git a/javascript/ui.js b/javascript/ui.js index 4cf1cb43..941a16d6 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -690,8 +690,7 @@ onUiUpdate(function(){ } function navTabClicked(e){ - const idx = parseInt(e.currentTarget.getAttribute("tab-id")); - console.log(idx); + const idx = parseInt(e.currentTarget.getAttribute("tab-id")); navigate2TabItem(idx); } @@ -760,33 +759,44 @@ onUiUpdate(function(){ // add - remove quicksettings const settings_submit = gradioApp().querySelector('#settings_submit'); const quick_parent = gradioApp().querySelector("#quicksettings_overflow_container"); + const setting_quicksettings = gradioApp().querySelector('#setting_quicksettings textarea'); + function saveQuickSettings(){ + const iEvent = new Event("input"); + Object.defineProperty(iEvent, "target", {value: setting_quicksettings}) + setting_quicksettings.dispatchEvent(iEvent); + const cEvent = new Event("click");//submit + Object.defineProperty(cEvent, "target", {value: settings_submit}) + settings_submit.dispatchEvent(cEvent); + //console.log(setting_quicksettings.value); + } - function add2quickSettings(id, section, checked){ - const setting_quicksettings = gradioApp().querySelector('#setting_quicksettings textarea'); + /* + function addModelCheckpoint(){ + if(setting_quicksettings.value.indexOf("sd_model_checkpoint") === -1){ + setting_quicksettings.value += ",sd_model_checkpoint"; + } + saveQuickSettings(); + } + */ + + function add2quickSettings(id, section, checked){ let field_settings = setting_quicksettings.value.replace(" ", ""); if(checked){ field_settings += ","+id; let setting_row = gradioApp().querySelector('#row_setting_'+id); quick_parent.append(setting_row); + setting_row.classList.add("warning"); }else{ field_settings = field_settings.replaceAll(id, ","); const setting_parent = gradioApp().querySelector("#"+section+"_settings_2img_settings"); - let quick_row = gradioApp().querySelector('#row_setting_'+id); - //console.log(quick_row); + let quick_row = gradioApp().querySelector('#row_setting_'+id); setting_parent.append(quick_row); - + quick_row.classList.remove("warning"); } field_settings = field_settings.replace(/,{2,}/g, ','); setting_quicksettings.value = field_settings; - - const iEvent = new Event("input"); - Object.defineProperty(iEvent, "target", {value: setting_quicksettings}) - setting_quicksettings.dispatchEvent(iEvent); - - const cEvent = new Event("click");//submit - Object.defineProperty(cEvent, "target", {value: settings_submit}) - settings_submit.dispatchEvent(cEvent); - //settings_submit.click(); + //addModelCheckpoint(); + saveQuickSettings(); //console.log(section + " - "+ id + " - " + checked); } gradioApp().querySelectorAll('[id*="add2quick_"]').forEach(function (elem){ @@ -798,6 +808,33 @@ onUiUpdate(function(){ add2quickSettings(tid, sid, e.target.checked); }) }) + /* + gradioApp().querySelectorAll("#quicksettings_overflow_container input[type='range']").forEach(function (elem,i){ + + let clone_range = elem.cloneNode(true); + clone_range.id = elem.id+"_clone"; + let parent = elem.parentElement; + parent.append(clone_range); + elem.style.display = "none"; + + clone_range.addEventListener('change', function (e) { + let range = e.target; + let rid = range.id.split("_clone")[0]; + let n_range = range.parentElement.querySelector("#"+rid); + let n_num = range.parentElement.querySelector("input[type=number]"); + n_range.value = e.target.value; + n_num.value = e.target.value; + //const iEvent = new Event("input"); + //Object.defineProperty(iEvent, "target", {value: n_range}) + //n_range.dispatchEvent(iEvent); + }) + }) + */ + + + //addModelCheckpoint(); + + //selectCheckpoint // draggable reordable quicksettings @@ -1011,11 +1048,30 @@ function update_token_counter(button_id) { function restart_reload(){ - + let bg_color = getComputedStyle(gradioApp().querySelector(".container")).getPropertyValue('--main-bg-color'); + let primary_color = getComputedStyle(gradioApp().querySelector(".icon-info")).getPropertyValue('--primary-color'); + let panel_color = getComputedStyle(gradioApp().querySelector(".dark .gr-box")).getPropertyValue('--panel-bg-color'); - //document.html.innerHTML +=' '; - document.body.style.backgroundColor = "#1a1a1a"; - document.body.innerHTML='

Reloading...

'; + localStorage.setItem("bg_color", bg_color); + localStorage.setItem("primary_color", primary_color); + localStorage.setItem("panel_color", panel_color); + + if(localStorage.hasOwnProperty('bg_color')){ + bg_color = localStorage.getItem("bg_color"); + primary_color = localStorage.getItem("primary_color"); + panel_color = localStorage.getItem("panel_color"); + } + + document.body.style.backgroundColor = bg_color; + + let style = document.createElement('style'); + style.type = 'text/css'; + style.innerHTML = '.loader{position:absolute;top:50vh;left:50vw;height:60px;width:160px;margin:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} .circles{position:absolute;left:-5px;top:0;height:60px;width:180px} .circles span{position:absolute;top:25px;height:12px;width:12px;border-radius:12px;background-color:'+panel_color+'} .circles span.one{right:80px} .circles span.two{right:40px} .circles span.three{right:0px} .circles{-webkit-animation:animcircles 0.5s infinite linear;animation:animcircles 0.5s infinite linear} @-webkit-keyframes animcircles{0%{-webkit-transform:translate(0px,0px);transform:translate(0px,0px)}100%{-webkit-transform:translate(-40px,0px);transform:translate(-40px,0px)}} @keyframes animcircles{0%{-webkit-transform:translate(0px,0px);transform:translate(0px,0px)}100%{-webkit-transform:translate(-40px,0px);transform:translate(-40px,0px)}} .pacman{position:absolute;left:0;top:0;height:60px;width:60px} .pacman .eye{position:absolute;top:10px;left:30px;height:7px;width:7px;border-radius:7px;background-color:'+bg_color+'} .pacman span{position:absolute;top:0;left:0;height:60px;width:60px} .pacman span::before{content:"";position:absolute;left:0;height:30px;width:60px;background-color:'+primary_color+'} .pacman .top::before{top:0;border-radius:60px 60px 0px 0px} .pacman .bottom::before{bottom:0;border-radius:0px 0px 60px 60px} .pacman .left::before{bottom:0;height:60px;width:30px;border-radius:60px 0px 0px 60px} .pacman .top{-webkit-animation:animtop 0.5s infinite;animation:animtop 0.5s infinite} @-webkit-keyframes animtop{0%,100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}} @keyframes animtop{0%,100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}} .pacman .bottom{-webkit-animation:animbottom 0.5s infinite;animation:animbottom 0.5s infinite} @-webkit-keyframes animbottom{0%,100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(45deg);transform:rotate(45deg)}} @keyframes animbottom{0%,100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(45deg);transform:rotate(45deg)}}'; + + document.getElementsByTagName('head')[0].appendChild(style); + document.body.innerHTML='
'; + + setTimeout(function(){location.reload()},2000) return [] @@ -1037,3 +1093,19 @@ function selectCheckpoint(name){ } +document.addEventListener('readystatechange', function (e) { + document.body.style.display = "none"; + if(localStorage.hasOwnProperty('bg_color')){ + document.getElementsByTagName("html")[0].style.backgroundColor = localStorage.getItem("bg_color"); + document.body.style.backgroundColor = localStorage.getItem("bg_color"); + } +}) + +window.onload = function() { + //document.getElementsByTagName("html")[0].style.backgroundColor = localStorage.getItem("bg_color"); + //document.body.style.backgroundColor = localStorage.getItem("bg_color"); + + //document.body.style.display = "none"; + setTimeout(function(){document.body.style.display = "block";},100) + +} diff --git a/modules/generation_parameters_copypaste.py b/modules/generation_parameters_copypaste.py index 89dc23bf..cbab1555 100644 --- a/modules/generation_parameters_copypaste.py +++ b/modules/generation_parameters_copypaste.py @@ -374,7 +374,7 @@ def connect_paste(button, paste_fields, input_comp, override_settings_component, v = params.get(param_name, None) if v is None: continue - + if setting_name == "sd_model_checkpoint" and shared.opts.disable_weights_auto_swap: continue @@ -384,7 +384,7 @@ def connect_paste(button, paste_fields, input_comp, override_settings_component, if v == current_value: continue - vals[param_name] = v + vals[param_name] = v vals_pairs = [f"{k}: {v}" for k, v in vals.items()] diff --git a/modules/ui.py b/modules/ui.py index e5a6d53d..2d06673c 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -554,7 +554,7 @@ def create_ui(): elif category == "hires_fix": with FormGroup(visible=False, elem_id="txt2img_hires_fix_sub-group") as hr_options: #with FormRow(elem_id="txt2img_hires_fix_row1", variant="compact"): - with gr.Row(): + with gr.Row(elem_id="txt2img_hires_fix_row1"): hr_upscaler = gr.Dropdown(label="Upscaler", elem_id="txt2img_hr_upscaler", choices=[*shared.latent_upscale_modes, *[x.name for x in shared.sd_upscalers]], value=shared.latent_upscale_default_mode) hr_final_resolution = FormHTML(value="", elem_id="txtimg_hr_finalres", label="Upscaled resolution", interactive=False) @@ -564,7 +564,7 @@ def create_ui(): denoising_strength = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label='Denoising strength', value=0.7, elem_id="txt2img_denoising_strength") #with FormRow(elem_id="txt2img_hires_fix_row2", variant="compact"): - with gr.Row(): + with gr.Row(elem_id="txt2img_hires_fix_row2"): hr_scale = gr.Slider(minimum=1.0, maximum=4.0, step=0.05, label="Upscale by", value=2.0, elem_id="txt2img_hr_scale") hr_resize_x = gr.Slider(minimum=0, maximum=2048, step=8, label="Resize width to", value=0, elem_id="txt2img_hr_resize_x") hr_resize_y = gr.Slider(minimum=0, maximum=2048, step=8, label="Resize height to", value=0, elem_id="txt2img_hr_resize_y") @@ -1617,7 +1617,7 @@ def create_ui(): previous_section = item.section if k in quicksettings_names and not shared.cmd_opts.freeze_settings: - quicksettings_list.append((i, k, item)) + quicksettings_list.append((i, k, item)) components.append(dummy_component) elif section_must_be_skipped: components.append(dummy_component) @@ -1718,8 +1718,8 @@ def create_ui(): with gr.Row(elem_id="quicksettings"): with gr.Row(elem_id="top_row_sd_model_checkpoint"): - component = create_setting_component("sd_model_checkpoint", "sd", is_quicksettings=True) - component_dict["sd_model_checkpoint"] = component + sd_model_checkpoint = create_setting_component("sd_model_checkpoint", "sd", is_quicksettings=True) + component_dict['sd_model_checkpoint'] = sd_model_checkpoint with gr.Column(elem_id="quicksettings_overflow"): with gr.Row(elem_id="quicksettings_actions"): @@ -1729,13 +1729,14 @@ def create_ui(): with gr.Column(elem_id="quicksettings_overflow_container") as qsettings_row: for i, k, item in sorted(quicksettings_list, key=lambda x: quicksettings_names.get(x[1], x[0])): if( str(k) != "sd_model_checkpoint"): - #with gr.Row(elem_id=f"quick_row_{k}") as qsettings_row: + #with gr.Row(elem_id=f"quick_row_{k}") as qsettings_row: component = create_setting_component(k, item.section[0], is_quicksettings=True) component_dict[k] = component gr.Row(elem_id="extra_networks_menu") gr.Row(elem_id="quick_menu") - parameters_copypaste.connect_paste_params_buttons() + + parameters_copypaste.connect_paste_params_buttons() with gr.Tabs(elem_id="tabs") as tabs: @@ -1764,7 +1765,7 @@ def create_ui(): for i, k, item in quicksettings_list: component = component_dict[k] - + component.change( fn=lambda value, k=k: run_settings_single(value, key=k), inputs=[component], @@ -1784,6 +1785,12 @@ def create_ui(): inputs=[component_dict['sd_model_checkpoint'], dummy_component], outputs=[component_dict['sd_model_checkpoint'], text_settings], ) + sd_model_checkpoint.change( + fn=lambda value, _: run_settings_single(value, key='sd_model_checkpoint'), + _js="function(v){ var res = desiredCheckpointName; desiredCheckpointName = ''; return [res || v, null]; }", + inputs=[component_dict['sd_model_checkpoint'], dummy_component], + outputs=[component_dict['sd_model_checkpoint'], text_settings], + ) component_keys = [k for k in opts.data_labels.keys() if k in component_dict] diff --git a/style.css b/style.css index 887664ee..49bdfa27 100644 --- a/style.css +++ b/style.css @@ -1,4 +1,4 @@ -:host{--main-bg-color:hsl(0deg 0% 10%);--primary-color:hsl(168deg 97% 41%);--input-bg-color:hsl(225deg 6% 13%);--input-border-color:hsl(214deg 5% 30%);--panel-bg-color:hsl(225deg 5% 17%);--panel-border-color:hsl(214deg 5% 30%);--panel-border-radius:0px;--subgroup-bg-color:hsl(0deg 0% 10%);--subgroup-input-bg-color:hsl(225deg 6% 13%);--subgroup-input-border-color:hsl(214deg 5% 30%);--subpanel-bg-color:hsl(220deg 4% 14%);--subpanel-border-color:hsl(214deg 5% 30%);--subpanel-border-radius:8px;--textarea-focus-color:hsl(210deg 3% 36%);--input-focus-color:hsl(168deg 97% 41%);--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--cancel-color:hsl(0deg 84% 60%);--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-color:hsl(168deg 97% 41%);--icon-hover-color:hsl(0deg 0% 10%);--icon-size:22px;--nav-bg-color:hsl(0deg 0% 4%);--nav-color:hsl(210deg 4% 80%);--nav-hover-color:hsl(0deg 0% 4%);--input-color:hsl(210deg 4% 80%);--label-color:hsl(210deg 4% 80%);--subgroup-input-color:hsl(0deg 0% 0%);--placeholder-color:hsl(214deg 5% 30%);--text-color:hsl(210deg 4% 80%);--mobile-outside-gap-size:2px;--mobile-inside-padding-size:2px;--frame-bg-color:hsl(225deg 6% 13%);}/*BREAKPOINT_CSS_CONTENT*/ +:host{--main-bg-color:hsl(195deg 22% 8%);--primary-color:hsl(159deg 96% 55%);--input-bg-color:hsl(202deg 25% 12%);--input-border-color:hsl(200deg 24% 32%);--panel-bg-color:hsl(200deg 24% 20%);--panel-border-color:hsl(200deg 24% 32%);--panel-border-radius:4px;--subgroup-bg-color:hsl(195deg 22% 8%);--subgroup-input-bg-color:hsl(200deg 24% 8%);--subgroup-input-border-color:hsl(200deg 24% 32%);--subpanel-bg-color:hsl(202deg 25% 12%);--subpanel-border-color:hsl(200deg 24% 32%);--subpanel-border-radius:8px;--textarea-focus-color:hsl(152deg 3% 36%);--input-focus-color:hsl(159deg 96% 55%);--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--cancel-color:hsl(200deg 24% 32%);--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-color:hsl(159deg 96% 55%);--icon-hover-color:hsl(195deg 22% 8%);--icon-size:22px;--nav-bg-color:hsl(194deg 24% 4%);--nav-color:hsl(201deg 24% 77%);--nav-hover-color:hsl(194deg 24% 4%);--input-color:hsl(159deg 96% 55%);--label-color:hsl(201deg 24% 77%);--subgroup-input-color:hsl(302deg 100% 100%);--placeholder-color:hsl(200deg 24% 32%);--text-color:hsl(201deg 24% 77%);--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px;--frame-bg-color:hsl(200deg 25% 12%);}/*BREAKPOINT_CSS_CONTENT*/ /* Theme Name: DarkUX @@ -986,6 +986,13 @@ div.svelte-10ogue4 #script-list { } */ +.warning{ + filter: sepia(100%) saturate(100%) brightness(70%) hue-rotate(320deg); +} + +.output-html { + min-height: unset; +} .dark .\!text-gray-700, .dark .\!text-gray-800, @@ -993,7 +1000,7 @@ div.svelte-10ogue4 #script-list { .dark .text-gray-800, .dark .text-gray-900 { align-items: baseline; - margin-top: 1px; + margin-top: 0px; } .dark .gr-input { @@ -1084,8 +1091,8 @@ label.bg-white { .gr-box>div>div>input.gr-text-input { position: absolute; - right: calc(var(--inside-padding-size) + 1px); - top: calc(var(--inside-padding-size) + 1px); + right: calc(var(--inside-padding-size) + 0px); + top: calc(var(--inside-padding-size) + 0px); z-index: 200; border-radius: 0; width: 64px; @@ -1865,7 +1872,7 @@ canvas[key=mask] { gap:0 !important; } -#settings_sd #row_setting_sd_model_checkpoint, +/*#settings_sd #row_setting_sd_model_checkpoint,*/ #top_row_sd_model_checkpoint > div > div:nth-child(2){ display:none; } @@ -2007,7 +2014,7 @@ canvas[key=mask] { top: var(--outside-gap-size); left: var(--outside-gap-size); right: 0; - bottom: 60px; + bottom: 0; pointer-events: all; overflow: hidden !important; /*background-color: transparent !important;*/ @@ -3208,10 +3215,16 @@ ul.list-none { .livePreview { width: calc(100% - (var(--outside-gap-size) * 2)) !important; max-height: unset !important; + bottom:60px; } div.svelte-10ogue4>*:first-child.livePreview { - height: calc(100% - 60px - var(--outside-gap-size) - 2px) !important; + /*height: calc(100% - 60px - var(--outside-gap-size) - 2px) !important;*/ + height: auto !important; + } + + div.svelte-10ogue4>*:first-child.livePreview > img { + height: auto !important; } [id$="png_2img_results"]{ @@ -3221,6 +3234,7 @@ ul.list-none { [id$="settings_2img_settings"] { max-height: none; } + #nav_menu_header_tabs, #tab_extensions td, #tab_extensions th { @@ -3232,7 +3246,7 @@ ul.list-none { #tab_extensions th:first-child, #tab_extensions th:last-child { - display:table-cell; + display:table-cell !important; } #quicksettings { @@ -3515,6 +3529,9 @@ li.coffee-circle { .tooltip-html a{ color: var(--primary-color); } + + + /**********************/ /* Sliders Scrollbars */ /**********************/ @@ -3657,4 +3674,6 @@ input[type=range]::-ms-fill-upper { } + + /*BREAKPOINT_CSS_CONTENT*/ \ No newline at end of file