dcs_liberation/qt_ui/widgets/combos/liveryselector.py
Dan Albert ca96a232f0 Revert "Use the actual Country type instead of the name."
This reverts commit bd2ec12e0f039c9500ea0dd94e7b2e4f7d168fef.

Country is both the data (name, ID, etc) and the container for groups
added to the miz, so it can't be used across multiple mission
generations. See https://github.com/pydcs/dcs/issues/314 for potential
follow up work that would let us do this.

Fixes https://github.com/dcs-liberation/dcs_liberation/issues/2864.
2023-05-15 18:23:48 -07:00

35 lines
1.1 KiB
Python

from __future__ import annotations
import dcs.countries
from PySide6.QtWidgets import QComboBox
from dcs.liveries.livery import Livery
from game.squadrons import Squadron
class LiverySelector(QComboBox):
def __init__(self, squadron: Squadron) -> None:
super().__init__()
self.setSizeAdjustPolicy(QComboBox.SizeAdjustPolicy.AdjustToContents)
self.set_squadron(squadron)
@property
def selected_livery(self) -> Livery | None:
return self.currentData()
def set_squadron(self, squadron: Squadron) -> None:
selected_idx: int | None = None
self.clear()
self.addItem("Default", None)
for idx, livery in enumerate(
squadron.aircraft.dcs_unit_type.iter_liveries_for_country(
dcs.countries.get_by_name(squadron.country)
)
):
self.addItem(livery.name, livery)
if squadron.livery == livery.id:
selected_idx = idx
if selected_idx is not None:
self.setCurrentIndex(selected_idx)
self.update()