mirror of https://gitlab.com/pamhyr/pamhyr2
Network: Propagate undo stack.
parent
7f1f028b17
commit
454b5049d2
|
|
@ -263,13 +263,14 @@ class GraphWidget(QGraphicsView):
|
||||||
|
|
||||||
def __init__(self, graph, parent=None,
|
def __init__(self, graph, parent=None,
|
||||||
min_size=(400, 400), max_size=None,
|
min_size=(400, 400), max_size=None,
|
||||||
size=None, only_display=False):
|
size=None, only_display=False, undo = None):
|
||||||
super(GraphWidget, self).__init__(parent=parent)
|
super(GraphWidget, self).__init__(parent=parent)
|
||||||
|
|
||||||
self.timerId = 0
|
self.timerId = 0
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self._state = "move"
|
self._state = "move"
|
||||||
self._only_display = only_display
|
self._only_display = only_display
|
||||||
|
self._undo = undo
|
||||||
|
|
||||||
self.graph = graph
|
self.graph = graph
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,20 +49,18 @@ class NetworkWindow(ASubMainWindow):
|
||||||
|
|
||||||
self.undo_sc = QShortcut(QKeySequence.Undo, self)
|
self.undo_sc = QShortcut(QKeySequence.Undo, self)
|
||||||
self.redo_sc = QShortcut(QKeySequence.Redo, self)
|
self.redo_sc = QShortcut(QKeySequence.Redo, self)
|
||||||
self.copy_sc = QShortcut(QKeySequence.Copy, self)
|
|
||||||
self.paste_sc = QShortcut(QKeySequence.Paste, self)
|
|
||||||
|
|
||||||
def setup_table(self):
|
def setup_table(self):
|
||||||
# Nodes table
|
# Nodes table
|
||||||
|
|
||||||
self.nodes_model = GraphTableModel(
|
self._nodes_model = GraphTableModel(
|
||||||
headers = ["name", "type"],
|
headers = ["name", "type"],
|
||||||
graph = self._graph,
|
graph = self._graph,
|
||||||
rows_type = "nodes",
|
rows_type = "nodes",
|
||||||
undo = self._undo_stack,
|
undo = self._undo_stack,
|
||||||
)
|
)
|
||||||
table = self.find(QTableView, "tableView_nodes")
|
table = self.find(QTableView, "tableView_nodes")
|
||||||
table.setModel(self.nodes_model)
|
table.setModel(self._nodes_model)
|
||||||
#table.resizeColumnsToContents()
|
#table.resizeColumnsToContents()
|
||||||
|
|
||||||
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
table.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||||
|
|
@ -70,7 +68,7 @@ class NetworkWindow(ASubMainWindow):
|
||||||
|
|
||||||
# Edges table
|
# Edges table
|
||||||
|
|
||||||
self.reachs_model = GraphTableModel(
|
self._reachs_model = GraphTableModel(
|
||||||
headers = ["name", "enable", "node1", "node2"],
|
headers = ["name", "enable", "node1", "node2"],
|
||||||
graph = self._graph,
|
graph = self._graph,
|
||||||
rows_type = "edges",
|
rows_type = "edges",
|
||||||
|
|
@ -85,7 +83,7 @@ class NetworkWindow(ASubMainWindow):
|
||||||
)
|
)
|
||||||
|
|
||||||
table = self.find(QTableView, "tableView_reachs")
|
table = self.find(QTableView, "tableView_reachs")
|
||||||
table.setModel(self.reachs_model)
|
table.setModel(self._reachs_model)
|
||||||
table.setItemDelegateForColumn(1, self.delegate_true_false_combobox)
|
table.setItemDelegateForColumn(1, self.delegate_true_false_combobox)
|
||||||
table.setItemDelegateForColumn(2, self.delegate_combobox)
|
table.setItemDelegateForColumn(2, self.delegate_combobox)
|
||||||
table.setItemDelegateForColumn(3, self.delegate_combobox)
|
table.setItemDelegateForColumn(3, self.delegate_combobox)
|
||||||
|
|
@ -94,17 +92,20 @@ class NetworkWindow(ASubMainWindow):
|
||||||
#table.resizeColumnsToContents()
|
#table.resizeColumnsToContents()
|
||||||
|
|
||||||
def setup_graph(self):
|
def setup_graph(self):
|
||||||
self._graph_widget = GraphWidget(self._graph, parent=self)
|
self._graph_widget = GraphWidget(
|
||||||
|
self._graph, parent=self,
|
||||||
|
undo = self._undo_stack
|
||||||
|
)
|
||||||
self._graph_layout = self.find(QHBoxLayout, "horizontalLayout_graph")
|
self._graph_layout = self.find(QHBoxLayout, "horizontalLayout_graph")
|
||||||
self._graph_layout.addWidget(self._graph_widget)
|
self._graph_layout.addWidget(self._graph_widget)
|
||||||
|
|
||||||
def setup_connections(self):
|
def setup_connections(self):
|
||||||
self.nodes_model.dataChanged.connect(self.reachs_model.update)
|
self._nodes_model.dataChanged.connect(self._reachs_model.update)
|
||||||
self.nodes_model.dataChanged.connect(self._graph_widget.rename_nodes)
|
self._nodes_model.dataChanged.connect(self._graph_widget.rename_nodes)
|
||||||
self.reachs_model.dataChanged.connect(self._graph_widget.display_update)
|
self._reachs_model.dataChanged.connect(self._graph_widget.display_update)
|
||||||
self.reachs_model.dataChanged.connect(self.nodes_model.update)
|
self._reachs_model.dataChanged.connect(self._nodes_model.update)
|
||||||
self._graph_widget.changeEdge.connect(self.reachs_model.update)
|
self._graph_widget.changeEdge.connect(self._reachs_model.update)
|
||||||
self._graph_widget.changeNode.connect(self.nodes_model.update)
|
self._graph_widget.changeNode.connect(self._nodes_model.update)
|
||||||
|
|
||||||
self.find(QAction, "action_toolBar_add").setCheckable(True)
|
self.find(QAction, "action_toolBar_add").setCheckable(True)
|
||||||
self.find(QAction, "action_toolBar_add").triggered.connect(
|
self.find(QAction, "action_toolBar_add").triggered.connect(
|
||||||
|
|
@ -116,6 +117,9 @@ class NetworkWindow(ASubMainWindow):
|
||||||
self.clicked_del
|
self.clicked_del
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.undo_sc.activated.connect(self.undo)
|
||||||
|
self.redo_sc.activated.connect(self.redo)
|
||||||
|
|
||||||
def clicked_add(self):
|
def clicked_add(self):
|
||||||
if self.get_action_checkable("action_toolBar_add"):
|
if self.get_action_checkable("action_toolBar_add"):
|
||||||
self.set_action_checkable("action_toolBar_del", False)
|
self.set_action_checkable("action_toolBar_del", False)
|
||||||
|
|
@ -135,3 +139,15 @@ class NetworkWindow(ASubMainWindow):
|
||||||
|
|
||||||
if key == Qt.Key_Escape:
|
if key == Qt.Key_Escape:
|
||||||
self._graph_widget.reset_selection
|
self._graph_widget.reset_selection
|
||||||
|
|
||||||
|
def undo(self):
|
||||||
|
self._undo_stack.undo()
|
||||||
|
self._reachs_model.update()
|
||||||
|
self._nodes_model.update()
|
||||||
|
self._graph_widget.display_update()
|
||||||
|
|
||||||
|
def redo(self):
|
||||||
|
self._undo_stack.redo()
|
||||||
|
self._reachs_model.update()
|
||||||
|
self._nodes_model.update()
|
||||||
|
self._graph_widget.display_update()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue