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