mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Fix package/flight selection signals.
Qt helpfully converts None to 0 for us, so use -1 instead of None.
This commit is contained in:
parent
9db41270f3
commit
7aa17e5ad6
@ -62,18 +62,36 @@ class QLiberationMap(QGraphicsView):
|
|||||||
lambda: self.draw_flight_plans(self.scene())
|
lambda: self.draw_flight_plans(self.scene())
|
||||||
)
|
)
|
||||||
|
|
||||||
def update_package_selection(index: Optional[int]) -> None:
|
def update_package_selection(index: int) -> None:
|
||||||
self.selected_flight = index, 0
|
# Optional[int] isn't a valid type for a Qt signal. None will be
|
||||||
|
# converted to zero automatically. We use -1 to indicate no
|
||||||
|
# selection.
|
||||||
|
if index == -1:
|
||||||
|
self.selected_flight = None
|
||||||
|
else:
|
||||||
|
self.selected_flight = index, 0
|
||||||
self.draw_flight_plans(self.scene())
|
self.draw_flight_plans(self.scene())
|
||||||
|
|
||||||
GameUpdateSignal.get_instance().package_selection_changed.connect(
|
GameUpdateSignal.get_instance().package_selection_changed.connect(
|
||||||
update_package_selection
|
update_package_selection
|
||||||
)
|
)
|
||||||
|
|
||||||
def update_flight_selection(index: Optional[int]) -> None:
|
def update_flight_selection(index: int) -> None:
|
||||||
if self.selected_flight is None:
|
if self.selected_flight is None:
|
||||||
logging.error("Flight was selected with no package selected")
|
if index != -1:
|
||||||
|
# We don't know what order update_package_selection and
|
||||||
|
# update_flight_selection will be called in when the last
|
||||||
|
# package is removed. If no flight is selected, it's not a
|
||||||
|
# problem to also have no package selected.
|
||||||
|
logging.error(
|
||||||
|
"Flight was selected with no package selected")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Optional[int] isn't a valid type for a Qt signal. None will be
|
||||||
|
# converted to zero automatically. We use -1 to indicate no
|
||||||
|
# selection.
|
||||||
|
if index == -1:
|
||||||
|
self.selected_flight = self.selected_flight[0], None
|
||||||
self.selected_flight = self.selected_flight[0], index
|
self.selected_flight = self.selected_flight[0], index
|
||||||
self.draw_flight_plans(self.scene())
|
self.draw_flight_plans(self.scene())
|
||||||
|
|
||||||
@ -259,7 +277,10 @@ class QLiberationMap(QGraphicsView):
|
|||||||
packages.extend(self.game_model.red_ato_model.packages)
|
packages.extend(self.game_model.red_ato_model.packages)
|
||||||
for p_idx, package_model in enumerate(packages):
|
for p_idx, package_model in enumerate(packages):
|
||||||
for f_idx, flight in enumerate(package_model.flights):
|
for f_idx, flight in enumerate(package_model.flights):
|
||||||
selected = (p_idx, f_idx) == self.selected_flight
|
if self.selected_flight is None:
|
||||||
|
selected = False
|
||||||
|
else:
|
||||||
|
selected = (p_idx, f_idx) == self.selected_flight
|
||||||
if DisplayOptions.flight_paths.only_selected and not selected:
|
if DisplayOptions.flight_paths.only_selected and not selected:
|
||||||
continue
|
continue
|
||||||
self.draw_flight_plan(scene, package_model.package, flight,
|
self.draw_flight_plan(scene, package_model.package, flight,
|
||||||
|
|||||||
@ -24,8 +24,8 @@ class GameUpdateSignal(QObject):
|
|||||||
debriefingReceived = Signal(DebriefingSignal)
|
debriefingReceived = Signal(DebriefingSignal)
|
||||||
|
|
||||||
flight_paths_changed = Signal()
|
flight_paths_changed = Signal()
|
||||||
package_selection_changed = Signal(int) # Optional[int]
|
package_selection_changed = Signal(int) # -1 indicates no selection.
|
||||||
flight_selection_changed = Signal(int) # Optional[int]
|
flight_selection_changed = Signal(int) # -1 indicates no selection.
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(GameUpdateSignal, self).__init__()
|
super(GameUpdateSignal, self).__init__()
|
||||||
@ -33,11 +33,11 @@ class GameUpdateSignal(QObject):
|
|||||||
|
|
||||||
def select_package(self, index: Optional[int]) -> None:
|
def select_package(self, index: Optional[int]) -> None:
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
self.package_selection_changed.emit(index)
|
self.package_selection_changed.emit(-1 if index is None else index)
|
||||||
|
|
||||||
def select_flight(self, index: Optional[int]) -> None:
|
def select_flight(self, index: Optional[int]) -> None:
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
self.flight_selection_changed.emit(index)
|
self.flight_selection_changed.emit(-1 if index is None else index)
|
||||||
|
|
||||||
def redraw_flight_paths(self) -> None:
|
def redraw_flight_paths(self) -> None:
|
||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user