Fix refresh on new/open file
This commit is contained in:
parent
765c691b59
commit
5c124f9229
4 changed files with 33 additions and 12 deletions
|
|
@ -96,7 +96,6 @@ class AppController:
|
|||
self.navigation.refresh_players_view()
|
||||
self.navigation.refresh_wars_view()
|
||||
self.update_window_title()
|
||||
# TODO refresh details view if wars tab selected
|
||||
|
||||
def open_file(self) -> None:
|
||||
if self.is_dirty:
|
||||
|
|
@ -117,7 +116,6 @@ class AppController:
|
|||
self.navigation.refresh_players_view()
|
||||
self.navigation.refresh_wars_view()
|
||||
self.update_window_title()
|
||||
# TODO refresh details view if wars tab selected
|
||||
|
||||
def save(self) -> None:
|
||||
if not self.current_file:
|
||||
|
|
@ -287,7 +285,7 @@ class AppController:
|
|||
e.action()
|
||||
else:
|
||||
return
|
||||
self.is_dirty = True
|
||||
self.is_dirty = True
|
||||
self.navigation.refresh(RefreshScope.CURRENT_SELECTION_DETAILS)
|
||||
|
||||
def delete_item(self, item_type: str, item_id: str) -> None:
|
||||
|
|
|
|||
|
|
@ -31,7 +31,8 @@ class NavigationController:
|
|||
self.app.view.display_players(players_for_display)
|
||||
|
||||
def refresh_wars_view(self) -> None:
|
||||
wars: List[WarDTO] = [
|
||||
wars = self.app.model.get_all_wars()
|
||||
wars_dto: List[WarDTO] = [
|
||||
WarDTO(
|
||||
id=w.id,
|
||||
name=w.name,
|
||||
|
|
@ -57,7 +58,21 @@ class NavigationController:
|
|||
)
|
||||
for w in self.app.model.get_all_wars()
|
||||
]
|
||||
self.app.view.display_wars_tree(wars)
|
||||
self.app.view.display_wars_tree(wars_dto)
|
||||
if not wars:
|
||||
self.clear_selection()
|
||||
return
|
||||
first_war = wars[0]
|
||||
self.selected_war_id = first_war.id
|
||||
self.selected_campaign_id = None
|
||||
self.selected_round_id = None
|
||||
self.app.view.select_tree_item(
|
||||
item_type=ItemType.WAR,
|
||||
item_id=first_war.id,
|
||||
)
|
||||
self.app.view.show_details(ItemType.WAR)
|
||||
self.app.wars._fill_war_details(first_war.id)
|
||||
self.update_actions_state()
|
||||
|
||||
def refresh(self, scope: RefreshScope) -> None:
|
||||
match scope:
|
||||
|
|
@ -87,6 +102,13 @@ class NavigationController:
|
|||
|
||||
# Commands methods
|
||||
|
||||
def clear_selection(self) -> None:
|
||||
self.selected_war_id = None
|
||||
self.selected_campaign_id = None
|
||||
self.selected_round_id = None
|
||||
self.app.view.clear_tree_selection()
|
||||
self.app.view.show_details(None)
|
||||
|
||||
def on_tree_selection_changed(self, selection: TreeSelection | None) -> None:
|
||||
self.selected_war_id = None
|
||||
self.selected_campaign_id = None
|
||||
|
|
|
|||
|
|
@ -88,7 +88,6 @@ class War:
|
|||
else:
|
||||
new_events.append(ev)
|
||||
self.events = new_events
|
||||
# TODO Reopen rounds with battle on sector with influence objective
|
||||
for camp in self.campaigns:
|
||||
for sect in camp.get_all_sectors():
|
||||
if sect.influence_objective_id is not None:
|
||||
|
|
@ -107,7 +106,6 @@ class War:
|
|||
)
|
||||
if new_state is True:
|
||||
has_tie_resolved = any(isinstance(ev, TieResolved) for ev in self.events)
|
||||
|
||||
grant_influence = any(
|
||||
(sect.influence_objective_id is not None)
|
||||
for camp in self.campaigns
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
)
|
||||
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()
|
||||
|
||||
def _apply_icons(self) -> None:
|
||||
|
|
@ -143,6 +144,11 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
return "wars"
|
||||
return ""
|
||||
|
||||
def clear_tree_selection(self) -> None:
|
||||
self.warsTree.blockSignals(True)
|
||||
self.warsTree.setCurrentItem(None)
|
||||
self.warsTree.blockSignals(False)
|
||||
|
||||
# General popups
|
||||
|
||||
def closeEvent(self, event: QCloseEvent | None = None) -> None:
|
||||
|
|
@ -237,10 +243,7 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
|
||||
def display_wars_tree(self, wars: List[WarDTO]) -> None:
|
||||
tree = self.warsTree
|
||||
try:
|
||||
tree.currentItemChanged.disconnect()
|
||||
except TypeError:
|
||||
pass
|
||||
tree.blockSignals(True)
|
||||
tree.clear()
|
||||
tree.setColumnCount(1)
|
||||
tree.setHeaderLabels(["Wars"])
|
||||
|
|
@ -264,8 +267,8 @@ class View(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||
rnd_item.setData(0, ROLE_TYPE, ItemType.ROUND)
|
||||
rnd_item.setData(0, ROLE_ID, rnd.id)
|
||||
camp_item.addChild(rnd_item)
|
||||
tree.currentItemChanged.connect(self._emit_selection_changed)
|
||||
tree.expandAll()
|
||||
tree.blockSignals(False)
|
||||
|
||||
def select_tree_item(self, *, item_type: ItemType, item_id: str) -> None:
|
||||
def walk(item: QTreeWidgetItem) -> bool:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue