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):
|
||||
self._enable = False
|
||||
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):
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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])
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
Loading…
Reference in New Issue