From 916d1eec9644adf9a5b326c8de88d7bb94e58ea8 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Mon, 19 Oct 2020 20:46:18 -0700 Subject: [PATCH] Limit flight size to available aircraft. --- qt_ui/widgets/combos/QOriginAirfieldSelector.py | 6 ++++++ qt_ui/windows/mission/flight/QFlightCreator.py | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/qt_ui/widgets/combos/QOriginAirfieldSelector.py b/qt_ui/widgets/combos/QOriginAirfieldSelector.py index b0995a6b..904ec114 100644 --- a/qt_ui/widgets/combos/QOriginAirfieldSelector.py +++ b/qt_ui/widgets/combos/QOriginAirfieldSelector.py @@ -39,3 +39,9 @@ class QOriginAirfieldSelector(QComboBox): self.addItem(f"{origin.name} ({available} available)", origin) self.model().sort(0) self.update() + + @property + def available(self) -> int: + origin = self.currentData() + inventory = self.global_inventory.for_control_point(origin) + return inventory.available(self.aircraft) diff --git a/qt_ui/windows/mission/flight/QFlightCreator.py b/qt_ui/windows/mission/flight/QFlightCreator.py index 07082848..a2ca14ee 100644 --- a/qt_ui/windows/mission/flight/QFlightCreator.py +++ b/qt_ui/windows/mission/flight/QFlightCreator.py @@ -53,9 +53,11 @@ class QFlightCreator(QDialog): [cp for cp in game.theater.controlpoints if cp.captured], self.aircraft_selector.currentData() ) + self.aircraft_selector.currentIndexChanged.connect(self.update_max_size) layout.addLayout(QLabeledWidget("Airfield:", self.airfield_selector)) self.flight_size_spinner = QFlightSizeSpinner() + self.update_max_size() layout.addLayout(QLabeledWidget("Size:", self.flight_size_spinner)) self.client_slots_spinner = QFlightSizeSpinner( @@ -116,3 +118,8 @@ class QFlightCreator(QDialog): def on_aircraft_changed(self, index: int) -> None: new_aircraft = self.aircraft_selector.itemData(index) self.airfield_selector.change_aircraft(new_aircraft) + + def update_max_size(self) -> None: + self.flight_size_spinner.setMaximum( + min(self.airfield_selector.available, 4) + )