From 6e2defe3b6e1acca6b0f6f334b7611fa96005ee7 Mon Sep 17 00:00:00 2001 From: kromskii2 <146603192+kromskii2@users.noreply.github.com> Date: Fri, 14 Mar 2025 19:56:00 +0700 Subject: [PATCH 1/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D1=8B?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=BC=D0=BF=D1=82=D0=BE=D0=B2=20=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=20=D0=BE=D0=BA=D0=BD=D0=B0=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B3=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D1=85=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=BC=D0=BF=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/negative_prompt_window.py | 4 +- modules/prompt_translations.py | 316 ++++++++++++++++++++++++++++++ modules/prompt_window.py | 5 +- 3 files changed, 322 insertions(+), 3 deletions(-) create mode 100644 modules/prompt_translations.py diff --git a/modules/negative_prompt_window.py b/modules/negative_prompt_window.py index 38f8fdc..90cbdac 100644 --- a/modules/negative_prompt_window.py +++ b/modules/negative_prompt_window.py @@ -18,8 +18,8 @@ class NegativePromptWindow(QDialog): self.setStyleSheet(""" QDialog { background-color: #2b2b2b; - min-width: 1500px; - min-height: 700px; + min-width: 1700px; + min-height: 800px; } QScrollArea { background-color: #1e1e1e; diff --git a/modules/prompt_translations.py b/modules/prompt_translations.py new file mode 100644 index 0000000..1c881e1 --- /dev/null +++ b/modules/prompt_translations.py @@ -0,0 +1,316 @@ +PROMPT_TRANSLATIONS = { + # Персонажи + "Девушка": "girl", + "Парень": "boy", + "Мужчина": "man", + "Женщина": "woman", + "Ребенок": "child", + "Малыш": "baby", + "Пожилой человек": "elderly person", + "Старик": "old man", + "Старушка": "old woman", + + # Профессии + "Художник": "artist", + "Музыкант": "musician", + "Писатель": "writer", + "Учитель": "teacher", + "Врач": "doctor", + "Инженер": "engineer", + "Программист": "programmer", + "Повар": "chef", + "Полицейский": "police officer", + "Пожарный": "firefighter", + + # Животные + "Кошка": "cat", + "Собака": "dog", + "Птица": "bird", + "Рыба": "fish", + "Лошадь": "horse", + "Корова": "cow", + "Овца": "sheep", + "Коза": "goat", + "Кролик": "rabbit", + "Хомяк": "hamster", + + # Природа + "Гора": "mountain", + "Море": "sea", + "Океан": "ocean", + "Река": "river", + "Лес": "forest", + "Поле": "field", + "Цветок": "flower", + "Дерево": "tree", + "Трава": "grass", + "Песок": "sand", + + # Погода + "Солнце": "sun", + "Дождь": "rain", + "Снег": "snow", + "Ветер": "wind", + "Туман": "fog", + "Облако": "cloud", + "Гроза": "thunderstorm", + "Радуга": "rainbow", + "Мороз": "frost", + "Иней": "hoarfrost", + + # Время суток + "Утро": "morning", + "День": "day", + "Вечер": "evening", + "Ночь": "night", + "Рассвет": "dawn", + "Закат": "sunset", + "Полдень": "noon", + "Полночь": "midnight", + + # Сезоны + "Весна": "spring", + "Лето": "summer", + "Осень": "autumn", + "Зима": "winter", + + # Эмоции + "Счастье": "happiness", + "Грусть": "sadness", + "Гнев": "anger", + "Страх": "fear", + "Удивление": "surprise", + "Отвращение": "disgust", + "Любовь": "love", + "Ненависть": "hate", + "Спокойствие": "calmness", + "Волнение": "excitement", + + # Действия + "Бег": "running", + "Ходьба": "walking", + "Прыжок": "jumping", + "Плавание": "swimming", + "Танцы": "dancing", + "Пение": "singing", + "Игра": "playing", + "Работа": "working", + "Отдых": "resting", + "Сон": "sleeping", + + # Одежда + "Платье": "dress", + "Рубашка": "shirt", + "Брюки": "pants", + "Юбка": "skirt", + "Куртка": "jacket", + "Пальто": "coat", + "Шапка": "hat", + "Обувь": "shoes", + "Перчатки": "gloves", + "Шарф": "scarf", + + # Цвета + "Красный": "red", + "Синий": "blue", + "Зеленый": "green", + "Желтый": "yellow", + "Белый": "white", + "Черный": "black", + "Серый": "gray", + "Коричневый": "brown", + "Оранжевый": "orange", + "Фиолетовый": "purple", + + # Материалы + "Дерево": "wood", + "Металл": "metal", + "Стекло": "glass", + "Пластик": "plastic", + "Ткань": "fabric", + "Бумага": "paper", + "Камень": "stone", + "Керамика": "ceramics", + "Кожа": "leather", + "Резина": "rubber", + + # Технологии + "Компьютер": "computer", + "Телефон": "phone", + "Планшет": "tablet", + "Робот": "robot", + "Дрон": "drone", + "Смартфон": "smartphone", + "Ноутбук": "laptop", + "Принтер": "printer", + "Камера": "camera", + "Наушники": "headphones", + + # Транспорт + "Машина": "car", + "Велосипед": "bicycle", + "Мотоцикл": "motorcycle", + "Поезд": "train", + "Самолет": "airplane", + "Корабль": "ship", + "Автобус": "bus", + "Трамвай": "tram", + "Метро": "subway", + "Вертолет": "helicopter", + + # Еда + "Фрукты": "fruits", + "Овощи": "vegetables", + "Мясо": "meat", + "Рыба": "fish", + "Хлеб": "bread", + "Молоко": "milk", + "Сок": "juice", + "Кофе": "coffee", + "Чай": "tea", + "Сладости": "sweets", + + # Дом + "Дом": "house", + "Квартира": "apartment", + "Комната": "room", + "Кухня": "kitchen", + "Спальня": "bedroom", + "Ванная": "bathroom", + "Гостиная": "living room", + "Балкон": "balcony", + "Подвал": "basement", + "Чердак": "attic", + + # Музыка + "Гитара": "guitar", + "Пианино": "piano", + "Скрипка": "violin", + "Барабаны": "drums", + "Флейта": "flute", + "Саксофон": "saxophone", + "Труба": "trumpet", + "Бас": "bass", + "Синтезатор": "synthesizer", + "Микрофон": "microphone", + + # Спорт + "Футбол": "football", + "Баскетбол": "basketball", + "Волейбол": "volleyball", + "Теннис": "tennis", + "Хоккей": "hockey", + "Бег": "running", + "Плавание": "swimming", + "Бокс": "boxing", + "Йога": "yoga", + "Гимнастика": "gymnastics", + + # Искусство + "Картина": "painting", + "Рисунок": "drawing", + "Скульптура": "sculpture", + "Фотография": "photography", + "Кино": "movie", + "Театр": "theater", + "Музыка": "music", + "Танец": "dance", + "Поэзия": "poetry", + "Литература": "literature", + + # Наука + "Физика": "physics", + "Химия": "chemistry", + "Биология": "biology", + "Математика": "mathematics", + "Астрономия": "astronomy", + "Геология": "geology", + "Экология": "ecology", + "Психология": "psychology", + "История": "history", + "География": "geography", + + # Время + "Секунда": "second", + "Минута": "minute", + "Час": "hour", + "День": "day", + "Неделя": "week", + "Месяц": "month", + "Год": "year", + "Век": "century", + "Эпоха": "era", + "Период": "period", + + # География + "Страна": "country", + "Город": "city", + "Деревня": "village", + "Река": "river", + "Озеро": "lake", + "Море": "sea", + "Океан": "ocean", + "Гора": "mountain", + "Пустыня": "desert", + "Джунгли": "jungle", + + # Космос + "Солнце": "sun", + "Луна": "moon", + "Звезда": "star", + "Планета": "planet", + "Галактика": "galaxy", + "Вселенная": "universe", + "Астероид": "asteroid", + "Комета": "comet", + "Спутник": "satellite", + "Космический корабль": "spaceship", + + # Фэнтези + "Дракон": "dragon", + "Единорог": "unicorn", + "Фея": "fairy", + "Волшебник": "wizard", + "Ведьма": "witch", + "Гоблин": "goblin", + "Эльф": "elf", + "Гном": "dwarf", + "Орк": "orc", + "Тролль": "troll", + + # Мифология + "Бог": "god", + "Богиня": "goddess", + "Герой": "hero", + "Миф": "myth", + "Легенда": "legend", + "Демон": "demon", + "Ангел": "angel", + "Призрак": "ghost", + "Вампир": "vampire", + "Оборотень": "werewolf", + + # Стили искусства + "Реализм": "realism", + "Импрессионизм": "impressionism", + "Экспрессионизм": "expressionism", + "Сюрреализм": "surrealism", + "Абстракционизм": "abstract art", + "Поп-арт": "pop art", + "Модернизм": "modernism", + "Постмодернизм": "postmodernism", + "Кубизм": "cubism", + "Футуризм": "futurism", + + # Эпохи + "Древний мир": "ancient world", + "Средневековье": "middle ages", + "Ренессанс": "renaissance", + "Барокко": "baroque", + "Классицизм": "classicism", + "Романтизм": "romanticism", + "Викторианская эпоха": "victorian era", + "Модерн": "art nouveau", + "Ар-деко": "art deco", + "Современность": "modern era" +} \ No newline at end of file diff --git a/modules/prompt_window.py b/modules/prompt_window.py index 02ac453..2d5ae4a 100644 --- a/modules/prompt_window.py +++ b/modules/prompt_window.py @@ -3,6 +3,7 @@ from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QTreeWidget, QScrollArea, QWidget, QCheckBox, QFrame) from PyQt6.QtCore import Qt, pyqtSignal from .prompt_categories import PROMPT_CATEGORIES +from .prompt_translations import PROMPT_TRANSLATIONS class PromptWindow(QDialog): prompt_selected = pyqtSignal(str) @@ -195,5 +196,7 @@ class PromptWindow(QDialog): def add_selected(self): """Добавление выбранных промптов""" if self.selected_prompts: - prompts_text = ", ".join(sorted(self.selected_prompts)) + # Преобразуем русские названия в английские + translated_prompts = [PROMPT_TRANSLATIONS.get(prompt, prompt) for prompt in self.selected_prompts] + prompts_text = ", ".join(sorted(translated_prompts)) self.prompt_selected.emit(prompts_text) \ No newline at end of file From 41999b31c1f5de9b16930e49275551a6caed03bf Mon Sep 17 00:00:00 2001 From: kromskii2 <146603192+kromskii2@users.noreply.github.com> Date: Fri, 14 Mar 2025 19:59:11 +0700 Subject: [PATCH 2/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B2=20=D0=B1=D1=83=D1=84=D0=B5=D1=80=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 9a89921..1895e37 100644 --- a/main.py +++ b/main.py @@ -447,11 +447,20 @@ class MainWindow(QMainWindow): save_button = QPushButton("Сохранить") save_button.clicked.connect(lambda checked, img=img: self.save_image(img)) - # Создаем контейнер для изображения и кнопки + # Создаем кнопку копирования в буфер обмена + copy_button = QPushButton("Копировать") + copy_button.clicked.connect(lambda checked, img=img: self.copy_to_clipboard(img)) + + # Создаем контейнер для изображения и кнопок container = QWidget() container_layout = QVBoxLayout(container) container_layout.addWidget(img_label) - container_layout.addWidget(save_button) + + # Создаем горизонтальный layout для кнопок + buttons_layout = QHBoxLayout() + buttons_layout.addWidget(save_button) + buttons_layout.addWidget(copy_button) + container_layout.addLayout(buttons_layout) self.results_content_layout.addWidget(container) self.log_to_console("Изображение успешно добавлено в интерфейс") @@ -471,6 +480,22 @@ class MainWindow(QMainWindow): if file_path: img.save(file_path) + def copy_to_clipboard(self, img): + """Копирование изображения в буфер обмена""" + # Конвертируем изображение в QPixmap + buffer = BytesIO() + img.save(buffer, format='PNG') + buffer.seek(0) + pixmap = QPixmap() + pixmap.loadFromData(buffer.getvalue()) + + # Копируем в буфер обмена + clipboard = QApplication.clipboard() + clipboard.setPixmap(pixmap) + + # Показываем уведомление + self.log_to_console("Изображение скопировано в буфер обмена") + def update_api_url(self): """Обновление URL API во всех компонентах""" new_url = self.api_url_input.text() From 603f6827b61dc39258a41479db532457312ba852 Mon Sep 17 00:00:00 2001 From: kromskii2 <146603192+kromskii2@users.noreply.github.com> Date: Fri, 14 Mar 2025 20:03:37 +0700 Subject: [PATCH 3/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D1=80=D0=B5=D1=81=D0=B5=D1=82=D1=8B=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=80=D0=BE=D0=B2=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=20=D0=BA=D1=80=D0=B0=D1=81=D0=B8=D0=B2=D1=8B=D0=BC=D0=B8=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 12 +++++++ modules/size_preset_manager.py | 62 ++++++++++++++++++++++++++++++++++ modules/size_presets.py | 8 +++++ 3 files changed, 82 insertions(+) create mode 100644 modules/size_preset_manager.py create mode 100644 modules/size_presets.py diff --git a/main.py b/main.py index 1895e37..67c98cf 100644 --- a/main.py +++ b/main.py @@ -18,6 +18,7 @@ from modules.model_manager import ModelManager from modules.sampler_manager import SamplerManager from modules.prompt_window import PromptWindow from modules.negative_prompt_window import NegativePromptWindow +from modules.size_preset_manager import SizePresetManager class GenerationThread(QThread): progress_updated = pyqtSignal(float, str) @@ -202,6 +203,11 @@ class MainWindow(QMainWindow): self.sampler_manager = SamplerManager(self.api_url) settings_layout.addWidget(self.sampler_manager) + # Добавляем менеджер пресетов размеров + self.size_preset_manager = SizePresetManager() + self.size_preset_manager.size_changed.connect(self.on_size_preset_changed) + settings_layout.addWidget(self.size_preset_manager) + # Параметры генерации params_layout = QVBoxLayout() @@ -503,6 +509,12 @@ class MainWindow(QMainWindow): self.sampler_manager.update_api_url(new_url) self.log_to_console(f"API URL обновлен: {new_url}") + def on_size_preset_changed(self, width, height): + """Обработчик изменения размера через пресет""" + self.width_input.setValue(width) + self.height_input.setValue(height) + self.log_to_console(f"Размер изменен на: {width}x{height}") + if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() diff --git a/modules/size_preset_manager.py b/modules/size_preset_manager.py new file mode 100644 index 0000000..39f0aee --- /dev/null +++ b/modules/size_preset_manager.py @@ -0,0 +1,62 @@ +from PyQt6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel +from PyQt6.QtCore import Qt, pyqtSignal +from .size_presets import SIZE_PRESETS + +class SizePresetManager(QWidget): + size_changed = pyqtSignal(int, int) # Сигнал для изменения размера + + def __init__(self, parent=None): + super().__init__(parent) + self.setup_ui() + + def setup_ui(self): + layout = QVBoxLayout(self) + + # Заголовок + title = QLabel("Пресеты размеров:") + title.setStyleSheet(""" + QLabel { + color: #ffffff; + font-size: 14px; + font-weight: bold; + padding: 8px; + background-color: #3b3b3b; + border-radius: 4px; + } + """) + layout.addWidget(title) + + # Создаем сетку кнопок + grid_layout = QHBoxLayout() + grid_layout.setSpacing(5) + + # Добавляем кнопки пресетов + for name, (width, height) in SIZE_PRESETS.items(): + button = QPushButton(name) + button.setStyleSheet(""" + QPushButton { + background-color: #3b3b3b; + color: white; + border: 1px solid #555555; + border-radius: 4px; + padding: 8px; + font-size: 12px; + min-width: 120px; + } + QPushButton:hover { + background-color: #4a4a4a; + border-color: #666666; + } + QPushButton:pressed { + background-color: #0d6efd; + border-color: #0b5ed7; + } + """) + button.clicked.connect(lambda checked, w=width, h=height: self.on_preset_clicked(w, h)) + grid_layout.addWidget(button) + + layout.addLayout(grid_layout) + + def on_preset_clicked(self, width, height): + """Обработчик нажатия на кнопку пресета""" + self.size_changed.emit(width, height) \ No newline at end of file diff --git a/modules/size_presets.py b/modules/size_presets.py new file mode 100644 index 0000000..80ff667 --- /dev/null +++ b/modules/size_presets.py @@ -0,0 +1,8 @@ +SIZE_PRESETS = { + "Портрет (512x768)": (512, 768), + "Пейзаж (768x512)": (768, 512), + "Квадрат (512x512)": (512, 512), + "Широкий (768x432)": (768, 432), + "Высокий (432x768)": (432, 768), + "Вертикальный (600x800)": (600, 800) +} \ No newline at end of file From 8e6e54c8023b8f89684100b3e4eaf854c6ade40e Mon Sep 17 00:00:00 2001 From: kromskii2 <146603192+kromskii2@users.noreply.github.com> Date: Fri, 14 Mar 2025 20:05:25 +0700 Subject: [PATCH 4/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=B1=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=D1=80=D0=BD=D1=8B=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D1=8D=D1=88=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BC=D0=BE=D0=B4=D1=83?= =?UTF-8?q?=D0=BB=D0=B5=D0=B9:=20negative=5Fprompt=5Fcategories,=20negativ?= =?UTF-8?q?e=5Fprompt=5Fwindow,=20prompt=5Fcategories,=20prompt=5Ftranslat?= =?UTF-8?q?ions,=20prompt=5Fwindow,=20size=5Fpreset=5Fmanager=20=D0=B8=20s?= =?UTF-8?q?ize=5Fpresets.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../negative_prompt_categories.cpython-310.pyc | Bin 0 -> 3737 bytes .../negative_prompt_window.cpython-310.pyc | Bin 0 -> 6877 bytes .../prompt_categories.cpython-310.pyc | Bin 0 -> 2116 bytes .../prompt_translations.cpython-310.pyc | Bin 0 -> 10755 bytes .../__pycache__/prompt_window.cpython-310.pyc | Bin 0 -> 6844 bytes .../size_preset_manager.cpython-310.pyc | Bin 0 -> 2580 bytes .../__pycache__/size_presets.cpython-310.pyc | Bin 0 -> 436 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/__pycache__/negative_prompt_categories.cpython-310.pyc create mode 100644 modules/__pycache__/negative_prompt_window.cpython-310.pyc create mode 100644 modules/__pycache__/prompt_categories.cpython-310.pyc create mode 100644 modules/__pycache__/prompt_translations.cpython-310.pyc create mode 100644 modules/__pycache__/prompt_window.cpython-310.pyc create mode 100644 modules/__pycache__/size_preset_manager.cpython-310.pyc create mode 100644 modules/__pycache__/size_presets.cpython-310.pyc diff --git a/modules/__pycache__/negative_prompt_categories.cpython-310.pyc b/modules/__pycache__/negative_prompt_categories.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa0e0d51305fd2aa3c7a06b922475dd50cede182 GIT binary patch literal 3737 zcma)8X>?P^6_!S0d6O5+Znnp60XEo>q$Mt!-)qy&-J9;E>8dVtNxwT!vSmX_eU3kS?%cWe zyW7k&Yig=I_&K-r&FIw?9?x5}DE%qJ;$i$+pYwV=QIGIk@dCXH*%hzwjry?WYF(z# z4{73saOVFE>-|nidDeXq7k@8 ztOc$U>wz1D2HYq%0XK^+z^!5%aJ$$JY!X4>4zcs17k+k$W~^GoZr~o#3TzX5f&0XL z!287m!1svv0{4ptfd|CSE;G?1gct{)uen1=neo%Y}_?US7qW3C! z>J&$@J|;d4JTAI`-Qpv_9`OY5qvA>6UL4ST7>SDiS=j?0tls#ilYWOqeeA=FL zhMZx0+@8sAAdQ#p*PIcEr|+(#tXy@@*b~lY?8&=X*|^w`bJ`xWuK_33k!etv%-56F z7ih!20e{2fEx*h?3Toq;^9)2&&KYOOo(z`fYia96h+em6pq;aC=BX9!D9)0bxM{x*C=Pb5o>>Gux zHMI4zGYkTg5KY-Rjp!*I@Cx$$R?>J0qH{{)8u*{Kr=1ZSo+<0o?onrWmUng?dcsZl ztDrn)UkB-7=R9Ip$(n)X>&VPmw{VMeZot-c{7#TY(3e)}d|_cd(?KGG1UY9xHs_X_ zNK@6uoYO=FSw=G8cOD)HgmMmsbNTh8 ze@R6Jp&~^p)A$6WM$Kfw$zu~r!yE#TCL7{>4UsakDivBni(`}OH zQ6kqprikLAtzcPx7oC|)gQk*n8rFv9xv1=rJ-C^1NnLg>fD|&T4!G^|rQ)PKhoFYw z;0&0ef^P3$M&KjPXR%a+gW4$;5&~Wh} z8r&JqdFPxnvT*Py<#YCw@4J^@m8R5+y8mCHUPm9$M9|ZKF)!6=q7uBKI+r>Tldl!7 zM_hmGN~{8aPbS+mWsyN-w&jlrByJHPd`g z+qrb%S(=2qF&ch!D9tN6jqcJ3Y9l)r^xv*+?`nS1Oedo~ZOus|I$QCGE*_PJo|vud z*To4vDW2YUdntsSMzlStr_4mAr&VbNI&>=osh)~GZOqml(ydf+)zcRANh+;-Q9lcI zM51tSx)=4mI<%Cd#HW=fTOBt~X-}o~cr2BXj3l*5QzrEIoX`hhC~(S@R;sASN#w^# zX;_lJ)k6OMcv{Mg^pk~vnNDeDM2nc=v?a@FpU2IpDJjFVJY{?;B`Zlp29k5ga;(O{MkBE9|V6>rebE&lJpS~st`s5=|xENfP~5u=@dd1 za<$r2D=5oGTJm%>o{`kGp(+uxBC#kECFEKNvP%X{Q^qrzkou{l7SY3oq%W#$tu+u! zYW;B|5wlL9IP{WbtCY|hG*gzO*$kEG;UqRSwTT>CRd+4^Z6&niW|G!M;wE~uplQi1By0dvQ~-HESOsmmII~q$b=@_(twf;9geB>A$<`E- zq0w+yl5U7>!-6>74f>WSrQ}L?kaYC|6R4liA|Pl;OVT$$mPW5&o^D@QDa2aTY9?t- zByE9wQPx7T`jlyE2|bya6Vt;p7nKpU?Sg2<{`epWp!i#(1Hi zGstEeJ39`ycOU8L=sR}&=;Oz_`wq5ucN{)?{76UF?Apb9-N)NIyB>r3(ax?fdgOy- znc((;gZq2YcPCK+tJg~DXofz0FxHze(dLHLn=ITceNajaruxEYK+I;$uv!K)vlRzi zy@%*_ux=o;R?!`BL^fzKq@C%h_-F z3icbmlKq;mV!z_6*)Mq``vqUae$LmjpYe6<{9 literal 0 HcmV?d00001 diff --git a/modules/__pycache__/negative_prompt_window.cpython-310.pyc b/modules/__pycache__/negative_prompt_window.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76153d70465420790ff7de163a4bc44ab8c38dcd GIT binary patch literal 6877 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 Pb`;pr9E1mkA}ap_O1^ys literal 0 HcmV?d00001 diff --git a/modules/__pycache__/prompt_categories.cpython-310.pyc b/modules/__pycache__/prompt_categories.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36cf75c830d0ecb6898888dd308f8eafed5e9bb8 GIT binary patch literal 2116 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 CtyoR~ literal 0 HcmV?d00001 diff --git a/modules/__pycache__/size_preset_manager.cpython-310.pyc b/modules/__pycache__/size_preset_manager.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f31c56f5023696a5f82921c0917e446e890ff93e GIT binary patch literal 2580 zcmb7GTZHh(5y5)U9~fv^kq`r<7U@c zh}l2_g8l=YJnmZ}s3BdV68GO ztVC6(O34R=>CCu8n8E3$>dY{+Me5cLXe4#LFq@wTti!Wnruo^$4khI0{#}#T8nJa#kyMPX}`xsVYzM) z2bt>@7AWrb+~~J}Zazm~l?R<}*09@2$RG0C)1;pH73Gn}oY?3lUvlx{ zt~}-8Z(qwtd2mM3r0D*5uo|SCy*Q!;c80G^$y+pZH|0i%7TTvdJNsXVd@LR#LLRHo zQ5b0rrh8;a1{4a1(jo#kpsF8E;!zdz!@$4J8B|Tv?{Z`dx?0fg78Qp;SRBLYC7259 zeCS1O=3O`os}xIejjX>tS?5NzcK&>r_+FS^0H(ZHuL*=F3{*D@a;4#X;cEZL;rJ)KaUoS~XxkrdqU0j~}hk z1In~|Kk~!W@LWQTM_?L|YqFDJfS`v_sJTl2G92XJ=MQC_eV9LiqI)-gls~rf-=OgR zoIlvUoj=S`I=H{mtn zEu3VO_d+dRhQ0GJWR#C6>nA3oJdr_VZdI}CqIaR|R$aI3o50sx_eS3f%M*cJuTX-Q3^I-Z literal 0 HcmV?d00001 diff --git a/modules/__pycache__/size_presets.cpython-310.pyc b/modules/__pycache__/size_presets.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6652f32ba595c1d6e10fca57fd3538cc537f70e1 GIT binary patch literal 436 zcmd1j<>g`k0uIe9>6(lT439w^WWWyOH~?|67?4O|NMTH2N?}f6NnuT4o5L2xkis6! zpvj@h^pb&zf#D?sGXsMrQxTBKPy{p##0F6?Hc0&C2A~K~9H^23tWc9FGXf})sQ}W; zRw@A$zcBy8zKabPn=Uq7*m|)^LBrJ0sKVULLbDX)2B75D3p+1tzp&xLHU$l!a0O6W z6QXa{g-t-=EkJ!6VEPb}D=zE+O6%xu;J0UtvjA1$_UF^Qth>!$IKx|Y3**FR4 z44`v>`gQ@0-+i&?!rqJBAT!Ji3@R)P3^e^T8E^3fdq%m&2L!nWyM_d>WGG? Date: Fri, 14 Mar 2025 20:20:55 +0700 Subject: [PATCH 5/5] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=B4=D0=B6=D0=B5=D1=80=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D1=81=D0=B5=D1=82=D0=BE=D0=B2=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=D0=BE=D0=B2:=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D1=84=D1=80=D0=B5=D0=B9=D0=BC=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE=D0=BA,=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D1=8B=20=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BB=D0=B8=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=B8=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BA=D0=B0?= =?UTF-8?q?,=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD=D0=BE=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D1=81=D0=B5=D1=82=D0=BE=D0=B2=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=B2=D0=B5=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D1=8B.=20?= =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D1=8B=20=D0=BD=D0=B0?= =?UTF-8?q?=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=89=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE=D0=BA=20=D1=81=20=D1=83=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D1=88=D0=B5=D0=BD=D0=BD=D1=8B=D0=BC=20=D0=B4=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D0=B9=D0=BD=D0=BE=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../size_preset_manager.cpython-310.pyc | Bin 2580 -> 3274 bytes .../__pycache__/size_presets.cpython-310.pyc | Bin 436 -> 308 bytes modules/size_preset_manager.py | 95 ++++++++++++------ modules/size_presets.py | 12 +-- 4 files changed, 69 insertions(+), 38 deletions(-) diff --git a/modules/__pycache__/size_preset_manager.cpython-310.pyc b/modules/__pycache__/size_preset_manager.cpython-310.pyc index f31c56f5023696a5f82921c0917e446e890ff93e..c240caed25773bb710fc08894fc273d300b396fc 100644 GIT binary patch literal 3274 zcmbVO-ESL35Z}E!pU-Efw51@(13IZtWI;+Ov>=13LMR^+gaq?>6rIkuoA}Dv=kBdZ z6D|_1i;C0-{sWXe<}H;dgi^{2f52Jd>0Wv28_$)Hn7NA+r*=fdT05S--JPA8o%zj% z6B8zZ_V+V?E`BvZ$X_@ZZW;{EL67EuFv4g+TGXa3#a3FXt+q5 z@4Cxj7YA<-59Yd2^YyNjVLR35-*p>2fd4mz+u~IvRpw=Cc9t*6y1&?VgL@PO)3j25 z$3E}OeQ>^h{=>S5rwuo>4qJ2%2q!jW#8$Yh)>H6+?S{O%-J{2Vk)%h~XiV2B zB{5l3)(LvCPB!RlRZR;~x5GthIF8@;rQ@Uq2<~>At`7!l5f2tpz2germK!uJIgS^& zQRFxqm6t)Z4jvGw(yk2vpzK`3h0@rA6tGBUpq zw&fIFV$FK~ROj+O3zoRQ*pxM^5e95@NylZ(Z!gxY7sm-`xZanGBJ8%=)IgaR8u%L( z)CdLRVoJEo??z+9t?sD5^2ZK~R_4h&#{4mdpK9Q5zr(=|oy%4f20pWn|6e^(r5&e? zcy-r`>V&`~PEE+hddKy^i2`Fkoxl%rIpFms2P`XrgL7CDMVJz6C-ylV7sEcii_Ox%YjN50H%@c* z(ta9v80mwCJZ8hg&?8K=@5ma&KNL!(P6QTOc-I^W+k^V;1-|zsXYgJqdQFaON|#dF z+@Kj`>}GCiyc)Qz26NATilVVbRmjTAqZNJ}7M*-G2t7B5&H|GQscHffRXh#^j?T3J zCTzFi*- zdk;XyEWE-hScDy~>9!Za?;3CUva05m?;4%in~}`kr{Vn1QA50eqsq$hQABRP9(c?kjI70}J zL6_eOMjqa87J>!=09OpnIDL3h;LL1wB7JCXd0w75IWO}f7YVc{D~(yH%cBEvJS%@` uWw3lE6kOn4XPVl%3%Bc0RvEJshLqZI9Yk<$^I3d*X7OT?!%$|9DgOczeqHAP delta 1028 zcmYjQ&1=*^6raiGB%9rqy4qT6S-;TL+EyvGVkv%s9;CDsFF{$;ow1E(H#M0>TeA4E zg^GeuM$fJ{k3|tLA}Wf|(-u7C;<^8YZ=w_f@8!KW@ArEjlWgvNSuBM4yp7=LDgRp7 zB|*T(1yqB=EJ5j7ZYscw#%bEr(VB~Mvj zUz=F}d7*Ct9EMy>k*hG3X-sP=u1<+4;Q@OMX~?wzWQl3~6&FOea`qtsgbAX8#4kW` z^c1yl6LU;4yp=?0D^z)dF-mY-O)`sXE!0#KwXIWCo^YdWzCoAK%>y@-rUs%n4Nejb z@MdBHUd!<29jk38dScvG*3fM%$GNgB2xW3fMoSSiYfd*x&{pU5)}zjc zt;Zlwww{;3+30-id;<4T=X2+s2-WL&O#D#KYZFTk&WSv07ky9AGD zl3p=m?h+@gUO4X)&&-43tvMpLwPPZ$=Pe2Tn`w~&@m<|5#z|N1)alWk_&sZncua;e zhA*TKkU8-ia+j@wz}7ItC7X;9;akNl-m*rpBi>s>N4lY%s3_HLP$`)VyxKhVrp|yD zLzl=wD?=hQ`u7e`24U3;;wdox=9HaC-jcYgmmX>oZO4qyEqPVHz7WapDb;<>YH=iI zPR(lISMM?kMp&=2Do-ts(reyw*x+Rn$wpEm$lO%tJ`b3iTZnvG`4`jbUX7*teV_8h z)L3Nx!XkH#`3C1jtFU-HN?_$Hnri%?1wq9&f&@eSLsxUXR z&@2^$NN&Bb^TPHE8!l{9&;SZo0Hrk{`et3&1Qgx^)VBeq4