Network: Some minor change.

mesh
Pierre-Antoine Rouby 2023-06-08 14:50:40 +02:00
parent a6ddba484e
commit 7f1f028b17
6 changed files with 56 additions and 36 deletions

View File

@ -60,3 +60,9 @@ class Edge(object):
def disable(self):
self._enable = False
self._status.modified()
def reverse(self):
tmp = self.node1
self.node1 = self.node2
self.node2 = tmp
self._status.modified()

View File

@ -56,7 +56,7 @@ class Graph(object):
)
def node(self, node_name:str):
node = list(
node = list(
filter(
lambda n: n.name == node_name,
self._nodes
@ -69,7 +69,7 @@ class Graph(object):
return node[0]
def edge(self, edge_name:str):
edge = list(
edge = list(
filter(
lambda e: e.name == edge_name,
self._edges
@ -154,7 +154,7 @@ class Graph(object):
acc or (
(e.node1 == node or
e.node2 == node)
and e.enable
and e._enable
)
),
self._edges,
@ -162,4 +162,4 @@ class Graph(object):
)
def is_enable_edge(self, edge):
return edge.enable
return edge._enable

View File

@ -422,6 +422,17 @@ class GraphWidget(QGraphicsView):
if type(i) == NodeItem:
self.texts[i].rename()
def enable_edge(self, edge, prev):
edge.edge.enable(enable = not prev)
self.changeEdge.emit(self.sender())
self.changeNode.emit(self.sender())
self.display_update()
def reverse_edge(self, edge):
edge.edge.reverse()
self.changeEdge.emit(self.sender())
self.display_update()
def display_update(self):
"""Clear the scene and redraw it
@ -633,6 +644,11 @@ class GraphWidget(QGraphicsView):
pos = self.mapToScene(event.pos())
self.clicked = True
if event.buttons() & Qt.RightButton:
self.update()
super(GraphWidget, self).mousePressEvent(event)
return
# Move item and select edge item
if self._state == "move":
self._selected_new_edge_src_node = None
@ -753,12 +769,23 @@ class GraphWidget(QGraphicsView):
def _menu_edge(self, event, pos, items, menu):
delete = menu.addAction(_translate("Network", "Delete the reach"))
disable = menu.addAction(_translate("Network", "Disable the reach"))
if self.graph.is_enable_edge(items[0].edge):
enable = menu.addAction(_translate("Network", "Disable the reach"))
is_enable = True
else:
enable = menu.addAction(_translate("Network", "Enable the reach"))
is_enable = False
reverse = menu.addAction(_translate("Network", "Reverse the reach orientation"))
action = menu.exec_(self.mapToGlobal(event.pos()))
if action == delete:
self.del_edge(items[0])
elif action == enable:
self.enable_edge(items[0], is_enable)
elif action == reverse:
self.reverse_edge(items[0])
def contextMenuEvent(self, event):
pos = self.mapToScene(event.pos())

View File

@ -79,11 +79,12 @@ class TrueFalseComboBoxDelegate(QItemDelegate):
self.commitData.emit(self.sender())
class GraphTableModel(QAbstractTableModel):
def __init__(self, headers=[], graph=None, rows_type="nodes"):
def __init__(self, headers=[], graph=None, undo = None, rows_type="nodes"):
super(QAbstractTableModel, self).__init__()
self.headers = headers
self.graph = graph
self._type = rows_type
self._undo = undo
if self._type == "nodes":
self.rows = graph.nodes()
@ -166,3 +167,11 @@ class GraphTableModel(QAbstractTableModel):
self.rows[index.row()].node2 = tmp
self.dataChanged.emit(index, index, [Qt.DisplayRole])
self.layoutChanged.emit()
def undo(self):
self._undo.undo()
self.layoutChanged.emit()
def redo(self):
self._undo.redo()
self.layoutChanged.emit()

View File

@ -1,5 +1,9 @@
# -*- coding: utf-8 -*-
from PyQt5.QtGui import (
QKeySequence,
)
from PyQt5.QtCore import (
Qt, QRect, QVariant, QAbstractTableModel, pyqtSlot, pyqtSignal,
QEvent,
@ -32,6 +36,7 @@ class NetworkWindow(ASubMainWindow):
super(NetworkWindow, self).__init__(name=self._title, ui="Network", parent=parent)
self.ui.setWindowTitle(self._title)
self.setup_sc()
self.setup_graph()
self.setup_table()
self.setup_connections()
@ -111,11 +116,6 @@ class NetworkWindow(ASubMainWindow):
self.clicked_del
)
self.find(QPushButton, "pushButton_reverse").clicked.connect(
self.reverse_edge
)
def clicked_add(self):
if self.get_action_checkable("action_toolBar_add"):
self.set_action_checkable("action_toolBar_del", False)
@ -135,18 +135,3 @@ class NetworkWindow(ASubMainWindow):
if key == Qt.Key_Escape:
self._graph_widget.reset_selection
def reverse_edge(self):
"""Reverse edge direction of selected table rows
Returns:
Nothing
"""
indices = self.find(QTableView, "tableView_reachs").selectionModel().selectedIndexes()
indexes = {}
for index in sorted(indices):
indexes[index.row()] = index
for row in indexes:
self.reachs_model.reverse_edge(indexes[row])

View File

@ -20,7 +20,7 @@
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QWidget" name="">
<widget class="QWidget" name="layoutWidget">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_graph"/>
@ -31,7 +31,7 @@
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="">
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_10">
@ -68,13 +68,6 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_reverse">
<property name="text">
<string>Reverse</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_9">
<property name="orientation">
@ -108,7 +101,7 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="">
<widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_9">