From 5d067608559f90a9c6aa99ce741457f114fb568a Mon Sep 17 00:00:00 2001 From: w4ffl35 <25737761+w4ffl35@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:17:48 -0700 Subject: [PATCH 1/3] fixes active grid area size scrolling --- .../widgets/canvas_plus/canvas_plus_widget.py | 59 ++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/src/airunner/widgets/canvas_plus/canvas_plus_widget.py b/src/airunner/widgets/canvas_plus/canvas_plus_widget.py index 61294b7e5..521d9e9f6 100644 --- a/src/airunner/widgets/canvas_plus/canvas_plus_widget.py +++ b/src/airunner/widgets/canvas_plus/canvas_plus_widget.py @@ -8,6 +8,7 @@ from PyQt6.QtCore import Qt, QPoint, QPointF, QRect from PyQt6.QtGui import QBrush, QColor, QPen, QPixmap, QPainter, QCursor from PyQt6.QtWidgets import QGraphicsScene, QGraphicsItem, QGraphicsPixmapItem, QGraphicsLineItem +from PyQt6 import QtWidgets, QtCore from airunner.aihandler.logger import Logger from airunner.aihandler.settings_manager import SettingsManager @@ -28,6 +29,8 @@ def __init__(self, parent, pixmap): self.pixmap = pixmap self.setFlag(QGraphicsItem.GraphicsItemFlag.ItemIsMovable, True) + + def snap_to_grid(self): grid_size = self.settings_manager.grid_settings.size x = round(self.x() / grid_size) * grid_size @@ -300,10 +303,13 @@ def current_layer_index(self, value): def layer_container_widget(self): return self.app.ui.layer_widget + @property + def active_grid_settings(self): + return self.settings_manager.active_grid_settings + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.canvas_settings = session.query(CanvasSettings).first() - self.active_grid_settings = session.query(ActiveGridSettings).first() self.ui.central_widget.resizeEvent = self.resizeEvent self.app.add_image_to_canvas_signal.connect(self.handle_add_image_to_canvas) self.app.image_data.connect(self.handle_image_data) @@ -320,6 +326,56 @@ def __init__(self, *args, **kwargs): self.settings_manager.changed_signal.connect(self.handle_changed_signal) self.app.loaded.connect(self.handle_loaded) + def increase_active_grid_height(self, amount): + height = self.settings_manager.working_height + self.settings_manager.grid_settings.size * amount + if height > 4096: + height = 4096 + self.settings_manager.set_value("working_height", height) + self.do_draw() + + def decrease_active_grid_height(self, amount): + height = self.settings_manager.working_height - self.settings_manager.grid_settings.size * amount + if height < 512: + height = 512 + self.settings_manager.set_value("working_height", height) + self.do_draw() + + def increase_active_grid_width(self, amount): + width = self.settings_manager.working_width + self.settings_manager.grid_settings.size * amount + if width > 4096: + width = 4096 + self.settings_manager.set_value("working_width", width) + self.do_draw() + + def decrease_active_grid_width(self, amount): + width = self.settings_manager.working_width - self.settings_manager.grid_settings.size * amount + if width < 512: + width = 512 + self.settings_manager.set_value("working_width", width) + self.do_draw() + + def wheelEvent(self, event): + modifiers = QtWidgets.QApplication.keyboardModifiers() + if modifiers == QtCore.Qt.KeyboardModifier.ControlModifier: + if event.angleDelta().y() > 0: + self.increase_active_grid_height(int(abs(event.angleDelta().y()) / 120)) + else: + self.decrease_active_grid_height(int(abs(event.angleDelta().y()) / 120)) + elif modifiers == QtCore.Qt.KeyboardModifier.ShiftModifier: + if event.angleDelta().y() > 0: + self.increase_active_grid_width(int(abs(event.angleDelta().y()) / 120)) + else: + self.decrease_active_grid_width(int(abs(event.angleDelta().y()) / 120)) + elif modifiers == QtCore.Qt.KeyboardModifier.ControlModifier | QtCore.Qt.KeyboardModifier.ShiftModifier: + if event.angleDelta().y() > 0: + self.increase_active_grid_height(int(abs(event.angleDelta().y()) / 120)) + self.increase_active_grid_width(int(abs(event.angleDelta().y()) / 120)) + else: + self.decrease_active_grid_height(int(abs(event.angleDelta().y()) / 120)) + self.decrease_active_grid_width(int(abs(event.angleDelta().y()) / 120)) + else: + super().wheelEvent(event) # Propagate the event to the base class if no modifier keys are pressed + def handle_changed_signal(self, key, value): if key == "current_tab": self.do_draw() @@ -453,7 +509,6 @@ def draw_active_grid_area_container(self): """ Draw a rectangle around the active grid area of """ - print(self.active_grid_area_rect) if not self.active_grid_area: self.active_grid_area = ActiveGridArea( parent=self, From a9d4a21dac1d48fef01540d864ee50e9334e566c Mon Sep 17 00:00:00 2001 From: w4ffl35 <25737761+w4ffl35@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:18:22 -0700 Subject: [PATCH 2/3] Removes tool menu --- src/airunner/windows/main/main_window.py | 5 ++-- .../windows/main/templates/main_window.ui | 25 ++----------------- .../windows/main/templates/main_window_ui.py | 23 ++--------------- 3 files changed, 6 insertions(+), 47 deletions(-) diff --git a/src/airunner/windows/main/main_window.py b/src/airunner/windows/main/main_window.py index a661e3cba..f9837267a 100644 --- a/src/airunner/windows/main/main_window.py +++ b/src/airunner/windows/main/main_window.py @@ -428,7 +428,7 @@ def action_show_model_manager(self): self.activate_model_manager_section() def action_show_prompt_builder(self): - self.show_section("Prompt Builder") + self.toggle_prompt_builder(True) def action_show_controlnet(self): self.show_section("controlnet") @@ -893,8 +893,7 @@ def set_splitter_sizes(self): def show_section(self, section): section_lists = { "center": [self.ui.center_tab.tabText(i) for i in range(self.ui.center_tab.count())], - "right": [self.ui.tool_tab_widget.tabText(i) for i in range(self.ui.tool_tab_widget.count())], - "bottom": [self.ui.bottom_panel_tab_widget.tabText(i) for i in range(self.ui.bottom_panel_tab_widget.count())] + "right": [self.ui.tool_tab_widget.tabText(i) for i in range(self.ui.tool_tab_widget.count())] } for k, v in section_lists.items(): if section in v: diff --git a/src/airunner/windows/main/templates/main_window.ui b/src/airunner/windows/main/templates/main_window.ui index 9df4feef8..b675e7222 100644 --- a/src/airunner/windows/main/templates/main_window.ui +++ b/src/airunner/windows/main/templates/main_window.ui @@ -8,7 +8,7 @@ 0 0 1201 - 970 + 1024 @@ -674,7 +674,7 @@ 0 0 407 - 841 + 895 @@ -1278,26 +1278,6 @@ - - - Tools - - - - - - - - - - - - - - - - - Image @@ -1336,7 +1316,6 @@ - diff --git a/src/airunner/windows/main/templates/main_window_ui.py b/src/airunner/windows/main/templates/main_window_ui.py index a85a04c2e..303aa659c 100644 --- a/src/airunner/windows/main/templates/main_window_ui.py +++ b/src/airunner/windows/main/templates/main_window_ui.py @@ -12,7 +12,7 @@ class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") - MainWindow.resize(1201, 970) + MainWindow.resize(1201, 1024) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.MinimumExpanding, QtWidgets.QSizePolicy.Policy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -253,7 +253,7 @@ def setupUi(self, MainWindow): self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() - self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 407, 841)) + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 407, 895)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout.setObjectName("gridLayout") @@ -496,8 +496,6 @@ def setupUi(self, MainWindow): self.menuAbout = QtWidgets.QMenu(parent=self.menubar) self.menuAbout.setTearOffEnabled(False) self.menuAbout.setObjectName("menuAbout") - self.menuModel_merge = QtWidgets.QMenu(parent=self.menubar) - self.menuModel_merge.setObjectName("menuModel_merge") self.menuImage = QtWidgets.QMenu(parent=self.menubar) self.menuImage.setObjectName("menuImage") self.menuView = QtWidgets.QMenu(parent=self.menubar) @@ -736,21 +734,6 @@ def setupUi(self, MainWindow): self.menuAbout.addAction(self.actionBug_report) self.menuAbout.addAction(self.actionReport_vulnerability) self.menuAbout.addAction(self.actionDiscord) - self.menuModel_merge.addAction(self.actionModel_Merger) - self.menuModel_merge.addSeparator() - self.menuModel_merge.addAction(self.actionStableDiffusion) - self.menuModel_merge.addSeparator() - self.menuModel_merge.addAction(self.actionPrompt_Builder) - self.menuModel_merge.addAction(self.actionModel_Manager_2) - self.menuModel_merge.addSeparator() - self.menuModel_merge.addAction(self.actionEmbeddings) - self.menuModel_merge.addAction(self.actionLoRA) - self.menuModel_merge.addAction(self.actionPen) - self.menuModel_merge.addAction(self.actionActive_Grid) - self.menuModel_merge.addSeparator() - self.menuModel_merge.addAction(self.actionStandard_Batches) - self.menuModel_merge.addSeparator() - self.menuModel_merge.addAction(self.actionLLM_beta) self.menuImage.addAction(self.actionImport) self.menuImage.addAction(self.actionExport) self.menuImage.addSeparator() @@ -774,7 +757,6 @@ def setupUi(self, MainWindow): self.menubar.addAction(self.menuEdit.menuAction()) self.menubar.addAction(self.menuView.menuAction()) self.menubar.addAction(self.menuImage.menuAction()) - self.menubar.addAction(self.menuModel_merge.menuAction()) self.menubar.addAction(self.menuFilters.menuAction()) self.menubar.addAction(self.menuAbout.menuAction()) @@ -864,7 +846,6 @@ def retranslateUi(self, MainWindow): self.menuEdit.setTitle(_translate("MainWindow", "Edit")) self.menuFilters.setTitle(_translate("MainWindow", "Filters")) self.menuAbout.setTitle(_translate("MainWindow", "Help")) - self.menuModel_merge.setTitle(_translate("MainWindow", "Tools")) self.menuImage.setTitle(_translate("MainWindow", "Image")) self.menuView.setTitle(_translate("MainWindow", "View")) self.menuBrowse_Models_Path.setTitle(_translate("MainWindow", "Browse Models Paths")) From dd9bb6a825e9b7e0cefe636e196388cbbbd00622 Mon Sep 17 00:00:00 2001 From: w4ffl35 <25737761+w4ffl35@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:18:31 -0700 Subject: [PATCH 3/3] fixes pipe to cpu --- src/airunner/aihandler/mixins/memory_efficient_mixin.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/airunner/aihandler/mixins/memory_efficient_mixin.py b/src/airunner/aihandler/mixins/memory_efficient_mixin.py index f4d95890d..b036bb081 100644 --- a/src/airunner/aihandler/mixins/memory_efficient_mixin.py +++ b/src/airunner/aihandler/mixins/memory_efficient_mixin.py @@ -232,15 +232,17 @@ def move_pipe_to_cpu(self): if not self.pipe: return try: - self.pipe.to("cpu", self.data_type).float32() + self.pipe.to("cpu", self.data_type) except NotImplementedError: logger.warning("Not implemented error when moving to cpu") if hasattr(self.pipe, "controlnet"): try: - self.pipe.controlnet.to("cpu", self.data_type).float32() + self.pipe.controlnet.to("cpu", self.data_type) except NotImplementedError: logger.warning("Not implemented error when moving to cpu") + except AttributeError: + pass def apply_cpu_offload(self): if self.cpu_offload_applied == self.enable_model_cpu_offload: