Source code for BaseMod.props.propExplorer

from PySide6.QtCore import Qt
from PySide6.QtGui import QPixmap, QAction
from PySide6.QtWidgets import QTreeWidgetItem, QListWidgetItem, QTableWidgetItem

from BaseMod.Explorer import Explorer
from RWS.Loaders import Prop
from RWS.Core import PATH_COLLECTIONS_PROPS


[docs] class PropExplorer(Explorer):
[docs] def category_at_index(self, index): return self.props.categories[index]
[docs] def item_name(self, item) -> str: return item.name
[docs] def category_name(self, cat) -> str: return cat.name
[docs] def category_is_custom(self, cat) -> bool: return cat in self.props.custom_categories
@property def custom_categories_path(self) -> str: return PATH_COLLECTIONS_PROPS
[docs] def categories_modified(self): self.props.add_custom_props()
[docs] def category_items(self, cat) -> list: return cat.props
[docs] def get_categories(self) -> list: return self.props.categories
[docs] def get_all_items(self) -> list: return self.props.all_props()
[docs] def item_from_data(self, data) -> QListWidgetItem | None: filter = self.ui.SearchBar.text() if filter != "" and filter.lower() not in data.name.lower() and not self.simplemode: return None item = QListWidgetItem(data.name) item.setData(Qt.ItemDataRole.UserRole, data) item.setIcon(self.getimage(data.images[0])) return item
[docs] def treeitem_from_data(self, data) -> QTreeWidgetItem | None: filter = self.ui.SearchBar.text() if filter != "" and filter.lower() not in data.name.lower(): return None tileitem = QTreeWidgetItem([data.name]) tileitem.setData(0, Qt.ItemDataRole.UserRole, data) tileitem.setIcon(0, self.getimage(data.images[0])) return tileitem
[docs] def cat_from_data(self, cat) -> QTreeWidgetItem | None: filter = self.ui.SearchBar.text() if filter != "" and filter.lower() not in cat.name.lower() and not self.simplemode: return None color = cat.color image = QPixmap(20, 20) image.fill(color) item = QTreeWidgetItem([cat.name]) item.setIcon(0, image) item.setData(0, Qt.ItemDataRole.UserRole, cat) return item
[docs] def itemtype(self) -> type: return Prop
[docs] def preview_item(self, item: Prop): if item is None: self.previewprop.setOpacity(0) return self.previewprop.setOpacity(1) self.previewprop.setPixmap(self.getimage(item.images[0])) self.ui.Properties.clear() self.ui.Properties.setRowCount(4) self.ui.Properties.setColumnCount(1) self.ui.Properties.setVerticalHeaderItem(0, QTableWidgetItem("Name")) self.ui.Properties.setItem(0, 0, QTableWidgetItem(item.name)) self.ui.Properties.setVerticalHeaderItem(1, QTableWidgetItem("Description")) self.ui.Properties.setItem(1, 0, QTableWidgetItem(item.description)) self.ui.Properties.setVerticalHeaderItem(2, QTableWidgetItem("Size")) self.ui.Properties.setItem(2, 0, QTableWidgetItem(f"{item.size.width()}x{item.size.height()}")) self.ui.Properties.setVerticalHeaderItem(3, QTableWidgetItem("Tags")) self.ui.Properties.setItem(3, 0, QTableWidgetItem(", ".join(item.tags))) self.ui.Properties.adjustSize() self.ui.Properties.resizeColumnsToContents()
[docs] def __init__(self, editor, parent=None): self.props = editor.manager.props super().__init__(editor.mod, parent) self.previewprop = self.preview.workscene.addPixmap(QPixmap(1, 1)) self.preview.items.append(self.previewprop) self.ui.LItem.setText("Prop") self.ui.LItems.setText("Props") self.setWindowTitle("Prop Explorer") self.hide() self.prop_explorer_action = QAction("Prop Explorer") self.manager.window_menu.addAction(self.prop_explorer_action) self.link_action(self.prop_explorer_action) self.mod.bmconfig.propexplorer_key.link_action(self.prop_explorer_action) self.itemselected.connect(editor.setprop) self.props.propschanged.connect(self.load_categories) self.ui.LayerBox.setVisible(False) self.ui.RenderOption.setVisible(False) self.ui.ToggleCollisions.setVisible(False) self.ui.TogglePreview.setVisible(False) self.ui.Pin.setVisible(False)
[docs] def getimage(self, image): if isinstance(image, QPixmap): return image return QPixmap.fromImage(image)