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)
object_manager
def layout(unknown):

The type of the None singleton.

label
layer_list
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)
def refresh(self):
63    def refresh(self):
64        """external refrsh trigger"""
65        self.populate_layer_list()

external refrsh trigger