creatumlibre.ui.dialogs.object_manager_dialog
1from PyQt6.QtCore import Qt 2from PyQt6.QtGui import QGuiApplication, QIcon 3from PyQt6.QtWidgets import ( 4 QDialog, 5 QHBoxLayout, 6 QLabel, 7 QListWidget, 8 QListWidgetItem, 9 QPushButton, 10 QVBoxLayout, 11) 12 13from creatumlibre.ui.manager.object_manager import ObjectManager 14 15 16class ObjectManagerDialog(QDialog): 17 """A dialog to show and manipulate the layers""" 18 19 def __init__(self, object_manager: ObjectManager, parent=None): 20 super().__init__(parent) 21 self.setWindowTitle("Object Manager") 22 self.object_manager = object_manager 23 24 self.layout = QVBoxLayout(self) 25 26 self.label = QLabel("Layer Stack (Top → Bottom)") 27 self.layout.addWidget(self.label) 28 29 self.layer_list = QListWidget() 30 self.populate_layer_list() 31 self.layout.addWidget(self.layer_list) 32 33 # Placeholder button bar (can be removed or extended later) 34 button_layout = QHBoxLayout() 35 button_layout.addWidget(QPushButton("↑ Move Up")) 36 button_layout.addWidget(QPushButton("↓ Move Down")) 37 button_layout.addWidget(QPushButton("✕ Delete")) 38 self.layout.addLayout(button_layout) 39 self.setMinimumSize(250, 400) 40 41 screen = QGuiApplication.primaryScreen() 42 screen_geometry = screen.availableGeometry() 43 44 dialog_width = self.width() # or self.width() after layout 45 dialog_height = self.height() # or self.height() 46 47 x = screen_geometry.right() - dialog_width 48 y = screen_geometry.top() + 100 # Offset from top for style 49 50 self.setGeometry(x, y, dialog_width, dialog_height) 51 52 def populate_layer_list(self): 53 self.layer_list.clear() 54 for idx, obj in enumerate(reversed(self.object_manager.object_list)): 55 item = QListWidgetItem( 56 f"Object {len(self.object_manager.object_list) - idx - 1}" 57 ) 58 pixmap = obj.get_pixmap().scaled(64, 64, Qt.AspectRatioMode.KeepAspectRatio) 59 item.setIcon(QIcon(pixmap)) 60 self.layer_list.addItem(item) 61 62 def refresh(self): 63 """external refrsh trigger""" 64 self.populate_layer_list()
class
ObjectManagerDialog(PyQt6.QtWidgets.QDialog):
17class ObjectManagerDialog(QDialog): 18 """A dialog to show and manipulate the layers""" 19 20 def __init__(self, object_manager: ObjectManager, parent=None): 21 super().__init__(parent) 22 self.setWindowTitle("Object Manager") 23 self.object_manager = object_manager 24 25 self.layout = QVBoxLayout(self) 26 27 self.label = QLabel("Layer Stack (Top → Bottom)") 28 self.layout.addWidget(self.label) 29 30 self.layer_list = QListWidget() 31 self.populate_layer_list() 32 self.layout.addWidget(self.layer_list) 33 34 # Placeholder button bar (can be removed or extended later) 35 button_layout = QHBoxLayout() 36 button_layout.addWidget(QPushButton("↑ Move Up")) 37 button_layout.addWidget(QPushButton("↓ Move Down")) 38 button_layout.addWidget(QPushButton("✕ Delete")) 39 self.layout.addLayout(button_layout) 40 self.setMinimumSize(250, 400) 41 42 screen = QGuiApplication.primaryScreen() 43 screen_geometry = screen.availableGeometry() 44 45 dialog_width = self.width() # or self.width() after layout 46 dialog_height = self.height() # or self.height() 47 48 x = screen_geometry.right() - dialog_width 49 y = screen_geometry.top() + 100 # Offset from top for style 50 51 self.setGeometry(x, y, dialog_width, dialog_height) 52 53 def populate_layer_list(self): 54 self.layer_list.clear() 55 for idx, obj in enumerate(reversed(self.object_manager.object_list)): 56 item = QListWidgetItem( 57 f"Object {len(self.object_manager.object_list) - idx - 1}" 58 ) 59 pixmap = obj.get_pixmap().scaled(64, 64, Qt.AspectRatioMode.KeepAspectRatio) 60 item.setIcon(QIcon(pixmap)) 61 self.layer_list.addItem(item) 62 63 def refresh(self): 64 """external refrsh trigger""" 65 self.populate_layer_list()
A dialog to show and manipulate the layers
ObjectManagerDialog( object_manager: creatumlibre.ui.manager.object_manager.ObjectManager, parent=None)
20 def __init__(self, object_manager: ObjectManager, parent=None): 21 super().__init__(parent) 22 self.setWindowTitle("Object Manager") 23 self.object_manager = object_manager 24 25 self.layout = QVBoxLayout(self) 26 27 self.label = QLabel("Layer Stack (Top → Bottom)") 28 self.layout.addWidget(self.label) 29 30 self.layer_list = QListWidget() 31 self.populate_layer_list() 32 self.layout.addWidget(self.layer_list) 33 34 # Placeholder button bar (can be removed or extended later) 35 button_layout = QHBoxLayout() 36 button_layout.addWidget(QPushButton("↑ Move Up")) 37 button_layout.addWidget(QPushButton("↓ Move Down")) 38 button_layout.addWidget(QPushButton("✕ Delete")) 39 self.layout.addLayout(button_layout) 40 self.setMinimumSize(250, 400) 41 42 screen = QGuiApplication.primaryScreen() 43 screen_geometry = screen.availableGeometry() 44 45 dialog_width = self.width() # or self.width() after layout 46 dialog_height = self.height() # or self.height() 47 48 x = screen_geometry.right() - dialog_width 49 y = screen_geometry.top() + 100 # Offset from top for style 50 51 self.setGeometry(x, y, dialog_width, dialog_height)
def
populate_layer_list(self):
53 def populate_layer_list(self): 54 self.layer_list.clear() 55 for idx, obj in enumerate(reversed(self.object_manager.object_list)): 56 item = QListWidgetItem( 57 f"Object {len(self.object_manager.object_list) - idx - 1}" 58 ) 59 pixmap = obj.get_pixmap().scaled(64, 64, Qt.AspectRatioMode.KeepAspectRatio) 60 item.setIcon(QIcon(pixmap)) 61 self.layer_list.addItem(item)