Make the departure time non-editable.

Fixes part 2 of https://github.com/Khopa/dcs_liberation/issues/207.
This commit is contained in:
Dan Albert 2020-10-15 17:57:25 -07:00
parent da2584d7ee
commit 8dc531bb7f
4 changed files with 54 additions and 48 deletions

View File

@ -19,11 +19,15 @@ class QFlightPlanner(QTabWidget):
def __init__(self, package: Package, flight: Flight, game: Game): def __init__(self, package: Package, flight: Flight, game: Game):
super().__init__() 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( self.general_settings_tab.on_flight_settings_changed.connect(
lambda: self.on_planned_flight_changed.emit()) lambda: self.on_planned_flight_changed.emit())
self.payload_tab = QFlightPayloadTab(flight, game) self.payload_tab = QFlightPayloadTab(flight, game)
self.waypoint_tab = QFlightWaypointTab(game, package, flight) self.waypoint_tab = QFlightWaypointTab(game, package, flight)
# noinspection PyUnresolvedReferences
self.waypoint_tab.on_flight_changed.connect( self.waypoint_tab.on_flight_changed.connect(
lambda: self.on_planned_flight_changed.emit()) lambda: self.on_planned_flight_changed.emit())
self.addTab(self.general_settings_tab, "General Flight settings") self.addTab(self.general_settings_tab, "General Flight settings")

View File

@ -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 <b>{flight.from_cp.name}</b>"
))
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)

View File

@ -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 <b>" + self.flight.from_cp.name + "</b>")
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)

View File

@ -2,26 +2,29 @@ from PySide2.QtCore import Signal
from PySide2.QtWidgets import QFrame, QGridLayout, QVBoxLayout from PySide2.QtWidgets import QFrame, QGridLayout, QVBoxLayout
from game import Game from game import Game
from gen.ato import Package
from gen.flights.flight import Flight from gen.flights.flight import Flight
from qt_ui.windows.mission.flight.settings.QFlightDepartureEditor import QFlightDepartureEditor from qt_ui.windows.mission.flight.settings.QFlightDepartureDisplay import \
from qt_ui.windows.mission.flight.settings.QFlightSlotEditor import QFlightSlotEditor QFlightDepartureDisplay
from qt_ui.windows.mission.flight.settings.QFlightStartType import QFlightStartType from qt_ui.windows.mission.flight.settings.QFlightSlotEditor import \
from qt_ui.windows.mission.flight.settings.QFlightTypeTaskInfo import QFlightTypeTaskInfo QFlightSlotEditor
from qt_ui.windows.mission.flight.settings.QFlightStartType import \
QFlightStartType
from qt_ui.windows.mission.flight.settings.QFlightTypeTaskInfo import \
QFlightTypeTaskInfo
class QGeneralFlightSettingsTab(QFrame): class QGeneralFlightSettingsTab(QFrame):
on_flight_settings_changed = Signal() on_flight_settings_changed = Signal()
def __init__(self, game: Game, flight: Flight): def __init__(self, game: Game, package: Package, flight: Flight):
super(QGeneralFlightSettingsTab, self).__init__() super().__init__()
self.flight = flight
self.game = game
layout = QGridLayout() layout = QGridLayout()
flight_info = QFlightTypeTaskInfo(self.flight) flight_info = QFlightTypeTaskInfo(flight)
flight_departure = QFlightDepartureEditor(self.flight) flight_departure = QFlightDepartureDisplay(package, flight)
flight_slots = QFlightSlotEditor(self.flight, self.game) flight_slots = QFlightSlotEditor(flight, game)
flight_start_type = QFlightStartType(self.flight) flight_start_type = QFlightStartType(flight)
layout.addWidget(flight_info, 0, 0) layout.addWidget(flight_info, 0, 0)
layout.addWidget(flight_departure, 1, 0) layout.addWidget(flight_departure, 1, 0)
layout.addWidget(flight_slots, 2, 0) layout.addWidget(flight_slots, 2, 0)
@ -31,8 +34,6 @@ class QGeneralFlightSettingsTab(QFrame):
layout.addLayout(vstretch, 3, 0) layout.addLayout(vstretch, 3, 0)
self.setLayout(layout) self.setLayout(layout)
flight_start_type.setEnabled(self.flight.client_count > 0) flight_start_type.setEnabled(flight.client_count > 0)
flight_slots.changed.connect( flight_slots.changed.connect(
lambda: flight_start_type.setEnabled(self.flight.client_count > 0)) lambda: flight_start_type.setEnabled(flight.client_count > 0))
flight_departure.changed.connect(
lambda: self.on_flight_settings_changed.emit())