move war settings in a dedicated menu

This commit is contained in:
Maxime Réaux 2026-03-23 11:55:15 +01:00
parent 7a9322aa75
commit 188f5256fb
13 changed files with 924 additions and 251 deletions

View file

@ -42,9 +42,7 @@ class AppController:
self.view.actionAbout.triggered.connect(self.show_about)
self.view.addPlayerBtn.clicked.connect(lambda: self.add_item(ItemType.PLAYER))
self.view.addWarBtn.clicked.connect(lambda: self.add_item(ItemType.WAR))
self.view.majorValue.valueChanged.connect(self.wars.set_major_value)
self.view.minorValue.valueChanged.connect(self.wars.set_minor_value)
self.view.influenceToken.toggled.connect(self.wars.set_influence_token)
self.view.settingsBtn.clicked.connect(self.wars.open_settings)
self.view.addObjectiveBtn.clicked.connect(
lambda: self.add_item(ItemType.OBJECTIVE)
)

View file

@ -138,3 +138,10 @@ class WarParticipantScoreDTO:
@dataclass
class TieDialogData:
title: str
@dataclass
class WarSettingsDTO:
major_value: int
minor_value: int
influence_token: bool

View file

@ -19,9 +19,10 @@ if TYPE_CHECKING:
from warchron.controller.dtos import (
ParticipantOption,
WarParticipantScoreDTO,
WarSettingsDTO,
ObjectiveDTO,
)
from warchron.model.war import War
from warchron.model.war import War, WarSettings
from warchron.model.war_participant import WarParticipant
from warchron.model.objective import Objective
from warchron.model.tiebreaking import TieContext, TieBreaker
@ -33,6 +34,7 @@ from warchron.view.war_dialog import WarDialog
from warchron.view.objective_dialog import ObjectiveDialog
from warchron.view.war_participant_dialog import WarParticipantDialog
from warchron.view.tie_dialog import TieDialog
from warchron.view.settings_dialog import SettingsDialog
class WarController:
@ -42,11 +44,6 @@ class WarController:
def _fill_war_details(self, war_id: str) -> None:
war = self.app.model.get_war(war_id)
self.app.view.show_war_details(name=war.name, year=war.year)
self.app.view.set_war_objective_values(
major=war.major_value,
minor=war.minor_value,
influence=war.influence_token,
)
objectives = war.get_all_objectives()
objectives_for_display: List[ObjectiveDTO] = [
ObjectiveDTO(id=obj.id, name=obj.name, description=obj.description)
@ -189,50 +186,32 @@ class WarController:
bids_map[ctx.key()] = dialog.get_bids()
return bids_map
def set_major_value(self, value: int) -> None:
def open_settings(self) -> None:
war_id = self.app.navigation.selected_war_id
if not war_id:
return
settings = self.app.model.get_war_settings(war_id)
settings_for_display = WarSettingsDTO(
major_value=settings.major_value,
minor_value=settings.minor_value,
influence_token=settings.influence_token,
)
dialog = SettingsDialog(self.app.view)
dialog.load_settings(settings_for_display)
if dialog.exec() != QDialog.DialogCode.Accepted:
return
if not dialog.has_changes():
return
new_settingsDTO = dialog.get_settings()
new_settings = WarSettings(
new_settingsDTO.major_value,
new_settingsDTO.minor_value,
new_settingsDTO.influence_token,
)
try:
self.app.model.set_major_value(war_id, value)
self.app.model.apply_war_settings(war_id, new_settings)
except DomainError as e:
QMessageBox.warning(
self.app.view,
"Setting forbidden",
str(e),
)
return
self.app.is_dirty = True
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
def set_minor_value(self, value: int) -> None:
war_id = self.app.navigation.selected_war_id
if not war_id:
return
try:
self.app.model.set_minor_value(war_id, value)
except DomainError as e:
QMessageBox.warning(
self.app.view,
"Setting forbidden",
str(e),
)
return
self.app.is_dirty = True
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
def set_influence_token(self, checked: bool) -> None:
war_id = self.app.navigation.selected_war_id
if not war_id:
return
try:
self.app.model.set_influence_token(war_id, checked)
except DomainError as e:
QMessageBox.warning(
self.app.view,
"Setting forbidden",
str(e),
)
QMessageBox.warning(self.app.view, "Setting forbidden", str(e))
return
except RequiresConfirmation as e:
reply = QMessageBox.question(
@ -245,7 +224,7 @@ class WarController:
e.action()
else:
return
self.app.is_dirty = True
self.is_dirty = True
self.app.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
self.app.navigation.refresh_and_select(
RefreshScope.WARS_TREE, item_type=ItemType.WAR, item_id=war_id

View file

@ -6,7 +6,7 @@ from datetime import datetime
from warchron.model.exception import ForbiddenOperation
from warchron.model.player import Player
from warchron.model.war import War
from warchron.model.war import War, WarSettings
from warchron.model.war_participant import WarParticipant
from warchron.model.objective import Objective
from warchron.model.campaign import Campaign
@ -165,17 +165,13 @@ class Model:
war.set_name(name)
war.set_year(year)
def set_major_value(self, war_id: str, value: int) -> None:
war = self.get_war(war_id)
war.set_major_value(value)
def get_war_settings(self, war_id: str) -> WarSettings:
war = self.wars[war_id]
return war.get_war_settings()
def set_minor_value(self, war_id: str, value: int) -> None:
def apply_war_settings(self, war_id: str, settings: WarSettings) -> None:
war = self.get_war(war_id)
war.set_minor_value(value)
def set_influence_token(self, war_id: str, value: bool) -> None:
war = self.get_war(war_id)
war.set_influence_token(value)
war.apply_war_settings(settings)
def get_all_wars(self) -> List[War]:
return list(self.wars.values())

View file

@ -291,7 +291,6 @@ class Pairing:
)
for battle in available
]
print(f"scored for pid {pid}: {scored}")
scored.sort(key=lambda x: x[0])
best_score = scored[0][0]
best_battles = [b for s, b in scored if s == best_score]
@ -314,7 +313,6 @@ class Pairing:
rematch_penalty = 0
for opp in occupants:
key = (pid, opp) if pid < opp else (opp, pid)
print(f"key for occupant {opp}: {key}")
rematch_penalty += match_counts.get(key, 0)
return rematch_penalty * rematch_weight + occupancy_penalty * occupancy_weight

View file

@ -1,4 +1,5 @@
from __future__ import annotations
from dataclasses import dataclass
from uuid import uuid4
from datetime import datetime
from typing import Any, Dict, List, Set
@ -25,6 +26,13 @@ from warchron.model.choice import Choice
from warchron.model.battle import Battle
@dataclass
class WarSettings:
major_value: int
minor_value: int
influence_token: bool
class War:
def __init__(self, name: str, year: int) -> None:
self.id: str = str(uuid4())
@ -48,6 +56,21 @@ class War:
def set_year(self, new_year: int) -> None:
self.year = new_year
def get_war_settings(self) -> WarSettings:
return WarSettings(
self.major_value,
self.minor_value,
self.influence_token,
)
def apply_war_settings(self, settings: WarSettings) -> None:
if settings.major_value != self.major_value:
self.set_major_value(settings.major_value)
if settings.minor_value != self.minor_value:
self.set_minor_value(settings.minor_value)
if settings.influence_token != self.influence_token:
self.set_influence_token(settings.influence_token)
def set_major_value(self, new_value: int) -> None:
if self.is_over:
raise ForbiddenOperation("Can't set major value of a closed war.")

View file

@ -0,0 +1,66 @@
from PyQt6.QtWidgets import QWidget, QDialog, QDialogButtonBox
from warchron.constants import Icons, IconName
from warchron.controller.dtos import WarSettingsDTO
from warchron.view.ui.ui_settings_dialog import Ui_settingsDialog
class SettingsDialog(QDialog):
def __init__(
self,
parent: QWidget | None = None,
) -> None:
super().__init__(parent)
self.ui: Ui_settingsDialog = Ui_settingsDialog()
self.ui.setupUi(self) # type: ignore
self._original: WarSettingsDTO | None = None
self.ui.majorValue.setMinimum(0)
self.ui.minorValue.setMinimum(0)
self.ui.majorValue.valueChanged.connect(self._on_major_changed)
self.ui.minorValue.valueChanged.connect(self._on_minor_changed)
self.ui.buttonBox.accepted.connect(self.accept)
self.ui.buttonBox.rejected.connect(self.reject)
self._validate()
self.setWindowIcon(Icons.get(IconName.WARCHRONICO))
def load_settings(self, settings: WarSettingsDTO) -> None:
self._original = settings
self.ui.majorValue.blockSignals(True)
self.ui.minorValue.blockSignals(True)
self.ui.influenceToken.blockSignals(True)
self.ui.majorValue.setValue(settings.major_value)
self.ui.minorValue.setValue(settings.minor_value)
self.ui.influenceToken.setChecked(settings.influence_token)
self.ui.minorValue.setMaximum(settings.major_value)
self.ui.majorValue.setMinimum(settings.minor_value)
self.ui.majorValue.blockSignals(False)
self.ui.minorValue.blockSignals(False)
self.ui.influenceToken.blockSignals(False)
self._validate()
def get_settings(self) -> WarSettingsDTO:
return WarSettingsDTO(
major_value=self.ui.majorValue.value(),
minor_value=self.ui.minorValue.value(),
influence_token=self.ui.influenceToken.isChecked(),
)
def has_changes(self) -> bool:
if self._original is None:
return True
return self.get_settings() != self._original
def _validate(self) -> None:
valid = self.ui.majorValue.value() >= self.ui.minorValue.value()
ok_btn = self.ui.buttonBox.button(QDialogButtonBox.StandardButton.Ok)
if ok_btn is not None:
ok_btn.setEnabled(valid)
def _on_major_changed(self, value: int) -> None:
self.ui.minorValue.setMaximum(value)
self._validate()
def _on_minor_changed(self, value: int) -> None:
self.ui.majorValue.setMinimum(value)
self._validate()

View file

@ -124,6 +124,17 @@ class Ui_MainWindow(object):
self.warYear.setObjectName("warYear")
self.horizontalLayout_8.addWidget(self.warYear)
self.verticalLayout_10.addLayout(self.horizontalLayout_8)
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_7.addItem(spacerItem3)
self.label_19 = QtWidgets.QLabel(parent=self.pageWar)
self.label_19.setObjectName("label_19")
self.horizontalLayout_7.addWidget(self.label_19)
self.settingsBtn = QtWidgets.QToolButton(parent=self.pageWar)
self.settingsBtn.setObjectName("settingsBtn")
self.horizontalLayout_7.addWidget(self.settingsBtn)
self.verticalLayout_10.addLayout(self.horizontalLayout_7)
self.groupBox = QtWidgets.QGroupBox(parent=self.pageWar)
font = QtGui.QFont()
font.setPointSize(10)
@ -137,43 +148,8 @@ class Ui_MainWindow(object):
self.addObjectiveBtn.setEnabled(True)
self.addObjectiveBtn.setObjectName("addObjectiveBtn")
self.horizontalLayout_3.addWidget(self.addObjectiveBtn)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(spacerItem3)
self.label = QtWidgets.QLabel(parent=self.groupBox)
self.label.setObjectName("label")
self.horizontalLayout_3.addWidget(self.label)
self.majorValue = QtWidgets.QSpinBox(parent=self.groupBox)
self.majorValue.setMinimum(1)
self.majorValue.setObjectName("majorValue")
self.horizontalLayout_3.addWidget(self.majorValue)
self.label_5 = QtWidgets.QLabel(parent=self.groupBox)
self.label_5.setObjectName("label_5")
self.horizontalLayout_3.addWidget(self.label_5)
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(spacerItem4)
self.label_2 = QtWidgets.QLabel(parent=self.groupBox)
self.label_2.setObjectName("label_2")
self.horizontalLayout_3.addWidget(self.label_2)
self.minorValue = QtWidgets.QSpinBox(parent=self.groupBox)
self.minorValue.setMinimum(1)
self.minorValue.setObjectName("minorValue")
self.horizontalLayout_3.addWidget(self.minorValue)
self.label_4 = QtWidgets.QLabel(parent=self.groupBox)
self.label_4.setObjectName("label_4")
self.horizontalLayout_3.addWidget(self.label_4)
spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(spacerItem5)
self.label_3 = QtWidgets.QLabel(parent=self.groupBox)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.influenceToken = QtWidgets.QCheckBox(parent=self.groupBox)
self.influenceToken.setEnabled(True)
self.influenceToken.setCheckable(True)
self.influenceToken.setChecked(True)
self.influenceToken.setObjectName("influenceToken")
self.horizontalLayout_3.addWidget(self.influenceToken)
spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(spacerItem6)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.objectivesTable = QtWidgets.QTableWidget(parent=self.groupBox)
self.objectivesTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
@ -201,8 +177,8 @@ class Ui_MainWindow(object):
self.addWarParticipantBtn = QtWidgets.QPushButton(parent=self.groupBox_2)
self.addWarParticipantBtn.setObjectName("addWarParticipantBtn")
self.horizontalLayout_5.addWidget(self.addWarParticipantBtn)
spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_5.addItem(spacerItem7)
spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_5.addItem(spacerItem5)
self.verticalLayout_2.addLayout(self.horizontalLayout_5)
self.warParticipantsTable = QtWidgets.QTableWidget(parent=self.groupBox_2)
self.warParticipantsTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
@ -226,8 +202,8 @@ class Ui_MainWindow(object):
self.verticalLayout_10.addWidget(self.groupBox_2)
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_6.addItem(spacerItem8)
spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_6.addItem(spacerItem6)
self.endWarBtn = QtWidgets.QPushButton(parent=self.pageWar)
self.endWarBtn.setEnabled(True)
self.endWarBtn.setObjectName("endWarBtn")
@ -246,8 +222,8 @@ class Ui_MainWindow(object):
self.campaignName.setFont(font)
self.campaignName.setObjectName("campaignName")
self.horizontalLayout_11.addWidget(self.campaignName)
spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_11.addItem(spacerItem9)
spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_11.addItem(spacerItem7)
self.campaignMonth = QtWidgets.QLabel(parent=self.pageCampaign)
font = QtGui.QFont()
font.setPointSize(12)
@ -268,8 +244,8 @@ class Ui_MainWindow(object):
self.addSectorBtn.setEnabled(True)
self.addSectorBtn.setObjectName("addSectorBtn")
self.horizontalLayout_17.addWidget(self.addSectorBtn)
spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_17.addItem(spacerItem10)
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_17.addItem(spacerItem8)
self.verticalLayout_5.addLayout(self.horizontalLayout_17)
self.sectorsTable = QtWidgets.QTableWidget(parent=self.groupBox_3)
self.sectorsTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
@ -306,8 +282,8 @@ class Ui_MainWindow(object):
self.addCampaignParticipantBtn = QtWidgets.QPushButton(parent=self.groupBox_4)
self.addCampaignParticipantBtn.setObjectName("addCampaignParticipantBtn")
self.horizontalLayout_18.addWidget(self.addCampaignParticipantBtn)
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_18.addItem(spacerItem11)
spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_18.addItem(spacerItem9)
self.verticalLayout_6.addLayout(self.horizontalLayout_18)
self.campaignParticipantsTable = QtWidgets.QTableWidget(parent=self.groupBox_4)
self.campaignParticipantsTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
@ -330,8 +306,8 @@ class Ui_MainWindow(object):
self.verticalLayout_7.addWidget(self.groupBox_4)
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_10.addItem(spacerItem12)
spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_10.addItem(spacerItem10)
self.endCampaignBtn = QtWidgets.QPushButton(parent=self.pageCampaign)
self.endCampaignBtn.setEnabled(True)
self.endCampaignBtn.setObjectName("endCampaignBtn")
@ -376,8 +352,8 @@ class Ui_MainWindow(object):
self.verticalLayout_8.addWidget(self.groupBox_5)
self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_13.addItem(spacerItem13)
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_13.addItem(spacerItem11)
self.resolvePairingBtn = QtWidgets.QPushButton(parent=self.pageRound)
self.resolvePairingBtn.setEnabled(True)
self.resolvePairingBtn.setObjectName("resolvePairingBtn")
@ -413,8 +389,8 @@ class Ui_MainWindow(object):
self.verticalLayout_8.addWidget(self.groupBox_6)
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_9.addItem(spacerItem14)
spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_9.addItem(spacerItem12)
self.endRoundBtn = QtWidgets.QPushButton(parent=self.pageRound)
self.endRoundBtn.setEnabled(True)
self.endRoundBtn.setObjectName("endRoundBtn")
@ -476,7 +452,7 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(1)
self.selectedDetailsStack.setCurrentIndex(3)
self.selectedDetailsStack.setCurrentIndex(1)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
@ -500,14 +476,10 @@ class Ui_MainWindow(object):
self.backgroundImage.setText(_translate("MainWindow", "IMAGE"))
self.warName.setText(_translate("MainWindow", "warName"))
self.warYear.setText(_translate("MainWindow", "warYear"))
self.label_19.setText(_translate("MainWindow", "Settings"))
self.settingsBtn.setText(_translate("MainWindow", "..."))
self.groupBox.setTitle(_translate("MainWindow", "Objectives"))
self.addObjectiveBtn.setText(_translate("MainWindow", "Add objective"))
self.label.setText(_translate("MainWindow", "Major objective"))
self.label_5.setText(_translate("MainWindow", "points"))
self.label_2.setText(_translate("MainWindow", "Minor opportunity"))
self.label_4.setText(_translate("MainWindow", "points"))
self.label_3.setText(_translate("MainWindow", "Influence"))
self.influenceToken.setText(_translate("MainWindow", "Token"))
self.objectivesTable.setSortingEnabled(True)
item = self.objectivesTable.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Name"))

View file

@ -157,7 +157,7 @@
</widget>
<widget class="QStackedWidget" name="selectedDetailsStack">
<property name="currentIndex">
<number>3</number>
<number>1</number>
</property>
<widget class="QWidget" name="pageEmpty">
<layout class="QGridLayout" name="gridLayout_3">
@ -242,6 +242,37 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<spacer name="horizontalSpacer_18">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_19">
<property name="text">
<string>Settings</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="settingsBtn">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="font">
@ -265,110 +296,6 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Major objective</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="majorValue">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>points</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Minor opportunity</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="minorValue">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>points</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Influence</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="influenceToken">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Token</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_16">
<property name="orientation">

View file

@ -0,0 +1,8 @@
# Form implementation generated from reading ui file '.\src\warchron\view\ui\ui_settings.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.

View file

@ -0,0 +1,232 @@
# Form implementation generated from reading ui file '.\src\warchron\view\ui\ui_settings_dialog.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_settingsDialog(object):
def setupUi(self, settingsDialog):
settingsDialog.setObjectName("settingsDialog")
settingsDialog.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal)
settingsDialog.resize(661, 377)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(".\\src\\warchron\\view\\ui\\../resources/warchron_logo.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
settingsDialog.setWindowIcon(icon)
self.verticalLayout_4 = QtWidgets.QVBoxLayout(settingsDialog)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.groupBox_2 = QtWidgets.QGroupBox(parent=settingsDialog)
font = QtGui.QFont()
font.setPointSize(10)
self.groupBox_2.setFont(font)
self.groupBox_2.setObjectName("groupBox_2")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_2)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_5 = QtWidgets.QLabel(parent=self.groupBox_2)
self.label_5.setObjectName("label_5")
self.horizontalLayout.addWidget(self.label_5)
self.winValue = QtWidgets.QSpinBox(parent=self.groupBox_2)
self.winValue.setEnabled(False)
self.winValue.setMinimum(1)
self.winValue.setObjectName("winValue")
self.horizontalLayout.addWidget(self.winValue)
self.label_14 = QtWidgets.QLabel(parent=self.groupBox_2)
self.label_14.setObjectName("label_14")
self.horizontalLayout.addWidget(self.label_14)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.label_6 = QtWidgets.QLabel(parent=self.groupBox_2)
self.label_6.setObjectName("label_6")
self.horizontalLayout.addWidget(self.label_6)
self.drawValue = QtWidgets.QSpinBox(parent=self.groupBox_2)
self.drawValue.setEnabled(False)
self.drawValue.setSuffix("")
self.drawValue.setMinimum(0)
self.drawValue.setProperty("value", 0)
self.drawValue.setObjectName("drawValue")
self.horizontalLayout.addWidget(self.drawValue)
self.label_15 = QtWidgets.QLabel(parent=self.groupBox_2)
self.label_15.setObjectName("label_15")
self.horizontalLayout.addWidget(self.label_15)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
self.verticalLayout_2.addLayout(self.horizontalLayout)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_12 = QtWidgets.QLabel(parent=self.groupBox_2)
self.label_12.setObjectName("label_12")
self.horizontalLayout_5.addWidget(self.label_12)
self.rankingComboBox = QtWidgets.QComboBox(parent=self.groupBox_2)
self.rankingComboBox.setEnabled(False)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.rankingComboBox.sizePolicy().hasHeightForWidth())
self.rankingComboBox.setSizePolicy(sizePolicy)
self.rankingComboBox.setObjectName("rankingComboBox")
self.rankingComboBox.addItem("")
self.horizontalLayout_5.addWidget(self.rankingComboBox)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_5.addItem(spacerItem2)
self.verticalLayout_2.addLayout(self.horizontalLayout_5)
self.verticalLayout_4.addWidget(self.groupBox_2)
self.groupBox = QtWidgets.QGroupBox(parent=settingsDialog)
font = QtGui.QFont()
font.setPointSize(10)
self.groupBox.setFont(font)
self.groupBox.setObjectName("groupBox")
self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_4 = QtWidgets.QLabel(parent=self.groupBox)
self.label_4.setObjectName("label_4")
self.horizontalLayout_3.addWidget(self.label_4)
self.majorValue = QtWidgets.QSpinBox(parent=self.groupBox)
self.majorValue.setMinimum(1)
self.majorValue.setObjectName("majorValue")
self.horizontalLayout_3.addWidget(self.majorValue)
self.label_8 = QtWidgets.QLabel(parent=self.groupBox)
self.label_8.setObjectName("label_8")
self.horizontalLayout_3.addWidget(self.label_8)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(spacerItem3)
self.label_9 = QtWidgets.QLabel(parent=self.groupBox)
self.label_9.setObjectName("label_9")
self.horizontalLayout_3.addWidget(self.label_9)
self.minorValue = QtWidgets.QSpinBox(parent=self.groupBox)
self.minorValue.setMinimum(1)
self.minorValue.setObjectName("minorValue")
self.horizontalLayout_3.addWidget(self.minorValue)
self.label_10 = QtWidgets.QLabel(parent=self.groupBox)
self.label_10.setObjectName("label_10")
self.horizontalLayout_3.addWidget(self.label_10)
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(spacerItem4)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_11 = QtWidgets.QLabel(parent=self.groupBox)
self.label_11.setObjectName("label_11")
self.horizontalLayout_4.addWidget(self.label_11)
self.influenceToken = QtWidgets.QCheckBox(parent=self.groupBox)
self.influenceToken.setEnabled(True)
self.influenceToken.setCheckable(True)
self.influenceToken.setChecked(True)
self.influenceToken.setObjectName("influenceToken")
self.horizontalLayout_4.addWidget(self.influenceToken)
spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_4.addItem(spacerItem5)
self.verticalLayout.addLayout(self.horizontalLayout_4)
self.verticalLayout_4.addWidget(self.groupBox)
self.groupBox_3 = QtWidgets.QGroupBox(parent=settingsDialog)
font = QtGui.QFont()
font.setPointSize(10)
self.groupBox_3.setFont(font)
self.groupBox_3.setObjectName("groupBox_3")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.groupBox_3)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.label_17 = QtWidgets.QLabel(parent=self.groupBox_3)
self.label_17.setObjectName("label_17")
self.horizontalLayout_7.addWidget(self.label_17)
self.fallbackComboBox = QtWidgets.QComboBox(parent=self.groupBox_3)
self.fallbackComboBox.setEnabled(False)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.fallbackComboBox.sizePolicy().hasHeightForWidth())
self.fallbackComboBox.setSizePolicy(sizePolicy)
self.fallbackComboBox.setObjectName("fallbackComboBox")
self.fallbackComboBox.addItem("")
self.horizontalLayout_7.addWidget(self.fallbackComboBox)
spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_7.addItem(spacerItem6)
self.label_18 = QtWidgets.QLabel(parent=self.groupBox_3)
self.label_18.setObjectName("label_18")
self.horizontalLayout_7.addWidget(self.label_18)
self.influenceToken_2 = QtWidgets.QCheckBox(parent=self.groupBox_3)
self.influenceToken_2.setEnabled(False)
self.influenceToken_2.setText("")
self.influenceToken_2.setCheckable(True)
self.influenceToken_2.setChecked(True)
self.influenceToken_2.setObjectName("influenceToken_2")
self.horizontalLayout_7.addWidget(self.influenceToken_2)
spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_7.addItem(spacerItem7)
self.verticalLayout_3.addLayout(self.horizontalLayout_7)
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.label_13 = QtWidgets.QLabel(parent=self.groupBox_3)
self.label_13.setObjectName("label_13")
self.horizontalLayout_6.addWidget(self.label_13)
self.rematchValue = QtWidgets.QSpinBox(parent=self.groupBox_3)
self.rematchValue.setEnabled(False)
self.rematchValue.setMinimum(1)
self.rematchValue.setObjectName("rematchValue")
self.horizontalLayout_6.addWidget(self.rematchValue)
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_6.addItem(spacerItem8)
self.label_16 = QtWidgets.QLabel(parent=self.groupBox_3)
self.label_16.setObjectName("label_16")
self.horizontalLayout_6.addWidget(self.label_16)
self.occupancyValue = QtWidgets.QSpinBox(parent=self.groupBox_3)
self.occupancyValue.setEnabled(False)
self.occupancyValue.setMinimum(1)
self.occupancyValue.setObjectName("occupancyValue")
self.horizontalLayout_6.addWidget(self.occupancyValue)
spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_6.addItem(spacerItem9)
self.verticalLayout_3.addLayout(self.horizontalLayout_6)
self.verticalLayout_4.addWidget(self.groupBox_3)
self.buttonBox = QtWidgets.QDialogButtonBox(parent=settingsDialog)
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout_4.addWidget(self.buttonBox)
self.retranslateUi(settingsDialog)
self.buttonBox.accepted.connect(settingsDialog.accept) # type: ignore
self.buttonBox.rejected.connect(settingsDialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(settingsDialog)
def retranslateUi(self, settingsDialog):
_translate = QtCore.QCoreApplication.translate
settingsDialog.setWindowTitle(_translate("settingsDialog", "Settings"))
self.groupBox_2.setTitle(_translate("settingsDialog", "Scores"))
self.label_5.setText(_translate("settingsDialog", "Win"))
self.label_14.setText(_translate("settingsDialog", "victory points"))
self.label_6.setText(_translate("settingsDialog", "Draw"))
self.label_15.setText(_translate("settingsDialog", "victory points"))
self.label_12.setText(_translate("settingsDialog", "Ranking mode"))
self.rankingComboBox.setItemText(0, _translate("settingsDialog", "Sum points & tie-breaks"))
self.groupBox.setTitle(_translate("settingsDialog", "Objectives"))
self.label_4.setText(_translate("settingsDialog", "Major objective"))
self.label_8.setText(_translate("settingsDialog", "narrative points"))
self.label_9.setText(_translate("settingsDialog", "Minor opportunity"))
self.label_10.setText(_translate("settingsDialog", "narrative points"))
self.label_11.setText(_translate("settingsDialog", "Underlying influence"))
self.influenceToken.setText(_translate("settingsDialog", "Token"))
self.groupBox_3.setTitle(_translate("settingsDialog", "Pairing"))
self.label_17.setText(_translate("settingsDialog", "Fallback mode"))
self.fallbackComboBox.setItemText(0, _translate("settingsDialog", "Best ranking first & avoid rematch"))
self.label_18.setText(_translate("settingsDialog", "Shuffle"))
self.label_13.setText(_translate("settingsDialog", "Rematch weight"))
self.label_16.setText(_translate("settingsDialog", "Occupancy weight"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
settingsDialog = QtWidgets.QDialog()
ui = Ui_settingsDialog()
ui.setupUi(settingsDialog)
settingsDialog.show()
sys.exit(app.exec())

View file

@ -0,0 +1,493 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>settingsDialog</class>
<widget class="QDialog" name="settingsDialog">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>661</width>
<height>377</height>
</rect>
</property>
<property name="windowTitle">
<string>Settings</string>
</property>
<property name="windowIcon">
<iconset>
<normaloff>../resources/warchron_logo.png</normaloff>../resources/warchron_logo.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Scores</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Win</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="winValue">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_14">
<property name="text">
<string>victory points</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>Draw</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="drawValue">
<property name="enabled">
<bool>false</bool>
</property>
<property name="suffix">
<string/>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_15">
<property name="text">
<string>victory points</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_13">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_12">
<property name="text">
<string>Ranking mode</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="rankingComboBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Sum points &amp; tie-breaks</string>
</property>
</item>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Objectives</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Major objective</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="majorValue">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>narrative points</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_9">
<property name="text">
<string>Minor opportunity</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="minorValue">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_10">
<property name="text">
<string>narrative points</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_11">
<property name="text">
<string>Underlying influence</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="influenceToken">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Token</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_16">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Pairing</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QLabel" name="label_17">
<property name="text">
<string>Fallback mode</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="fallbackComboBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Best ranking first &amp; avoid rematch</string>
</property>
</item>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_18">
<property name="text">
<string>Shuffle</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="influenceToken_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string/>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_17">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="label_13">
<property name="text">
<string>Rematch weight</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="rematchValue">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_16">
<property name="text">
<string>Occupancy weight</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="occupancyValue">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>settingsDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>settingsDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View file

@ -36,15 +36,10 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
self.on_tree_selection_changed: (
Callable[[TreeSelection | None], None] | None
) = None
self.on_major_value_changed: Callable[[int], None] | None = None
self.on_minot_value_changed: Callable[[int], None] | None = None
self.majorValue.setMinimum(0)
self.minorValue.setMinimum(0)
self.on_influence_token_changed: Callable[[int], None] | None = None
self.on_add_item: Callable[[str], None] | None = None
self.on_edit_item: Callable[[str, str], None] | None = None
self.on_delete_item: Callable[[str, str], None] | None = None
self.splitter.setSizes([200, 800])
self.splitter.setSizes([300, 900])
self.show_details(None)
self.playersTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
self.playersTable.customContextMenuRequested.connect(
@ -88,8 +83,6 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
self.battlesTable.customContextMenuRequested.connect(
self._on_battles_table_context_menu
)
self.majorValue.valueChanged.connect(self._on_major_changed)
self.minorValue.valueChanged.connect(self._on_minor_changed)
self.warsTree.currentItemChanged.connect(self._emit_selection_changed)
self._apply_icons()
@ -422,25 +415,6 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
table.sortItems(2, Qt.SortOrder.DescendingOrder)
table.resizeColumnsToContents()
def _on_major_changed(self, value: int) -> None:
self.minorValue.setMaximum(value)
def _on_minor_changed(self, value: int) -> None:
self.majorValue.setMinimum(value)
def set_war_objective_values(self, major: int, minor: int, influence: bool) -> None:
self.majorValue.blockSignals(True)
self.minorValue.blockSignals(True)
self.influenceToken.blockSignals(True)
self.majorValue.setValue(major)
self.minorValue.setValue(minor)
self.influenceToken.setChecked(influence)
self.minorValue.setMaximum(major)
self.majorValue.setMinimum(minor)
self.majorValue.blockSignals(False)
self.minorValue.blockSignals(False)
self.influenceToken.blockSignals(False)
# Campaign page
def _on_sectors_table_context_menu(self, pos: QPoint) -> None: