from PyQt5.QtGui import QIcon import utils.paths as paths from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QPushButton, QLineEdit, QFileDialog, QMainWindow, QWidget, QTextEdit from core.verifier import Verifier # Assuming Verifier is defined in core.verifier class Main(QMainWindow): def __init__(self): super().__init__() self.verifier = Verifier() # Configurer la fenêtre avant de créer les widgets self.setMinimumSize(1000, 600) self.setWindowTitle("HoDA_Verifier") self.setWindowIcon(QIcon(paths.get_asset_path("icon"))) self.setup_ui() def setup_ui(self): # Create a central widget central_widget = QWidget() self.main_layout = QVBoxLayout(central_widget) self.main_layout.setSpacing(20) self.browse_layout = QHBoxLayout() self.browse_layout.setSpacing(10) # Create a QLineEdit for the path input self.path_input = QLineEdit(self) self.path_input.setPlaceholderText("Sélectionnes le fichier csv ->") self.browse_layout.addWidget(self.path_input) # Create a QPushButton to open the file dialog self.browse_button = QPushButton("Parcourir", self) self.browse_button.clicked.connect(self.open_file_dialog) self.browse_layout.addWidget(self.browse_button) # Create a QPushButton to verify the path self.verify_button = QPushButton("Vérifier", self) self.verify_button.clicked.connect(self.verify_file) self.main_layout.addLayout(self.browse_layout) # Create a QTextEdit for displaying verification results self.results_display = QTextEdit(self) self.results_display.setPlaceholderText("Les résultats de la vérification apparaîtront ici...") self.results_display.setReadOnly(True) # Make it read-only self.results_display.setMinimumHeight(200) # Set minimum height self.main_layout.addWidget(self.results_display) self.main_layout.addWidget(self.verify_button) # Set the layout on the central widget central_widget.setLayout(self.main_layout) # Set the central widget self.setCentralWidget(central_widget) def open_file_dialog(self): path, _ = QFileDialog.getOpenFileName(self, "Select File", "", "CSV Files (*.csv)") if path: self.path_input.setText(path) def verify_file(self): file_path = self.path_input.text() if not file_path: self.results_display.setText("Veuillez sélectionner un fichier CSV d'abord.") return result = self.verifier.verify(file_path) # Clear previous results self.results_display.clear() if isinstance(result, list): if result: # If there are issues # Join the list of issues with newlines self.results_display.setText("\n".join(result)) else: # No issues found self.results_display.setText("✅ Aucune discordance trouvée ! Toutes les données correspondent.") else: # If result is a string (error message) self.results_display.setText(result)