creatumlibre.ui.left_sidebar.left_sidebar
1from PyQt6.QtCore import QSize 2from PyQt6.QtGui import QIcon, QPixmap 3from PyQt6.QtWidgets import QSizePolicy, QToolButton, QVBoxLayout, QWidget 4 5from creatumlibre.ui.dialogs.color_adjustment_dialog import ColorAdjustmentDialog 6from creatumlibre.ui.left_sidebar.left_sidebar_css import LEFT_SIDEBAR_SIMPLE_BUTTON 7from creatumlibre.ui.mode.ui_input_mode import InputMode 8 9BUTTON_WIDTH = 40 10BUTTON_HEIGHT = 40 11 12 13class LeftSidebar(QWidget): 14 """Sidebar with multiple tool buttons.""" 15 16 def __init__(self, parent): 17 super().__init__(parent) 18 self.parent = parent 19 self.color_adjustment_dialog = ColorAdjustmentDialog( 20 self, self.parent.tab_manager 21 ) 22 23 sidebar_layout = QVBoxLayout(self) 24 sidebar_layout.setContentsMargins(0, 0, 0, 0) 25 sidebar_layout.setSpacing(20) 26 27 # Create and add tool buttons 28 self.btn_color_adjustment = self._create_tool_button( 29 "src/creatumlibre/assets/color.png", self.color_adjustment_dialog.show 30 ) 31 self.btn_region = self._create_tool_button( 32 "src/creatumlibre/assets/region.png", 33 lambda: self.parent.ui_input_mode.set_mode(InputMode.SELECT_REGION), 34 ) 35 36 sidebar_layout.addWidget(self.btn_color_adjustment) 37 sidebar_layout.addWidget(self.btn_region) 38 39 self.setLayout(sidebar_layout) 40 41 # Add buttons to parent's sidebar layout 42 for button in [self.btn_color_adjustment, self.btn_region]: 43 parent.left_sidebar_layout.addWidget(button) 44 button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) 45 46 def _create_tool_button(self, icon_path, callback): 47 """Creates a styled tool button with an icon.""" 48 button = QToolButton(self) 49 button.setIcon(QIcon(QPixmap(icon_path).scaled(BUTTON_WIDTH, BUTTON_HEIGHT))) 50 button.setIconSize(QSize(BUTTON_WIDTH, BUTTON_HEIGHT)) 51 button.setStyleSheet(LEFT_SIDEBAR_SIMPLE_BUTTON) 52 if callback: 53 button.clicked.connect(callback) 54 return button
BUTTON_WIDTH =
40
BUTTON_HEIGHT =
40
class
LeftSidebar(PyQt6.QtWidgets.QWidget):
14class LeftSidebar(QWidget): 15 """Sidebar with multiple tool buttons.""" 16 17 def __init__(self, parent): 18 super().__init__(parent) 19 self.parent = parent 20 self.color_adjustment_dialog = ColorAdjustmentDialog( 21 self, self.parent.tab_manager 22 ) 23 24 sidebar_layout = QVBoxLayout(self) 25 sidebar_layout.setContentsMargins(0, 0, 0, 0) 26 sidebar_layout.setSpacing(20) 27 28 # Create and add tool buttons 29 self.btn_color_adjustment = self._create_tool_button( 30 "src/creatumlibre/assets/color.png", self.color_adjustment_dialog.show 31 ) 32 self.btn_region = self._create_tool_button( 33 "src/creatumlibre/assets/region.png", 34 lambda: self.parent.ui_input_mode.set_mode(InputMode.SELECT_REGION), 35 ) 36 37 sidebar_layout.addWidget(self.btn_color_adjustment) 38 sidebar_layout.addWidget(self.btn_region) 39 40 self.setLayout(sidebar_layout) 41 42 # Add buttons to parent's sidebar layout 43 for button in [self.btn_color_adjustment, self.btn_region]: 44 parent.left_sidebar_layout.addWidget(button) 45 button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) 46 47 def _create_tool_button(self, icon_path, callback): 48 """Creates a styled tool button with an icon.""" 49 button = QToolButton(self) 50 button.setIcon(QIcon(QPixmap(icon_path).scaled(BUTTON_WIDTH, BUTTON_HEIGHT))) 51 button.setIconSize(QSize(BUTTON_WIDTH, BUTTON_HEIGHT)) 52 button.setStyleSheet(LEFT_SIDEBAR_SIMPLE_BUTTON) 53 if callback: 54 button.clicked.connect(callback) 55 return button
Sidebar with multiple tool buttons.
LeftSidebar(parent)
17 def __init__(self, parent): 18 super().__init__(parent) 19 self.parent = parent 20 self.color_adjustment_dialog = ColorAdjustmentDialog( 21 self, self.parent.tab_manager 22 ) 23 24 sidebar_layout = QVBoxLayout(self) 25 sidebar_layout.setContentsMargins(0, 0, 0, 0) 26 sidebar_layout.setSpacing(20) 27 28 # Create and add tool buttons 29 self.btn_color_adjustment = self._create_tool_button( 30 "src/creatumlibre/assets/color.png", self.color_adjustment_dialog.show 31 ) 32 self.btn_region = self._create_tool_button( 33 "src/creatumlibre/assets/region.png", 34 lambda: self.parent.ui_input_mode.set_mode(InputMode.SELECT_REGION), 35 ) 36 37 sidebar_layout.addWidget(self.btn_color_adjustment) 38 sidebar_layout.addWidget(self.btn_region) 39 40 self.setLayout(sidebar_layout) 41 42 # Add buttons to parent's sidebar layout 43 for button in [self.btn_color_adjustment, self.btn_region]: 44 parent.left_sidebar_layout.addWidget(button) 45 button.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)