From f31a5b1f17d39340680aa22dc2bad43a87bbf207 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Thu, 23 Jun 2016 23:06:02 -1000 Subject: [PATCH] Add sign editor and entity ref --- src/mcedit2/widgets/inspector/__init__.py | 2 + .../widgets/inspector/tileentities/command.py | 1 + .../widgets/inspector/tileentities/sign.py | 41 +++++++++++++++++++ src/mceditlib/anvil/entities.py | 10 +++++ 4 files changed, 54 insertions(+) create mode 100644 src/mcedit2/widgets/inspector/tileentities/sign.py diff --git a/src/mcedit2/widgets/inspector/__init__.py b/src/mcedit2/widgets/inspector/__init__.py index 78601f8..141b6e8 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 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): diff --git a/src/mcedit2/widgets/inspector/tileentities/command.py b/src/mcedit2/widgets/inspector/tileentities/command.py index f8845d9..c0e5b01 100644 --- a/src/mcedit2/widgets/inspector/tileentities/command.py +++ b/src/mcedit2/widgets/inspector/tileentities/command.py @@ -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 diff --git a/src/mcedit2/widgets/inspector/tileentities/sign.py b/src/mcedit2/widgets/inspector/tileentities/sign.py new file mode 100644 index 0000000..0563c98 --- /dev/null +++ b/src/mcedit2/widgets/inspector/tileentities/sign.py @@ -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()) diff --git a/src/mceditlib/anvil/entities.py b/src/mceditlib/anvil/entities.py index 1fb94d8..ca27576 100644 --- a/src/mceditlib/anvil/entities.py +++ b/src/mceditlib/anvil/entities.py @@ -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, }