31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
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)
|