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

View File

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

View File

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

View File

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

View File

@ -5,28 +5,30 @@ from PySide6.QtWidgets import QCalendarWidget
class QLiberationCalendar(QCalendarWidget): class QLiberationCalendar(QCalendarWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
super(QLiberationCalendar, self).__init__(parent) super(QLiberationCalendar, self).__init__(parent)
self.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader) self.setVerticalHeaderFormat(
QCalendarWidget.VerticalHeaderFormat.NoVerticalHeader
)
self.setGridVisible(False) self.setGridVisible(False)
# Overrride default QCalendar behaviour that is rendering week end days in red # Overrride default QCalendar behaviour that is rendering week end days in red
for d in ( for d in (
QtCore.Qt.Monday, QtCore.Qt.DayOfWeek.Monday,
QtCore.Qt.Tuesday, QtCore.Qt.DayOfWeek.Tuesday,
QtCore.Qt.Wednesday, QtCore.Qt.DayOfWeek.Wednesday,
QtCore.Qt.Thursday, QtCore.Qt.DayOfWeek.Thursday,
QtCore.Qt.Friday, QtCore.Qt.DayOfWeek.Friday,
QtCore.Qt.Saturday, QtCore.Qt.DayOfWeek.Saturday,
QtCore.Qt.Sunday, QtCore.Qt.DayOfWeek.Sunday,
): ):
fmt = self.weekdayTextFormat(d) fmt = self.weekdayTextFormat(d)
fmt.setForeground(QtCore.Qt.darkGray) fmt.setForeground(QtCore.Qt.GlobalColor.darkGray)
self.setWeekdayTextFormat(d, fmt) self.setWeekdayTextFormat(d, fmt)
def paintCell(self, painter, rect, date): def paintCell(self, painter, rect, date):
if date == self.selectedDate(): if date == self.selectedDate():
painter.save() painter.save()
painter.fillRect(rect, QtGui.QColor("#D3D3D3")) painter.fillRect(rect, QtGui.QColor("#D3D3D3"))
painter.setPen(QtCore.Qt.NoPen) painter.setPen(QtCore.Qt.PenStyle.NoPen)
painter.setBrush(QtGui.QColor(52, 68, 85)) painter.setBrush(QtGui.QColor(52, 68, 85))
r = QtCore.QRect( r = QtCore.QRect(
QtCore.QPoint(), min(rect.width(), rect.height()) * QtCore.QSize(1, 1) QtCore.QPoint(), min(rect.width(), rect.height()) * QtCore.QSize(1, 1)
@ -34,7 +36,7 @@ class QLiberationCalendar(QCalendarWidget):
r.moveCenter(rect.center()) r.moveCenter(rect.center())
painter.drawEllipse(r) painter.drawEllipse(r)
painter.setPen(QtGui.QPen(QtGui.QColor("white"))) 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() painter.restore()
else: else:
super(QLiberationCalendar, self).paintCell(painter, rect, date) 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 'Yes' to continue with an AI only mission"
"<br />Click 'No' if you'd like to make more changes." "<br />Click 'No' if you'd like to make more changes."
), ),
QMessageBox.No, QMessageBox.StandardButton.No,
QMessageBox.Yes, QMessageBox.StandardButton.Yes,
) )
return result == QMessageBox.Yes return result == QMessageBox.StandardButton.Yes
def confirm_negative_start_time(self, negative_starts: List[Package]) -> bool: def confirm_negative_start_time(self, negative_starts: List[Package]) -> bool:
formatted = "<br />".join( formatted = "<br />".join(
[f"{p.primary_task} {p.target.name}" for p in negative_starts] [f"{p.primary_task} {p.target.name}" for p in negative_starts]
) )
mbox = QMessageBox( mbox = QMessageBox(
QMessageBox.Question, QMessageBox.Icon.Question,
"Continue with past start times?", "Continue with past start times?",
( (
"Some flights in the following packages have start times set " "Some flights in the following packages have start times set "
@ -244,9 +244,13 @@ class QTopPanel(QFrame):
), ),
parent=self, parent=self,
) )
auto = mbox.addButton("Fix TOTs automatically", QMessageBox.ActionRole) auto = mbox.addButton(
ignore = mbox.addButton("Continue without fixing", QMessageBox.DestructiveRole) "Fix TOTs automatically", QMessageBox.ButtonRole.ActionRole
cancel = mbox.addButton(QMessageBox.Cancel) )
ignore = mbox.addButton(
"Continue without fixing", QMessageBox.ButtonRole.DestructiveRole
)
cancel = mbox.addButton(QMessageBox.StandardButton.Cancel)
mbox.setEscapeButton(cancel) mbox.setEscapeButton(cancel)
mbox.exec_() mbox.exec_()
clicked = mbox.clickedButton() clicked = mbox.clickedButton()
@ -271,7 +275,7 @@ class QTopPanel(QFrame):
[f"{p.primary_task} {p.target}: {f}" for p, f in missing_pilots] [f"{p.primary_task} {p.target}: {f}" for p, f in missing_pilots]
) )
mbox = QMessageBox( mbox = QMessageBox(
QMessageBox.Critical, QMessageBox.Icon.Critical,
"Flights are missing pilots", "Flights are missing pilots",
( (
"The following flights are missing one or more pilots:<br />" "The following flights are missing one or more pilots:<br />"
@ -283,7 +287,7 @@ class QTopPanel(QFrame):
), ),
parent=self, parent=self,
) )
mbox.setEscapeButton(mbox.addButton(QMessageBox.Close)) mbox.setEscapeButton(mbox.addButton(QMessageBox.StandardButton.Close))
mbox.exec_() mbox.exec_()
return True return True

View File

@ -79,7 +79,7 @@ class QFlightList(QListView):
if package_model is not None: if package_model is not None:
self.setItemDelegate(FlightDelegate(package_model.package)) self.setItemDelegate(FlightDelegate(package_model.package))
self.setIconSize(QSize(91, 24)) self.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems) self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.doubleClicked.connect(self.on_double_click) self.doubleClicked.connect(self.on_double_click)
def set_package(self, model: Optional[PackageModel]) -> None: def set_package(self, model: Optional[PackageModel]) -> None:
@ -93,7 +93,8 @@ class QFlightList(QListView):
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences
model.deleted.connect(self.disconnect_model) model.deleted.connect(self.disconnect_model)
self.selectionModel().setCurrentIndex( self.selectionModel().setCurrentIndex(
model.index(0, 0, QModelIndex()), QItemSelectionModel.Select model.index(0, 0, QModelIndex()),
QItemSelectionModel.SelectionFlag.Select,
) )
def disconnect_model(self) -> None: def disconnect_model(self) -> None:
@ -308,7 +309,7 @@ class QPackageList(QListView):
self.setModel(model) self.setModel(model)
self.setItemDelegate(PackageDelegate(game_model)) self.setItemDelegate(PackageDelegate(game_model))
self.setIconSize(QSize(0, 0)) self.setIconSize(QSize(0, 0))
self.setSelectionBehavior(QAbstractItemView.SelectItems) self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.model().rowsInserted.connect(self.on_new_packages) self.model().rowsInserted.connect(self.on_new_packages)
self.doubleClicked.connect(self.on_double_click) 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 # the player saving a new package, so selecting it helps them view/edit
# it faster. # it faster.
self.selectionModel().setCurrentIndex( 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: def on_double_click(self, index: QModelIndex) -> None:
@ -477,7 +478,7 @@ class QAirTaskingOrderPanel(QSplitter):
""" """
def __init__(self, game_model: GameModel) -> None: def __init__(self, game_model: GameModel) -> None:
super().__init__(Qt.Vertical) super().__init__(Qt.Orientation.Vertical)
self.ato_model = game_model.ato_model self.ato_model = game_model.ato_model
self.package_panel = QPackagePanel(game_model, self.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) super(QFilteredComboBox, self).__init__(parent)
self.setFocusPolicy(Qt.StrongFocus) self.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
self.setEditable(True) self.setEditable(True)
self.completer = QCompleter(self) self.completer = QCompleter(self)
@ -27,9 +27,11 @@ class QFilteredComboBox(QComboBox):
self.include_friendly = include_friendly self.include_friendly = include_friendly
# always show all completions # always show all completions
self.completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) self.completer.setCompletionMode(
QCompleter.CompletionMode.UnfilteredPopupCompletion
)
self.pFilterModel = QSortFilterProxyModel(self) self.pFilterModel = QSortFilterProxyModel(self)
self.pFilterModel.setFilterCaseSensitivity(Qt.CaseInsensitive) self.pFilterModel.setFilterCaseSensitivity(Qt.CaseSensitivity.CaseInsensitive)
self.completer.setPopup(self.view()) 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 # Required to allow "cross-origin" access from file:// scoped canvas.html to the
# localhost HTTP backend. # localhost HTTP backend.
self.page.settings().setAttribute( self.page.settings().setAttribute(
QWebEngineSettings.LocalContentCanAccessRemoteUrls, True QWebEngineSettings.WebAttribute.LocalContentCanAccessRemoteUrls, True
)
self.page.settings().setAttribute(
QWebEngineSettings.WebAttribute.WebGLEnabled, True
) )
if dev: if dev:

View File

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

View File

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

View File

@ -77,11 +77,12 @@ class SquadronList(QListView):
self.setItemDelegate(SquadronDelegate(self.air_wing_model)) self.setItemDelegate(SquadronDelegate(self.air_wing_model))
self.setModel(self.air_wing_model) self.setModel(self.air_wing_model)
self.selectionModel().setCurrentIndex( 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.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems) self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.doubleClicked.connect(self.on_double_click) self.doubleClicked.connect(self.on_double_click)
def on_double_click(self, index: QModelIndex) -> None: def on_double_click(self, index: QModelIndex) -> None:
@ -183,7 +184,7 @@ class AirInventoryView(QWidget):
self.table = QTableWidget() self.table = QTableWidget()
layout.addWidget(self.table) layout.addWidget(self.table)
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
self.table.verticalHeader().setVisible(False) self.table.verticalHeader().setVisible(False)
self.set_only_unallocated(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: def text_for(self, index: QModelIndex, row: int, column: int) -> str:
if row == 0: if row == 0:
return self.transfer_model.data(index, Qt.DisplayRole) return self.transfer_model.data(index, Qt.ItemDataRole.DisplayRole)
elif row == 1: elif row == 1:
return self.transfer(index).description return self.transfer(index).description
return "" return ""
@ -47,11 +47,12 @@ class PendingTransfersList(QListView):
self.setItemDelegate(TransferDelegate(self.transfer_model)) self.setItemDelegate(TransferDelegate(self.transfer_model))
self.setModel(self.transfer_model) self.setModel(self.transfer_model)
self.selectionModel().setCurrentIndex( 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.setIconSize(QSize(91, 24))
self.setSelectionBehavior(QAbstractItemView.SelectItems) self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
def contextMenuEvent(self, event: QContextMenuEvent) -> None: def contextMenuEvent(self, event: QContextMenuEvent) -> None:
index = self.indexAt(event.pos()) index = self.indexAt(event.pos())

View File

@ -43,7 +43,7 @@ class QICLSDialog(QDialog):
self.create_button = QPushButton("Save") self.create_button = QPushButton("Save")
self.create_button.clicked.connect(self.accept) 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) self.setLayout(layout)

View File

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

View File

@ -121,7 +121,7 @@ class QRadioFrequencyDialog(QDialog):
self.create_button = QPushButton("Save") self.create_button = QPushButton("Save")
self.create_button.clicked.connect(self.accept) 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) self.setLayout(layout)

View File

