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)