Add sign editor and entity ref

This commit is contained in:
David Vierra 2016-06-23 23:06:02 -10:00
parent 544e08379a
commit f31a5b1f17
4 changed files with 54 additions and 0 deletions

View File

@ -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 mcedit2.widgets.inspector.tileentities.sign import SignEditorWidget
from mceditlib.geometry import Vector
from mceditlib.selection import BoundingBox
@ -36,6 +37,7 @@ registerBlockInspectorWidget(ChestEditorWidget)
registerBlockInspectorWidget(DispenserEditorWidget)
registerBlockInspectorWidget(HopperEditorWidget)
registerBlockInspectorWidget(CommandBlockEditorWidget)
registerBlockInspectorWidget(SignEditorWidget)
class InspectorWidget(QtGui.QWidget, Ui_inspectorWidget):

View File

@ -13,6 +13,7 @@ log = logging.getLogger(__name__)
class CommandBlockEditorWidget(QtGui.QWidget):
tileEntityID = "Control"
def __init__(self, editorSession, tileEntityRef):
super(CommandBlockEditorWidget, self).__init__()
assert tileEntityRef.id == self.tileEntityID

View File

@ -0,0 +1,41 @@
"""
sign
"""
from __future__ import absolute_import, division, print_function, unicode_literals
import logging
from PySide import QtGui
log = logging.getLogger(__name__)
class SignEditorWidget(QtGui.QWidget):
tileEntityID = "Sign"
def __init__(self, editorSession, tileEntityRef):
super(SignEditorWidget, self).__init__()
assert tileEntityRef.id == self.tileEntityID
self.editorSession = editorSession
layout = QtGui.QFormLayout()
self.tileEntityRef = tileEntityRef
self.lineEdits = []
for i in range(4):
lineEdit = QtGui.QLineEdit()
line = getattr(tileEntityRef, "Text%d" % (i+1), None)
if line is not None:
lineEdit.setText(line)
layout.addRow(self.tr("Text %d") % (i+1), lineEdit)
self.lineEdits.append(lineEdit)
lineEdit.textChanged.connect(self.textDidChange)
self.setLayout(layout)
def textDidChange(self):
with self.editorSession.beginSimpleCommand(self.tr("Edit sign text")):
for i, lineEdit in self.enumerate(self.lineEdits):
setattr(self.tileEntityRef, "Text%d" % (i+1), lineEdit.text())

View File

@ -474,6 +474,15 @@ class PCTileEntityControlRef(PCTileEntityRefBase):
TrackOutput = nbtattr.NBTAttr("TrackOutput", 'b', 1)
class PCTileEntitySignRef(PCTileEntityRefBase):
tileEntityID = "Sign"
Text1 = nbtattr.NBTAttr("Text1", 't', "")
Text2 = nbtattr.NBTAttr("Text2", 't', "")
Text3 = nbtattr.NBTAttr("Text3", 't', "")
Text4 = nbtattr.NBTAttr("Text4", 't', "")
def convertStackTo17(stack, blocktypes):
if stack["id"].tagID == nbt.ID_STRING:
stack["id"] = nbt.TAG_Short(blocktypes.itemTypes.internalNamesByID[stack["id"].value])
@ -521,6 +530,7 @@ _tileEntityClasses = {
"Trap": PCTileEntityChestRef,
"Hopper": PCTileEntityChestRef,
"Control": PCTileEntityControlRef,
"Sign": PCTileEntitySignRef,
}