@ -47,7 +47,7 @@ class QTacanDialog(QDialog):
self.create_button = QPushButton("Save") self.create_button = QPushButton("Save")
self.create_button.clicked.connect(self.accept) 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) self.setLayout(layout)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -90,8 +90,12 @@ class QTgoLayoutGroupRow(QWidget):
self.unit_selector.adjustSize() self.unit_selector.adjustSize()
self.unit_selector.setEnabled(self.unit_selector.count() > 1) 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.grid_layout.addWidget(self.amount_selector, 0, 1, alignment=Qt.AlignRight) 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( dcs_unit_type, price = self.unit_selector.itemData(
self.unit_selector.currentIndex() self.unit_selector.currentIndex()
@ -109,7 +113,9 @@ class QTgoLayoutGroupRow(QWidget):
self.amount_selector.setValue(self.group_layout.amount) self.amount_selector.setValue(self.group_layout.amount)
self.amount_selector.setEnabled(self.group_layout.layout.max_size > 1) 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.amount_selector.valueChanged.connect(self.on_group_changed)
self.unit_selector.currentIndexChanged.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 = QGridLayout()
template_selector_layout.addWidget( 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( 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( 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) self.mainLayout.addLayout(template_selector_layout, 0, 0)

View File

@ -15,7 +15,7 @@ class QInfoList(QListView):
self.update_list() self.update_list()
self.selectionModel().setCurrentIndex( 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) 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)): for i, info in enumerate(reversed(self.game.informations)):
self.model.appendRow(QInfoItem(info)) self.model.appendRow(QInfoItem(info))
self.selectionModel().setCurrentIndex( self.selectionModel().setCurrentIndex(
self.indexAt(QPoint(1, 1)), QItemSelectionModel.Select self.indexAt(QPoint(1, 1)), QItemSelectionModel.SelectionFlag.Select
) )
def setGame(self, game): def setGame(self, game):

View File

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

View File

@ -58,7 +58,7 @@ class QLogsWindow(QDialog):
break break
if self._logging_handler is not None: if self._logging_handler is not None:
self.textbox.setPlainText(self._logging_handler.log) 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, # The Handler might be called from a different thread,
# so use signal/slot to properly handle the event in the main thread. # so use signal/slot to properly handle the event in the main thread.
# https://github.com/dcs-liberation/dcs_liberation/issues/1493 # https://github.com/dcs-liberation/dcs_liberation/issues/1493
@ -73,4 +73,4 @@ class QLogsWindow(QDialog):
def appendLog(self, msg: str): def appendLog(self, msg: str):
self.textbox.appendPlainText(msg) 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.package_name_column = QHBoxLayout()
self.summary_row.addLayout(self.package_name_column) self.summary_row.addLayout(self.package_name_column)
self.package_name_label = QLabel("Package Name:") 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 = QLineEdit(self.package_model.package.custom_name)
self.package_name_text.textChanged.connect(self.on_change_name) self.package_name_text.textChanged.connect(self.on_change_name)
self.package_name_column.addWidget(self.package_name_label) self.package_name_column.addWidget(self.package_name_label)
@ -110,7 +110,7 @@ class QPackageDialog(QDialog):
self.tot_help_label = QLabel( self.tot_help_label = QLabel(
'<a href="https://github.com/dcs-retribution/dcs-retribution/wiki/Mission-planning"><span style="color:#FFFFFF;">Help</span></a>' '<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_help_label.setOpenExternalLinks(True)
self.tot_column.addWidget(self.tot_help_label) self.tot_column.addWidget(self.tot_help_label)
@ -214,7 +214,7 @@ class QPackageDialog(QDialog):
self.package_model.delete_flight(flight) self.package_model.delete_flight(flight)
logging.exception("Could not create flight") logging.exception("Could not create flight")
QMessageBox.critical( 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) self.auto_create_button.setDisabled(True)
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences

View File

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

View File

@ -136,7 +136,7 @@ class QFlightCreator(QDialog):
self.create_button = QPushButton("Create") self.create_button = QPushButton("Create")
self.create_button.clicked.connect(self.create_flight) 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) self.setLayout(layout)
@ -173,7 +173,9 @@ class QFlightCreator(QDialog):
def create_flight(self) -> None: def create_flight(self) -> None:
error = self.verify_form() error = self.verify_form()
if error is not None: 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 return
task = self.task_selector.currentData() task = self.task_selector.currentData()

View File

@ -60,7 +60,7 @@ class DcsFuelSelector(QHBoxLayout):
self.addWidget(self.label) self.addWidget(self.label)
self.max_fuel = int(flight.unit_type.dcs_unit_type.fuel_max) 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.setRange(0, self.max_fuel)
self.fuel.setValue(min(round(self.flight.fuel), self.max_fuel)) self.fuel.setValue(min(round(self.flight.fuel), self.max_fuel))
self.fuel.valueChanged.connect(self.on_fuel_change) self.fuel.valueChanged.connect(self.on_fuel_change)
@ -148,7 +148,7 @@ class QFlightPayloadTab(QFrame):
scroll = QScrollArea() scroll = QScrollArea()
scroll.setWidgetResizable(True) scroll.setWidgetResizable(True)
scroll.setWidget(scroll_content) scroll.setWidget(scroll_content)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
layout.addWidget(scroll, stretch=1) layout.addWidget(scroll, stretch=1)
self.own_laser_code_info = OwnLaserCodeInfo( self.own_laser_code_info = OwnLaserCodeInfo(
@ -183,7 +183,7 @@ class QFlightPayloadTab(QFrame):
docsText = QLabel( 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>' '<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) docsText.setOpenExternalLinks(True)
self.fuel_selector = DcsFuelSelector(flight) 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)): for i, pylon in enumerate(Pylon.iter_pylons(self.flight.unit_type)):
label = QLabel(f"<b>{pylon.number}</b>") 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(label, i, 0)
layout.addWidget(QPylonEditor(game, flight, flight_member, pylon), i, 1) layout.addWidget(QPylonEditor(game, flight, flight_member, pylon), i, 1)
@ -130,7 +132,9 @@ class QLoadoutEditor(QGroupBox):
payloads = { payloads = {
"name": f"{self.flight.unit_type.dcs_unit_type.id}", "name": f"{self.flight.unit_type.dcs_unit_type.id}",
"payloads": { "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}", "unitType": f"{self.flight.unit_type.dcs_unit_type.id}",
} }

View File

@ -120,7 +120,10 @@ class FlightPlanPropertiesGroup(QGroupBox):
self.flight.divert = old_divert self.flight.divert = old_divert
logging.exception("Could not change divert airfield") logging.exception("Could not change divert airfield")
QMessageBox.critical( 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: def set_tot_offset(self, offset: QTime) -> None:

View File

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

View File

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

View File

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

View File

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

View File

@ -20,7 +20,7 @@ from qt_ui.windows.newgame.WizardPages.QTheaterConfiguration import (
class NewGameWizard(QtWidgets.QWizard): class NewGameWizard(QtWidgets.QWizard):
def __init__(self, parent=None): def __init__(self, parent=None):
super(NewGameWizard, self).__init__(parent) 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)) 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.addPage(ConclusionPage(self))
self.setPixmap( self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap, QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark1.png"), QtGui.QPixmap("./resources/ui/wizard/watermark1.png"),
) )
self.setWizardStyle(QtWidgets.QWizard.ModernStyle) self.setWizardStyle(QtWidgets.QWizard.WizardStyle.ModernStyle)
self.setWindowTitle("New Game") self.setWindowTitle("New Game")
self.generatedGame = None self.generatedGame = None
@ -163,7 +163,7 @@ class IntroPage(QtWidgets.QWizardPage):
self.setTitle("Introduction") self.setTitle("Introduction")
self.setPixmap( self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap, QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark1.png"), QtGui.QPixmap("./resources/ui/wizard/watermark1.png"),
) )
@ -185,7 +185,7 @@ class ConclusionPage(QtWidgets.QWizardPage):
self.setTitle("Conclusion") self.setTitle("Conclusion")
self.setSubTitle("\n\n") self.setSubTitle("\n\n")
self.setPixmap( self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap, QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark2.png"), 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." "\nChoose the two opposing factions and select the player side."
) )
self.setPixmap( self.setPixmap(
QtWidgets.QWizard.LogoPixmap, QtWidgets.QWizard.WizardPixmap.LogoPixmap,
QtGui.QPixmap("./resources/ui/misc/generator.png"), QtGui.QPixmap("./resources/ui/misc/generator.png"),
) )
@ -133,13 +133,17 @@ class FactionSelection(QtWidgets.QWizardPage):
self.blueFactionDescription = QTextBrowser() self.blueFactionDescription = QTextBrowser()
self.blueFactionDescription.setReadOnly(True) self.blueFactionDescription.setReadOnly(True)
self.blueFactionDescription.setOpenExternalLinks(True) self.blueFactionDescription.setOpenExternalLinks(True)
self.blueFactionDescription.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.blueFactionDescription.setVerticalScrollBarPolicy(
Qt.ScrollBarPolicy.ScrollBarAlwaysOn
)
self.blueFactionDescription.setMaximumHeight(120) self.blueFactionDescription.setMaximumHeight(120)
self.redFactionDescription = QTextBrowser() self.redFactionDescription = QTextBrowser()
self.redFactionDescription.setReadOnly(True) self.redFactionDescription.setReadOnly(True)
self.redFactionDescription.setOpenExternalLinks(True) self.redFactionDescription.setOpenExternalLinks(True)
self.redFactionDescription.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.redFactionDescription.setVerticalScrollBarPolicy(
Qt.ScrollBarPolicy.ScrollBarAlwaysOn
)
self.redFactionDescription.setMaximumHeight(120) self.redFactionDescription.setMaximumHeight(120)
# Setup default selected factions # Setup default selected factions
@ -177,7 +181,7 @@ class FactionSelection(QtWidgets.QWizardPage):
docsText = QtWidgets.QLabel( 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>' '<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) docsText.setOpenExternalLinks(True)
# Link form fields # Link form fields

View File

@ -21,7 +21,7 @@ class BudgetInputs(QtWidgets.QGridLayout):
minimum = 0 minimum = 0
maximum = 5000 maximum = 5000
slider = QtWidgets.QSlider(Qt.Horizontal) slider = QtWidgets.QSlider(Qt.Orientation.Horizontal)
slider.setMinimum(minimum) slider.setMinimum(minimum)
slider.setMaximum(maximum) slider.setMaximum(maximum)
slider.setValue(value) slider.setValue(value)
@ -40,7 +40,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
self.setTitle("Generator settings") self.setTitle("Generator settings")
self.setSubTitle("\nOptions affecting the generation of the game.") self.setSubTitle("\nOptions affecting the generation of the game.")
self.setPixmap( self.setPixmap(
QtWidgets.QWizard.LogoPixmap, QtWidgets.QWizard.WizardPixmap.LogoPixmap,
QtGui.QPixmap("./resources/ui/wizard/logo1.png"), QtGui.QPixmap("./resources/ui/wizard/logo1.png"),
) )
@ -142,7 +142,7 @@ class GeneratorOptions(QtWidgets.QWizardPage):
modHelpText = QtWidgets.QLabel( 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>" "<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 = QtWidgets.QGridLayout()
modLayout_row = 1 modLayout_row = 1

View File

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

View File

@ -83,12 +83,12 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
self.setTitle("Theater configuration") self.setTitle("Theater configuration")
self.setSubTitle("\nChoose a terrain and time period for this game.") self.setSubTitle("\nChoose a terrain and time period for this game.")
self.setPixmap( self.setPixmap(
QtWidgets.QWizard.LogoPixmap, QtWidgets.QWizard.WizardPixmap.LogoPixmap,
QtGui.QPixmap("./resources/ui/wizard/logo1.png"), QtGui.QPixmap("./resources/ui/wizard/logo1.png"),
) )
self.setPixmap( self.setPixmap(
QtWidgets.QWizard.WatermarkPixmap, QtWidgets.QWizard.WizardPixmap.WatermarkPixmap,
QtGui.QPixmap("./resources/ui/wizard/watermark3.png"), QtGui.QPixmap("./resources/ui/wizard/watermark3.png"),
) )
@ -205,7 +205,8 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
self.campaign_selected.emit(campaign) self.campaign_selected.emit(campaign)
self.campaignList.selectionModel().setCurrentIndex( 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( 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>.' 'or <a href="https://github.com/dcs-retribution/dcs-retribution/wiki/Custom-Campaigns"><span style="color:#FFFFFF;">create your own</span></a>.'
"</p>" "</p>"
) )
docsText.setAlignment(Qt.AlignCenter) docsText.setAlignment(Qt.AlignmentFlag.AlignCenter)
docsText.setOpenExternalLinks(True) docsText.setOpenExternalLinks(True)
# Register fields # Register fields
@ -278,7 +279,7 @@ class QCampaignItem(QStandardItem):
class QCampaignList(QListView): class QCampaignList(QListView):
CampaignRole = Qt.UserRole CampaignRole = Qt.ItemDataRole.UserRole
def __init__(self, campaigns: list[Campaign], show_incompatible: bool) -> None: def __init__(self, campaigns: list[Campaign], show_incompatible: bool) -> None:
super(QCampaignList, self).__init__() super(QCampaignList, self).__init__()
@ -287,7 +288,7 @@ class QCampaignList(QListView):
self.setMinimumWidth(250) self.setMinimumWidth(250)
self.setMinimumHeight(350) self.setMinimumHeight(350)
self.campaigns = campaigns self.campaigns = campaigns
self.setSelectionBehavior(QAbstractItemView.SelectItems) self.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectItems)
self.setup_content(show_incompatible) self.setup_content(show_incompatible)
@property @property
@ -306,5 +307,6 @@ class QCampaignList(QListView):
self.selectionModel().blockSignals(False) self.selectionModel().blockSignals(False)
self.selectionModel().setCurrentIndex( 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) self.textbox = QPlainTextEdit(self)
try: try:
self.textbox.setPlainText(self.game.notes) 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 except AttributeError: # old save may not have game.notes
pass pass
self.textbox.move(10, 10) self.textbox.move(10, 10)

View File

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

View File

@ -49,20 +49,28 @@ class QLiberationPreferences(QFrame):
QLabel("<strong>DCS saved game directory:</strong>"), QLabel("<strong>DCS saved game directory:</strong>"),
0, 0,
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( layout.addWidget(
QLabel("<strong>DCS installation directory:</strong>"), QLabel("<strong>DCS installation directory:</strong>"),
2, 2,
0, 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(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()) self.themeSelect.setCurrentIndex(get_theme_index())
main_layout.addLayout(layout) main_layout.addLayout(layout)
@ -115,7 +123,7 @@ class QLiberationPreferences(QFrame):
QMessageBox.StandardButton.Yes, QMessageBox.StandardButton.Yes,
QMessageBox.StandardButton.No, QMessageBox.StandardButton.No,
) )
if warning_dialog == QMessageBox.No: if warning_dialog == QMessageBox.StandardButton.No:
return False return False
elif not os.path.isdir(self.dcs_install_dir): elif not os.path.isdir(self.dcs_install_dir):
error_dialog = QMessageBox.critical( error_dialog = QMessageBox.critical(
@ -130,7 +138,7 @@ class QLiberationPreferences(QFrame):
QMessageBox.StandardButton.Ignore, QMessageBox.StandardButton.Ignore,
QMessageBox.StandardButton.Ok, QMessageBox.StandardButton.Ok,
) )
if error_dialog == QMessageBox.Ignore: if error_dialog == QMessageBox.StandardButton.Ignore:
self.install_dir_ignore_warning = True self.install_dir_ignore_warning = True
return False return False
elif not os.path.isdir( elif not os.path.isdir(

View File

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

View File

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

View File

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

View File

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