73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
from PySide6.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QLabel, QApplication, QPushButton, QScrollArea
|
|
from PySide6.QtCore import Signal, QSize
|
|
|
|
class ListBackupGUI(QWidget):
|
|
selected = Signal(str)
|
|
|
|
def __init__(self, list_backup:list[str]):
|
|
super().__init__()
|
|
layout = QVBoxLayout()
|
|
layout.addWidget(QLabel("Liste des sauvegardes"))
|
|
|
|
w_list_backup_elements = QWidget()
|
|
layout_list_backup_elements = QVBoxLayout()
|
|
|
|
|
|
self.listBackupElements:list[ListBackupElement] = []
|
|
for list_backup_element_name in list_backup:
|
|
list_backup_element = ListBackupElement(list_backup_element_name)
|
|
list_backup_element.selected.connect(self.is_selected)
|
|
self.listBackupElements.append(list_backup_element)
|
|
layout_list_backup_elements.addWidget(list_backup_element)
|
|
|
|
w_list_backup_elements.setLayout(layout_list_backup_elements)
|
|
|
|
scrollArea = QScrollArea()
|
|
scrollArea.setWidget(w_list_backup_elements)
|
|
layout.addWidget(scrollArea)
|
|
self.setLayout(layout)
|
|
|
|
def is_selected(self, nom):
|
|
print(nom)
|
|
self.deactivate()
|
|
self.selected.emit(nom)
|
|
|
|
def deactivate(self):
|
|
for element in self.listBackupElements:
|
|
element.button.setEnabled(False)
|
|
|
|
def activate(self):
|
|
for element in self.listBackupElements:
|
|
element.button.setEnabled(True)
|
|
|
|
def sizeHint(self):
|
|
return QSize(400, 400)
|
|
|
|
|
|
|
|
class ListBackupElement(QWidget):
|
|
selected = Signal(str)
|
|
|
|
def __init__(self, nom_backup:str):
|
|
super().__init__()
|
|
layout = QHBoxLayout()
|
|
self.nom = nom_backup
|
|
layout.addWidget(QLabel(nom_backup))
|
|
self.button = QPushButton("Select")
|
|
self.button.clicked.connect(self.is_selected)
|
|
layout.addWidget(self.button)
|
|
self.setLayout(layout)
|
|
|
|
def is_selected(self):
|
|
self.selected.emit(self.nom)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
app = QApplication([])
|
|
widget = ListBackupGUI(["Aujourd'hui", "hier"])
|
|
widget.show()
|
|
|
|
sys.exit(app.exec())
|
|
|