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))