# coding: utf-8 from PyQt5.QtWidgets import QWidget, QStackedLayout from mhw_armor_edit.editor.models import EditorPlugin from mhw_armor_edit.ftypes.sgpa import Sgpa, SgpaEntry from mhw_armor_edit.struct_table import StructTableModel, SortFilterTableView from mhw_armor_edit.utils import get_t9n_item, get_t9n_skill (id, *fields) = SgpaEntry.fields() columns = (id, "name", *fields) class SgpaTableModel(StructTableModel): def __init__(self, parent=None): super().__init__(columns, parent) def get_field_value(self, entry, field): if field == "name": return get_t9n_item(self.model, "t9n_item", entry.id) if field == "skill1_name": return get_t9n_skill(self.model, "t9n_skill_pt", entry.skill1_id) if field == "skill2_name": return get_t9n_skill(self.model, "t9n_skill_pt", entry.skill2_id) return getattr(entry, field) def update(self, model): self.model = model entries = [] if model is None else model.data.entries super().update(entries) class SgpaEditor(QWidget): def __init__(self, parent=None): super().__init__(parent) self.model = None self.table_model = SgpaTableModel(self) self.table_view = SortFilterTableView(self) self.table_view.setModel(self.table_model) self.setLayout(QStackedLayout(self)) self.layout().addWidget(self.table_view) def set_model(self, model): self.model = model self.table_model.update(model) class SgpaPlugin(EditorPlugin): pattern = "*.sgpa" data_factory = Sgpa widget_factory = SgpaEditor relations = { r"common\item\skillGemParam.sgpa": { "t9n_item": r"common\text\steam\item_eng.gmd", "t9n_skill_pt": r"common\text\vfont\skill_pt_eng.gmd", } }