BorgBackup_gui/borgbackup_gui/ListBackupGUI.py

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())