Fix incomplete reset (#2330)

* Fixing 'Reset' in squadron boxes

* Always use confirmation pop-up when closing with [X]
This commit is contained in:
Raffson 2022-07-23 12:10:26 +02:00 committed by GitHub
parent d1c1977a9c
commit 1bee29de83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 39 deletions

View File

@ -20,7 +20,7 @@ Saves from 5.x are not compatible with 6.0.
* **[Modding]** Updated the High Digit SAMs implementation and added the HQ-2 as well as the upgraded SA-2 and SA-3 Launchers from the mod. Threat range circles will now also be displayed correctly. * **[Modding]** Updated the High Digit SAMs implementation and added the HQ-2 as well as the upgraded SA-2 and SA-3 Launchers from the mod. Threat range circles will now also be displayed correctly.
* **[UI]** Added options to the loadout editor for setting properties such as HMD choice. * **[UI]** Added options to the loadout editor for setting properties such as HMD choice.
* **[UI]** Added separate images for the different carrier types. * **[UI]** Added separate images for the different carrier types.
* **[UI]** Add Accept button to Air Wing Configurator screen. * **[UI]** Add Accept/Reset buttons to Air Wing Configurator screen.
* **[Campaign]** Allow campaign designers to define default values for the economy settings (starting budget and multiplier). * **[Campaign]** Allow campaign designers to define default values for the economy settings (starting budget and multiplier).
* **[Plugins]** Allow full support of the SkynetIADS plugin with all advanced features (connection nodes, power sources, command centers) if campaign supports it. * **[Plugins]** Allow full support of the SkynetIADS plugin with all advanced features (connection nodes, power sources, command centers) if campaign supports it.
* **[Plugins]** Added support for the CTLD script by ciribob with many possible customization options and updated the JTAC Autolase to the CTLD included script. * **[Plugins]** Added support for the CTLD script by ciribob with many possible customization options and updated the JTAC Autolase to the CTLD included script.

View File

@ -143,7 +143,6 @@ class SquadronConfigurationBox(QGroupBox):
def __init__(self, squadron: Squadron, theater: ConflictTheater) -> None: def __init__(self, squadron: Squadron, theater: ConflictTheater) -> None:
super().__init__() super().__init__()
self.squadron = squadron self.squadron = squadron
self.reset_title()
columns = QHBoxLayout() columns = QHBoxLayout()
self.setLayout(columns) self.setLayout(columns)
@ -153,15 +152,16 @@ class SquadronConfigurationBox(QGroupBox):
left_column.addWidget(QLabel("Name:")) left_column.addWidget(QLabel("Name:"))
self.name_edit = QLineEdit(squadron.name) self.name_edit = QLineEdit(squadron.name)
self.name_edit.textChanged.connect(self.on_name_changed) self.name_edit.textChanged.connect(lambda x: self.reset_title())
left_column.addWidget(self.name_edit) left_column.addWidget(self.name_edit)
self.reset_title()
nickname_edit_layout = QGridLayout() nickname_edit_layout = QGridLayout()
left_column.addLayout(nickname_edit_layout) left_column.addLayout(nickname_edit_layout)
nickname_edit_layout.addWidget(QLabel("Nickname:"), 0, 0, 1, 2) nickname_edit_layout.addWidget(QLabel("Nickname:"), 0, 0, 1, 2)
self.nickname_edit = QLineEdit(squadron.nickname) self.nickname_edit = QLineEdit(squadron.nickname)
self.nickname_edit.textChanged.connect(self.on_nickname_changed)
nickname_edit_layout.addWidget(self.nickname_edit, 1, 0, Qt.AlignTop) nickname_edit_layout.addWidget(self.nickname_edit, 1, 0, Qt.AlignTop)
reroll_nickname_button = QToolButton() reroll_nickname_button = QToolButton()
reroll_nickname_button.setIcon(QIcon(ICONS["Reload"])) reroll_nickname_button.setIcon(QIcon(ICONS["Reload"]))
@ -175,7 +175,6 @@ class SquadronConfigurationBox(QGroupBox):
squadron.location, squadron.location,
squadron.aircraft, squadron.aircraft,
) )
self.base_selector.currentIndexChanged.connect(self.on_base_changed)
left_column.addWidget(self.base_selector) left_column.addWidget(self.base_selector)
if squadron.player: if squadron.player:
@ -210,21 +209,8 @@ class SquadronConfigurationBox(QGroupBox):
def remove_from_squadron_config(self) -> None: def remove_from_squadron_config(self) -> None:
self.remove_squadron_signal.emit(self.squadron) self.remove_squadron_signal.emit(self.squadron)
def on_name_changed(self, text: str) -> None:
self.squadron.name = text
self.reset_title()
def on_nickname_changed(self, text: str) -> None:
self.squadron.nickname = text
def on_base_changed(self, index: int) -> None:
base = self.base_selector.itemData(index)
if base is None:
raise RuntimeError("Base cannot be none")
self.squadron.assign_to_base(base)
def reset_title(self) -> None: def reset_title(self) -> None:
self.setTitle(f"{self.squadron.name} - {self.squadron.aircraft}") self.setTitle(f"{self.name_edit.text()} - {self.squadron.aircraft}")
def reroll_nickname(self) -> None: def reroll_nickname(self) -> None:
self.nickname_edit.setText( self.nickname_edit.setText(
@ -232,6 +218,13 @@ class SquadronConfigurationBox(QGroupBox):
) )
def apply(self) -> Squadron: def apply(self) -> Squadron:
self.squadron.name = self.name_edit.text()
self.squadron.nickname = self.nickname_edit.text()
base = self.base_selector.currentData()
if base is None:
raise RuntimeError("Base cannot be none")
self.squadron.assign_to_base(base)
player_names = self.player_list.toPlainText().splitlines() player_names = self.player_list.toPlainText().splitlines()
# Prepend player pilots so they get set active first. # Prepend player pilots so they get set active first.
self.squadron.pilot_pool = [ self.squadron.pilot_pool = [
@ -316,7 +309,6 @@ class AircraftSquadronsPage(QWidget):
class AircraftSquadronsPanel(QStackedLayout): class AircraftSquadronsPanel(QStackedLayout):
page_removed = Signal(AircraftType) page_removed = Signal(AircraftType)
squadrons_changed = Signal()
def __init__(self, air_wing: AirWing, theater: ConflictTheater) -> None: def __init__(self, air_wing: AirWing, theater: ConflictTheater) -> None:
super().__init__() super().__init__()
@ -333,7 +325,6 @@ class AircraftSquadronsPanel(QStackedLayout):
self.squadrons_pages.pop(aircraft_type) self.squadrons_pages.pop(aircraft_type)
self.page_removed.emit(aircraft_type) self.page_removed.emit(aircraft_type)
self.update() self.update()
self.squadrons_changed.emit()
def new_page_for_type( def new_page_for_type(
self, aircraft_type: AircraftType, squadrons: list[Squadron] self, aircraft_type: AircraftType, squadrons: list[Squadron]
@ -352,7 +343,6 @@ class AircraftSquadronsPanel(QStackedLayout):
self.new_page_for_type(squadron.aircraft, [squadron]) self.new_page_for_type(squadron.aircraft, [squadron])
self.update() self.update()
self.squadrons_changed.emit()
def apply(self) -> None: def apply(self) -> None:
self.air_wing.squadrons = {} self.air_wing.squadrons = {}
@ -535,7 +525,6 @@ class AirWingConfigurationDialog(QDialog):
name = "Blue" if coalition.player else "Red" name = "Blue" if coalition.player else "Red"
self.tab_widget.addTab(coalition_tab, name) self.tab_widget.addTab(coalition_tab, name)
self.tabs.append(coalition_tab) self.tabs.append(coalition_tab)
coalition_tab.squadrons_panel.squadrons_changed.connect(self.changed)
buttons_layout = QHBoxLayout() buttons_layout = QHBoxLayout()
apply_button = QPushButton("Accept Changes && Start Campaign") apply_button = QPushButton("Accept Changes && Start Campaign")
@ -548,15 +537,9 @@ class AirWingConfigurationDialog(QDialog):
buttons_layout.addWidget(apply_button) buttons_layout.addWidget(apply_button)
layout.addLayout(buttons_layout) layout.addLayout(buttons_layout)
self.has_changed = False
def changed(self) -> None:
self.has_changed = True
def revert(self) -> None: def revert(self) -> None:
for tab in self.tabs: for tab in self.tabs:
tab.revert() tab.revert()
self.has_changed = False
def accept(self) -> None: def accept(self) -> None:
for tab in self.tabs: for tab in self.tabs:
@ -564,7 +547,6 @@ class AirWingConfigurationDialog(QDialog):
super().accept() super().accept()
def reject(self) -> None: def reject(self) -> None:
if self.has_changed:
result = QMessageBox.information( result = QMessageBox.information(
None, None,
"Discard changes?", "Discard changes?",