Add display name label to inventory editor. Rename "name" to "displayName" in data files. Add fallback for items without a defined displayName.
xxx add unlocalizedName and load Minecraft translation files?
This commit is contained in:
parent
b474a8dca2
commit
30cf6c4197
@ -26,6 +26,7 @@ class InventoryItemModel(QtCore.QAbstractItemModel):
|
||||
ItemIconRole = ItemRawIDRole + 1
|
||||
ItemDamageRole = ItemIconRole + 1
|
||||
ItemCountRole = ItemDamageRole + 1
|
||||
ItemDisplayNameRole = ItemCountRole + 1
|
||||
|
||||
def __init__(self, itemListRef, editorSession):
|
||||
super(InventoryItemModel, self).__init__()
|
||||
@ -53,7 +54,7 @@ class InventoryItemModel(QtCore.QAbstractItemModel):
|
||||
if itemStack is None:
|
||||
return None
|
||||
|
||||
if role == self.ItemIconRole:
|
||||
if role in (self.ItemIconRole, self.ItemDisplayNameRole):
|
||||
try:
|
||||
itemType = itemStack.itemType
|
||||
except ValueError as e: # itemType not mapped
|
||||
@ -61,7 +62,11 @@ class InventoryItemModel(QtCore.QAbstractItemModel):
|
||||
except KeyError as e: # missing NBT tag?
|
||||
log.exception("Error while reading item data: %r", e)
|
||||
return None
|
||||
return ItemTypeIcon(itemType, self.editorSession, itemStack)
|
||||
if role == self.ItemIconRole:
|
||||
return ItemTypeIcon(itemType, self.editorSession, itemStack)
|
||||
|
||||
if role == self.ItemDisplayNameRole:
|
||||
return itemType.displayName
|
||||
|
||||
if role == self.ItemIDRole:
|
||||
return itemStack.id
|
||||
@ -289,8 +294,11 @@ class InventoryEditor(QtGui.QWidget):
|
||||
|
||||
self.currentIndex = None
|
||||
|
||||
self.itemNameLabel = QtGui.QLabel()
|
||||
|
||||
self.setLayout(Column(Row(self.inventoryView,
|
||||
Column(self.itemListSearchBox, self.itemList)),
|
||||
Row(QtGui.QLabel("Selected item:"), self.itemNameLabel, None),
|
||||
Row(QtGui.QLabel("Internal Name"), self.internalNameField,
|
||||
self.rawIDCheckbox, self.rawIDInput,
|
||||
QtGui.QLabel("Damage"), self.damageInput,
|
||||
@ -371,6 +379,9 @@ class InventoryEditor(QtGui.QWidget):
|
||||
tagRef = self._itemListRef.getItemInSlot(index.row())
|
||||
self.itemNBTEditor.setRootTagRef(tagRef)
|
||||
|
||||
displayName = index.data(InventoryItemModel.ItemDisplayNameRole)
|
||||
self.itemNameLabel.setText(displayName)
|
||||
|
||||
def searchTextChanged(self, value):
|
||||
self.proxyModel = QtGui.QSortFilterProxyModel()
|
||||
self.proxyModel.setSourceModel(self.itemListModel)
|
||||
|
@ -35,7 +35,7 @@ class ItemTypeListModel(QtCore.QAbstractListModel):
|
||||
row = index.row()
|
||||
itemType = self.allItems[row]
|
||||
if role == Qt.DisplayRole:
|
||||
return itemType.name
|
||||
return itemType.displayName
|
||||
if role == Qt.DecorationRole:
|
||||
return ItemTypeIcon(itemType, self.editorSession)
|
||||
if role == self.InternalNameRole:
|
||||
|
@ -73,7 +73,7 @@ class ItemTypeSet(object):
|
||||
|
||||
retval = itemJson.get(attr)
|
||||
|
||||
if attr in ("name", "texture"):
|
||||
if attr in ("displayName", "texture"):
|
||||
if isinstance(retval, list):
|
||||
assert itemType.meta is not None, "ItemType %s: Got a list %s for attr %s but meta is None" % (
|
||||
itemType.internalName, retval, attr
|
||||
@ -84,6 +84,12 @@ class ItemTypeSet(object):
|
||||
return retval[itemType.meta]
|
||||
|
||||
if retval is None:
|
||||
if attr == "displayName":
|
||||
try:
|
||||
return itemType.internalName
|
||||
except AttributeError:
|
||||
return "Unknown item %d" % itemType.ID
|
||||
|
||||
if attr not in self.defaults:
|
||||
raise AttributeError(attr)
|
||||
retval = self.defaults[attr]
|
||||
@ -97,7 +103,8 @@ class ItemTypeSet(object):
|
||||
internalName = "minecraft:" + jsonName
|
||||
try:
|
||||
ID = int(item["id"])
|
||||
name = item["name"]
|
||||
displayName = item["displayName"]
|
||||
|
||||
item["internalName"] = internalName
|
||||
|
||||
self.IDsByInternalName[internalName] = ID
|
||||
@ -105,9 +112,9 @@ class ItemTypeSet(object):
|
||||
|
||||
texture = item.get("texture")
|
||||
|
||||
if isinstance(name, list):
|
||||
if isinstance(displayName, list):
|
||||
# damage is meta value
|
||||
for meta, _ in enumerate(name):
|
||||
for meta, _ in enumerate(displayName):
|
||||
self.allItems.append(ItemType(ID, meta, self))
|
||||
|
||||
elif isinstance(texture, list):
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user