diff --git a/qt_ui/windows/mission/flight/QFlightPlanner.py b/qt_ui/windows/mission/flight/QFlightPlanner.py index af48219c..b4eb9b36 100644 --- a/qt_ui/windows/mission/flight/QFlightPlanner.py +++ b/qt_ui/windows/mission/flight/QFlightPlanner.py @@ -19,11 +19,15 @@ class QFlightPlanner(QTabWidget): def __init__(self, package: Package, flight: Flight, game: Game): super().__init__() - self.general_settings_tab = QGeneralFlightSettingsTab(game, flight) + self.general_settings_tab = QGeneralFlightSettingsTab( + game, package, flight + ) + # noinspection PyUnresolvedReferences self.general_settings_tab.on_flight_settings_changed.connect( lambda: self.on_planned_flight_changed.emit()) self.payload_tab = QFlightPayloadTab(flight, game) self.waypoint_tab = QFlightWaypointTab(game, package, flight) + # noinspection PyUnresolvedReferences self.waypoint_tab.on_flight_changed.connect( lambda: self.on_planned_flight_changed.emit()) self.addTab(self.general_settings_tab, "General Flight settings") diff --git a/qt_ui/windows/mission/flight/settings/QFlightDepartureDisplay.py b/qt_ui/windows/mission/flight/settings/QFlightDepartureDisplay.py new file mode 100644 index 00000000..a720cc8b --- /dev/null +++ b/qt_ui/windows/mission/flight/settings/QFlightDepartureDisplay.py @@ -0,0 +1,32 @@ +import datetime + +from PySide2.QtWidgets import QLabel, QHBoxLayout, QGroupBox, QVBoxLayout + +from gen.ato import Package +from gen.flights.flight import Flight +from gen.flights.traveltime import TotEstimator + + +# TODO: Remove? +class QFlightDepartureDisplay(QGroupBox): + + def __init__(self, package: Package, flight: Flight): + super().__init__("Departure") + + layout = QVBoxLayout() + + departure_row = QHBoxLayout() + layout.addLayout(departure_row) + + estimator = TotEstimator(package) + delay = datetime.timedelta(seconds=estimator.mission_start_time(flight)) + + departure_row.addWidget(QLabel( + f"Departing from {flight.from_cp.name}" + )) + departure_row.addWidget(QLabel(f"At T+{delay}")) + + layout.addWidget(QLabel("Determined based on the package TOT. Edit the " + "package to adjust the TOT.")) + + self.setLayout(layout) diff --git a/qt_ui/windows/mission/flight/settings/QFlightDepartureEditor.py b/qt_ui/windows/mission/flight/settings/QFlightDepartureEditor.py deleted file mode 100644 index abf429cf..00000000 --- a/qt_ui/windows/mission/flight/settings/QFlightDepartureEditor.py +++ /dev/null @@ -1,31 +0,0 @@ -from PySide2.QtWidgets import QLabel, QHBoxLayout, QGroupBox, QSpinBox - - -# TODO: Remove? -class QFlightDepartureEditor(QGroupBox): - - def __init__(self, flight): - super(QFlightDepartureEditor, self).__init__("Departure") - self.flight = flight - - layout = QHBoxLayout() - self.depart_from = QLabel("Departing from " + self.flight.from_cp.name + "") - self.depart_at_t = QLabel("At T +") - self.minutes = QLabel(" minutes") - - self.departure_delta = QSpinBox(self) - self.departure_delta.setMinimum(0) - self.departure_delta.setMaximum(120) - self.departure_delta.setValue(self.flight.scheduled_in // 60) - self.departure_delta.valueChanged.connect(self.change_scheduled) - - layout.addWidget(self.depart_from) - layout.addWidget(self.depart_at_t) - layout.addWidget(self.departure_delta) - layout.addWidget(self.minutes) - self.setLayout(layout) - - self.changed = self.departure_delta.valueChanged - - def change_scheduled(self): - self.flight.scheduled_in = int(self.departure_delta.value() * 60) diff --git a/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py b/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py index 99f2b63f..f1419669 100644 --- a/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py +++ b/qt_ui/windows/mission/flight/settings/QGeneralFlightSettingsTab.py @@ -2,26 +2,29 @@ from PySide2.QtCore import Signal from PySide2.QtWidgets import QFrame, QGridLayout, QVBoxLayout from game import Game +from gen.ato import Package from gen.flights.flight import Flight -from qt_ui.windows.mission.flight.settings.QFlightDepartureEditor import QFlightDepartureEditor -from qt_ui.windows.mission.flight.settings.QFlightSlotEditor import QFlightSlotEditor -from qt_ui.windows.mission.flight.settings.QFlightStartType import QFlightStartType -from qt_ui.windows.mission.flight.settings.QFlightTypeTaskInfo import QFlightTypeTaskInfo +from qt_ui.windows.mission.flight.settings.QFlightDepartureDisplay import \ + QFlightDepartureDisplay +from qt_ui.windows.mission.flight.settings.QFlightSlotEditor import \ + QFlightSlotEditor +from qt_ui.windows.mission.flight.settings.QFlightStartType import \ + QFlightStartType +from qt_ui.windows.mission.flight.settings.QFlightTypeTaskInfo import \ + QFlightTypeTaskInfo class QGeneralFlightSettingsTab(QFrame): on_flight_settings_changed = Signal() - def __init__(self, game: Game, flight: Flight): - super(QGeneralFlightSettingsTab, self).__init__() - self.flight = flight - self.game = game + def __init__(self, game: Game, package: Package, flight: Flight): + super().__init__() layout = QGridLayout() - flight_info = QFlightTypeTaskInfo(self.flight) - flight_departure = QFlightDepartureEditor(self.flight) - flight_slots = QFlightSlotEditor(self.flight, self.game) - flight_start_type = QFlightStartType(self.flight) + flight_info = QFlightTypeTaskInfo(flight) + flight_departure = QFlightDepartureDisplay(package, flight) + flight_slots = QFlightSlotEditor(flight, game) + flight_start_type = QFlightStartType(flight) layout.addWidget(flight_info, 0, 0) layout.addWidget(flight_departure, 1, 0) layout.addWidget(flight_slots, 2, 0) @@ -31,8 +34,6 @@ class QGeneralFlightSettingsTab(QFrame): layout.addLayout(vstretch, 3, 0) self.setLayout(layout) - flight_start_type.setEnabled(self.flight.client_count > 0) + flight_start_type.setEnabled(flight.client_count > 0) flight_slots.changed.connect( - lambda: flight_start_type.setEnabled(self.flight.client_count > 0)) - flight_departure.changed.connect( - lambda: self.on_flight_settings_changed.emit()) + lambda: flight_start_type.setEnabled(flight.client_count > 0))