Merge pull request #3 from kromskii2/feature/prompt-translations
Feature/prompt translations
This commit was merged in pull request #3.
This commit is contained in:
13 files changed
+462
-5
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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)
|
||||
@@ -217,5 +218,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)
|
||||
@@ -0,0 +1,93 @@
|
||||
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QFrame
|
||||
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)
|
||||
layout.setSpacing(2)
|
||||
|
||||
# Заголовок
|
||||
title = QLabel("Размеры:")
|
||||
title.setStyleSheet("""
|
||||
QLabel {
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
padding: 4px;
|
||||
background-color: #3b3b3b;
|
||||
border-radius: 4px;
|
||||
}
|
||||
""")
|
||||
layout.addWidget(title)
|
||||
|
||||
# Создаем фрейм для кнопок
|
||||
buttons_frame = QFrame()
|
||||
buttons_frame.setStyleSheet("""
|
||||
QFrame {
|
||||
background-color: #2b2b2b;
|
||||
border: 1px solid #3b3b3b;
|
||||
border-radius: 4px;
|
||||
padding: 2px;
|
||||
}
|
||||
""")
|
||||
buttons_layout = QVBoxLayout(buttons_frame)
|
||||
buttons_layout.setSpacing(2)
|
||||
|
||||
# Создаем две строки кнопок
|
||||
row1_layout = QHBoxLayout()
|
||||
row2_layout = QHBoxLayout()
|
||||
|
||||
# Разделяем пресеты на две группы
|
||||
presets = list(SIZE_PRESETS.items())
|
||||
half = len(presets) // 2
|
||||
|
||||
# Добавляем кнопки в первую строку
|
||||
for name, (width, height) in presets[:half]:
|
||||
button = self.create_preset_button(name, width, height)
|
||||
row1_layout.addWidget(button)
|
||||
|
||||
# Добавляем кнопки во вторую строку
|
||||
for name, (width, height) in presets[half:]:
|
||||
button = self.create_preset_button(name, width, height)
|
||||
row2_layout.addWidget(button)
|
||||
|
||||
buttons_layout.addLayout(row1_layout)
|
||||
buttons_layout.addLayout(row2_layout)
|
||||
layout.addWidget(buttons_frame)
|
||||
|
||||
def create_preset_button(self, name, width, height):
|
||||
"""Создание кнопки пресета с улучшенным дизайном"""
|
||||
button = QPushButton(name)
|
||||
button.setStyleSheet(f"""
|
||||
QPushButton {{
|
||||
background-color: #3b3b3b;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
font-size: 11px;
|
||||
min-width: 80px;
|
||||
text-align: center;
|
||||
}}
|
||||
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))
|
||||
return button
|
||||
|
||||
def on_preset_clicked(self, width, height):
|
||||
"""Обработчик нажатия на кнопку пресета"""
|
||||
self.size_changed.emit(width, height)
|
||||
@@ -0,0 +1,8 @@
|
||||
SIZE_PRESETS = {
|
||||
"512x768": (512, 768),
|
||||
"768x512": (768, 512),
|
||||
"512x512": (512, 512),
|
||||
"768x432": (768, 432),
|
||||
"432x768": (432, 768),
|
||||
"600x800": (600, 800)
|
||||
}
|
||||
Reference in new issue
Block a user