from pathlib import Path from PyQt6 import QtWidgets from PyQt6.QtWidgets import QDialog, QFileDialog from PyQt6.QtGui import QCloseEvent from warchron.view.ui.ui_main_window import Ui_MainWindow from warchron.view.ui.ui_player_dialog import Ui_playerDialog class View(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(View, self).__init__(parent) self.setupUi(self) self.on_close_callback = None def display_players(self, players: list): table = self.playersTable table.setRowCount(len(players)) for row, player in enumerate(players): table.setItem(row, 0, QtWidgets.QTableWidgetItem(player.name)) table.setItem(row, 1, QtWidgets.QTableWidgetItem(player.id)) table.resizeColumnsToContents() def closeEvent(self, event: QCloseEvent): if self.on_close_callback: proceed = self.on_close_callback() if not proceed: event.ignore() return event.accept() def ask_open_file(self) -> Path | None: filename, _ = QFileDialog.getOpenFileName( self, "Open war history", "", "WarChron files (*.json)" ) return Path(filename) if filename else None def ask_save_file(self) -> Path | None: filename, _ = QFileDialog.getSaveFileName( self, "Save war history", "", "WarChron files (*.json)" ) return Path(filename) if filename else None class PlayerDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_playerDialog() self.ui.setupUi(self) def get_player_name(self) -> str: return self.ui.playerName.text().strip()