Move tool and coord widget now support relative offsets
This commit is contained in:
parent
a5801f1034
commit
af6a72a76e
@ -146,6 +146,7 @@ class MoveTool(EditorTool):
|
|||||||
if newPoint != oldPoint:
|
if newPoint != oldPoint:
|
||||||
command = MoveOffsetCommand(oldPoint, newPoint, self.currentImport)
|
command = MoveOffsetCommand(oldPoint, newPoint, self.currentImport)
|
||||||
self.editorSession.pushCommand(command)
|
self.editorSession.pushCommand(command)
|
||||||
|
self.pointInput.point = newPoint
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def currentImport(self):
|
def currentImport(self):
|
||||||
@ -168,6 +169,8 @@ class MoveTool(EditorTool):
|
|||||||
self._currentImportNode = node
|
self._currentImportNode = node
|
||||||
self.overlayNode.addChild(node)
|
self.overlayNode.addChild(node)
|
||||||
self.rotationInput.rotation = pendingImport.rotation
|
self.rotationInput.rotation = pendingImport.rotation
|
||||||
|
self.pointInput.point = pendingImport.basePosition
|
||||||
|
self.pointInput.origin = pendingImport.selection.origin
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def currentImportNode(self):
|
def currentImportNode(self):
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>293</width>
|
<width>121</width>
|
||||||
<height>92</height>
|
<height>115</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -23,6 +23,20 @@
|
|||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1">
|
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1">
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
|
<widget class="QCheckBox" name="relativeCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Relative</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>X:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
<widget class="QSpinBox" name="xInput">
|
<widget class="QSpinBox" name="xInput">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>-2000000000</number>
|
<number>-2000000000</number>
|
||||||
@ -32,31 +46,14 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>X:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Z:</string>
|
<string>Y:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QSpinBox" name="zInput">
|
|
||||||
<property name="minimum">
|
|
||||||
<number>-2000000000</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>2000000000</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QSpinBox" name="yInput">
|
<widget class="QSpinBox" name="yInput">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>-2000000000</number>
|
<number>-2000000000</number>
|
||||||
@ -66,33 +63,28 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Y:</string>
|
<string>Z:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QSpinBox" name="zInput">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>-2000000000</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>2000000000</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
<zorder>xInput</zorder>
|
|
||||||
<zorder>xMaxInput</zorder>
|
|
||||||
<zorder>label</zorder>
|
|
||||||
<zorder>label_2</zorder>
|
|
||||||
<zorder>yInput</zorder>
|
|
||||||
<zorder>yMaxInput</zorder>
|
|
||||||
<zorder>zMaxInput</zorder>
|
|
||||||
<zorder>zInput</zorder>
|
|
||||||
<zorder>label_3</zorder>
|
|
||||||
<zorder>stackedWidget</zorder>
|
|
||||||
<zorder></zorder>
|
<zorder></zorder>
|
||||||
<zorder>zMaxInput</zorder>
|
<zorder>relativeCheckBox</zorder>
|
||||||
<zorder>yMaxInput</zorder>
|
|
||||||
<zorder>xMaxInput</zorder>
|
|
||||||
<zorder>widthLabel</zorder>
|
|
||||||
<zorder>heightLabel</zorder>
|
|
||||||
<zorder>lengthLabel</zorder>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
@ -20,9 +20,38 @@ class CoordinateWidget(QtGui.QWidget):
|
|||||||
self.yInput.valueChanged.connect(self.setY)
|
self.yInput.valueChanged.connect(self.setY)
|
||||||
self.zInput.valueChanged.connect(self.setZ)
|
self.zInput.valueChanged.connect(self.setZ)
|
||||||
|
|
||||||
|
self.relativeCheckBox.toggled.connect(self.relativeToggled)
|
||||||
|
|
||||||
pointChanged = QtCore.Signal(BoundingBox)
|
pointChanged = QtCore.Signal(BoundingBox)
|
||||||
|
|
||||||
_point = Vector(0, 0, 0)
|
_point = Vector(0, 0, 0)
|
||||||
|
_origin = Vector(0, 0, 0)
|
||||||
|
_relative = False
|
||||||
|
|
||||||
|
def relativeToggled(self, enabled):
|
||||||
|
self._relative = enabled
|
||||||
|
self.updateInputs()
|
||||||
|
|
||||||
|
def updateInputs(self):
|
||||||
|
if self._relative:
|
||||||
|
displayed = self._point - self._origin
|
||||||
|
else:
|
||||||
|
displayed = self._point
|
||||||
|
|
||||||
|
x, y, z = displayed
|
||||||
|
self.xInput.setValue(x)
|
||||||
|
self.yInput.setValue(y)
|
||||||
|
self.zInput.setValue(z)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def origin(self):
|
||||||
|
return self._origin
|
||||||
|
|
||||||
|
@origin.setter
|
||||||
|
def origin(self, value):
|
||||||
|
value = Vector(*value)
|
||||||
|
if value != self._origin:
|
||||||
|
self._origin = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def point(self):
|
def point(self):
|
||||||
@ -31,23 +60,31 @@ class CoordinateWidget(QtGui.QWidget):
|
|||||||
@point.setter
|
@point.setter
|
||||||
def point(self, point):
|
def point(self, point):
|
||||||
self.setEnabled(point is not None)
|
self.setEnabled(point is not None)
|
||||||
self._point = point
|
point = Vector(*point)
|
||||||
if point is not None:
|
if self._point != point:
|
||||||
x, y, z = point
|
self._point = point
|
||||||
self.xInput.setValue(x)
|
if point is not None:
|
||||||
self.yInput.setValue(y)
|
self.updateInputs()
|
||||||
self.zInput.setValue(z)
|
|
||||||
|
|
||||||
self.pointChanged.emit(point)
|
self.pointChanged.emit(point)
|
||||||
|
|
||||||
def setX(self, value):
|
def setX(self, value):
|
||||||
x, y, z = self.point
|
self.setCoord(value, 0)
|
||||||
self.point = Vector(value, y, z)
|
|
||||||
|
|
||||||
def setY(self, value):
|
def setY(self, value):
|
||||||
x, y, z = self.point
|
self.setCoord(value, 1)
|
||||||
self.point = Vector(x, value, z)
|
|
||||||
|
|
||||||
def setZ(self, value):
|
def setZ(self, value):
|
||||||
x, y, z = self.point
|
self.setCoord(value, 2)
|
||||||
self.point = Vector(x, y, value)
|
|
||||||
|
def setCoord(self, value, index):
|
||||||
|
old = self.point
|
||||||
|
if self._relative:
|
||||||
|
old = old - self._origin
|
||||||
|
new = list(old)
|
||||||
|
new[index] = value
|
||||||
|
new = Vector(*new)
|
||||||
|
if self._relative:
|
||||||
|
new = new + self._origin
|
||||||
|
|
||||||
|
self.point = new
|
||||||
|
Reference in New Issue
Block a user