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:
|
||||
command = MoveOffsetCommand(oldPoint, newPoint, self.currentImport)
|
||||
self.editorSession.pushCommand(command)
|
||||
self.pointInput.point = newPoint
|
||||
|
||||
@property
|
||||
def currentImport(self):
|
||||
@ -168,6 +169,8 @@ class MoveTool(EditorTool):
|
||||
self._currentImportNode = node
|
||||
self.overlayNode.addChild(node)
|
||||
self.rotationInput.rotation = pendingImport.rotation
|
||||
self.pointInput.point = pendingImport.basePosition
|
||||
self.pointInput.origin = pendingImport.selection.origin
|
||||
|
||||
@property
|
||||
def currentImportNode(self):
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>293</width>
|
||||
<height>92</height>
|
||||
<width>121</width>
|
||||
<height>115</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -23,6 +23,20 @@
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,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">
|
||||
<property name="minimum">
|
||||
<number>-2000000000</number>
|
||||
@ -32,31 +46,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Z:</string>
|
||||
<string>Y:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<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">
|
||||
<property name="minimum">
|
||||
<number>-2000000000</number>
|
||||
@ -66,33 +63,28 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<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>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</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>zMaxInput</zorder>
|
||||
<zorder>yMaxInput</zorder>
|
||||
<zorder>xMaxInput</zorder>
|
||||
<zorder>widthLabel</zorder>
|
||||
<zorder>heightLabel</zorder>
|
||||
<zorder>lengthLabel</zorder>
|
||||
<zorder>relativeCheckBox</zorder>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
@ -20,9 +20,38 @@ class CoordinateWidget(QtGui.QWidget):
|
||||
self.yInput.valueChanged.connect(self.setY)
|
||||
self.zInput.valueChanged.connect(self.setZ)
|
||||
|
||||
self.relativeCheckBox.toggled.connect(self.relativeToggled)
|
||||
|
||||
pointChanged = QtCore.Signal(BoundingBox)
|
||||
|
||||
_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
|
||||
def point(self):
|
||||
@ -31,23 +60,31 @@ class CoordinateWidget(QtGui.QWidget):
|
||||
@point.setter
|
||||
def point(self, point):
|
||||
self.setEnabled(point is not None)
|
||||
self._point = point
|
||||
if point is not None:
|
||||
x, y, z = point
|
||||
self.xInput.setValue(x)
|
||||
self.yInput.setValue(y)
|
||||
self.zInput.setValue(z)
|
||||
point = Vector(*point)
|
||||
if self._point != point:
|
||||
self._point = point
|
||||
if point is not None:
|
||||
self.updateInputs()
|
||||
|
||||
self.pointChanged.emit(point)
|
||||
self.pointChanged.emit(point)
|
||||
|
||||
def setX(self, value):
|
||||
x, y, z = self.point
|
||||
self.point = Vector(value, y, z)
|
||||
self.setCoord(value, 0)
|
||||
|
||||
def setY(self, value):
|
||||
x, y, z = self.point
|
||||
self.point = Vector(x, value, z)
|
||||
self.setCoord(value, 1)
|
||||
|
||||
def setZ(self, value):
|
||||
x, y, z = self.point
|
||||
self.point = Vector(x, y, value)
|
||||
self.setCoord(value, 2)
|
||||
|
||||
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