mirror of https://gitlab.com/pamhyr/pamhyr2
Network: Some minor change.
parent
a6ddba484e
commit
7f1f028b17
|
|
@ -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):
|
||||||
)
|
)
|
||||||
|
|
||||||
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):
|
||||||
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):
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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])
|
|
||||||
|
|
|
||||||
|
|
@ -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">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue