Example #1
0
    def __init__(self, slotLayout, rows=None, columns=None):
        """
        slotLayout should be a list of (x, y, slotNumber) tuples.

        rows and columns are optional. Pass them if you need the grid to be larger than the slotLayout.

        :param slotLayout:
        :type slotLayout: list[tuple(int, int, int)]
        :type rows: int | None
        :type columns: int | None
        :return:
        :rtype:
        """

        super(InventoryEditor, self).__init__()

        self.inventoryView = InventoryView(slotLayout, rows, columns)
        self.inventoryView.slotClicked.connect(self.slotWasClicked)

        self.itemList = QtGui.QListView()
        self.itemList.setMinimumWidth(200)
        self.itemList.clicked.connect(self.itemTypeChanged)

        self.itemList.setDragEnabled(True)
        self.itemList.setDragDropMode(QtGui.QAbstractItemView.DragOnly)
        self.itemListModel = None

        self.itemListSearchBox = QtGui.QComboBox()
        self.itemListSearchBox.editTextChanged.connect(self.searchTextChanged)
        self.itemListSearchBox.setEditable(True)

        self.inventoryModel = None

        self.internalNameField = QtGui.QLineEdit()
        self.internalNameField.textChanged.connect(self.internalNameChanged)

        self.rawIDInput = QtGui.QSpinBox(minimum=-32768, maximum=32767)
        self.rawIDInput.setMaximumWidth(100)
        self.rawIDInput.valueChanged.connect(self.rawIDChanged)

        self.damageInput = QtGui.QSpinBox(minimum=-32768, maximum=32767)
        self.damageInput.valueChanged.connect(self.damageChanged)

        self.countInput = QtGui.QSpinBox(minimum=-32768, maximum=32767)
        self.countInput.valueChanged.connect(self.countChanged)

        self.rawIDCheckbox = QtGui.QCheckBox("Edit raw ID")
        self.rawIDCheckbox.toggled.connect(self.rawIDInput.setEnabled)

        self.itemNBTEditor = NBTEditorWidget()
        self.itemNBTEditor.tagValueChanged.connect(self.tagValueDidChange)

        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,
                    QtGui.QLabel("Count"), self.countInput),
                (self.itemNBTEditor, 1)))

        self.enableFields(False)