Add coordinate inputs to block inspector

This commit is contained in:
David Vierra 2015-12-07 19:16:21 -10:00
parent d299a9a37d
commit aefa3f774b
2 changed files with 51 additions and 13 deletions

View File

@ -41,9 +41,12 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="blockXLabel"> <widget class="QSpinBox" name="blockXSpinBox">
<property name="text"> <property name="minimum">
<string>(x)</string> <number>-2147483647</number>
</property>
<property name="maximum">
<number>2147483647</number>
</property> </property>
</widget> </widget>
</item> </item>
@ -55,9 +58,12 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="blockYLabel"> <widget class="QSpinBox" name="blockYSpinBox">
<property name="text"> <property name="minimum">
<string>(y)</string> <number>-2147483647</number>
</property>
<property name="maximum">
<number>2147483647</number>
</property> </property>
</widget> </widget>
</item> </item>
@ -69,9 +75,12 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="blockZLabel"> <widget class="QSpinBox" name="blockZSpinBox">
<property name="text"> <property name="minimum">
<string>(z)</string> <number>-2147483647</number>
</property>
<property name="maximum">
<number>2147483647</number>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -15,6 +15,7 @@ from mcedit2.ui.inspector import Ui_inspectorWidget
from mcedit2.util.commandblock import ParseCommand from mcedit2.util.commandblock import ParseCommand
from mcedit2.widgets.inspector.tileentities.chest import ChestEditorWidget, DispenserEditorWidget, HopperEditorWidget from mcedit2.widgets.inspector.tileentities.chest import ChestEditorWidget, DispenserEditorWidget, HopperEditorWidget
from mcedit2.widgets.inspector.tileentities.command import CommandBlockEditorWidget from mcedit2.widgets.inspector.tileentities.command import CommandBlockEditorWidget
from mceditlib.geometry import Vector
from mceditlib.selection import BoundingBox from mceditlib.selection import BoundingBox
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -59,6 +60,7 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget):
self.tileEntity = None self.tileEntity = None
self.entity = None self.entity = None
self.blockPos = None
self.currentChunk = None self.currentChunk = None
@ -79,6 +81,30 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget):
self.inhabitedTimeInput.valueChanged.connect(self.inhabitedTimeDidChange) self.inhabitedTimeInput.valueChanged.connect(self.inhabitedTimeDidChange)
self.updateTimeInput.valueChanged.connect(self.updateTimeDidChange) 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): def hide(self, *args, **kwargs):
super(InspectorWidget, self).hide(*args, **kwargs) super(InspectorWidget, self).hide(*args, **kwargs)
self.overlayNode.visible = False self.overlayNode.visible = False
@ -94,13 +120,14 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget):
def inspectBlock(self, pos): def inspectBlock(self, pos):
self.clearVisuals() self.clearVisuals()
self.blockPos = pos
self.entity = None self.entity = None
self.stackedWidget.setCurrentWidget(self.pageInspectBlock) self.stackedWidget.setCurrentWidget(self.pageInspectBlock)
x, y, z = pos x, y, z = pos
self.blockXLabel.setText(str(x)) self.blockXSpinBox.setValue(x)
self.blockYLabel.setText(str(y)) self.blockYSpinBox.setValue(y)
self.blockZLabel.setText(str(z)) self.blockZSpinBox.setValue(z)
blockID = self.editorSession.currentDimension.getBlockID(x, y, z) blockID = self.editorSession.currentDimension.getBlockID(x, y, z)
blockData = self.editorSession.currentDimension.getBlockData(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.blockEditorWidget = None
self.tileEntity = self.editorSession.currentDimension.getTileEntity(pos) self.tileEntity = self.editorSession.currentDimension.getTileEntity(pos)
log.info("Inspecting TileEntity %s at %s", self.tileEntity, pos)
if self.tileEntity is not None: if self.tileEntity is not None:
editorClass = tileEntityEditorClasses.get(self.tileEntity.id) editorClass = tileEntityEditorClasses.get(self.tileEntity.id)
@ -157,6 +185,7 @@ class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget):
visuals = CommandVisuals((x, y, z), commandObj) visuals = CommandVisuals((x, y, z), commandObj)
self.commandBlockVisualsNode = visuals self.commandBlockVisualsNode = visuals
self.overlayNode.addChild(visuals) self.overlayNode.addChild(visuals)
self.editorSession.updateView()
except Exception as e: except Exception as e:
log.warn("Failed to parse command.", exc_info=1) log.warn("Failed to parse command.", exc_info=1)