mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Add custom flight names
Mildly breaks save compat with 2.3; All existing flight dialogs will be broken, passing the turn or recreating all the flights in the UI will allow you to continue
This commit is contained in:
@@ -65,7 +65,7 @@ class FlightDelegate(QStyledItemDelegate):
|
||||
name = db.unit_type_name(flight.unit_type)
|
||||
estimator = TotEstimator(self.package)
|
||||
delay = estimator.mission_start_time(flight)
|
||||
return f"[{task}] {count} x {name} in {delay}"
|
||||
return f"{flight} in {delay}"
|
||||
|
||||
def second_row_text(self, index: QModelIndex) -> str:
|
||||
flight = self.flight(index)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from re import L
|
||||
from typing import Optional
|
||||
|
||||
from PySide2.QtCore import Qt, Signal
|
||||
@@ -6,6 +7,7 @@ from PySide2.QtWidgets import (
|
||||
QMessageBox,
|
||||
QPushButton,
|
||||
QVBoxLayout,
|
||||
QLineEdit,
|
||||
)
|
||||
from dcs.planes import PlaneType
|
||||
|
||||
@@ -31,6 +33,7 @@ class QFlightCreator(QDialog):
|
||||
|
||||
self.game = game
|
||||
self.package = package
|
||||
self.custom_name_text = None
|
||||
|
||||
self.setWindowTitle("Create flight")
|
||||
self.setWindowIcon(EVENT_ICONS["strike"])
|
||||
@@ -88,6 +91,12 @@ class QFlightCreator(QDialog):
|
||||
layout.addLayout(
|
||||
QLabeledWidget("Client Slots:", self.client_slots_spinner))
|
||||
|
||||
self.custom_name = QLineEdit()
|
||||
self.custom_name.textChanged.connect(self.set_custom_name_text)
|
||||
layout.addLayout(
|
||||
QLabeledWidget("Custom Flight Name (Optional)", self.custom_name)
|
||||
)
|
||||
|
||||
layout.addStretch()
|
||||
|
||||
self.create_button = QPushButton("Create")
|
||||
@@ -96,6 +105,9 @@ class QFlightCreator(QDialog):
|
||||
|
||||
self.setLayout(layout)
|
||||
|
||||
def set_custom_name_text(self, text: str):
|
||||
self.custom_name_text = text
|
||||
|
||||
def verify_form(self) -> Optional[str]:
|
||||
aircraft: PlaneType = self.aircraft_selector.currentData()
|
||||
origin: ControlPoint = self.departure.currentData()
|
||||
@@ -115,6 +127,8 @@ class QFlightCreator(QDialog):
|
||||
return f"{origin.name} has only {available} {aircraft.id} available."
|
||||
if size <= 0:
|
||||
return f"Flight must have at least one aircraft."
|
||||
if self.custom_name_text and "|" in self.custom_name_text:
|
||||
return f"Cannot include | in flight name"
|
||||
return None
|
||||
|
||||
def create_flight(self) -> None:
|
||||
@@ -141,7 +155,7 @@ class QFlightCreator(QDialog):
|
||||
else:
|
||||
start_type = "Warm"
|
||||
flight = Flight(self.package, aircraft, size, task, start_type, origin,
|
||||
arrival, divert)
|
||||
arrival, divert, custom_name=self.custom_name_text)
|
||||
flight.client_count = self.client_slots_spinner.value()
|
||||
|
||||
# noinspection PyUnresolvedReferences
|
||||
|
||||
16
qt_ui/windows/mission/flight/settings/QCustomName.py
Normal file
16
qt_ui/windows/mission/flight/settings/QCustomName.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from PySide2.QtWidgets import QGroupBox, QHBoxLayout, QLabel
|
||||
|
||||
from gen.flights.flight import Flight
|
||||
|
||||
|
||||
class QFlightCustomName(QGroupBox):
|
||||
|
||||
def __init__(self, flight: Flight):
|
||||
super(QFlightCustomName, self).__init__()
|
||||
|
||||
self.flight = flight
|
||||
|
||||
self.layout = QHBoxLayout()
|
||||
self.custom_name_label = QLabel(f"Custom Name: {flight.custom_name}")
|
||||
self.layout.addWidget(self.custom_name_label)
|
||||
self.setLayout(self.layout)
|
||||
@@ -1,5 +1,5 @@
|
||||
from PySide2.QtCore import Signal
|
||||
from PySide2.QtWidgets import QFrame, QGridLayout, QVBoxLayout
|
||||
from PySide2.QtWidgets import QFrame, QGridLayout, QVBoxLayout, QLabel
|
||||
|
||||
from game import Game
|
||||
from gen.ato import Package
|
||||
@@ -12,6 +12,8 @@ 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.QCustomName import \
|
||||
QFlightCustomName
|
||||
|
||||
|
||||
class QGeneralFlightSettingsTab(QFrame):
|
||||
@@ -25,10 +27,12 @@ class QGeneralFlightSettingsTab(QFrame):
|
||||
flight_departure = QFlightDepartureDisplay(package, flight)
|
||||
flight_slots = QFlightSlotEditor(flight, game)
|
||||
flight_start_type = QFlightStartType(flight)
|
||||
flight_custom_name = QFlightCustomName(flight)
|
||||
layout.addWidget(flight_info, 0, 0)
|
||||
layout.addWidget(flight_departure, 1, 0)
|
||||
layout.addWidget(flight_slots, 2, 0)
|
||||
layout.addWidget(flight_start_type, 3, 0)
|
||||
layout.addWidget(flight_custom_name, 4, 0)
|
||||
vstretch = QVBoxLayout()
|
||||
vstretch.addStretch()
|
||||
layout.addLayout(vstretch, 3, 0)
|
||||
|
||||
Reference in New Issue
Block a user