diff --git a/src/mcedit2/ui/inspector.ui b/src/mcedit2/ui/inspector.ui index cfa90c4..65365d8 100644 --- a/src/mcedit2/ui/inspector.ui +++ b/src/mcedit2/ui/inspector.ui @@ -41,9 +41,12 @@ - - - (x) + + + -2147483647 + + + 2147483647 @@ -55,9 +58,12 @@ - - - (y) + + + -2147483647 + + + 2147483647 @@ -69,9 +75,12 @@ - - - (z) + + + -2147483647 + + + 2147483647 diff --git a/src/mcedit2/widgets/inspector/__init__.py b/src/mcedit2/widgets/inspector/__init__.py index 8199063..48c2a8e 100644 --- a/src/mcedit2/widgets/inspector/__init__.py +++ b/src/mcedit2/widgets/inspector/__init__.py @@ -15,6 +15,7 @@ from mcedit2.ui.inspector import Ui_inspectorWidget from mcedit2.util.commandblock import ParseCommand from mcedit2.widgets.inspector.tileentities.chest import ChestEditorWidget, DispenserEditorWidget, HopperEditorWidget from mcedit2.widgets.inspector.tileentities.command import CommandBlockEditorWidget +from mceditlib.geometry import Vector from mceditlib.selection import BoundingBox log = logging.getLogger(__name__) @@ -59,6 +60,7 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget): self.tileEntity = None self.entity = None + self.blockPos = None self.currentChunk = None @@ -78,7 +80,31 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget): self.lightPopulatedInput.toggled.connect(self.lightPopulatedDidChange) self.inhabitedTimeInput.valueChanged.connect(self.inhabitedTimeDidChange) self.updateTimeInput.valueChanged.connect(self.updateTimeDidChange) - + + self.blockXSpinBox.valueChanged.connect(self.blockXChanged) + self.blockYSpinBox.valueChanged.connect(self.blockYChanged) + self.blockZSpinBox.valueChanged.connect(self.blockZChanged) + + def _changed(self, value, idx): + if self.blockPos is None: + return + + if self.blockPos[0] == value: + return + + pos = list(self.blockPos) + pos[idx] = value + self.inspectBlock(Vector(*pos)) + + def blockXChanged(self, value): + self._changed(value, 0) + + def blockYChanged(self, value): + self._changed(value, 1) + + def blockZChanged(self, value): + self._changed(value, 2) + def hide(self, *args, **kwargs): super(InspectorWidget, self).hide(*args, **kwargs) self.overlayNode.visible = False @@ -94,13 +120,14 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget): def inspectBlock(self, pos): self.clearVisuals() + self.blockPos = pos self.entity = None self.stackedWidget.setCurrentWidget(self.pageInspectBlock) x, y, z = pos - self.blockXLabel.setText(str(x)) - self.blockYLabel.setText(str(y)) - self.blockZLabel.setText(str(z)) + self.blockXSpinBox.setValue(x) + self.blockYSpinBox.setValue(y) + self.blockZSpinBox.setValue(z) blockID = self.editorSession.currentDimension.getBlockID(x, y, z) blockData = self.editorSession.currentDimension.getBlockData(x, y, z) @@ -123,6 +150,7 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget): self.blockEditorWidget = None self.tileEntity = self.editorSession.currentDimension.getTileEntity(pos) + log.info("Inspecting TileEntity %s at %s", self.tileEntity, pos) if self.tileEntity is not None: editorClass = tileEntityEditorClasses.get(self.tileEntity.id) @@ -157,6 +185,7 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget): visuals = CommandVisuals((x, y, z), commandObj) self.commandBlockVisualsNode = visuals self.overlayNode.addChild(visuals) + self.editorSession.updateView() except Exception as e: log.warn("Failed to parse command.", exc_info=1)