|
10 | 10 | from PySide2.QtCore import Slot |
11 | 11 |
|
12 | 12 | from activity_browser import signals |
13 | | -from activity_browser.mod.bw2data import Database, get_activity |
| 13 | +from activity_browser.mod.bw2data import Database, get_activity, databases, Edge |
| 14 | +from activity_browser.mod.bw2data.backends import ExchangeDataset |
14 | 15 |
|
15 | | -from ...bwutils.commontasks import identify_activity_type |
| 16 | +from ...bwutils.commontasks import identify_activity_type, get_activity_name |
16 | 17 | from .base import BaseGraph, BaseNavigatorWidget |
17 | 18 |
|
18 | 19 | log = getLogger(__name__) |
@@ -60,6 +61,8 @@ class GraphNavigatorWidget(BaseNavigatorWidget): |
60 | 61 |
|
61 | 62 | def __init__(self, parent=None, key=None): |
62 | 63 | super().__init__(parent, css_file="navigator.css") |
| 64 | + self.setObjectName(get_activity_name(get_activity(key), str_length=30)) |
| 65 | + self.key = key |
63 | 66 |
|
64 | 67 | self.graph = Graph() |
65 | 68 |
|
@@ -113,6 +116,13 @@ def connect_signals(self): |
113 | 116 | self.update_graph_settings |
114 | 117 | ) |
115 | 118 | self.checkbox_flip_negative_edges.stateChanged.connect(self.reload_graph) |
| 119 | + databases.metadata_changed.connect(self.sync_graph) |
| 120 | + |
| 121 | + def sync_graph(self): |
| 122 | + """Sync the graph with the current project.""" |
| 123 | + self.graph.update(delete_unstacked=False) |
| 124 | + self.send_json() |
| 125 | + self.setObjectName(get_activity_name(get_activity(self.key), str_length=30)) |
116 | 126 |
|
117 | 127 | def construct_layout(self) -> None: |
118 | 128 | """Layout of Graph Navigator""" |
@@ -251,9 +261,15 @@ def __init__(self): |
251 | 261 | self.flip_negative_edges = False # show true flow direction of edges (e.g. for ecoinvent treatment activities, or substitutions) |
252 | 262 |
|
253 | 263 | def update(self, delete_unstacked: bool = True) -> None: |
| 264 | + self.update_datasets() |
254 | 265 | super().update(delete_unstacked) |
255 | 266 | self.json_data = self.get_json_data() |
256 | 267 |
|
| 268 | + def update_datasets(self): |
| 269 | + """Update the activities in the graph.""" |
| 270 | + self.nodes = [get_activity(act.key) for act in self.nodes] |
| 271 | + self.edges = [Edge(document=ExchangeDataset.get_by_id(exc._document.id)) for exc in self.edges] |
| 272 | + |
257 | 273 | def store_previous(self) -> None: |
258 | 274 | self.stack.append((deepcopy(self.nodes), deepcopy(self.edges))) |
259 | 275 |
|
|
0 commit comments