-
+
-
Scan for LoRA
- -
+
-
@@ -108,7 +61,7 @@
0
0
583
- 719
+ 665
@@ -134,16 +87,200 @@
- -
-
-
- Qt::Orientation::Horizontal
+
-
+
+
+ 10
-
+
+ 0
+
+
+ 0
+
+
+ 10
+
+
+ 10
+
+ -
+
+
+ 10
+
+
-
+
+
+
+ true
+
+
+
+ Lora
+
+
+
+ -
+
+
+ Qt::Orientation::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Apply Lora
+
+
+
+
+
+ -
+
+
+ Qt::Orientation::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ 0
+
+
+ 100
+
+
+ 0.000000000000000
+
+
+ 1.000000000000000
+
+
+ true
+
+
+ generator_settings.lora_scale
+
+
+ 1
+
+
+ 5
+
+
+ 0.010000000000000
+
+
+ 0.100000000000000
+
+
+ Scale
+
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+
+ 10
+
+
-
+
+
+ Search
+
+
+
+ -
+
+
+
+ 9
+
+
+
+ Toggle all
+
+
+ false
+
+
+ false
+
+
+
+
+
+ -
+
+
+ Qt::Orientation::Horizontal
+
+
+
+
-
+
+
+ SliderWidget
+ QWidget
+ airunner/widgets/slider/slider_widget
+ 1
+
+
+ LoadingWidget
+ QWidget
+ airunner/widgets/llm/loading_widget
+ 1
+
+
+
+
+
toggleAllLora
@@ -152,8 +289,8 @@
toggle_all(bool)
- 547
- 17
+ 562
+ 91
52
@@ -168,8 +305,8 @@
search_text_changed(QString)
- 190
- 20
+ 192
+ 92
277
@@ -185,7 +322,7 @@
399
- 752
+ 830
486
@@ -193,10 +330,27 @@
+
+ apply_lora_button
+ clicked()
+ lora_container
+ apply_lora()
+
+
+ 532
+ 17
+
+
+ 474
+ -7
+
+
+
toggle_all(bool)
search_text_changed(QString)
scan_for_lora()
+ apply_lora()
diff --git a/src/airunner/widgets/lora/templates/lora_container_ui.py b/src/airunner/widgets/lora/templates/lora_container_ui.py
index eb19f5087..6aa62b495 100644
--- a/src/airunner/widgets/lora/templates/lora_container_ui.py
+++ b/src/airunner/widgets/lora/templates/lora_container_ui.py
@@ -17,7 +17,12 @@
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QCheckBox, QFrame, QGridLayout,
QHBoxLayout, QLabel, QLineEdit, QPushButton,
- QScrollArea, QSizePolicy, QWidget)
+ QScrollArea, QSizePolicy, QSpacerItem, QVBoxLayout,
+ QWidget)
+
+from airunner.widgets.llm.loading_widget import LoadingWidget
+from airunner.widgets.slider.slider_widget import SliderWidget
+import airunner.resources_light_rc
class Ui_lora_container(object):
def setupUi(self, lora_container):
@@ -29,50 +34,22 @@ def setupUi(self, lora_container):
self.gridLayout.setHorizontalSpacing(0)
self.gridLayout.setVerticalSpacing(10)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
- self.label = QLabel(lora_container)
- self.label.setObjectName(u"label")
- font = QFont()
- font.setBold(True)
- self.label.setFont(font)
-
- self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
-
- self.horizontalLayout = QHBoxLayout()
- self.horizontalLayout.setSpacing(10)
- self.horizontalLayout.setObjectName(u"horizontalLayout")
- self.horizontalLayout.setContentsMargins(-1, -1, 10, -1)
- self.lineEdit = QLineEdit(lora_container)
- self.lineEdit.setObjectName(u"lineEdit")
-
- self.horizontalLayout.addWidget(self.lineEdit)
-
- self.toggleAllLora = QCheckBox(lora_container)
- self.toggleAllLora.setObjectName(u"toggleAllLora")
- font1 = QFont()
- font1.setPointSize(9)
- self.toggleAllLora.setFont(font1)
- self.toggleAllLora.setChecked(False)
- self.toggleAllLora.setTristate(False)
-
- self.horizontalLayout.addWidget(self.toggleAllLora)
-
-
- self.gridLayout.addLayout(self.horizontalLayout, 2, 0, 1, 1)
-
self.pushButton = QPushButton(lora_container)
self.pushButton.setObjectName(u"pushButton")
- self.gridLayout.addWidget(self.pushButton, 4, 0, 1, 1)
+ self.gridLayout.addWidget(self.pushButton, 8, 0, 1, 1)
self.lora_scroll_area = QScrollArea(lora_container)
self.lora_scroll_area.setObjectName(u"lora_scroll_area")
- self.lora_scroll_area.setFont(font1)
+ font = QFont()
+ font.setPointSize(9)
+ self.lora_scroll_area.setFont(font)
self.lora_scroll_area.setFrameShape(QFrame.Shape.NoFrame)
self.lora_scroll_area.setFrameShadow(QFrame.Shadow.Plain)
self.lora_scroll_area.setWidgetResizable(True)
self.scrollAreaWidgetContents = QWidget()
self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
- self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 583, 719))
+ self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 583, 665))
self.gridLayout_2 = QGridLayout(self.scrollAreaWidgetContents)
self.gridLayout_2.setObjectName(u"gridLayout_2")
self.gridLayout_2.setHorizontalSpacing(0)
@@ -80,29 +57,118 @@ def setupUi(self, lora_container):
self.gridLayout_2.setContentsMargins(0, 0, 10, 0)
self.lora_scroll_area.setWidget(self.scrollAreaWidgetContents)
- self.gridLayout.addWidget(self.lora_scroll_area, 3, 0, 1, 1)
+ self.gridLayout.addWidget(self.lora_scroll_area, 7, 0, 1, 1)
+
+ self.verticalLayout = QVBoxLayout()
+ self.verticalLayout.setSpacing(10)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.verticalLayout.setContentsMargins(0, 0, 10, 10)
+ self.horizontalLayout_2 = QHBoxLayout()
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.horizontalLayout_2.setContentsMargins(-1, -1, 10, -1)
+ self.label = QLabel(lora_container)
+ self.label.setObjectName(u"label")
+ font1 = QFont()
+ font1.setBold(True)
+ self.label.setFont(font1)
+
+ self.horizontalLayout_2.addWidget(self.label)
+
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_2.addItem(self.horizontalSpacer)
+
+ self.loading_icon = LoadingWidget(lora_container)
+ self.loading_icon.setObjectName(u"loading_icon")
+ sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.loading_icon.sizePolicy().hasHeightForWidth())
+ self.loading_icon.setSizePolicy(sizePolicy)
+ self.loading_icon.setMinimumSize(QSize(0, 0))
+
+ self.horizontalLayout_2.addWidget(self.loading_icon)
+
+ self.apply_lora_button = QPushButton(lora_container)
+ self.apply_lora_button.setObjectName(u"apply_lora_button")
+
+ self.horizontalLayout_2.addWidget(self.apply_lora_button)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout_2)
self.line = QFrame(lora_container)
self.line.setObjectName(u"line")
self.line.setFrameShape(QFrame.Shape.HLine)
self.line.setFrameShadow(QFrame.Shadow.Sunken)
- self.gridLayout.addWidget(self.line, 1, 0, 1, 1)
+ self.verticalLayout.addWidget(self.line)
+
+ self.lora_scale_slider = SliderWidget(lora_container)
+ self.lora_scale_slider.setObjectName(u"lora_scale_slider")
+ sizePolicy.setHeightForWidth(self.lora_scale_slider.sizePolicy().hasHeightForWidth())
+ self.lora_scale_slider.setSizePolicy(sizePolicy)
+ self.lora_scale_slider.setMinimumSize(QSize(0, 0))
+ self.lora_scale_slider.setProperty("slider_minimum", 0)
+ self.lora_scale_slider.setProperty("slider_maximum", 100)
+ self.lora_scale_slider.setProperty("spinbox_minimum", 0.000000000000000)
+ self.lora_scale_slider.setProperty("spinbox_maximum", 1.000000000000000)
+ self.lora_scale_slider.setProperty("display_as_float", True)
+ self.lora_scale_slider.setProperty("slider_single_step", 1)
+ self.lora_scale_slider.setProperty("slider_page_step", 5)
+ self.lora_scale_slider.setProperty("spinbox_single_step", 0.010000000000000)
+ self.lora_scale_slider.setProperty("spinbox_page_step", 0.100000000000000)
+
+ self.verticalLayout.addWidget(self.lora_scale_slider)
+
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setSpacing(10)
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.horizontalLayout.setContentsMargins(0, -1, 10, -1)
+ self.lineEdit = QLineEdit(lora_container)
+ self.lineEdit.setObjectName(u"lineEdit")
+
+ self.horizontalLayout.addWidget(self.lineEdit)
+
+ self.toggleAllLora = QCheckBox(lora_container)
+ self.toggleAllLora.setObjectName(u"toggleAllLora")
+ self.toggleAllLora.setFont(font)
+ self.toggleAllLora.setChecked(False)
+ self.toggleAllLora.setTristate(False)
+
+ self.horizontalLayout.addWidget(self.toggleAllLora)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout)
+
+ self.line_2 = QFrame(lora_container)
+ self.line_2.setObjectName(u"line_2")
+ self.line_2.setFrameShape(QFrame.Shape.HLine)
+ self.line_2.setFrameShadow(QFrame.Shadow.Sunken)
+
+ self.verticalLayout.addWidget(self.line_2)
+
+
+ self.gridLayout.addLayout(self.verticalLayout, 2, 0, 1, 1)
self.retranslateUi(lora_container)
self.toggleAllLora.toggled.connect(lora_container.toggle_all)
self.lineEdit.textEdited.connect(lora_container.search_text_changed)
self.pushButton.clicked.connect(lora_container.scan_for_lora)
+ self.apply_lora_button.clicked.connect(lora_container.apply_lora)
QMetaObject.connectSlotsByName(lora_container)
# setupUi
def retranslateUi(self, lora_container):
lora_container.setWindowTitle(QCoreApplication.translate("lora_container", u"Form", None))
+ self.pushButton.setText(QCoreApplication.translate("lora_container", u"Scan for LoRA", None))
self.label.setText(QCoreApplication.translate("lora_container", u"Lora", None))
+ self.apply_lora_button.setText(QCoreApplication.translate("lora_container", u"Apply Lora", None))
+ self.lora_scale_slider.setProperty("settings_property", QCoreApplication.translate("lora_container", u"generator_settings.lora_scale", None))
+ self.lora_scale_slider.setProperty("label_text", QCoreApplication.translate("lora_container", u"Scale", None))
self.lineEdit.setPlaceholderText(QCoreApplication.translate("lora_container", u"Search", None))
self.toggleAllLora.setText(QCoreApplication.translate("lora_container", u"Toggle all", None))
- self.pushButton.setText(QCoreApplication.translate("lora_container", u"Scan for LoRA", None))
# retranslateUi
diff --git a/src/airunner/widgets/lora/templates/lora_ui.py b/src/airunner/widgets/lora/templates/lora_ui.py
index 446d8bcf4..c0a643f39 100644
--- a/src/airunner/widgets/lora/templates/lora_ui.py
+++ b/src/airunner/widgets/lora/templates/lora_ui.py
@@ -15,15 +15,17 @@
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
-from PySide6.QtWidgets import (QApplication, QGridLayout, QGroupBox, QLineEdit,
+from PySide6.QtWidgets import (QApplication, QCheckBox, QGridLayout, QLineEdit,
QPushButton, QSizePolicy, QWidget)
+
+from airunner.widgets.slider.slider_widget import SliderWidget
import airunner.resources_light_rc
class Ui_lora(object):
def setupUi(self, lora):
if not lora.objectName():
lora.setObjectName(u"lora")
- lora.resize(437, 49)
+ lora.resize(518, 80)
sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -40,19 +42,24 @@ def setupUi(self, lora):
self.gridLayout = QGridLayout()
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setHorizontalSpacing(0)
- self.enabledCheckbox = QGroupBox(lora)
- self.enabledCheckbox.setObjectName(u"enabledCheckbox")
- self.enabledCheckbox.setCheckable(True)
- self.gridLayout_3 = QGridLayout(self.enabledCheckbox)
- self.gridLayout_3.setSpacing(0)
+ self.lora_container = QWidget(lora)
+ self.lora_container.setObjectName(u"lora_container")
+ self.gridLayout_3 = QGridLayout(self.lora_container)
self.gridLayout_3.setObjectName(u"gridLayout_3")
+ self.gridLayout_3.setHorizontalSpacing(5)
+ self.gridLayout_3.setVerticalSpacing(10)
self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
- self.trigger_word_edit = QLineEdit(self.enabledCheckbox)
+ self.enabledCheckbox = QCheckBox(self.lora_container)
+ self.enabledCheckbox.setObjectName(u"enabledCheckbox")
+
+ self.gridLayout_3.addWidget(self.enabledCheckbox, 0, 0, 1, 1)
+
+ self.trigger_word_edit = QLineEdit(self.lora_container)
self.trigger_word_edit.setObjectName(u"trigger_word_edit")
- self.gridLayout_3.addWidget(self.trigger_word_edit, 0, 0, 1, 1)
+ self.gridLayout_3.addWidget(self.trigger_word_edit, 2, 0, 1, 1)
- self.delete_button = QPushButton(self.enabledCheckbox)
+ self.delete_button = QPushButton(self.lora_container)
self.delete_button.setObjectName(u"delete_button")
self.delete_button.setMinimumSize(QSize(24, 24))
self.delete_button.setMaximumSize(QSize(24, 24))
@@ -61,10 +68,28 @@ def setupUi(self, lora):
icon.addFile(u":/icons/light/recycle-bin-line-icon.svg", QSize(), QIcon.Normal, QIcon.Off)
self.delete_button.setIcon(icon)
- self.gridLayout_3.addWidget(self.delete_button, 0, 1, 1, 1)
+ self.gridLayout_3.addWidget(self.delete_button, 2, 2, 1, 1)
+
+ self.scale_slider = SliderWidget(self.lora_container)
+ self.scale_slider.setObjectName(u"scale_slider")
+ sizePolicy.setHeightForWidth(self.scale_slider.sizePolicy().hasHeightForWidth())
+ self.scale_slider.setSizePolicy(sizePolicy)
+ self.scale_slider.setMinimumSize(QSize(0, 0))
+ self.scale_slider.setProperty("slider_minimum", 0)
+ self.scale_slider.setProperty("slider_maximum", 100)
+ self.scale_slider.setProperty("spinbox_minimum", 0.000000000000000)
+ self.scale_slider.setProperty("spinbox_maximum", 1.000000000000000)
+ self.scale_slider.setProperty("display_as_float", True)
+ self.scale_slider.setProperty("slider_single_step", 1)
+ self.scale_slider.setProperty("slider_page_step", 5)
+ self.scale_slider.setProperty("spinbox_single_step", 0.010000000000000)
+ self.scale_slider.setProperty("spinbox_page_step", 0.100000000000000)
+ self.scale_slider.setProperty("table_id", 0)
+
+ self.gridLayout_3.addWidget(self.scale_slider, 1, 0, 1, 3)
- self.gridLayout.addWidget(self.enabledCheckbox, 0, 0, 2, 1)
+ self.gridLayout.addWidget(self.lora_container, 0, 0, 2, 1)
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
@@ -73,15 +98,13 @@ def setupUi(self, lora):
self.retranslateUi(lora)
self.trigger_word_edit.textChanged.connect(lora.action_changed_trigger_words)
self.enabledCheckbox.toggled.connect(lora.action_toggled_lora_enabled)
- self.trigger_word_edit.textEdited.connect(lora.action_text_changed_trigger_word)
- self.delete_button.clicked.connect(lora.action_clicked_button_deleted)
QMetaObject.connectSlotsByName(lora)
# setupUi
def retranslateUi(self, lora):
lora.setWindowTitle(QCoreApplication.translate("lora", u"Form", None))
- self.enabledCheckbox.setTitle(QCoreApplication.translate("lora", u"LoRA name here", None))
+ self.enabledCheckbox.setText(QCoreApplication.translate("lora", u"enabledCheckbox", None))
#if QT_CONFIG(tooltip)
self.trigger_word_edit.setToolTip(QCoreApplication.translate("lora", u" Some LoRA require a trigger word to activate.
Make a note here for your records.
", None))
#endif // QT_CONFIG(tooltip)
@@ -90,5 +113,7 @@ def retranslateUi(self, lora):
self.delete_button.setToolTip(QCoreApplication.translate("lora", u"Delete model", None))
#endif // QT_CONFIG(tooltip)
self.delete_button.setText("")
+ self.scale_slider.setProperty("settings_property", QCoreApplication.translate("lora", u"lora.scale", None))
+ self.scale_slider.setProperty("label_text", QCoreApplication.translate("lora", u"Scale", None))
# retranslateUi
diff --git a/src/airunner/widgets/slider/slider_widget.py b/src/airunner/widgets/slider/slider_widget.py
index be882a0fb..227947d34 100644
--- a/src/airunner/widgets/slider/slider_widget.py
+++ b/src/airunner/widgets/slider/slider_widget.py
@@ -1,6 +1,8 @@
from typing import Any, List
from PySide6.QtCore import Slot
from PySide6.QtWidgets import QDoubleSpinBox
+
+from airunner.aihandler.models.settings_models import Lora
from airunner.enums import SignalCode
from airunner.widgets.base_widget import BaseWidget
from airunner.widgets.slider.templates.slider_ui import Ui_slider_widget
@@ -15,8 +17,10 @@ class SliderWidget(BaseWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.settings_property = None
- self.register(SignalCode.APPLICATION_MAIN_WINDOW_LOADED_SIGNAL, self.on_main_window_loaded_signal)
- self.register(SignalCode.WINDOW_LOADED_SIGNAL, self.on_main_window_loaded_signal)
+ self.table_id = None
+ self.table_name = None
+ self.table_column = None
+ self.table_item = None
self.ui.slider.sliderReleased.connect(self.handle_slider_release) # Connect valueChanged signal
self.ui.slider_spinbox.valueChanged.connect(self.handle_spinbox_change) # Connect valueChanged signal
self._callback = None
@@ -102,11 +106,9 @@ def spinbox_minimum(self):
def spinbox_minimum(self, val):
self.ui.slider_spinbox.setMinimum(val)
- def on_main_window_loaded_signal(self):
- try:
- self.init()
- except RuntimeError as e:
- self.logger.error(f"Error initializing SliderWidget: {e}")
+ def showEvent(self, event):
+ self.init()
+ super().showEvent(event)
def init(self, **kwargs):
self.is_loading = True
@@ -119,6 +121,9 @@ def init(self, **kwargs):
spinbox_maximum = kwargs.get("spinbox_maximum", self.property("spinbox_maximum") or 100.0)
current_value = None
settings_property = kwargs.get("settings_property", self.property("settings_property") or None)
+ self.table_id = self.property("table_id") or None
+ if self.table_id is not None:
+ self.table_name, self.table_column = settings_property.split(".")
label_text = kwargs.get("label_text", self.property("label_text") or "")
display_as_float = kwargs.get("display_as_float", self.property("display_as_float") or False)
@@ -134,7 +139,13 @@ def init(self, **kwargs):
divide_by = self.property("divide_by") or 1.0
- if current_value is None:
+ if self.table_id is not None and self.table_name is not None and self.table_column is not None:
+ session = self.db_handler.get_db_session()
+ if self.table_name == "lora":
+ self.table_item = session.query(Lora).filter_by(id=self.table_id).first()
+ current_value = getattr(self.table_item, self.table_column)
+ session.close()
+ elif current_value is None:
if settings_property is not None:
current_value = self.get_settings_value(settings_property)
else:
@@ -189,6 +200,8 @@ def slider_callback(self, attr_name, value=None, widget=None):
self.set_settings_value(attr_name, value)
def get_settings_value(self, settings_property):
+ if self.table_item is not None:
+ return getattr(self.table_item, self.table_column)
keys = settings_property.split(".")
if len(keys) == 1:
@@ -202,10 +215,15 @@ def get_settings_value(self, settings_property):
return getattr(obj, keys[1])
def set_settings_value(self, settings_property: str, val: Any):
- if settings_property is None:
- return
- keys = settings_property.split(".")
- self.update_settings_by_name(keys[0], keys[1], val)
+ if self.table_item is not None:
+ session = self.db_handler.get_db_session()
+ setattr(self.table_item, self.table_column, val)
+ session.add(self.table_item)
+ session.commit()
+ session.close()
+ elif settings_property is not None:
+ keys = settings_property.split(".")
+ self.update_settings_by_name(keys[0], keys[1], val)
def _update_dict_recursively(self, data: dict, keys: List[str], val: Any) -> dict:
if len(keys) == 1:
diff --git a/src/airunner/widgets/slider/templates/slider.ui b/src/airunner/widgets/slider/templates/slider.ui
index 14a3221f2..52aa0bd3e 100644
--- a/src/airunner/widgets/slider/templates/slider.ui
+++ b/src/airunner/widgets/slider/templates/slider.ui
@@ -7,7 +7,7 @@
0
0
548
- 50
+ 38
@@ -80,21 +80,18 @@
- 10
+ 0
- 10
+ 0
- 10
+ 0
- 10
-
-
- 10
+ 0
-
+
0
-
diff --git a/src/airunner/widgets/slider/templates/slider_ui.py b/src/airunner/widgets/slider/templates/slider_ui.py
index d7e004d58..a80f394ce 100644
--- a/src/airunner/widgets/slider/templates/slider_ui.py
+++ b/src/airunner/widgets/slider/templates/slider_ui.py
@@ -22,7 +22,7 @@ class Ui_slider_widget(object):
def setupUi(self, slider_widget):
if not slider_widget.objectName():
slider_widget.setObjectName(u"slider_widget")
- slider_widget.resize(548, 50)
+ slider_widget.resize(548, 38)
sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -45,10 +45,9 @@ def setupUi(self, slider_widget):
font.setPointSize(9)
self.groupBox.setFont(font)
self.gridLayout_2 = QGridLayout(self.groupBox)
+ self.gridLayout_2.setSpacing(0)
self.gridLayout_2.setObjectName(u"gridLayout_2")
- self.gridLayout_2.setHorizontalSpacing(10)
- self.gridLayout_2.setVerticalSpacing(0)
- self.gridLayout_2.setContentsMargins(10, 10, 10, 10)
+ self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.slider = QSlider(self.groupBox)
self.slider.setObjectName(u"slider")
sizePolicy.setHeightForWidth(self.slider.sizePolicy().hasHeightForWidth())
diff --git a/src/airunner/windows/main/settings_mixin.py b/src/airunner/windows/main/settings_mixin.py
index 7e6b1f74e..a1186479f 100644
--- a/src/airunner/windows/main/settings_mixin.py
+++ b/src/airunner/windows/main/settings_mixin.py
@@ -190,7 +190,11 @@ def outpaint_mask(self):
#######################################
def get_lora_by_version(self, version):
- return [lora for lora in self.lora if lora.version == version]
+ session = self.db_handler.get_db_session()
+ try:
+ return session.query(Lora).filter_by(version=version).all()
+ finally:
+ session.close()
def delete_lora_by_name(self, name, version):
self.db_handler.delete_lora_by_name(name, version)
diff --git a/src/airunner/workers/sd_worker.py b/src/airunner/workers/sd_worker.py
index 56fe557e2..e5405cc98 100644
--- a/src/airunner/workers/sd_worker.py
+++ b/src/airunner/workers/sd_worker.py
@@ -92,8 +92,12 @@ def get_embeddings(self, message):
self.sd.get_embeddings(message)
def on_update_lora_signal(self):
+ thread = threading.Thread(target=self._reload_lora)
+ thread.start()
+
+ def _reload_lora(self):
if self.sd:
- self.sd.load_lora()
+ self.sd.reload_lora()
def on_update_embeddings_signal(self):
if self.sd:
@@ -124,14 +128,14 @@ def on_unload_stablediffusion_signal(self, data=None):
thread.start()
def _load_sd(self, data:dict=None):
- self.sd.load_stable_diffusion()
+ self.sd.load()
if data:
callback = data.get("callback", None)
if callback is not None:
callback(data)
def _unload_sd(self, data:dict=None):
- self.sd.unload_stable_diffusion()
+ self.sd.unload()
if data:
callback = data.get("callback", None)
if callback is not None:
@@ -157,7 +161,7 @@ def start_worker_thread(self):
from airunner.aihandler.stablediffusion.sd_handler import SDHandler
self.sd = SDHandler()
if self.application_settings.sd_enabled:
- self.sd.load_stable_diffusion()
+ self.sd.load()
def handle_message(self, message):
if self.sd: