PySide6 steamlining

This commit is contained in:
Raffson 2023-10-14 18:42:20 +02:00
parent 7a3c9a707f
commit 3c921198af
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
55 changed files with 352 additions and 246 deletions

View File

@ -49,13 +49,13 @@ class TwoColumnRowDelegate(QStyledItemDelegate):
with painter_context(painter):
painter.setFont(self.get_font(option))
icon: Optional[QIcon] = index.data(Qt.DecorationRole)
icon: Optional[QIcon] = index.data(Qt.ItemDataRole.DecorationRole)
if icon is not None:
icon.paint(
painter,
rect,
Qt.AlignLeft | Qt.AlignVCenter,
Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter,
self.icon_mode(option),
self.icon_state(option),
)
@ -65,25 +65,33 @@ class TwoColumnRowDelegate(QStyledItemDelegate):
for row in range(self.rows):
y = row_height * row
location = rect.adjusted(0, y, 0, y)
painter.drawText(location, Qt.AlignLeft, self.text_for(index, row, 0))
painter.drawText(
location, Qt.AlignmentFlag.AlignLeft, self.text_for(index, row, 0)
)
if self.columns == 2:
painter.drawText(
location, Qt.AlignRight, self.text_for(index, row, 1)
location,
Qt.AlignmentFlag.AlignRight,
self.text_for(index, row, 1),
)
@staticmethod
def icon_mode(option: QStyleOptionViewItem) -> QIcon.Mode:
if not (option.state & QStyle.State_Enabled):
return QIcon.Disabled
elif option.state & QStyle.State_Selected:
return QIcon.Selected
elif option.state & QStyle.State_Active:
return QIcon.Active
return QIcon.Normal
if not (option.state & QStyle.StateFlag.State_Enabled):
return QIcon.Mode.Disabled
elif option.state & QStyle.StateFlag.State_Selected:
return QIcon.Mode.Selected
elif option.state & QStyle.StateFlag.State_Active:
return QIcon.Mode.Active
return QIcon.Mode.Normal
@staticmethod
def icon_state(option: QStyleOptionViewItem) -> QIcon.State:
return QIcon.On if option.state & QStyle.State_Open else QIcon.Off
return (
QIcon.State.On
if option.state & QStyle.StateFlag.State_Open
else QIcon.State.Off
)
@staticmethod
def icon_size(option: QStyleOptionViewItem) -> QSize:
@ -110,7 +118,7 @@ class TwoColumnRowDelegate(QStyledItemDelegate):
width = 0
height = 0
for column in range(self.columns):
size = metrics.size(0, self.text_for(index, row, column))
size = metrics.size(0, self.text_for(index, row, column), 0)
width += size.width()
height = max(height, size.height())
widths.append(width)

View File

@ -14,4 +14,4 @@ def report_errors(
yield
except error_type as ex:
logging.exception(title)
QMessageBox().critical(parent, title, str(ex), QMessageBox.Ok)
QMessageBox().critical(parent, title, str(ex), QMessageBox.StandardButton.Ok)

View File

@ -104,14 +104,14 @@ class NullListModel(QAbstractListModel):
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
return 0
def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Any:
def data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole) -> Any:
return None
class PackageModel(QAbstractListModel):
"""The model for an ATO package."""
FlightRole = Qt.UserRole
FlightRole = Qt.ItemDataRole.UserRole
#: Emitted when this package is being deleted from the ATO.
deleted = Signal()
@ -127,13 +127,13 @@ class PackageModel(QAbstractListModel):
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
return len(self.package.flights)
def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Any:
def data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole) -> Any:
if not index.isValid():
return None
flight = self.flight_at_index(index)
if role == Qt.DisplayRole:
if role == Qt.ItemDataRole.DisplayRole:
return self.text_for_flight(flight)
if role == Qt.DecorationRole:
if role == Qt.ItemDataRole.DecorationRole:
return self.icon_for_flight(flight)
elif role == PackageModel.FlightRole:
return flight
@ -231,7 +231,7 @@ class PackageModel(QAbstractListModel):
class AtoModel(QAbstractListModel):
"""The model for an AirTaskingOrder."""
PackageRole = Qt.UserRole
PackageRole = Qt.ItemDataRole.UserRole
client_slots_changed = Signal()
packages_changed = Signal()
@ -250,11 +250,11 @@ class AtoModel(QAbstractListModel):
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
return len(self.ato.packages)
def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Any:
def data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole) -> Any:
if not index.isValid():
return None
package = self.ato.packages[index.row()]
if role == Qt.DisplayRole:
if role == Qt.ItemDataRole.DisplayRole:
return f"{package.package_description} {package.target.name}"
elif role == AtoModel.PackageRole:
return package
@ -360,7 +360,7 @@ class AtoModel(QAbstractListModel):
class TransferModel(QAbstractListModel):
"""The model for a ground unit transfer."""
TransferRole = Qt.UserRole
TransferRole = Qt.ItemDataRole.UserRole
def __init__(self, game_model: GameModel) -> None:
super().__init__()
@ -373,13 +373,13 @@ class TransferModel(QAbstractListModel):
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
return self.transfers.pending_transfer_count
def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Any:
def data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole) -> Any:
if not index.isValid():
return None
transfer = self.transfer_at_index(index)
if role == Qt.DisplayRole:
if role == Qt.ItemDataRole.DisplayRole:
return self.text_for_transfer(transfer)
if role == Qt.DecorationRole:
if role == Qt.ItemDataRole.DecorationRole:
return self.icon_for_transfer(transfer)
elif role == TransferModel.TransferRole:
return transfer
@ -422,7 +422,7 @@ class TransferModel(QAbstractListModel):
class AirWingModel(QAbstractListModel):
"""The model for an air wing."""
SquadronRole = Qt.UserRole
SquadronRole = Qt.ItemDataRole.UserRole
def __init__(self, game_model: GameModel, player: bool) -> None:
super().__init__()
@ -432,13 +432,13 @@ class AirWingModel(QAbstractListModel):
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
return self.game_model.game.air_wing_for(self.player).size
def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Any:
def data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole) -> Any:
if not index.isValid():
return None
squadron = self.squadron_at_index(index)
if role == Qt.DisplayRole:
if role == Qt.ItemDataRole.DisplayRole:
return self.text_for_squadron(squadron)
if role == Qt.DecorationRole:
if role == Qt.ItemDataRole.DecorationRole:
return self.icon_for_squadron(squadron)
elif role == AirWingModel.SquadronRole:
return squadron
@ -468,7 +468,7 @@ class AirWingModel(QAbstractListModel):
class SquadronModel(QAbstractListModel):
"""The model for a squadron."""
PilotRole = Qt.UserRole
PilotRole = Qt.ItemDataRole.UserRole
def __init__(self, squadron: Squadron) -> None:
super().__init__()
@ -477,13 +477,13 @@ class SquadronModel(QAbstractListModel):
def rowCount(self, parent: QModelIndex = QModelIndex()) -> int:
return self.squadron.number_of_pilots_including_inactive
def data(self, index: QModelIndex, role: int = Qt.DisplayRole) -> Any:
def data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole) -> Any:
if not index.isValid():
return None
pilot = self.pilot_at_index(index)
if role == Qt.DisplayRole:
if role == Qt.ItemDataRole.DisplayRole:
return self.text_for_pilot(pilot)
if role == Qt.DecorationRole:
if role == Qt.ItemDataRole.DecorationRole:
return self.icon_for_pilot(pilot)
elif role == SquadronModel.PilotRole:
return pilot

View File

@ -36,7 +36,7 @@ class UncaughtExceptionHandler(QObject):
QApplication.focusWidget(),
"An unexpected error occurred",
"\n".join([message, "", exception]),
QMessageBox.Ok,
QMessageBox.StandardButton.Ok,
)
else:
logging.critical("No QApplication instance available.")

View File

@ -19,7 +19,7 @@ class QLabeledWidget(QHBoxLayout):
label = QLabel(text)
self.addWidget(label)
self.addStretch()
self.addWidget(widget, alignment=Qt.AlignRight)
self.addWidget(widget, alignment=Qt.AlignmentFlag.AlignRight)
if tooltip is not None:
label.setToolTip(tooltip)
widget.setToolTip(tooltip)

View File

@ -5,28 +5,30 @@ from PySide6.QtWidgets import QCalendarWidget
class QLiberationCalendar(QCalendarWidget):
def __init__(self, parent=None):
super(QLiberationCalendar, self).__init__(parent)
self.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader)
self.setVerticalHeaderFormat(
QCalendarWidget.VerticalHeaderFormat.NoVerticalHeader
)
self.setGridVisible(False)
# Overrride default QCalendar behaviour that is rendering week end days in red
for d in (
QtCore.Qt.Monday,
QtCore.Qt.Tuesday,
QtCore.Qt.Wednesday,
QtCore.Qt.Thursday,
QtCore.Qt.Friday,
QtCore.Qt.Saturday,
QtCore.Qt.Sunday,
QtCore.Qt.DayOfWeek.Monday,
QtCore.Qt.DayOfWeek.Tuesday,
QtCore.Qt.DayOfWeek.Wednesday,
QtCore.Qt.DayOfWeek.Thursday,
QtCore.Qt.DayOfWeek.Friday,
QtCore.Qt.DayOfWeek.Saturday,
QtCore.Qt.DayOfWeek.Sunday,
):
fmt = self.weekdayTextFormat(d)
fmt.setForeground(QtCore.Qt.darkGray)
fmt.setForeground(QtCore.Qt.GlobalColor.darkGray)
self.setWeekdayTextFormat(d, fmt)
def paintCell(self, painter, rect, date):
if date == self.selectedDate():
painter.save()
painter.fillRect(rect, QtGui.QColor("#D3D3D3"))
painter.setPen(QtCore.Qt.NoPen)
painter.setPen(QtCore.Qt.PenStyle.NoPen)
painter.setBrush(QtGui.QColor(52, 68, 85))
r = QtCore.QRect(
QtCore.QPoint(), min(rect.width(), rect.height()) * QtCore.QSize(1, 1)
@ -34,7 +36,7 @@ class QLiberationCalendar(QCalendarWidget):
r.moveCenter(rect.center())
painter.drawEllipse(r)
painter.setPen(QtGui.QPen(QtGui.QColor("white")))
painter.drawText(rect, QtCore.Qt.AlignCenter, str(date.day()))
painter.drawText(rect, QtCore.Qt.AlignmentFlag.AlignCenter, str(date.day()))
painter.restore()
else:
super(QLiberationCalendar, self).paintCell(painter, rect, date)

View File

@ -215,17 +215,17 @@ class QTopPanel(QFrame):
"<br />Click 'Yes' to continue with an AI only mission"
"<br />Click 'No' if you'd like to make more changes."
),
QMessageBox.No,
QMessageBox.Yes,
QMessageBox.StandardButton.No,
QMessageBox.StandardButton.Yes,
)
return result == QMessageBox.Yes
return result == QMessageBox.StandardButton.Yes
def confirm_negative_start_time(self, negative_starts: List[Package]) -> bool:
formatted = "<br />".join(
[f"{p.primary_task} {p.target.name}" for p in negative_starts]
)
mbox = QMessageBox(
QMessageBox.Question,
QMessageBox.Icon.Question,
"Continue with past start times?",
(
"Some flights in the following packages have start times set "
@ -244,9 +244,13 @@ class QTopPanel(QFrame):
),
parent=self,
)
auto = mbox.addButton("Fix TOTs automatically", QMessageBox.ActionRole)
ignore = mbox.addButton("Continue without fixing", QMessageBox.DestructiveRole)
cancel = mbox.addButton(QMessageBox.Cancel)
auto = mbox.addButton(
"Fix TOTs automatically", QMessageBox.ButtonRole.ActionRole
)
ignore = mbox.addButton(
"Continue without fixing", QMessageBox.ButtonRole.DestructiveRole
)
cancel = mbox.addButton(QMessageBox.StandardButton.Cancel)
mbox.setEscapeButton(cancel)
mbox.exec_()
clicked = mbox.clickedButton()
@ -271,7 +275,7 @@ class QTopPanel(QFrame):
[f"{p.primary_task} {p.target}: {f}" for p, f in missing_pilots]
)
mbox = QMessageBox(
QMessageBox.Critical,
QMessageBox.Icon.Critical,
"Flights are missing pilots",
(
"The following flights are missing one or more pilots:<br />"
@ -283,7 +287,7 @@ class QTopPanel(QFrame):
),
parent=self,
)
mbox.setEscapeButton(mbox.addButton(QMessageBox.Close))
mbox.setEscapeButton(mbox.addButton(QMessageBox.StandardButton.Close))
mbox.exec_()
return True

View File

@ -79,7 +79,7 @@ class QFlightList(QListView):
if package_model is not None:
self.setItemDelegate(FlightDelegate(package_model.package))
self.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.doubleClicked.connect(self.on_double_click)
def set_package(self, model: Optional[PackageModel]) -> None:
@ -93,7 +93,8 @@ class QFlightList(QListView):
# noinspection PyUnresolvedReferences
model.deleted.connect(self.disconnect_model)
self.selectionModel().setCurrentIndex(
model.index(0, 0, QModelIndex()), QItemSelectionModel.Select
model.index(0, 0, QModelIndex()),
QItemSelectionModel.SelectionFlag.Select,
)
def disconnect_model(self) -> None:
@ -308,7 +309,7 @@ class QPackageList(QListView):
self.setModel(model)
self.setItemDelegate(PackageDelegate(game_model))
self.setIconSize(QSize(0, 0))
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.model().rowsInserted.connect(self.on_new_packages)
self.doubleClicked.connect(self.on_double_click)
@ -346,7 +347,7 @@ class QPackageList(QListView):
# the player saving a new package, so selecting it helps them view/edit
# it faster.
self.selectionModel().setCurrentIndex(
self.model().index(first, 0), QItemSelectionModel.Select
self.model().index(first, 0), QItemSelectionModel.SelectionFlag.Select
)
def on_double_click(self, index: QModelIndex) -> None:
@ -477,7 +478,7 @@ class QAirTaskingOrderPanel(QSplitter):
"""
def __init__(self, game_model: GameModel) -> None:
super().__init__(Qt.Vertical)
super().__init__(Qt.Orientation.Vertical)
self.ato_model = game_model.ato_model
self.package_panel = QPackagePanel(game_model, self.ato_model)

View File

@ -15,7 +15,7 @@ class QFilteredComboBox(QComboBox):
):
super(QFilteredComboBox, self).__init__(parent)
self.setFocusPolicy(Qt.StrongFocus)
self.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
self.setEditable(True)
self.completer = QCompleter(self)
@ -27,9 +27,11 @@ class QFilteredComboBox(QComboBox):
self.include_friendly = include_friendly
# always show all completions
self.completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
self.completer.setCompletionMode(
QCompleter.CompletionMode.UnfilteredPopupCompletion
)
self.pFilterModel = QSortFilterProxyModel(self)
self.pFilterModel.setFilterCaseSensitivity(Qt.CaseInsensitive)
self.pFilterModel.setFilterCaseSensitivity(Qt.CaseSensitivity.CaseInsensitive)
self.completer.setPopup(self.view())

View File

@ -39,7 +39,10 @@ class QLiberationMap(QWebEngineView):
# Required to allow "cross-origin" access from file:// scoped canvas.html to the
# localhost HTTP backend.
self.page.settings().setAttribute(
QWebEngineSettings.LocalContentCanAccessRemoteUrls, True
QWebEngineSettings.WebAttribute.LocalContentCanAccessRemoteUrls, True
)
self.page.settings().setAttribute(
QWebEngineSettings.WebAttribute.WebGLEnabled, True
)
if dev:

View File

@ -14,7 +14,7 @@ class FloatSpinSlider(QHBoxLayout):
) -> None:
super().__init__()
slider = QSlider(Qt.Horizontal)
slider = QSlider(Qt.Orientation.Horizontal)
slider.setMinimum(int(minimum * divisor))
slider.setMaximum(int(maximum * divisor))
slider.setValue(int(initial * divisor))
@ -36,7 +36,7 @@ class TimeInputs(QtWidgets.QHBoxLayout):
initial_minutes = int(initial.total_seconds() / 60)
slider = QtWidgets.QSlider(Qt.Horizontal)
slider = QtWidgets.QSlider(Qt.Orientation.Horizontal)
slider.setMinimum(minimum)
slider.setMaximum(maximum)
slider.setValue(initial_minutes)

View File

@ -223,12 +223,16 @@ class SquadronConfigurationBox(QGroupBox):
nickname_edit_layout.addWidget(QLabel("Nickname:"), 0, 0, 1, 2)
self.nickname_edit = QLineEdit(squadron.nickname)
nickname_edit_layout.addWidget(self.nickname_edit, 1, 0, Qt.AlignTop)
nickname_edit_layout.addWidget(
self.nickname_edit, 1, 0, Qt.AlignmentFlag.AlignTop
)
reroll_nickname_button = QToolButton()
reroll_nickname_button.setIcon(QIcon(ICONS["Reload"]))
reroll_nickname_button.setToolTip("Re-roll nickname")
reroll_nickname_button.clicked.connect(self.reroll_nickname)
nickname_edit_layout.addWidget(reroll_nickname_button, 1, 1, Qt.AlignTop)
nickname_edit_layout.addWidget(
reroll_nickname_button, 1, 1, Qt.AlignmentFlag.AlignTop
)
left_column.addWidget(QLabel("Livery:"))
self.livery_selector = SquadronLiverySelector(squadron)
@ -357,7 +361,7 @@ class SquadronConfigurationBox(QGroupBox):
self.squadron.aircraft,
self.coalition.air_wing.squadron_defs,
)
if popup.exec_() != QDialog.Accepted:
if popup.exec_() != QDialog.DialogCode.Accepted:
return None
selected_def = popup.squadron_def_selector.currentData()
@ -504,8 +508,10 @@ class AircraftSquadronsPage(QWidget):
scrolling_widget.setLayout(self.squadrons_config)
scrolling_area = QScrollArea()
scrolling_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scrolling_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scrolling_area.setHorizontalScrollBarPolicy(
Qt.ScrollBarPolicy.ScrollBarAlwaysOff
)
scrolling_area.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
scrolling_area.setWidgetResizable(True)
scrolling_area.setWidget(scrolling_widget)
@ -604,7 +610,7 @@ class AircraftTypeList(QListView):
self.setModel(self.item_model)
self.selectionModel().setCurrentIndex(
self.item_model.index(0, 0), QItemSelectionModel.Select
self.item_model.index(0, 0), QItemSelectionModel.SelectionFlag.Select
)
self.selectionModel().selectionChanged.connect(self.on_selection_changed)
for aircraft in air_wing.squadrons:
@ -702,7 +708,7 @@ class AirWingConfigurationTab(QWidget):
bases,
self.coalition.air_wing.squadron_defs,
)
if popup.exec_() != QDialog.Accepted:
if popup.exec_() != QDialog.DialogCode.Accepted:
return
selected_type = popup.aircraft_type_selector.currentData()
@ -799,10 +805,10 @@ class AirWingConfigurationDialog(QDialog):
None,
"Discard changes?",
"Are you sure you want to discard your changes and start the campaign?",
QMessageBox.Yes,
QMessageBox.No,
QMessageBox.StandardButton.Yes,
QMessageBox.StandardButton.No,
)
if result == QMessageBox.No:
if result == QMessageBox.StandardButton.No:
return
super().reject()

View File

@ -77,11 +77,12 @@ class SquadronList(QListView):
self.setItemDelegate(SquadronDelegate(self.air_wing_model))
self.setModel(self.air_wing_model)
self.selectionModel().setCurrentIndex(
self.air_wing_model.index(0, 0, QModelIndex()), QItemSelectionModel.Select
self.air_wing_model.index(0, 0, QModelIndex()),
QItemSelectionModel.SelectionFlag.Select,
)
# self.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.doubleClicked.connect(self.on_double_click)
def on_double_click(self, index: QModelIndex) -> None:
@ -183,7 +184,7 @@ class AirInventoryView(QWidget):
self.table = QTableWidget()
layout.addWidget(self.table)
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
self.table.verticalHeader().setVisible(False)
self.set_only_unallocated(False)

View File

@ -31,7 +31,7 @@ class TransferDelegate(TwoColumnRowDelegate):
def text_for(self, index: QModelIndex, row: int, column: int) -> str:
if row == 0:
return self.transfer_model.data(index, Qt.DisplayRole)
return self.transfer_model.data(index, Qt.ItemDataRole.DisplayRole)
elif row == 1:
return self.transfer(index).description
return ""
@ -47,11 +47,12 @@ class PendingTransfersList(QListView):
self.setItemDelegate(TransferDelegate(self.transfer_model))
self.setModel(self.transfer_model)
self.selectionModel().setCurrentIndex(
self.transfer_model.index(0, 0, QModelIndex()), QItemSelectionModel.Select
self.transfer_model.index(0, 0, QModelIndex()),
QItemSelectionModel.SelectionFlag.Select,
)
# self.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
def contextMenuEvent(self, event: QContextMenuEvent) -> None:
index = self.indexAt(event.pos())

View File

@ -43,7 +43,7 @@ class QICLSDialog(QDialog):
self.create_button = QPushButton("Save")
self.create_button.clicked.connect(self.accept)
layout.addWidget(self.create_button, alignment=Qt.AlignRight)
layout.addWidget(self.create_button, alignment=Qt.AlignmentFlag.AlignRight)
self.setLayout(layout)

View File

@ -98,7 +98,7 @@ class QLiberationWindow(QMainWindow):
# configuration.
screen = QGuiApplication.primaryScreen().availableSize()
self.setGeometry(0, 0, screen.width(), screen.height())
self.setWindowState(Qt.WindowMaximized)
self.setWindowState(Qt.WindowState.WindowMaximized)
# But override it with the saved configuration if it exists.
self._restore_window_geometry()
@ -117,8 +117,8 @@ class QLiberationWindow(QMainWindow):
self.onGameGenerated(self.game)
def initUi(self, ui_flags: UiFlags) -> None:
hbox = QSplitter(Qt.Horizontal)
vbox = QSplitter(Qt.Vertical)
hbox = QSplitter(Qt.Orientation.Horizontal)
vbox = QSplitter(Qt.Orientation.Vertical)
hbox.addWidget(self.ato_panel)
hbox.addWidget(vbox)
vbox.addWidget(self.liberation_map)
@ -398,11 +398,11 @@ class QLiberationWindow(QMainWindow):
QApplication.focusWidget(),
title,
msg,
QMessageBox.Yes,
QMessageBox.No,
QMessageBox.StandardButton.Yes,
QMessageBox.StandardButton.No,
)
if result is not None and result == QMessageBox.Yes:
if result is not None and result == QMessageBox.StandardButton.Yes:
self.newGame()
def setGame(self, game: Optional[Game]):
@ -422,7 +422,7 @@ class QLiberationWindow(QMainWindow):
"version of DCS Retribution.\n"
"\n"
f"{traceback.format_exc()}",
QMessageBox.Ok,
QMessageBox.StandardButton.Ok,
)
GameUpdateSignal.get_instance().updateGame(None)
finally:
@ -577,11 +577,13 @@ class QLiberationWindow(QMainWindow):
self,
"Quit Retribution?",
"Would you like to save before quitting?",
QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel,
QMessageBox.Cancel,
QMessageBox.StandardButton.Yes
| QMessageBox.StandardButton.No
| QMessageBox.StandardButton.Cancel,
QMessageBox.StandardButton.Cancel,
)
if result in [QMessageBox.Yes, QMessageBox.No]:
if result == QMessageBox.Yes:
if result in [QMessageBox.StandardButton.Yes, QMessageBox.StandardButton.No]:
if result == QMessageBox.StandardButton.Yes:
self.saveGame()
self._save_window_geometry()
super().closeEvent(event)

View File

@ -121,7 +121,7 @@ class QRadioFrequencyDialog(QDialog):
self.create_button = QPushButton("Save")
self.create_button.clicked.connect(self.accept)
layout.addWidget(self.create_button, alignment=Qt.AlignRight)
layout.addWidget(self.create_button, alignment=Qt.AlignmentFlag.AlignRight)
self.setLayout(layout)

View File

@ -47,7 +47,7 @@ class QTacanDialog(QDialog):
self.create_button = QPushButton("Save")
self.create_button.clicked.connect(self.accept)
layout.addWidget(self.create_button, alignment=Qt.AlignRight)
layout.addWidget(self.create_button, alignment=Qt.AlignmentFlag.AlignRight)
self.setLayout(layout)

View File

@ -71,7 +71,7 @@ class QUnitInfoWindow(QDialog):
self.setWindowIcon(QIcon("./resources/icon.png"))
self.setMinimumHeight(570)
self.setMaximumWidth(640)
self.setWindowFlags(Qt.WindowStaysOnTopHint)
self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
self.layout = QGridLayout()

View File

@ -54,7 +54,7 @@ class QWaitingForMissionResultWindow(QDialog):
parent: Optional[QWidget] = None,
) -> None:
super(QWaitingForMissionResultWindow, self).__init__(parent=parent)
self.setWindowModality(QtCore.Qt.WindowModal)
self.setWindowModality(QtCore.Qt.WindowModality.WindowModal)
self.game = game
self.sim_controller = sim_controller
self.setWindowTitle("Waiting for mission completion.")
@ -98,7 +98,7 @@ class QWaitingForMissionResultWindow(QDialog):
self.gridLayout.addWidget(self.instructions_text, 1, 0)
progress = QLabel("")
progress.setAlignment(QtCore.Qt.AlignCenter)
progress.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
progress_bar = QMovie("./resources/ui/loader.gif")
progress.setMovie(progress_bar)

View File

@ -47,7 +47,7 @@ class PilotDelegate(TwoColumnRowDelegate):
def text_for(self, index: QModelIndex, row: int, column: int) -> str:
pilot = self.pilot(index)
if (row, column) == (0, 0):
return self.squadron_model.data(index, Qt.DisplayRole)
return self.squadron_model.data(index, Qt.ItemDataRole.DisplayRole)
elif (row, column) == (0, 1):
flown = pilot.record.missions_flown
missions = "missions" if flown != 1 else "mission"
@ -69,11 +69,12 @@ class PilotList(QListView):
self.setItemDelegate(PilotDelegate(self.squadron_model))
self.setModel(self.squadron_model)
self.selectionModel().setCurrentIndex(
self.squadron_model.index(0, 0, QModelIndex()), QItemSelectionModel.Select
self.squadron_model.index(0, 0, QModelIndex()),
QItemSelectionModel.SelectionFlag.Select,
)
# self.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
class AutoAssignedTaskControls(QVBoxLayout):
@ -291,19 +292,25 @@ class SquadronDialog(QDialog):
self.rename_button = QPushButton("Rename pilot")
self.rename_button.setProperty("style", "start-button")
self.rename_button.clicked.connect(self.rename_pilot)
button_panel.addWidget(self.rename_button, alignment=Qt.AlignRight)
button_panel.addWidget(
self.rename_button, alignment=Qt.AlignmentFlag.AlignRight
)
self.toggle_ai_button = QPushButton()
self.reset_ai_toggle_state(self.pilot_list.currentIndex())
self.toggle_ai_button.setProperty("style", "start-button")
self.toggle_ai_button.clicked.connect(self.toggle_ai)
button_panel.addWidget(self.toggle_ai_button, alignment=Qt.AlignRight)
button_panel.addWidget(
self.toggle_ai_button, alignment=Qt.AlignmentFlag.AlignRight
)
self.toggle_leave_button = QPushButton()
self.reset_leave_toggle_state(self.pilot_list.currentIndex())
self.toggle_leave_button.setProperty("style", "start-button")
self.toggle_leave_button.clicked.connect(self.toggle_leave)
button_panel.addWidget(self.toggle_leave_button, alignment=Qt.AlignRight)
button_panel.addWidget(
self.toggle_leave_button, alignment=Qt.AlignmentFlag.AlignRight
)
@property
def squadron(self) -> Squadron:

View File

@ -49,7 +49,7 @@ class DepartingConvoyInfo(QGroupBox):
attack_button.setProperty("style", "btn-danger")
attack_button.setMaximumWidth(180)
attack_button.clicked.connect(self.on_attack)
main_layout.addWidget(attack_button, 0, Qt.AlignLeft)
main_layout.addWidget(attack_button, 0, Qt.AlignmentFlag.AlignLeft)
def on_attack(self):
# TODO: Maintain Convoy list in Game.
@ -87,8 +87,8 @@ class DepartingConvoysList(QFrame):
scroll_content.setLayout(task_box_layout)
scroll = QScrollArea()
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
scroll.setWidgetResizable(True)
scroll.setWidget(scroll_content)
layout.addWidget(scroll)

View File

@ -75,8 +75,8 @@ class UnitTransferList(QFrame):
scroll_content.setLayout(task_box_layout)
scroll = QScrollArea()
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
scroll.setWidgetResizable(True)
scroll.setWidget(scroll_content)
main_layout.addWidget(scroll)
@ -131,13 +131,15 @@ class TransferControls(QGroupBox):
decrease.setDisabled(disabled)
decrease.setMinimumSize(16, 16)
decrease.setMaximumSize(16, 16)
decrease.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
decrease.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
decrease.clicked.connect(lambda: on_decrease(self))
layout.addWidget(decrease)
self.count_label = QLabel()
self.count_label.setSizePolicy(
QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
self.set_quantity(initial_amount)
layout.addWidget(self.count_label)
@ -148,7 +150,9 @@ class TransferControls(QGroupBox):
increase.setMinimumSize(16, 16)
increase.setMaximumSize(16, 16)
increase.clicked.connect(lambda: on_increase(self))
increase.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
increase.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
layout.addWidget(increase)
def set_quantity(self, quantity: int) -> None:
@ -183,8 +187,8 @@ class ScrollingUnitTransferGrid(QFrame):
scroll_content.setLayout(task_box_layout)
scroll = QScrollArea()
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
scroll.setWidgetResizable(True)
scroll.setWidget(scroll_content)
main_layout.addWidget(scroll)
@ -207,12 +211,12 @@ class ScrollingUnitTransferGrid(QFrame):
unit_name = QLabel(f"<b>{unit_type.display_name}</b>")
unit_name.setSizePolicy(
QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
)
origin_inventory_label = QLabel(str(origin_inventory))
origin_inventory_label.setSizePolicy(
QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
def increase(controls: TransferControls):
@ -222,9 +226,9 @@ class ScrollingUnitTransferGrid(QFrame):
return
modifiers = QApplication.keyboardModifiers()
if modifiers == Qt.ShiftModifier:
if modifiers == Qt.Modifier.SHIFT:
amount = 10
elif modifiers == Qt.ControlModifier:
elif modifiers == Qt.Modifier.CTRL:
amount = 5
else:
amount = 1
@ -242,9 +246,9 @@ class ScrollingUnitTransferGrid(QFrame):
return
modifiers = QApplication.keyboardModifiers()
if modifiers == Qt.ShiftModifier:
if modifiers == Qt.Modifier.SHIFT:
amount = 10
elif modifiers == Qt.ControlModifier:
elif modifiers == Qt.Modifier.CTRL:
amount = 5
else:
amount = 1
@ -259,11 +263,11 @@ class ScrollingUnitTransferGrid(QFrame):
origin_inventory_layout.addWidget(unit_name)
origin_inventory_layout.addItem(
QSpacerItem(20, 0, QSizePolicy.Minimum, QSizePolicy.Minimum)
QSpacerItem(20, 0, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
)
origin_inventory_layout.addWidget(origin_inventory_label)
origin_inventory_layout.addItem(
QSpacerItem(20, 0, QSizePolicy.Minimum, QSizePolicy.Minimum)
QSpacerItem(20, 0, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
)
layout.addWidget(exist, row, 1)

View File

@ -54,7 +54,7 @@ class QBaseMenu2(QDialog):
self.setWindowIcon(EVENT_ICONS["capture"])
self.setWindowFlags(Qt.WindowStaysOnTopHint)
self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
self.setMinimumSize(300, 200)
self.setMinimumWidth(1024)
self.setMaximumWidth(1024)
@ -74,7 +74,7 @@ class QBaseMenu2(QDialog):
top_layout.addLayout(cp_settings)
title = QLabel("<b>" + self.cp.name + "</b>")
title.setAlignment(Qt.AlignLeft | Qt.AlignTop)
title.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
title.setProperty("style", "base-title")
cp_settings.addWidget(title, 0, 0, 1, 2)
cp_settings.setHorizontalSpacing(20)
@ -114,7 +114,7 @@ class QBaseMenu2(QDialog):
self.intel_summary.setToolTip(self.generate_intel_tooltip())
self.update_intel_summary()
top_layout.addWidget(self.intel_summary)
top_layout.setAlignment(Qt.AlignTop)
top_layout.setAlignment(Qt.AlignmentFlag.AlignTop)
runway_buttons_layout = QVBoxLayout()
top_layout.addLayout(runway_buttons_layout)
@ -166,7 +166,9 @@ class QBaseMenu2(QDialog):
self.budget_display = QLabel(
UnitTransactionFrame.BUDGET_FORMAT.format(self.game_model.game.blue.budget)
)
self.budget_display.setAlignment(Qt.AlignRight | Qt.AlignBottom)
self.budget_display.setAlignment(
Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignBottom
)
self.budget_display.setProperty("style", "budget-label")
bottom_row.addWidget(self.budget_display)
GameUpdateSignal.get_instance().budgetupdated.connect(self.update_budget)
@ -226,7 +228,7 @@ class QBaseMenu2(QDialog):
"Cannot repair runway",
f"Runway repair costs ${RUNWAY_REPAIR_COST}M but you have "
f"only ${self.game_model.game.blue.budget}M available.",
QMessageBox.Ok,
QMessageBox.StandardButton.Ok,
)
return
if not self.can_repair_runway:
@ -234,7 +236,7 @@ class QBaseMenu2(QDialog):
self,
"Cannot repair runway",
f"Cannot repair this runway.",
QMessageBox.Ok,
QMessageBox.StandardButton.Ok,
)
return

View File

@ -55,7 +55,7 @@ class PurchaseGroup(QGroupBox, Generic[TransactionItemType]):
self.sell_button.setMinimumSize(16, 16)
self.sell_button.setMaximumSize(16, 16)
self.sell_button.setSizePolicy(
QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
self.sell_button.clicked.connect(
@ -64,7 +64,7 @@ class PurchaseGroup(QGroupBox, Generic[TransactionItemType]):
self.amount_bought = QLabel()
self.amount_bought.setSizePolicy(
QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
self.buy_button = QPushButton("+")
@ -76,7 +76,9 @@ class PurchaseGroup(QGroupBox, Generic[TransactionItemType]):
self.buy_button.clicked.connect(
lambda: self.recruiter.recruit_handler(RecruitType.BUY, self.item)
)
self.buy_button.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
self.buy_button.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
layout.addWidget(self.sell_button)
layout.addWidget(self.amount_bought)
@ -153,23 +155,27 @@ class UnitTransactionFrame(QFrame, Generic[TransactionItemType]):
exist.setMaximumHeight(72)
exist.setMinimumHeight(36)
existLayout = QHBoxLayout()
existLayout.setSizeConstraint(QLayout.SetMinimumSize)
existLayout.setSizeConstraint(QLayout.SizeConstraint.SetMinimumSize)
exist.setLayout(existLayout)
existing_units = self.current_quantity_of(item)
unitName = QLabel(f"<b>{self.display_name_of(item, multiline=True)}</b>")
unitName.setSizePolicy(
QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
)
existing_units = QLabel(str(existing_units))
existing_units.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
existing_units.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
self.existing_units_labels[item] = existing_units
price = QLabel(f"<b>$ {self.price_of(item)}</b> M")
price.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
price.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
purchase_group = PurchaseGroup(item, self)
self.purchase_groups[item] = purchase_group
@ -186,15 +192,17 @@ class UnitTransactionFrame(QFrame, Generic[TransactionItemType]):
unitInfo.setMinimumSize(16, 16)
unitInfo.setMaximumSize(16, 16)
unitInfo.clicked.connect(lambda: self.info(item))
unitInfo.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
unitInfo.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
existLayout.addWidget(unitName)
existLayout.addItem(
QSpacerItem(20, 0, QSizePolicy.Minimum, QSizePolicy.Minimum)
QSpacerItem(20, 0, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
)
existLayout.addWidget(existing_units)
existLayout.addItem(
QSpacerItem(20, 0, QSizePolicy.Minimum, QSizePolicy.Minimum)
QSpacerItem(20, 0, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
)
existLayout.addWidget(price)
@ -214,9 +222,9 @@ class UnitTransactionFrame(QFrame, Generic[TransactionItemType]):
# Shift = 10 times
# CTRL = 5 Times
modifiers = QApplication.keyboardModifiers()
if modifiers == Qt.ShiftModifier:
if modifiers == Qt.Modifier.SHIFT:
amount = 10
elif modifiers == Qt.ControlModifier:
elif modifiers == Qt.Modifier.CTRL:
amount = 5
else:
amount = 1
@ -235,7 +243,9 @@ class UnitTransactionFrame(QFrame, Generic[TransactionItemType]):
self.purchase_adapter.buy(item, quantity)
except TransactionError as ex:
logging.exception(f"Purchase of {self.display_name_of(item)} failed")
QMessageBox.warning(self, "Purchase failed", str(ex), QMessageBox.Ok)
QMessageBox.warning(
self, "Purchase failed", str(ex), QMessageBox.StandardButton.Ok
)
finally:
self.post_transaction_update()
@ -244,7 +254,9 @@ class UnitTransactionFrame(QFrame, Generic[TransactionItemType]):
self.purchase_adapter.sell(item, quantity)
except TransactionError as ex:
logging.exception(f"Sale of {self.display_name_of(item)} failed")
QMessageBox.warning(self, "Sale failed", str(ex), QMessageBox.Ok)
QMessageBox.warning(
self, "Sale failed", str(ex), QMessageBox.StandardButton.Ok
)
finally:
self.post_transaction_update()

View File

@ -87,10 +87,10 @@ class QHangarStatus(QHBoxLayout):
self.text = QLabel("")
self.update_label()
self.addWidget(self.icon, Qt.AlignLeft)
self.addWidget(self.text, Qt.AlignLeft)
self.addWidget(self.icon, Qt.AlignmentFlag.AlignLeft)
self.addWidget(self.text, Qt.AlignmentFlag.AlignLeft)
self.addStretch(50)
self.setAlignment(Qt.AlignLeft)
self.setAlignment(Qt.AlignmentFlag.AlignLeft)
def update_label(self) -> None:
parking_type = ParkingType(

View File

@ -41,8 +41,8 @@ class QArmorRecruitmentMenu(UnitTransactionFrame[GroundUnitType]):
scroll_content.setLayout(task_box_layout)
scroll = QScrollArea()
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
scroll.setWidgetResizable(True)
scroll.setWidget(scroll_content)
main_layout.addWidget(scroll)

View File

@ -57,8 +57,8 @@ class QIntelInfo(QFrame):
scroll_content.setLayout(intel_layout)
scroll = QScrollArea()
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
scroll.setWidgetResizable(True)
scroll.setWidget(scroll_content)

View File

@ -20,9 +20,9 @@ class QHorizontalSeparationLine(QFrame):
super().__init__()
self.setMinimumWidth(1)
self.setFixedHeight(20)
self.setFrameShape(QFrame.HLine)
self.setFrameShadow(QFrame.Sunken)
self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Minimum)
self.setFrameShape(QFrame.Shape.HLine)
self.setFrameShadow(QFrame.Shadow.Sunken)
self.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Minimum)
class FinancesLayout(QGridLayout):

View File

@ -90,8 +90,12 @@ class QTgoLayoutGroupRow(QWidget):
self.unit_selector.adjustSize()
self.unit_selector.setEnabled(self.unit_selector.count() > 1)
self.grid_layout.addWidget(self.unit_selector, 0, 0, alignment=Qt.AlignRight)
self.grid_layout.addWidget(self.amount_selector, 0, 1, alignment=Qt.AlignRight)
self.grid_layout.addWidget(
self.unit_selector, 0, 0, alignment=Qt.AlignmentFlag.AlignRight
)
self.grid_layout.addWidget(
self.amount_selector, 0, 1, alignment=Qt.AlignmentFlag.AlignRight
)
dcs_unit_type, price = self.unit_selector.itemData(
self.unit_selector.currentIndex()
@ -109,7 +113,9 @@ class QTgoLayoutGroupRow(QWidget):
self.amount_selector.setValue(self.group_layout.amount)
self.amount_selector.setEnabled(self.group_layout.layout.max_size > 1)
self.grid_layout.addWidget(self.group_selector, 0, 2, alignment=Qt.AlignRight)
self.grid_layout.addWidget(
self.group_selector, 0, 2, alignment=Qt.AlignmentFlag.AlignRight
)
self.amount_selector.valueChanged.connect(self.on_group_changed)
self.unit_selector.currentIndexChanged.connect(self.on_group_changed)
@ -299,14 +305,16 @@ class QGroundObjectBuyMenu(QDialog):
template_selector_layout = QGridLayout()
template_selector_layout.addWidget(
QLabel("Armed Forces Group:"), 0, 0, Qt.AlignLeft
QLabel("Armed Forces Group:"), 0, 0, Qt.AlignmentFlag.AlignLeft
)
template_selector_layout.addWidget(
self.force_group_selector, 0, 1, alignment=Qt.AlignRight
self.force_group_selector, 0, 1, alignment=Qt.AlignmentFlag.AlignRight
)
template_selector_layout.addWidget(QLabel("Layout:"), 1, 0, Qt.AlignLeft)
template_selector_layout.addWidget(
self.layout_selector, 1, 1, alignment=Qt.AlignRight
QLabel("Layout:"), 1, 0, Qt.AlignmentFlag.AlignLeft
)
template_selector_layout.addWidget(
self.layout_selector, 1, 1, alignment=Qt.AlignmentFlag.AlignRight
)
self.mainLayout.addLayout(template_selector_layout, 0, 0)

View File

@ -15,7 +15,7 @@ class QInfoList(QListView):
self.update_list()
self.selectionModel().setCurrentIndex(
self.indexAt(QPoint(1, 1)), QItemSelectionModel.Select
self.indexAt(QPoint(1, 1)), QItemSelectionModel.SelectionFlag.Select
)
self.selectionModel().selectionChanged.connect(self.on_selected_info_changed)
@ -28,7 +28,7 @@ class QInfoList(QListView):
for i, info in enumerate(reversed(self.game.informations)):
self.model.appendRow(QInfoItem(info))
self.selectionModel().setCurrentIndex(
self.indexAt(QPoint(1, 1)), QItemSelectionModel.Select
self.indexAt(QPoint(1, 1)), QItemSelectionModel.SelectionFlag.Select
)
def setGame(self, game):

View File

@ -60,7 +60,9 @@ class IntelTableLayout(QGridLayout):
def add_spacer(self) -> None:
self.addItem(
QSpacerItem(0, 0, QSizePolicy.Preferred, QSizePolicy.Expanding),
QSpacerItem(
0, 0, QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Expanding
),
next(self.row),
0,
)

View File

@ -58,7 +58,7 @@ class QLogsWindow(QDialog):
break
if self._logging_handler is not None:
self.textbox.setPlainText(self._logging_handler.log)
self.textbox.moveCursor(QTextCursor.End)
self.textbox.moveCursor(QTextCursor.MoveOperation.End)
# The Handler might be called from a different thread,
# so use signal/slot to properly handle the event in the main thread.
# https://github.com/dcs-liberation/dcs_liberation/issues/1493
@ -73,4 +73,4 @@ class QLogsWindow(QDialog):
def appendLog(self, msg: str):
self.textbox.appendPlainText(msg)
self.textbox.moveCursor(QTextCursor.End)
self.textbox.moveCursor(QTextCursor.MoveOperation.End)

View File

@ -76,7 +76,7 @@ class QPackageDialog(QDialog):
self.package_name_column = QHBoxLayout()
self.summary_row.addLayout(self.package_name_column)
self.package_name_label = QLabel("Package Name:")
self.package_name_label.setAlignment(Qt.AlignCenter)
self.package_name_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.package_name_text = QLineEdit(self.package_model.package.custom_name)
self.package_name_text.textChanged.connect(self.on_change_name)
self.package_name_column.addWidget(self.package_name_label)
@ -110,7 +110,7 @@ class QPackageDialog(QDialog):
self.tot_help_label = QLabel(
'<a href="https://github.com/dcs-retribution/dcs-retribution/wiki/Mission-planning"><span style="color:#FFFFFF;">Help</span></a>'
)
self.tot_help_label.setAlignment(Qt.AlignCenter)
self.tot_help_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.tot_help_label.setOpenExternalLinks(True)
self.tot_column.addWidget(self.tot_help_label)
@ -214,7 +214,7 @@ class QPackageDialog(QDialog):
self.package_model.delete_flight(flight)
logging.exception("Could not create flight")
QMessageBox.critical(
self, "Could not create flight", str(ex), QMessageBox.Ok
self, "Could not create flight", str(ex), QMessageBox.StandardButton.Ok
)
self.auto_create_button.setDisabled(True)
# noinspection PyUnresolvedReferences

View File

@ -18,7 +18,7 @@ class QPlannedFlightsView(QListView):
self.setModel(self.model)
self.flight_items = []
self.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.set_flight_planner()
def setup_content(self):
@ -39,7 +39,9 @@ class QPlannedFlightsView(QListView):
index = self.model.index(row, 0)
if not index.isValid():
index = self.model.index(0, 0)
self.selectionModel().setCurrentIndex(index, QItemSelectionModel.Select)
self.selectionModel().setCurrentIndex(
index, QItemSelectionModel.SelectionFlag.Select
)
self.repaint()
def clear_layout(self):

View File

@ -136,7 +136,7 @@ class QFlightCreator(QDialog):
self.create_button = QPushButton("Create")
self.create_button.clicked.connect(self.create_flight)
layout.addWidget(self.create_button, alignment=Qt.AlignRight)
layout.addWidget(self.create_button, alignment=Qt.AlignmentFlag.AlignRight)
self.setLayout(layout)
@ -173,7 +173,9 @@ class QFlightCreator(QDialog):
def create_flight(self) -> None:
error = self.verify_form()
if error is not None:
QMessageBox.critical(self, "Could not create flight", error, QMessageBox.Ok)
QMessageBox.critical(
self, "Could not create flight", error, QMessageBox.StandardButton.Ok
)
return
task = self.task_selector.currentData()

View File

@ -60,7 +60,7 @@ class DcsFuelSelector(QHBoxLayout):
self.addWidget(self.label)
self.max_fuel = int(flight.unit_type.dcs_unit_type.fuel_max)
self.fuel = QSlider(Qt.Horizontal)
self.fuel = QSlider(Qt.Orientation.Horizontal)
self.fuel.setRange(0, self.max_fuel)
self.fuel.setValue(min(round(self.flight.fuel), self.max_fuel))
self.fuel.valueChanged.connect(self.on_fuel_change)
@ -148,7 +148,7 @@ class QFlightPayloadTab(QFrame):
scroll = QScrollArea()
scroll.setWidgetResizable(True)
scroll.setWidget(scroll_content)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
layout.addWidget(scroll, stretch=1)
self.own_laser_code_info = OwnLaserCodeInfo(
@ -183,7 +183,7 @@ class QFlightPayloadTab(QFrame):
docsText = QLabel(
'<a href="https://github.com/dcs-retribution/dcs-retribution/wiki/Custom-Loadouts"><span style="color:#FFFFFF;">How to create your own default loadout</span></a>'
)
docsText.setAlignment(Qt.AlignCenter)
docsText.setAlignment(Qt.AlignmentFlag.AlignCenter)
docsText.setOpenExternalLinks(True)
self.fuel_selector = DcsFuelSelector(flight)

View File

@ -42,7 +42,9 @@ class QLoadoutEditor(QGroupBox):
for i, pylon in enumerate(Pylon.iter_pylons(self.flight.unit_type)):
label = QLabel(f"<b>{pylon.number}</b>")
label.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
label.setSizePolicy(
QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
)
layout.addWidget(label, i, 0)
layout.addWidget(QPylonEditor(game, flight, flight_member, pylon), i, 1)
@ -130,7 +132,9 @@ class QLoadoutEditor(QGroupBox):
payloads = {
"name": f"{self.flight.unit_type.dcs_unit_type.id}",
"payloads": {
1: DcsPayload.from_flight_member(self.flight_member, payload_name).to_dict(),
1: DcsPayload.from_flight_member(
self.flight_member, payload_name
).to_dict(),
},
"unitType": f"{self.flight.unit_type.dcs_unit_type.id}",
}

View File

@ -120,7 +120,10 @@ class FlightPlanPropertiesGroup(QGroupBox):
self.flight.divert = old_divert
logging.exception("Could not change divert airfield")
QMessageBox.critical(
self, "Could not update flight plan", str(ex), QMessageBox.Ok
self,
"Could not update flight plan",
str(ex),
QMessageBox.StandardButton.Ok,
)
def set_tot_offset(self, offset: QTime) -> None:

View File

@ -6,7 +6,7 @@ from game.ato.flightwaypoint import FlightWaypoint
class QWaypointItem(QStandardItem):
def __init__(self, point: FlightWaypoint, number):
super(QWaypointItem, self).__init__()
self.setData(point, Qt.UserRole)
self.setData(point, Qt.ItemDataRole.UserRole)
self.number = number
self.setText("{:<16}".format(point.pretty_name))
self.setEditable(True)

View File

@ -41,11 +41,11 @@ class QFlightWaypointList(QTableView):
self.model.setHorizontalHeaderLabels(HEADER_LABELS)
header = self.horizontalHeader()
header.setSectionResizeMode(0, QHeaderView.ResizeToContents)
header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)
self.update_list()
self.selectionModel().setCurrentIndex(
self.indexAt(QPoint(1, 1)), QItemSelectionModel.Select
self.indexAt(QPoint(1, 1)), QItemSelectionModel.SelectionFlag.Select
)
self.altitude_editor_delegate = AltitudeEditorDelegate(self)
@ -66,7 +66,8 @@ class QFlightWaypointList(QTableView):
for row, waypoint in enumerate(waypoints):
self._add_waypoint_row(row, self.flight, waypoint)
self.selectionModel().setCurrentIndex(
self.model.index(current_index, 0), QItemSelectionModel.Select
self.model.index(current_index, 0),
QItemSelectionModel.SelectionFlag.Select,
)
self.resizeColumnsToContents()
total_column_width = self.verticalHeader().width() + self.lineWidth()

View File

@ -106,11 +106,13 @@ class QFlightWaypointTab(QFrame):
return
index: QModelIndex = selected[0]
self.flight_waypoint_list.setCurrentIndex(index)
wpt: FlightWaypoint = self.flight_waypoint_list.model.data(index, Qt.UserRole)
wpt: FlightWaypoint = self.flight_waypoint_list.model.data(
index, Qt.ItemDataRole.UserRole
)
next_wpt: Optional[FlightWaypoint] = None
if index.row() + 1 < self.flight_waypoint_list.model.rowCount():
next_wpt = self.flight_waypoint_list.model.data(
index.siblingAtRow(index.row() + 1), Qt.UserRole
index.siblingAtRow(index.row() + 1), Qt.ItemDataRole.UserRole
)
if not self.flight.flight_plan.layout.add_waypoint(wpt, next_wpt):
QMessageBox.critical(
@ -167,10 +169,10 @@ class QFlightWaypointTab(QFrame):
"Deleting the selected waypoint(s) will require degradation to a custom flight-plan. "
"A custom flight-plan will no longer respect the TOTs of the package.<br><br>"
"<b>Are you sure you wish to continue?</b>",
QMessageBox.Yes,
QMessageBox.No,
QMessageBox.StandardButton.Yes,
QMessageBox.StandardButton.No,
)
return result == QMessageBox.Yes
return result == QMessageBox.StandardButton.Yes
def on_fast_waypoint(self):
self.subwindow = QPredefinedWaypointSelectionWindow(
@ -189,8 +191,11 @@ class QFlightWaypointTab(QFrame):
self.degrade_to_custom_flight_plan()
assert isinstance(self.flight.flight_plan, CustomFlightPlan)
self.flight.flight_plan.layout.custom_waypoints.extend(waypoints)
self.add_rows(len(list(waypoints)))
def add_rows(self, count: int) -> None:
rc = self.flight_waypoint_list.model.rowCount()
self.flight_waypoint_list.model.insertRows(rc, len(list(waypoints)))
self.flight_waypoint_list.model.insertRows(rc, count)
self.on_change()
def on_rtb_waypoint(self):
@ -198,7 +203,7 @@ class QFlightWaypointTab(QFrame):
self.degrade_to_custom_flight_plan()
assert isinstance(self.flight.flight_plan, CustomFlightPlan)
self.flight.flight_plan.layout.custom_waypoints.append(rtb)
self.on_change()
self.add_rows(1)
def degrade_to_custom_flight_plan(self) -> None:
if not isinstance(self.flight.flight_plan, CustomFlightPlan):
@ -212,11 +217,11 @@ class QFlightWaypointTab(QFrame):
"Changing the flight type will reset its flight plan. Do you want "
"to continue?"
),
QMessageBox.No,
QMessageBox.Yes,
QMessageBox.StandardButton.No,
QMessageBox.StandardButton.Yes,
)
original_task = self.flight.flight_type
if result == QMessageBox.Yes:
if result == QMessageBox.StandardButton.Yes:
self.flight.set_flight_type(task)
try:
self.flight.recreate_flight_plan(dump_debug_info=True)
@ -224,7 +229,10 @@ class QFlightWaypointTab(QFrame):
self.flight.set_flight_type(original_task)
logging.exception("Could not recreate flight")
QMessageBox.critical(
self, "Could not recreate flight", str(ex), QMessageBox.Ok
self,
"Could not recreate flight",
str(ex),
QMessageBox.StandardButton.Ok,
)
for member in self.flight.iter_members():
if not member.loadout.is_custom:

View File

@ -34,7 +34,7 @@ class QPredefinedWaypointSelectionWindow(QDialog):
super(QPredefinedWaypointSelectionWindow, self).__init__()
self.game = game
self.flight = flight
self.setWindowFlags(Qt.WindowStaysOnTopHint)
self.setWindowFlags(Qt.WindowType.WindowStaysOnTopHint)
self.setMinimumSize(400, 250)
self.setModal(True)
self.setWindowTitle("Add Predefined Waypoint")

View File

@ -20,7 +20,7 @@ from qt_ui.windows.newgame.WizardPages.QTheaterConfiguration import (
class NewGameWizard(QtWidgets.QWizard):
def __init__(self, parent=None):
super(NewGameWizard, self).__init__(parent)
self.setOption(QtWidgets.QWizard.IndependentPages)
self.setOption(QtWidgets.QWizard.WizardOption.IndependentPages)
self.campaigns = list(sorted(Campaign.load_each(), key=lambda x: x.name))
@ -41,10 +41,10 @@ class NewGameWizard(QtWidgets.QWizard):
self.addPage(ConclusionPage(self))
self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap,
QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark1.png"),
)
self.setWizardStyle(QtWidgets.QWizard.ModernStyle)
self.setWizardStyle(QtWidgets.QWizard.WizardStyle.ModernStyle)
self.setWindowTitle("New Game")
self.generatedGame = None
@ -163,7 +163,7 @@ class IntroPage(QtWidgets.QWizardPage):
self.setTitle("Introduction")
self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap,
QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark1.png"),
)
@ -185,7 +185,7 @@ class ConclusionPage(QtWidgets.QWizardPage):
self.setTitle("Conclusion")
self.setSubTitle("\n\n")
self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap,
QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark2.png"),
)

View File

@ -109,7 +109,7 @@ class FactionSelection(QtWidgets.QWizardPage):
"\nChoose the two opposing factions and select the player side."
)
self.setPixmap(
QtWidgets.QWizard.LogoPixmap,
QtWidgets.QWizard.WizardPixmap.LogoPixmap,
QtGui.QPixmap("./resources/ui/misc/generator.png"),
)
@ -133,13 +133,17 @@ class FactionSelection(QtWidgets.QWizardPage):
self.blueFactionDescription = QTextBrowser()
self.blueFactionDescription.setReadOnly(True)
self.blueFactionDescription.setOpenExternalLinks(True)
self.blueFactionDescription.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.blueFactionDescription.setVerticalScrollBarPolicy(
Qt.ScrollBarPolicy.ScrollBarAlwaysOn
)
self.blueFactionDescription.setMaximumHeight(120)
self.redFactionDescription = QTextBrowser()
self.redFactionDescription.setReadOnly(True)
self.redFactionDescription.setOpenExternalLinks(True)
self.redFactionDescription.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.redFactionDescription.setVerticalScrollBarPolicy(
Qt.ScrollBarPolicy.ScrollBarAlwaysOn
)
self.redFactionDescription.setMaximumHeight(120)
# Setup default selected factions
@ -177,7 +181,7 @@ class FactionSelection(QtWidgets.QWizardPage):
docsText = QtWidgets.QLabel(
'<a href="https://github.com/dcs-retribution/dcs-retribution/wiki/Custom-Factions"><span style="color:#FFFFFF;">How to create your own faction</span></a>'
)
docsText.setAlignment(Qt.AlignCenter)
docsText.setAlignment(Qt.AlignmentFlag.AlignCenter)
docsText.setOpenExternalLinks(True)
# Link form fields

View File

@ -21,7 +21,7 @@ class BudgetInputs(QtWidgets.QGridLayout):
minimum = 0
maximum = 5000
slider = QtWidgets.QSlider(Qt.Horizontal)
slider = QtWidgets.QSlider(Qt.Orientation.Horizontal)
slider.setMinimum(minimum)
slider.setMaximum(maximum)
slider.setValue(value)
@ -40,7 +40,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
self.setTitle("Generator settings")
self.setSubTitle("\nOptions affecting the generation of the game.")
self.setPixmap(
QtWidgets.QWizard.LogoPixmap,
QtWidgets.QWizard.WizardPixmap.LogoPixmap,
QtGui.QPixmap("./resources/ui/wizard/logo1.png"),
)
@ -142,7 +142,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
modHelpText = QtWidgets.QLabel(
"<p>Select the mods you have installed. If your chosen factions support them, you'll be able to use these mods in your campaign.</p>"
)
modHelpText.setAlignment(Qt.AlignCenter)
modHelpText.setAlignment(Qt.AlignmentFlag.AlignCenter)
modLayout = QtWidgets.QGridLayout()
modLayout_row = 1

View File

@ -14,7 +14,7 @@ class NewGameSettings(QtWidgets.QWizardPage):
self.setTitle("Campaign options")
self.setSubTitle("\nAll other options unrelated to campaign generation.")
self.setPixmap(
QtWidgets.QWizard.LogoPixmap,
QtWidgets.QWizard.WizardPixmap.LogoPixmap,
QtGui.QPixmap("./resources/ui/wizard/logo1.png"),
)

View File

@ -83,12 +83,12 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
self.setTitle("Theater configuration")
self.setSubTitle("\nChoose a terrain and time period for this game.")
self.setPixmap(
QtWidgets.QWizard.LogoPixmap,
QtWidgets.QWizard.WizardPixmap.LogoPixmap,
QtGui.QPixmap("./resources/ui/wizard/logo1.png"),
)
self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap,
QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark3.png"),
)
@ -205,7 +205,8 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
self.campaign_selected.emit(campaign)
self.campaignList.selectionModel().setCurrentIndex(
self.campaignList.indexAt(QPoint(1, 1)), QItemSelectionModel.Rows
self.campaignList.indexAt(QPoint(1, 1)),
QItemSelectionModel.SelectionFlag.Rows,
)
self.campaignList.selectionModel().selectionChanged.connect(
@ -220,7 +221,7 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
'or <a href="https://github.com/dcs-retribution/dcs-retribution/wiki/Custom-Campaigns"><span style="color:#FFFFFF;">create your own</span></a>.'
"</p>"
)
docsText.setAlignment(Qt.AlignCenter)
docsText.setAlignment(Qt.AlignmentFlag.AlignCenter)
docsText.setOpenExternalLinks(True)
# Register fields
@ -278,7 +279,7 @@ class QCampaignItem(QStandardItem):
class QCampaignList(QListView):
CampaignRole = Qt.UserRole
CampaignRole = Qt.ItemDataRole.UserRole
def __init__(self, campaigns: list[Campaign], show_incompatible: bool) -> None:
super(QCampaignList, self).__init__()
@ -287,7 +288,7 @@ class QCampaignList(QListView):
self.setMinimumWidth(250)
self.setMinimumHeight(350)
self.campaigns = campaigns
self.setSelectionBehavior(QAbstractItemView.SelectItems)
self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.setup_content(show_incompatible)
@property
@ -306,5 +307,6 @@ class QCampaignList(QListView):
self.selectionModel().blockSignals(False)
self.selectionModel().setCurrentIndex(
self.campaign_model.index(0, 0, QModelIndex()), QItemSelectionModel.Select
self.campaign_model.index(0, 0, QModelIndex()),
QItemSelectionModel.SelectionFlag.Select,
)

View File

@ -33,7 +33,7 @@ class QNotesWindow(QDialog):
self.textbox = QPlainTextEdit(self)
try:
self.textbox.setPlainText(self.game.notes)
self.textbox.moveCursor(QTextCursor.End)
self.textbox.moveCursor(QTextCursor.MoveOperation.End)
except AttributeError: # old save may not have game.notes
pass
self.textbox.move(10, 10)

View File

@ -18,8 +18,12 @@ class QLiberationFirstStartWindow(QDialog):
self.setWindowTitle("First start configuration")
self.setMinimumSize(500, 200)
self.setWindowIcon(QIcon("./resources/icon.png"))
self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.Dialog | Qt.WindowTitleHint)
self.setWindowModality(Qt.WindowModal)
self.setWindowFlags(
Qt.WindowType.WindowStaysOnTopHint
| Qt.WindowType.Dialog
| Qt.WindowType.WindowTitleHint
)
self.setWindowModality(Qt.WindowModality.WindowModal)
self.preferences = QLiberationPreferences()
WARN_TEXT = """

View File

@ -49,20 +49,28 @@ class QLiberationPreferences(QFrame):
QLabel("<strong>DCS saved game directory:</strong>"),
0,
0,
alignment=Qt.AlignLeft,
alignment=Qt.AlignmentFlag.AlignLeft,
)
layout.addWidget(
self.edit_saved_game_dir, 1, 0, alignment=Qt.AlignmentFlag.AlignRight
)
layout.addWidget(
self.browse_saved_game, 1, 1, alignment=Qt.AlignmentFlag.AlignRight
)
layout.addWidget(self.edit_saved_game_dir, 1, 0, alignment=Qt.AlignRight)
layout.addWidget(self.browse_saved_game, 1, 1, alignment=Qt.AlignRight)
layout.addWidget(
QLabel("<strong>DCS installation directory:</strong>"),
2,
0,
alignment=Qt.AlignLeft,
alignment=Qt.AlignmentFlag.AlignLeft,
)
layout.addWidget(
self.edit_dcs_install_dir, 3, 0, alignment=Qt.AlignmentFlag.AlignRight
)
layout.addWidget(
self.browse_install_dir, 3, 1, alignment=Qt.AlignmentFlag.AlignRight
)
layout.addWidget(self.edit_dcs_install_dir, 3, 0, alignment=Qt.AlignRight)
layout.addWidget(self.browse_install_dir, 3, 1, alignment=Qt.AlignRight)
layout.addWidget(QLabel("<strong>Theme (Requires Restart)</strong>"), 4, 0)
layout.addWidget(self.themeSelect, 4, 1, alignment=Qt.AlignRight)
layout.addWidget(self.themeSelect, 4, 1, alignment=Qt.AlignmentFlag.AlignRight)
self.themeSelect.setCurrentIndex(get_theme_index())
main_layout.addLayout(layout)
@ -115,7 +123,7 @@ class QLiberationPreferences(QFrame):
QMessageBox.StandardButton.Yes,
QMessageBox.StandardButton.No,
)
if warning_dialog == QMessageBox.No:
if warning_dialog == QMessageBox.StandardButton.No:
return False
elif not os.path.isdir(self.dcs_install_dir):
error_dialog = QMessageBox.critical(
@ -130,7 +138,7 @@ class QLiberationPreferences(QFrame):
QMessageBox.StandardButton.Ignore,
QMessageBox.StandardButton.Ok,
)
if error_dialog == QMessageBox.Ignore:
if error_dialog == QMessageBox.StandardButton.Ignore:
self.install_dir_ignore_warning = True
return False
elif not os.path.isdir(

View File

@ -180,7 +180,7 @@ class AutoSettingsLayout(QGridLayout):
value = not value
checkbox.setChecked(value)
checkbox.toggled.connect(on_toggle)
self.addWidget(checkbox, row, 1, Qt.AlignRight)
self.addWidget(checkbox, row, 1, Qt.AlignmentFlag.AlignRight)
self.settings_map[name] = checkbox
def add_combobox_for(self, row: int, name: str, description: ChoicesOption) -> None:
@ -195,7 +195,7 @@ class AutoSettingsLayout(QGridLayout):
description.text_for_value(self.sc.settings.__dict__[name])
)
combobox.currentIndexChanged.connect(on_changed)
self.addWidget(combobox, row, 1, Qt.AlignRight)
self.addWidget(combobox, row, 1, Qt.AlignmentFlag.AlignRight)
self.settings_map[name] = combobox
def add_float_spin_slider_for(
@ -212,7 +212,7 @@ class AutoSettingsLayout(QGridLayout):
self.sc.settings.__dict__[name] = spinner.value
spinner.spinner.valueChanged.connect(on_changed)
self.addLayout(spinner, row, 1, Qt.AlignRight)
self.addLayout(spinner, row, 1, Qt.AlignmentFlag.AlignRight)
self.settings_map[name] = spinner
def add_spinner_for(
@ -229,7 +229,7 @@ class AutoSettingsLayout(QGridLayout):
spinner.setValue(self.sc.settings.__dict__[name])
spinner.valueChanged.connect(on_changed)
self.addWidget(spinner, row, 1, Qt.AlignRight)
self.addWidget(spinner, row, 1, Qt.AlignmentFlag.AlignRight)
self.settings_map[name] = spinner
def add_duration_controls_for(
@ -243,7 +243,7 @@ class AutoSettingsLayout(QGridLayout):
self.sc.settings.__dict__[name] = inputs.value
inputs.spinner.valueChanged.connect(on_changed)
self.addLayout(inputs, row, 1, Qt.AlignRight)
self.addLayout(inputs, row, 1, Qt.AlignmentFlag.AlignRight)
self.settings_map[name] = inputs
def update_from_settings(self) -> None:
@ -293,7 +293,7 @@ class AutoSettingsPageLayout(QVBoxLayout):
write_full_settings: Callable[[], None],
) -> None:
super().__init__()
self.setAlignment(Qt.AlignTop)
self.setAlignment(Qt.AlignmentFlag.AlignTop)
self.widgets = []
for section in Settings.sections(page):
@ -403,10 +403,13 @@ class QSettingsWidget(QtWidgets.QWizardPage, SettingsContainer):
scroll.setWidgetResizable(True)
self.right_layout.addWidget(scroll)
self.categoryList.setSelectionBehavior(QAbstractItemView.SelectRows)
self.categoryList.setSelectionBehavior(
QAbstractItemView.SelectionBehavior.SelectRows
)
self.categoryList.setModel(self.categoryModel)
self.categoryList.selectionModel().setCurrentIndex(
self.categoryList.indexAt(QPoint(1, 1)), QItemSelectionModel.Select
self.categoryList.indexAt(QPoint(1, 1)),
QItemSelectionModel.SelectionFlag.Select,
)
self.categoryList.selectionModel().selectionChanged.connect(
self.onSelectionChanged
@ -434,7 +437,7 @@ class QSettingsWidget(QtWidgets.QWizardPage, SettingsContainer):
self.moneyCheatBox = QGroupBox("Money Cheat")
self.moneyCheatBox.setDisabled(self.game is None)
self.moneyCheatBox.setAlignment(Qt.AlignTop)
self.moneyCheatBox.setAlignment(Qt.AlignmentFlag.AlignTop)
self.moneyCheatBoxLayout = QGridLayout()
self.moneyCheatBox.setLayout(self.moneyCheatBoxLayout)
@ -523,7 +526,7 @@ class QSettingsWidget(QtWidgets.QWizardPage, SettingsContainer):
if not sd.exists():
sd.mkdir()
fd = QFileDialog(caption="Save Settings", directory=str(sd), filter="*.zip")
fd.setAcceptMode(QFileDialog.AcceptSave)
fd.setAcceptMode(QFileDialog.AcceptMode.AcceptSave)
if fd.exec_():
zipfilename = fd.selectedFiles()[0]
with zipfile.ZipFile(zipfilename, "w", zipfile.ZIP_DEFLATED) as zf:

View File

@ -22,7 +22,7 @@ class PluginsBox(QGroupBox):
super().__init__("Plugins")
layout = QGridLayout()
layout.setAlignment(Qt.AlignTop)
layout.setAlignment(Qt.AlignmentFlag.AlignTop)
self.setLayout(layout)
self.plugin_map: Dict[str, QCheckBox] = {}
@ -52,7 +52,7 @@ class PluginsPage(QWidget):
self.sc = sc
layout = QVBoxLayout()
layout.setAlignment(Qt.AlignTop)
layout.setAlignment(Qt.AlignmentFlag.AlignTop)
self.setLayout(layout)
self.plugins_box = PluginsBox()
@ -67,7 +67,7 @@ class PluginOptionsBox(QGroupBox):
super().__init__(plugin.name)
layout = QGridLayout()
layout.setAlignment(Qt.AlignTop)
layout.setAlignment(Qt.AlignmentFlag.AlignTop)
self.setLayout(layout)
self.widgets: Dict[str, QWidget] = {}
@ -86,7 +86,7 @@ class PluginOptionsBox(QGroupBox):
if type(val) == float:
spinbox = QDoubleSpinBox()
spinbox.setSingleStep(0.01)
spinbox.setLocale(QLocale.English)
spinbox.setLocale(QLocale.Language.English)
else:
spinbox = QSpinBox()
spinbox.setMinimum(option.min)
@ -113,7 +113,7 @@ class PluginOptionsPage(QWidget):
self.sc = sc
layout = QVBoxLayout()
layout.setAlignment(Qt.AlignTop)
layout.setAlignment(Qt.AlignmentFlag.AlignTop)
self.setLayout(layout)
self.pobs: List[PluginOptionsBox] = []

View File

@ -31,7 +31,7 @@ class QAircraftChart(QFrame):
self.alliedAircraftSerie.append(QPoint(a, i))
self.enemyAircraftSerie = QtCharts.QLineSeries()
self.enemyAircraftSerie.setColor(Qt.red)
self.enemyAircraftSerie.setColor(Qt.GlobalColor.red)
self.enemyAircraftSerie.setName("Enemy aircraft count")
for a, i in enumerate(self.enemyAircraft):
self.enemyAircraftSerie.append(QPoint(a, i))
@ -54,6 +54,6 @@ class QAircraftChart(QFrame):
self.chart.axisY().applyNiceNumbers()
self.chartView = QtCharts.QChartView(self.chart)
self.chartView.setRenderHint(QPainter.Antialiasing)
self.chartView.setRenderHint(QPainter.RenderHint.Antialiasing)
self.layout.addWidget(self.chartView, 0, 0)

View File

@ -31,7 +31,7 @@ class QArmorChart(QFrame):
self.alliedArmorSerie.append(QPoint(a, i))
self.enemyArmorSerie = QtCharts.QLineSeries()
self.enemyArmorSerie.setColor(Qt.red)
self.enemyArmorSerie.setColor(Qt.GlobalColor.red)
self.enemyArmorSerie.setName("Enemy vehicle count")
for a, i in enumerate(self.enemyArmor):
self.enemyArmorSerie.append(QPoint(a, i))
@ -54,6 +54,6 @@ class QArmorChart(QFrame):
self.chart.axisY().applyNiceNumbers()
self.chartView = QtCharts.QChartView(self.chart)
self.chartView.setRenderHint(QPainter.Antialiasing)
self.chartView.setRenderHint(QPainter.RenderHint.Antialiasing)
self.layout.addWidget(self.chartView, 0, 0)