Commit 7f1f028b authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Network: Some minor change.

Showing with 56 additions and 36 deletions
+56 -36
...@@ -60,3 +60,9 @@ class Edge(object): ...@@ -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()
...@@ -56,7 +56,7 @@ class Graph(object): ...@@ -56,7 +56,7 @@ class Graph(object):
) )
def node(self, node_name:str): def node(self, node_name:str):
node = list( node = list(
filter( filter(
lambda n: n.name == node_name, lambda n: n.name == node_name,
self._nodes self._nodes
...@@ -69,7 +69,7 @@ class Graph(object): ...@@ -69,7 +69,7 @@ class Graph(object):
return node[0] return node[0]
def edge(self, edge_name:str): def edge(self, edge_name:str):
edge = list( edge = list(
filter( filter(
lambda e: e.name == edge_name, lambda e: e.name == edge_name,
self._edges self._edges
...@@ -154,7 +154,7 @@ class Graph(object): ...@@ -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): ...@@ -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
...@@ -422,6 +422,17 @@ class GraphWidget(QGraphicsView): ...@@ -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): ...@@ -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): ...@@ -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())
......
...@@ -79,11 +79,12 @@ class TrueFalseComboBoxDelegate(QItemDelegate): ...@@ -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): ...@@ -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()
# -*- 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): ...@@ -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): ...@@ -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): ...@@ -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])
...@@ -20,7 +20,7 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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">
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment