"""Dialog window for editing flights.""" from PySide6.QtWidgets import ( QDialog, QVBoxLayout, ) from game.ato.flight import Flight from game.server import EventStream from game.sim import GameUpdateEvents from qt_ui.models import GameModel, PackageModel from qt_ui.uiconstants import EVENT_ICONS from qt_ui.windows.mission.flight.QFlightPlanner import QFlightPlanner class QEditFlightDialog(QDialog): """Dialog window for editing flight plans and loadouts.""" def __init__( self, game_model: GameModel, package_model: PackageModel, flight: Flight, parent=None, ) -> None: super().__init__(parent=parent) self.game_model = game_model self.flight = flight self.package_model = package_model self.events = GameUpdateEvents() self.setWindowTitle("Edit flight") self.setWindowIcon(EVENT_ICONS["strike"]) self.setModal(True) layout = QVBoxLayout() self.flight_planner = QFlightPlanner(package_model, flight, game_model) self.flight_planner.squadron_changed.connect(self.on_squadron_change) layout.addWidget(self.flight_planner) self.setLayout(layout) self.finished.connect(self.on_close) def on_squadron_change(self, flight: Flight): self.events = GameUpdateEvents().delete_flight(self.flight) self.events = self.events.new_flight(flight) self.game_model.ato_model.client_slots_changed.emit() self.flight = flight self.reject() new_dialog = QEditFlightDialog( self.game_model, self.package_model, flight, self.parent() ) new_dialog.show() def on_close(self, _result) -> None: self.events = self.events.update_flight(self.flight) EventStream.put_nowait(self.events) self.game_model.ato_model.client_slots_changed.emit()