list round choices ; fix UI
This commit is contained in:
parent
032ab2d2c4
commit
723723dea1
14 changed files with 683 additions and 99 deletions
|
|
@ -7,6 +7,7 @@ from PyQt6.QtWidgets import QDialog, QFileDialog, QTreeWidgetItem, QMenu
|
|||
from PyQt6.QtGui import QCloseEvent
|
||||
|
||||
from warchron.constants import ROLE_TYPE, ROLE_ID, ItemType
|
||||
from warchron.controller.dtos import ParticipantOption
|
||||
from warchron.view.ui.ui_main_window import Ui_MainWindow
|
||||
from warchron.view.ui.ui_player_dialog import Ui_playerDialog
|
||||
from warchron.view.ui.ui_war_dialog import Ui_warDialog
|
||||
|
|
@ -15,7 +16,7 @@ from warchron.view.ui.ui_objective_dialog import Ui_objectiveDialog
|
|||
from warchron.view.ui.ui_war_participant_dialog import Ui_warParticipantDialog
|
||||
from warchron.view.ui.ui_campaign_participant_dialog import Ui_campaignParticipantDialog
|
||||
from warchron.view.ui.ui_sector_dialog import Ui_sectorDialog
|
||||
from warchron.controller.dtos import ParticipantOption
|
||||
from warchron.view.ui.ui_choices_dialog import Ui_choicesDialog
|
||||
|
||||
# utils...
|
||||
|
||||
|
|
@ -50,6 +51,11 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
self.show_details(None)
|
||||
self.playersTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.playersTable.customContextMenuRequested.connect(self._on_players_table_context_menu)
|
||||
self.warsTree.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.warsTree.customContextMenuRequested.connect(self._on_wars_tree_context_menu)
|
||||
self.addCampaignBtn.clicked.connect(self._on_add_campaign_clicked)
|
||||
self.addRoundBtn.clicked.connect(self._on_add_round_clicked)
|
||||
# Pages
|
||||
self.warParticipantsTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.warParticipantsTable.customContextMenuRequested.connect(self._on_war_participants_table_context_menu)
|
||||
self.objectivesTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
|
|
@ -58,10 +64,8 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
self.campaignParticipantsTable.customContextMenuRequested.connect(self._on_campaign_participants_table_context_menu)
|
||||
self.sectorsTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.sectorsTable.customContextMenuRequested.connect(self._on_sectors_table_context_menu)
|
||||
self.warsTree.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.warsTree.customContextMenuRequested.connect(self._on_wars_tree_context_menu)
|
||||
self.addCampaignBtn.clicked.connect(self._on_add_campaign_clicked)
|
||||
self.addRoundBtn.clicked.connect(self._on_add_round_clicked)
|
||||
self.choicesTable.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self.choicesTable.customContextMenuRequested.connect(self._on_choices_table_context_menu)
|
||||
|
||||
def _emit_selection_changed(self, current, previous):
|
||||
if not self.on_tree_selection_changed:
|
||||
|
|
@ -374,10 +378,35 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
|
||||
# Round page
|
||||
|
||||
def _on_choices_table_context_menu(self, pos):
|
||||
item = self.choicesTable.itemAt(pos)
|
||||
if not item:
|
||||
return
|
||||
row = item.row()
|
||||
name_item = self.choicesTable.item(row, 0)
|
||||
if not name_item:
|
||||
return
|
||||
choice_id = name_item.data(Qt.ItemDataRole.UserRole)
|
||||
menu = QMenu(self)
|
||||
edit_action = menu.addAction("Edit")
|
||||
action = menu.exec(self.choicesTable.viewport().mapToGlobal(pos))
|
||||
if action == edit_action and self.on_edit_item:
|
||||
self.on_edit_item(ItemType.CHOICE, choice_id)
|
||||
|
||||
def show_round_details(self, *, index: int):
|
||||
self.roundNb.setText(f"Round {index}")
|
||||
|
||||
|
||||
def display_round_choices(self, rows: list[dict]):
|
||||
self.choicesTable.setRowCount(len(rows))
|
||||
for row, data in enumerate(rows):
|
||||
self.choicesTable.setItem(row, 0, QtWidgets.QTableWidgetItem(data["participant_name"]))
|
||||
self.choicesTable.setItem(row, 1, QtWidgets.QTableWidgetItem(data["priority"]))
|
||||
self.choicesTable.setItem(row, 2, QtWidgets.QTableWidgetItem(data["secondary"]))
|
||||
self.choicesTable.item(row, 0).setData(
|
||||
Qt.ItemDataRole.UserRole,
|
||||
data["participant_id"]
|
||||
)
|
||||
|
||||
class PlayerDialog(QDialog):
|
||||
def __init__(self, parent=None, *, default_name: str = ""):
|
||||
super().__init__(parent)
|
||||
|
|
@ -504,3 +533,29 @@ class SectorDialog(QDialog):
|
|||
|
||||
def get_influence_id(self) -> str:
|
||||
return self.ui.influenceComboBox.currentData()
|
||||
|
||||
class ChoicesDialog(QDialog):
|
||||
def __init__(self, parent=None, *, participants: list, default_participant_id=None, sectors: list, default_priority_id=None, default_secondary_id=None):
|
||||
super().__init__(parent)
|
||||
self.ui = Ui_choicesDialog()
|
||||
self.ui.setupUi(self)
|
||||
for part in participants:
|
||||
self.ui.playerComboBox.addItem(part.name, part.id)
|
||||
select_if_exists(self.ui.playerComboBox, default_participant_id)
|
||||
self.ui.playerComboBox.setEnabled(False)
|
||||
self.ui.priorityComboBox.addItem("(none)", None)
|
||||
self.ui.secondaryComboBox.addItem("(none)", None)
|
||||
for sect in sectors:
|
||||
self.ui.priorityComboBox.addItem(sect.name, sect.id)
|
||||
self.ui.secondaryComboBox.addItem(sect.name, sect.id)
|
||||
select_if_exists(self.ui.priorityComboBox, default_priority_id)
|
||||
select_if_exists(self.ui.secondaryComboBox, default_secondary_id)
|
||||
|
||||
def get_participant_id(self) -> str:
|
||||
return self.ui.playerComboBox.currentData()
|
||||
|
||||
def get_priority_id(self) -> str:
|
||||
return self.ui.priorityComboBox.currentData()
|
||||
|
||||
def get_secondary_id(self) -> str:
|
||||
return self.ui.secondaryComboBox.currentData()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue