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): def disable(self):
self._enable = False self._enable = False
self._status.modified() self._status.modified()
def reverse(self):
tmp = self.node1
self.node1 = self.node2
self.node2 = tmp
self._status.modified()

View File

@ -154,7 +154,7 @@ class Graph(object):
acc or ( acc or (
(e.node1 == node or (e.node1 == node or
e.node2 == node) e.node2 == node)
and e.enable and e._enable
) )
), ),
self._edges, self._edges,
@ -162,4 +162,4 @@ class Graph(object):
) )
def is_enable_edge(self, edge): 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: if type(i) == NodeItem:
self.texts[i].rename() 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): def display_update(self):
"""Clear the scene and redraw it """Clear the scene and redraw it
@ -633,6 +644,11 @@ class GraphWidget(QGraphicsView):
pos = self.mapToScene(event.pos()) pos = self.mapToScene(event.pos())
self.clicked = True self.clicked = True
if event.buttons() & Qt.RightButton:
self.update()
super(GraphWidget, self).mousePressEvent(event)
return
# Move item and select edge item # Move item and select edge item
if self._state == "move": if self._state == "move":
self._selected_new_edge_src_node = None self._selected_new_edge_src_node = None
@ -753,12 +769,23 @@ class GraphWidget(QGraphicsView):
def _menu_edge(self, event, pos, items, menu): def _menu_edge(self, event, pos, items, menu):
delete = menu.addAction(_translate("Network", "Delete the reach")) 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())) action = menu.exec_(self.mapToGlobal(event.pos()))
if action == delete: if action == delete:
self.del_edge(items[0]) 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): def contextMenuEvent(self, event):
pos = self.mapToScene(event.pos()) pos = self.mapToScene(event.pos())

View File

@ -79,11 +79,12 @@ class TrueFalseComboBoxDelegate(QItemDelegate):
self.commitData.emit(self.sender()) self.commitData.emit(self.sender())
class GraphTableModel(QAbstractTableModel): 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__() super(QAbstractTableModel, self).__init__()
self.headers = headers self.headers = headers
self.graph = graph self.graph = graph
self._type = rows_type self._type = rows_type
self._undo = undo
if self._type == "nodes": if self._type == "nodes":
self.rows = graph.nodes() self.rows = graph.nodes()
@ -166,3 +167,11 @@ class GraphTableModel(QAbstractTableModel):
self.rows[index.row()].node2 = tmp self.rows[index.row()].node2 = tmp
self.dataChanged.emit(index, index, [Qt.DisplayRole]) self.dataChanged.emit(index, index, [Qt.DisplayRole])
self.layoutChanged.emit() 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 -*- # -*- coding: utf-8 -*-
from PyQt5.QtGui import (
QKeySequence,
)
from PyQt5.QtCore import ( from PyQt5.QtCore import (
Qt, QRect, QVariant, QAbstractTableModel, pyqtSlot, pyqtSignal, Qt, QRect, QVariant, QAbstractTableModel, pyqtSlot, pyqtSignal,
QEvent, QEvent,
@ -32,6 +36,7 @@ class NetworkWindow(ASubMainWindow):
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.ui.setWindowTitle(self._title)
self.setup_sc()
self.setup_graph() self.setup_graph()
self.setup_table() self.setup_table()
self.setup_connections() self.setup_connections()
@ -111,11 +116,6 @@ class NetworkWindow(ASubMainWindow):
self.clicked_del self.clicked_del
) )
self.find(QPushButton, "pushButton_reverse").clicked.connect(
self.reverse_edge
)
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,18 +135,3 @@ class NetworkWindow(ASubMainWindow):
if key == Qt.Key_Escape: if key == Qt.Key_Escape:
self._graph_widget.reset_selection 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"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<widget class="QWidget" name=""> <widget class="QWidget" name="layoutWidget">
<layout class="QHBoxLayout" name="horizontalLayout_8"> <layout class="QHBoxLayout" name="horizontalLayout_8">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_graph"/> <layout class="QHBoxLayout" name="horizontalLayout_graph"/>
@ -31,7 +31,7 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<widget class="QWidget" name=""> <widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_9"> <layout class="QVBoxLayout" name="verticalLayout_9">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_10"> <layout class="QHBoxLayout" name="horizontalLayout_10">
@ -68,13 +68,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="pushButton_reverse">
<property name="text">
<string>Reverse</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="horizontalSpacer_9"> <spacer name="horizontalSpacer_9">
<property name="orientation"> <property name="orientation">
@ -108,7 +101,7 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name=""> <widget class="QWidget" name="layoutWidget">
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_9"> <layout class="QHBoxLayout" name="horizontalLayout_9">