mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
"""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()
|