from PyQt6.QtWidgets import QWidget from PyQt6.QtCore import Qt from app.ui.layouts.flow_layout import FlowLayout, JustifyMode, LastRowMode from app.ui.widgets.grid_element import GridElement class GridWidget(QWidget): def __init__(self, elements: list[GridElement] = [], parent=None) -> None: super().__init__(parent) self.elements = elements self.setup_ui() def setup_ui(self) -> None: layout = FlowLayout(self, justify_mode=JustifyMode.SPACE_BETWEEN, last_row_mode=LastRowMode.MATCH_PREVIOUS) layout.setAlignment(Qt.AlignmentFlag.AlignCenter) if self.elements: for element in self.elements: layout.addWidget(element) else: for _ in range(5000): # Add 58 placeholder elements layout.addWidget(GridElement(self, name="Placeholder", image="data/assets/icon.png")) def add_element(self, element: GridElement) -> None: layout: FlowLayout = self.layout() layout.addWidget(element) def remove_element(self, element: GridElement) -> None: layout: FlowLayout = self.layout() layout.removeWidget(element) element.setParent(None)