mirror of https://gitlab.com/pamhyr/pamhyr2
Network: Connect first undo command.
parent
454b5049d2
commit
a44dc91ae9
|
|
@ -21,6 +21,8 @@ from Model.Network.Node import Node
|
|||
from Model.Network.Edge import Edge
|
||||
from Model.Network.Graph import Graph
|
||||
|
||||
from View.Network.UndoCommand import *
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
||||
|
|
@ -424,13 +426,21 @@ class GraphWidget(QGraphicsView):
|
|||
self.texts[i].rename()
|
||||
|
||||
def enable_edge(self, edge, prev):
|
||||
edge.edge.enable(enable = not prev)
|
||||
self._undo.push(
|
||||
EnableEdgeCommand(
|
||||
edge.edge, not prev
|
||||
)
|
||||
)
|
||||
self.changeEdge.emit(self.sender())
|
||||
self.changeNode.emit(self.sender())
|
||||
self.display_update()
|
||||
|
||||
def reverse_edge(self, edge):
|
||||
edge.edge.reverse()
|
||||
self._undo.push(
|
||||
ReverseEdgeCommand(
|
||||
edge.edge
|
||||
)
|
||||
)
|
||||
self.changeEdge.emit(self.sender())
|
||||
self.display_update()
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from Model.Network.Edge import Edge
|
|||
from Model.Network.Graph import Graph
|
||||
from View.ASubWindow import ASubWindow
|
||||
from View.Network.GraphWidget import GraphWidget
|
||||
from View.Network.UndoCommand import *
|
||||
|
||||
from PyQt5.QtCore import (
|
||||
Qt, QRect, QVariant, QAbstractTableModel, pyqtSlot, pyqtSignal,
|
||||
|
|
@ -17,6 +18,7 @@ from PyQt5.QtWidgets import (
|
|||
QApplication,
|
||||
)
|
||||
|
||||
|
||||
class ComboBoxDelegate(QItemDelegate):
|
||||
def __init__(self, graph=None, parent=None):
|
||||
super(ComboBoxDelegate, self).__init__(parent)
|
||||
|
|
@ -140,9 +142,29 @@ class GraphTableModel(QAbstractTableModel):
|
|||
if (self.headers[index.column()] == "node1" or
|
||||
self.headers[index.column()] == "node2"):
|
||||
node = self.graph.node(value)
|
||||
self.rows[index.row()][self.headers[index.column()]] = node
|
||||
self._undo.push(
|
||||
SetCommand(
|
||||
self.rows[index.row()],
|
||||
self.headers[index.column()],
|
||||
node
|
||||
)
|
||||
)
|
||||
# self.rows[index.row()][self.headers[index.column()]] = node
|
||||
elif self.headers[index.column()] == "enable":
|
||||
self._undo.push(
|
||||
EnableEdgeCommand(
|
||||
self.rows[index.row()], value
|
||||
)
|
||||
)
|
||||
else:
|
||||
self.rows[index.row()][self.headers[index.column()]] = value
|
||||
self._undo.push(
|
||||
SetCommand(
|
||||
self.rows[index.row()],
|
||||
self.headers[index.column()],
|
||||
value
|
||||
)
|
||||
)
|
||||
# self.rows[index.row()][self.headers[index.column()]] = value
|
||||
|
||||
self.dataChanged.emit(index, index, [Qt.DisplayRole])
|
||||
self.layoutChanged.emit()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from copy import deepcopy
|
||||
from tools import trace, timer
|
||||
|
||||
from PyQt5.QtWidgets import (
|
||||
QMessageBox, QUndoCommand, QUndoStack,
|
||||
)
|
||||
|
||||
from Model.Network.Node import Node
|
||||
from Model.Network.Edge import Edge
|
||||
from Model.Network.Graph import Graph
|
||||
|
||||
class SetCommand(QUndoCommand):
|
||||
def __init__(self, element, column, new_value):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._el = element
|
||||
self._column = column
|
||||
self._old = self._el[self._column]
|
||||
self._new = new_value
|
||||
|
||||
def undo(self):
|
||||
self._el[self._column] = self._old
|
||||
|
||||
def redo(self):
|
||||
self._el[self._column] = self._new
|
||||
|
||||
class EnableEdgeCommand(QUndoCommand):
|
||||
def __init__(self, edge, enable):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._edge = edge
|
||||
self._old = self._edge._enable
|
||||
self._enable = enable
|
||||
|
||||
def undo(self):
|
||||
self._edge.enable(enable = self._old)
|
||||
|
||||
def redo(self):
|
||||
self._edge.enable(enable = self._enable)
|
||||
|
||||
class ReverseEdgeCommand(QUndoCommand):
|
||||
def __init__(self, edge):
|
||||
QUndoCommand.__init__(self)
|
||||
|
||||
self._edge = edge
|
||||
|
||||
def undo(self):
|
||||
self._edge.reverse()
|
||||
|
||||
def redo(self):
|
||||
self._edge.reverse()
|
||||
|
|
@ -33,7 +33,9 @@ class NetworkWindow(ASubMainWindow):
|
|||
|
||||
self.setup_title()
|
||||
|
||||
super(NetworkWindow, self).__init__(name=self._title, ui="Network", parent=parent)
|
||||
super(NetworkWindow, self).__init__(
|
||||
name=self._title, ui="Network", parent=parent
|
||||
)
|
||||
self.ui.setWindowTitle(self._title)
|
||||
|
||||
self.setup_sc()
|
||||
|
|
|
|||
Loading…
Reference in New Issue