mirror of https://gitlab.com/pamhyr/pamhyr2
Network: cleanest version of drag clic to move on the graph + network graph view only on the main tab (no more interaction on mouse hover) + graph on main tab
parent
9f46bcd853
commit
74d23386a7
|
|
@ -270,10 +270,11 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
study=self._study, trad=self._trad, parent=self
|
study=self._study, trad=self._trad, parent=self
|
||||||
)
|
)
|
||||||
|
|
||||||
tab_widget.addTab(
|
tab_widget.insertTab(
|
||||||
self._tab_widget_graph,
|
0, self._tab_widget_graph,
|
||||||
self._trad["tab_graph_name"]
|
self._trad["tab_graph_name"]
|
||||||
)
|
)
|
||||||
|
tab_widget.setCurrentWidget(self._tab_widget_graph)
|
||||||
|
|
||||||
def enable_actions(self, action: str, enable: bool):
|
def enable_actions(self, action: str, enable: bool):
|
||||||
"""Enable of disable an action componant
|
"""Enable of disable an action componant
|
||||||
|
|
|
||||||
|
|
@ -477,6 +477,7 @@ class GraphWidget(QGraphicsView):
|
||||||
self.m_origin_x = 0.0
|
self.m_origin_x = 0.0
|
||||||
self.m_origin_y = 0.0
|
self.m_origin_y = 0.0
|
||||||
self.clicked = False
|
self.clicked = False
|
||||||
|
self._panning = False
|
||||||
|
|
||||||
self.setup_scene(min_size, max_size, size)
|
self.setup_scene(min_size, max_size, size)
|
||||||
|
|
||||||
|
|
@ -492,8 +493,8 @@ class GraphWidget(QGraphicsView):
|
||||||
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
|
self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
|
||||||
self.setResizeAnchor(QGraphicsView.AnchorViewCenter)
|
self.setResizeAnchor(QGraphicsView.AnchorViewCenter)
|
||||||
|
|
||||||
self.scale(1, 1)
|
self.scale(0.7, 0.7)
|
||||||
self.previousScale = 1
|
self.previousScale = 0.7
|
||||||
self.centerOn(1000.0, 1000.0)
|
self.centerOn(1000.0, 1000.0)
|
||||||
|
|
||||||
if min_size:
|
if min_size:
|
||||||
|
|
@ -948,6 +949,8 @@ class GraphWidget(QGraphicsView):
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
def mousePressEvent(self, event):
|
||||||
if self._only_display:
|
if self._only_display:
|
||||||
|
if event.button() == Qt.LeftButton:
|
||||||
|
self._start_pan(event)
|
||||||
return
|
return
|
||||||
|
|
||||||
if event.button() == Qt.RightButton \
|
if event.button() == Qt.RightButton \
|
||||||
|
|
@ -970,6 +973,12 @@ class GraphWidget(QGraphicsView):
|
||||||
self._selected_new_edge_src_node = None
|
self._selected_new_edge_src_node = None
|
||||||
|
|
||||||
items = self.items(event.pos())
|
items = self.items(event.pos())
|
||||||
|
if event.button() == Qt.LeftButton and not any(
|
||||||
|
isinstance(item, (NodeItem, EdgeItem, NodeText))
|
||||||
|
for item in items
|
||||||
|
):
|
||||||
|
self._start_pan(event)
|
||||||
|
return
|
||||||
if items and type(items[0]) is EdgeItem:
|
if items and type(items[0]) is EdgeItem:
|
||||||
edge = items[0]
|
edge = items[0]
|
||||||
if edge:
|
if edge:
|
||||||
|
|
@ -1018,7 +1027,10 @@ class GraphWidget(QGraphicsView):
|
||||||
def mouseReleaseEvent(self, event):
|
def mouseReleaseEvent(self, event):
|
||||||
self.clicked = False
|
self.clicked = False
|
||||||
|
|
||||||
if self._only_display:
|
if self._panning or self._only_display:
|
||||||
|
self._panning = False
|
||||||
|
self.viewport().unsetCursor()
|
||||||
|
event.accept()
|
||||||
return
|
return
|
||||||
|
|
||||||
locked = self.graph._status.is_read_only()
|
locked = self.graph._status.is_read_only()
|
||||||
|
|
@ -1040,7 +1052,28 @@ class GraphWidget(QGraphicsView):
|
||||||
self.update()
|
self.update()
|
||||||
super(GraphWidget, self).mouseReleaseEvent(event)
|
super(GraphWidget, self).mouseReleaseEvent(event)
|
||||||
|
|
||||||
|
def _start_pan(self, event):
|
||||||
|
self.clicked = True
|
||||||
|
self._panning = True
|
||||||
|
self.m_origin_x = event.x()
|
||||||
|
self.m_origin_y = event.y()
|
||||||
|
self.viewport().setCursor(Qt.ClosedHandCursor)
|
||||||
|
event.accept()
|
||||||
|
|
||||||
def mouseMoveEvent(self, event):
|
def mouseMoveEvent(self, event):
|
||||||
|
if self._panning or self._only_display:
|
||||||
|
if self._panning and event.buttons() & Qt.LeftButton:
|
||||||
|
dx = event.x() - self.m_origin_x
|
||||||
|
dy = event.y() - self.m_origin_y
|
||||||
|
horizontal = self.horizontalScrollBar()
|
||||||
|
vertical = self.verticalScrollBar()
|
||||||
|
horizontal.setValue(horizontal.value() - dx)
|
||||||
|
vertical.setValue(vertical.value() - dy)
|
||||||
|
self.m_origin_x = event.x()
|
||||||
|
self.m_origin_y = event.y()
|
||||||
|
event.accept()
|
||||||
|
return
|
||||||
|
|
||||||
pos = self.mapToScene(event.pos())
|
pos = self.mapToScene(event.pos())
|
||||||
locked = self.graph._status.is_read_only()
|
locked = self.graph._status.is_read_only()
|
||||||
|
|
||||||
|
|
@ -1072,20 +1105,6 @@ class GraphWidget(QGraphicsView):
|
||||||
|
|
||||||
# If state is "move"
|
# If state is "move"
|
||||||
if self._state == "move":
|
if self._state == "move":
|
||||||
# Move on scene
|
|
||||||
if not self.selected_item():
|
|
||||||
if event.buttons() & Qt.LeftButton:
|
|
||||||
old_p = self.mapToScene(
|
|
||||||
int(self.m_origin_x), int(self.m_origin_y)
|
|
||||||
)
|
|
||||||
new_p = self.mapToScene(event.pos())
|
|
||||||
translation = new_p - old_p
|
|
||||||
|
|
||||||
self.translate(translation.x(), translation.y())
|
|
||||||
|
|
||||||
self.m_origin_x = event.x()
|
|
||||||
self.m_origin_y = event.y()
|
|
||||||
|
|
||||||
# Propagate event
|
# Propagate event
|
||||||
self.update()
|
self.update()
|
||||||
super(GraphWidget, self).mouseMoveEvent(event)
|
super(GraphWidget, self).mouseMoveEvent(event)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue