mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Improve flight path display options.
Adds an option show only selected flight, and also changes the show all option to highlight the selected flight.
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
import logging
|
||||
import sys
|
||||
import webbrowser
|
||||
from typing import Optional
|
||||
from typing import Optional, Union
|
||||
|
||||
from PySide2.QtCore import Qt
|
||||
from PySide2.QtGui import QIcon
|
||||
from PySide2.QtWidgets import (
|
||||
QAction,
|
||||
QDesktopWidget,
|
||||
QActionGroup, QDesktopWidget,
|
||||
QFileDialog,
|
||||
QMainWindow,
|
||||
QMessageBox,
|
||||
QMenu, QMessageBox,
|
||||
QSplitter,
|
||||
QVBoxLayout,
|
||||
QWidget,
|
||||
@@ -19,7 +19,7 @@ from PySide2.QtWidgets import (
|
||||
import qt_ui.uiconstants as CONST
|
||||
from game import Game, persistency
|
||||
from qt_ui.dialogs import Dialog
|
||||
from qt_ui.displayoptions import DisplayOptions
|
||||
from qt_ui.displayoptions import DisplayGroup, DisplayOptions, DisplayRule
|
||||
from qt_ui.models import GameModel
|
||||
from qt_ui.uiconstants import URLS
|
||||
from qt_ui.widgets.QTopPanel import QTopPanel
|
||||
@@ -139,17 +139,19 @@ class QLiberationWindow(QMainWindow):
|
||||
|
||||
displayMenu = self.menu.addMenu("&Display")
|
||||
|
||||
for display_rule in DisplayOptions.menu_items():
|
||||
def make_check_closure():
|
||||
def closure():
|
||||
display_rule.value = action.isChecked()
|
||||
return closure
|
||||
|
||||
action = QAction(f"&{display_rule.menu_text}", displayMenu)
|
||||
action.setCheckable(True)
|
||||
action.setChecked(display_rule.value)
|
||||
action.toggled.connect(make_check_closure())
|
||||
displayMenu.addAction(action)
|
||||
last_was_group = True
|
||||
for item in DisplayOptions.menu_items():
|
||||
if isinstance(item, DisplayRule):
|
||||
displayMenu.addAction(self.make_display_rule_action(item))
|
||||
last_was_group = False
|
||||
elif isinstance(item, DisplayGroup):
|
||||
if not last_was_group:
|
||||
displayMenu.addSeparator()
|
||||
group = QActionGroup(displayMenu)
|
||||
for display_rule in item:
|
||||
displayMenu.addAction(
|
||||
self.make_display_rule_action(display_rule, group))
|
||||
last_was_group = True
|
||||
|
||||
help_menu = self.menu.addMenu("&Help")
|
||||
help_menu.addAction("&Discord Server", lambda: webbrowser.open_new_tab("https://" + "discord.gg" + "/" + "bKrt" + "rkJ"))
|
||||
@@ -162,6 +164,21 @@ class QLiberationWindow(QMainWindow):
|
||||
help_menu.addSeparator()
|
||||
help_menu.addAction(self.showAboutDialogAction)
|
||||
|
||||
@staticmethod
|
||||
def make_display_rule_action(
|
||||
display_rule, group: Optional[QActionGroup] = None) -> QAction:
|
||||
def make_check_closure():
|
||||
def closure():
|
||||
display_rule.value = action.isChecked()
|
||||
|
||||
return closure
|
||||
|
||||
action = QAction(f"&{display_rule.menu_text}", group)
|
||||
action.setCheckable(True)
|
||||
action.setChecked(display_rule.value)
|
||||
action.toggled.connect(make_check_closure())
|
||||
return action
|
||||
|
||||
def newGame(self):
|
||||
wizard = NewGameWizard(self)
|
||||
wizard.show()
|
||||
|
||||
Reference in New Issue
Block a user