From 6d1c01c9557577573df84489c08581c405e7bdc6 Mon Sep 17 00:00:00 2001 From: DepFA <35278260+dfaker@users.noreply.github.com> Date: Thu, 22 Sep 2022 17:26:26 +0100 Subject: Add section splitting to settings ui --- modules/ui.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'modules/ui.py') diff --git a/modules/ui.py b/modules/ui.py index 8925fbcb..0d9f4c09 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -9,6 +9,7 @@ import random import sys import time import traceback +import itertools import numpy as np import torch @@ -842,14 +843,22 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo): settings_submit = gr.Button(value="Apply settings", variant='primary') result = gr.HTML() - with gr.Row(elem_id="settings").style(equal_height=False): - for colno in range(settings_cols): - with gr.Column(variant='panel'): - for rowno in range(items_per_col): - index = rowno + colno * items_per_col + sortedKeys = sorted([(opts.data_labels[key].section,key) for key in keys],key=lambda x:x[0]) + groupedKeys = itertools.groupby(sortedKeys,key=lambda x:x[0]) - if index < len(keys): - components.append(create_setting_component(keys[index])) + for (sectionNumber,sectionName),sectionGroup in groupedKeys: + with gr.Row(elem_id="settings_header_{}".format(sectionNumber)).style(equal_height=False): + gr.HTML(elem_id="settings_header_text_{}".format(sectionNumber), value='

{}

'.format(sectionName)) + + with gr.Row(elem_id="settings_{}".format(sectionNumber)).style(equal_height=False): + columnLookup = {} + for colNum,element in zip(itertools.cycle(range(settings_cols)),sectionGroup): + columnLookup.setdefault(colNum,[]).append(element) + + for colno,elements in sorted(columnLookup.items()): + with gr.Column(variant='panel'): + for _,keyElement in elements: + components.append(create_setting_component(keyElement)) settings_submit.click( fn=run_settings, -- cgit v1.2.3 From 77cf346d9356b676abb1d101eb255b457466914a Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Thu, 22 Sep 2022 21:32:44 +0300 Subject: settings categories split to columns, remade categories --- modules/ui.py | 55 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 23 deletions(-) (limited to 'modules/ui.py') diff --git a/modules/ui.py b/modules/ui.py index 0d9f4c09..036f2ed3 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -9,7 +9,6 @@ import random import sys import time import traceback -import itertools import numpy as np import torch @@ -23,7 +22,6 @@ from modules.paths import script_path from modules.shared import opts, cmd_opts import modules.shared as shared from modules.sd_samplers import samplers, samplers_for_img2img -import modules.realesrgan_model as realesrgan import modules.ldsr_model import modules.scripts import modules.gfpgan_model @@ -815,9 +813,6 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo): return comp(label=info.label, value=fun, **(args or {})) components = [] - keys = list(opts.data_labels.keys()) - settings_cols = 3 - items_per_col = math.ceil(len(keys) / settings_cols) def run_settings(*args): up = [] @@ -843,28 +838,33 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo): settings_submit = gr.Button(value="Apply settings", variant='primary') result = gr.HTML() - sortedKeys = sorted([(opts.data_labels[key].section,key) for key in keys],key=lambda x:x[0]) - groupedKeys = itertools.groupby(sortedKeys,key=lambda x:x[0]) + settings_cols = 3 + items_per_col = int(len(opts.data_labels) * 0.9 / settings_cols) - for (sectionNumber,sectionName),sectionGroup in groupedKeys: - with gr.Row(elem_id="settings_header_{}".format(sectionNumber)).style(equal_height=False): - gr.HTML(elem_id="settings_header_text_{}".format(sectionNumber), value='

{}

'.format(sectionName)) + cols_displayed = 0 + items_displayed = 0 + previous_section = None + column = None + with gr.Row(elem_id="settings").style(equal_height=False): + for i, (k, item) in enumerate(opts.data_labels.items()): - with gr.Row(elem_id="settings_{}".format(sectionNumber)).style(equal_height=False): - columnLookup = {} - for colNum,element in zip(itertools.cycle(range(settings_cols)),sectionGroup): - columnLookup.setdefault(colNum,[]).append(element) + if previous_section != item.section: + if cols_displayed < settings_cols and (items_displayed >= items_per_col or previous_section is None): + if column is not None: + column.__exit__() - for colno,elements in sorted(columnLookup.items()): - with gr.Column(variant='panel'): - for _,keyElement in elements: - components.append(create_setting_component(keyElement)) + column = gr.Column(variant='panel') + column.__enter__() - settings_submit.click( - fn=run_settings, - inputs=components, - outputs=[result] - ) + items_displayed = 0 + cols_displayed += 1 + + previous_section = item.section + + gr.HTML(elem_id="settings_header_text_{}".format(item.section[0]), value='

{}

'.format(item.section[1])) + + components.append(create_setting_component(k)) + items_displayed += 1 request_notifications = gr.Button(value='Request browser notifications', elem_id="request_notifications") request_notifications.click( @@ -874,6 +874,15 @@ def create_ui(txt2img, img2img, run_extras, run_pnginfo): _js='function(){}' ) + if column is not None: + column.__exit__() + + settings_submit.click( + fn=run_settings, + inputs=components, + outputs=[result] + ) + interfaces = [ (txt2img_interface, "txt2img", "txt2img"), (img2img_interface, "img2img", "img2img"), -- cgit v1.2.3