def get_equip(self, name): """Return the raw values of both slots in a given equipment bag.""" logging.debug("Getting %s contents", name) equip = getattr(self.ui, name) main_cell = equip.item(0, 0) glamor_cell = equip.item(0, 1) # when you drag itemwidgets around the cell will become empty so just # pretend it had an empty slot value empty_main = (main_cell is None or type(main_cell) is QTableWidgetItem or main_cell.item is None) if empty_main: main = None else: widget = main_cell.item main = saves.new_item(widget["name"], widget["count"], widget["parameters"]) empty_glamor = (glamor_cell is None or type(glamor_cell) is QTableWidgetItem or glamor_cell.item is None) if empty_glamor: glamor = None else: widget = glamor_cell.item glamor = saves.new_item(widget["name"], widget["count"], widget["parameters"]) return main, glamor
def get_bag(self, name): """Return the entire contents of a given non-equipment bag as raw values.""" logging.debug("Getting %s contents", name) row = column = 0 bag = getattr(self.player, "get_" + name)() for i in range(len(bag)): item = getattr(self.ui, name).item(row, column) empty_item = (item is None or type(item) is QTableWidgetItem or item.item is None) if empty_item: item = None else: widget = item.item item = saves.new_item(widget["name"], widget["count"], widget["parameters"]) bag[i] = item # so far all non-equip bags are 10 cols long column += 1 if (column % 10) == 0: row += 1 column = 0 return bag
def new_item_edit(self, bag): """Display a new item edit dialog using the select cell in a given bag.""" logging.debug("New item edit dialog") row = bag.currentRow() column = bag.currentColumn() current = bag.currentItem() item = saves.new_item("", 0, {}) # cells don't retain ItemSlot widget when they've been dragged away if type(current) is QTableWidgetItem or current.item is None: pass else: item.update(current.item) item_edit = ItemEdit(self.window, item, self.player, self.remember_browser) def update_slot(): logging.debug("Writing changes to slot") try: new_slot = ItemWidget(item_edit.get_item(), self.assets) if new_slot.item["name"] != "": bag.setItem(row, column, new_slot) self.remember_browser = item_edit.remember_browser self.set_edited() except TypeError: dialog = QMessageBox(item_edit.dialog) dialog.setWindowTitle("Invalid Item ID") dialog.setText("That item ID does not exist in the Starbound assets.") dialog.setStandardButtons(QMessageBox.Close) dialog.setIcon(QMessageBox.Critical) dialog.exec() def trash_slot(): dialog = QMessageBox(item_edit.dialog) dialog.setWindowTitle("Trash Item") dialog.setText("Are you sure?") dialog.setStandardButtons(QMessageBox.Yes | QMessageBox.No) dialog.setDefaultButton(QMessageBox.No) dialog.setIcon(QMessageBox.Question) if dialog.exec() == QMessageBox.Yes: logging.debug("Trashed item") bag.setItem(row, column, empty_slot()) item_edit.dialog.close() self.set_edited() item_edit.dialog.accepted.connect(update_slot) item_edit.ui.trash_button.clicked.connect(trash_slot) item_edit.dialog.exec()
def new_item_edit(self, bag): """Display a new item edit dialog using the select cell in a given bag.""" logging.debug("New item edit dialog") row = bag.currentRow() column = bag.currentColumn() current = bag.currentItem() item = saves.new_item("", 0, {}) # cells don't retain ItemSlot widget when they've been dragged away if type(current) is QTableWidgetItem or current.item is None: pass else: item.update(current.item) item_edit = ItemEdit(self.window, item, self.player, self.remember_browser) def update_slot(): logging.debug("Writing changes to slot") new_slot = ItemWidget(item_edit.get_item(), self.assets) if new_slot.item["name"] != "": bag.setItem(row, column, new_slot) self.remember_browser = item_edit.remember_browser self.set_edited() def trash_slot(): dialog = QMessageBox(item_edit.dialog) dialog.setWindowTitle("Trash Item") dialog.setText("Are you sure?") dialog.setStandardButtons(QMessageBox.Yes | QMessageBox.No) dialog.setDefaultButton(QMessageBox.No) dialog.setIcon(QMessageBox.Question) if dialog.exec() == QMessageBox.Yes: logging.debug("Trashed item") bag.setItem(row, column, empty_slot()) item_edit.dialog.close() self.set_edited() item_edit.dialog.accepted.connect(update_slot) item_edit.ui.trash_button.clicked.connect(trash_slot) item_edit.dialog.exec()
def update_item(self): """Update main item view with current item browser data.""" name = self.ui.item_type.text() # TODO: i guess eventually we're gonna need like.. some sort of generic # generate item function try: item = self.assets.items().get_item(name) if item[1].endswith("generatedgun"): options = self.assets.items().generate_gun(item) name = options["itemName"] elif item[1].endswith("generatedsword"): options = self.assets.items().generate_sword(item) name = options["itemName"] elif item[1].endswith("generatedshield"): options = self.assets.items().generate_shield(item) name = options["itemName"] elif item[1].endswith("sapling"): options = self.assets.items().generate_sapling(item) elif name == "filledcapturepod": options = self.assets.items().generate_filledcapturepod( item, self.player.get_uuid()) else: options = item[0] except TypeError: self.item = empty_slot().item self.ui.desc.setText( "<html><body><strong>Empty Slot</strong></body></html>") self.ui.icon.setPixmap(QPixmap()) self.clear_item_options() return self.ui.item_type.setText(name) self.item = saves.new_item(name, 1, options) self.ui.count.setValue(1) self.update_item_info(name, options) self.populate_options()
def update_item(self): """Update main item view with current item browser data.""" name = self.ui.item_type.text() # TODO: i guess eventually we're gonna need like.. some sort of generic # generate item function try: item = self.assets.items().get_item(name) if item[1].endswith("generatedgun"): options = self.assets.items().generate_gun(item) name = options["itemName"] elif item[1].endswith("generatedsword"): options = self.assets.items().generate_sword(item) name = options["itemName"] elif item[1].endswith("generatedshield"): options = self.assets.items().generate_shield(item) name = options["itemName"] elif item[1].endswith("sapling"): options = self.assets.items().generate_sapling(item) elif name == "filledcapturepod": options = self.assets.items().generate_filledcapturepod(item, self.player.get_uuid()) else: options = item[0] except TypeError: self.item = empty_slot().item self.ui.desc.setText("<html><body><strong>Empty Slot</strong></body></html>") self.ui.icon.setPixmap(QPixmap()) self.clear_item_options() return self.ui.item_type.setText(name) self.item = saves.new_item(name, 1, options) self.ui.count.setValue(1) self.update_item_info(name, options) self.populate_options()
def get_item(self): """Return an ItemWidget of the currently open item.""" name = self.ui.item_type.text() count = self.ui.count.value() data = self.item["data"] return saves.new_item(name, count, data)