UI tweak to column select

This commit is contained in:
Lincoln Stein 2023-08-24 19:54:41 -04:00 committed by Kent Keirsey
parent f9d2bcce04
commit 8114fc7bc2
2 changed files with 14 additions and 8 deletions

View File

@ -51,6 +51,7 @@ from invokeai.frontend.install.model_install import addModelsForm, process_and_e
# TO DO - Move all the frontend code into invokeai.frontend.install # TO DO - Move all the frontend code into invokeai.frontend.install
from invokeai.frontend.install.widgets import ( from invokeai.frontend.install.widgets import (
SingleSelectColumns, SingleSelectColumns,
SingleSelectColumnsSimple,
MultiSelectColumns, MultiSelectColumns,
CenteredButtonPress, CenteredButtonPress,
FileBox, FileBox,
@ -384,7 +385,7 @@ Use cursor arrows to make a checkbox selection, and space to toggle.
) )
self.nextrely -= 2 self.nextrely -= 2
self.precision = self.add_widget_intelligent( self.precision = self.add_widget_intelligent(
SingleSelectColumns, SingleSelectColumnsSimple,
columns=len(PRECISION_CHOICES), columns=len(PRECISION_CHOICES),
name="Precision", name="Precision",
values=PRECISION_CHOICES, values=PRECISION_CHOICES,
@ -405,7 +406,7 @@ Use cursor arrows to make a checkbox selection, and space to toggle.
) )
self.nextrely -= 2 self.nextrely -= 2
self.device = self.add_widget_intelligent( self.device = self.add_widget_intelligent(
SingleSelectColumns, SingleSelectColumnsSimple,
columns=len(DEVICE_CHOICES), columns=len(DEVICE_CHOICES),
values=DEVICE_CHOICES, values=DEVICE_CHOICES,
value=DEVICE_CHOICES.index(device), value=DEVICE_CHOICES.index(device),
@ -425,7 +426,7 @@ Use cursor arrows to make a checkbox selection, and space to toggle.
) )
self.nextrely -= 2 self.nextrely -= 2
self.attention_type = self.add_widget_intelligent( self.attention_type = self.add_widget_intelligent(
SingleSelectColumns, SingleSelectColumnsSimple,
columns=len(ATTENTION_CHOICES), columns=len(ATTENTION_CHOICES),
values=ATTENTION_CHOICES, values=ATTENTION_CHOICES,
value=ATTENTION_CHOICES.index(attention_type), value=ATTENTION_CHOICES.index(attention_type),
@ -447,7 +448,7 @@ Use cursor arrows to make a checkbox selection, and space to toggle.
) )
self.nextrely -= 2 self.nextrely -= 2
self.attention_slice_size = self.add_widget_intelligent( self.attention_slice_size = self.add_widget_intelligent(
SingleSelectColumns, SingleSelectColumnsSimple,
columns=len(ATTENTION_SLICE_CHOICES), columns=len(ATTENTION_SLICE_CHOICES),
values=ATTENTION_SLICE_CHOICES, values=ATTENTION_SLICE_CHOICES,
value=ATTENTION_SLICE_CHOICES.index(attention_slice_size), value=ATTENTION_SLICE_CHOICES.index(attention_slice_size),

View File

@ -177,6 +177,8 @@ class FloatTitleSlider(npyscreen.TitleText):
class SelectColumnBase: class SelectColumnBase:
"""Base class for selection widget arranged in columns."""
def make_contained_widgets(self): def make_contained_widgets(self):
self._my_widgets = [] self._my_widgets = []
column_width = self.width // self.columns column_width = self.width // self.columns
@ -253,6 +255,7 @@ class MultiSelectColumns(SelectColumnBase, npyscreen.MultiSelect):
class SingleSelectWithChanged(npyscreen.SelectOne): class SingleSelectWithChanged(npyscreen.SelectOne):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.on_changed = None
def h_select(self, ch): def h_select(self, ch):
super().h_select(ch) super().h_select(ch)
@ -260,7 +263,7 @@ class SingleSelectWithChanged(npyscreen.SelectOne):
self.on_changed(self.value) self.on_changed(self.value)
class SingleSelectColumns(SelectColumnBase, SingleSelectWithChanged): class SingleSelectColumnsSimple(SelectColumnBase, SingleSelectWithChanged):
def __init__(self, screen, columns: int = 1, values: list = [], **keywords): def __init__(self, screen, columns: int = 1, values: list = [], **keywords):
self.columns = columns self.columns = columns
self.value_cnt = len(values) self.value_cnt = len(values)
@ -271,9 +274,6 @@ class SingleSelectColumns(SelectColumnBase, SingleSelectWithChanged):
def when_value_edited(self): def when_value_edited(self):
self.h_select(self.cursor_line) self.h_select(self.cursor_line)
def when_cursor_moved(self):
self.h_select(self.cursor_line)
def h_cursor_line_right(self, ch): def h_cursor_line_right(self, ch):
self.h_exit_down("bye bye") self.h_exit_down("bye bye")
@ -281,6 +281,11 @@ class SingleSelectColumns(SelectColumnBase, SingleSelectWithChanged):
self.h_exit_up("bye bye") self.h_exit_up("bye bye")
class SingleSelectColumns(SingleSelectColumnsSimple):
def when_cursor_moved(self):
self.h_select(self.cursor_line)
class TextBoxInner(npyscreen.MultiLineEdit): class TextBoxInner(npyscreen.MultiLineEdit):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)