aboutsummaryrefslogtreecommitdiffstats
path: root/examples/graphs/3d/widgetgraphgallery/axesinputhandler.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/graphs/3d/widgetgraphgallery/axesinputhandler.py')
-rw-r--r--examples/graphs/3d/widgetgraphgallery/axesinputhandler.py101
1 files changed, 0 insertions, 101 deletions
diff --git a/examples/graphs/3d/widgetgraphgallery/axesinputhandler.py b/examples/graphs/3d/widgetgraphgallery/axesinputhandler.py
deleted file mode 100644
index 2323d62e1..000000000
--- a/examples/graphs/3d/widgetgraphgallery/axesinputhandler.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# Copyright (C) 2023 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-from __future__ import annotations
-
-from enum import Enum
-from math import sin, cos, degrees
-
-from PySide6.QtCore import Qt
-from PySide6.QtGraphs import QAbstract3DGraph, Q3DInputHandler
-
-
-class InputState(Enum):
- StateNormal = 0
- StateDraggingX = 1
- StateDraggingZ = 2
- StateDraggingY = 3
-
-
-class AxesInputHandler(Q3DInputHandler):
-
- def __init__(self, graph, parent=None):
- super().__init__(parent)
- self._mousePressed = False
- self._state = InputState.StateNormal
- self._axisX = None
- self._axisZ = None
- self._axisY = None
- self._speedModifier = 15.0
-
- # Connect to the item selection signal from graph
- graph.selectedElementChanged.connect(self.handleElementSelected)
-
- def setAxes(self, axisX, axisZ, axisY):
- self._axisX = axisX
- self._axisZ = axisZ
- self._axisY = axisY
-
- def setDragSpeedModifier(self, modifier):
- self._speedModifier = modifier
-
- def mousePressEvent(self, event, mousePos):
- super().mousePressEvent(event, mousePos)
- if Qt.LeftButton == event.button():
- self._mousePressed = True
-
- def mouseMoveEvent(self, event, mousePos):
- # Check if we're trying to drag axis label
- if self._mousePressed and self._state != InputState.StateNormal:
- self.setPreviousInputPos(self.inputPosition())
- self.setInputPosition(mousePos)
- self.handleAxisDragging()
- else:
- super().mouseMoveEvent(event, mousePos)
-
- def mouseReleaseEvent(self, event, mousePos):
- super().mouseReleaseEvent(event, mousePos)
- self._mousePressed = False
- self._state = InputState.StateNormal
-
- def handleElementSelected(self, type):
- if type == QAbstract3DGraph.ElementAxisXLabel:
- self._state = InputState.StateDraggingX
- elif type == QAbstract3DGraph.ElementAxisYLabel:
- self._state = InputState.StateDraggingY
- elif type == QAbstract3DGraph.ElementAxisZLabel:
- self._state = InputState.StateDraggingZ
- else:
- self._state = InputState.StateNormal
-
- def handleAxisDragging(self):
- distance = 0.0
- # Get scene orientation from active camera
- xRotation = self.cameraXRotation()
- yRotation = self.cameraYRotation()
-
- # Calculate directional drag multipliers based on rotation
- xMulX = cos(degrees(xRotation))
- xMulY = sin(degrees(xRotation))
- zMulX = sin(degrees(xRotation))
- zMulY = cos(degrees(xRotation))
-
- # Get the drag amount
- move = self.inputPosition() - self.previousInputPos()
-
- # Flip the effect of y movement if we're viewing from below
- yMove = -move.y() if yRotation < 0 else move.y()
-
- # Adjust axes
- if self._state == InputState.StateDraggingX:
- distance = (move.x() * xMulX - yMove * xMulY) / self._speedModifier
- self._axisX.setRange(self._axisX.min() - distance,
- self._axisX.max() - distance)
- elif self._state == InputState.StateDraggingZ:
- distance = (move.x() * zMulX + yMove * zMulY) / self._speedModifier
- self._axisZ.setRange(self._axisZ.min() + distance,
- self._axisZ.max() + distance)
- elif self._state == InputState.StateDraggingY:
- # No need to use adjusted y move here
- distance = move.y() / self._speedModifier
- self._axisY.setRange(self._axisY.min() + distance,
- self._axisY.max() + distance)