2023-10-01 21:56:30 +02:00

42 lines
1.4 KiB
Python

from PySide2.QtWidgets import QComboBox
from dcs.unitpropertydescription import UnitPropertyDescription
from game.ato.flightmember import FlightMember
from .missingpropertydataerror import MissingPropertyDataError
class PropertyComboBox(QComboBox):
def __init__(
self, flight_member: FlightMember, prop: UnitPropertyDescription
) -> None:
super().__init__()
self.flight_member = flight_member
self.prop = prop
if prop.values is None:
raise MissingPropertyDataError("values cannot be None")
if prop.default is None:
raise MissingPropertyDataError("default cannot be None")
current_value = self.flight_member.properties.get(
self.prop.identifier, self.prop.default
)
for ident, text in self.prop.values.items():
self.addItem(text, ident)
if ident == current_value:
self.setCurrentText(text)
self.currentIndexChanged.connect(self.on_selection_changed)
def on_selection_changed(self, _index: int) -> None:
self.flight_member.properties[self.prop.identifier] = self.currentData()
def set_flight_member(self, flight_member: FlightMember) -> None:
self.flight_member = flight_member
self.setCurrentText(
self.flight_member.properties.get(
self.prop.identifier, self.prop.values[self.prop.default]
)
)