# coding: utf-8
from PyQt5.QtWidgets import QWidget, QStackedLayout

from mhw_armor_edit.editor.models import EditorPlugin, EquipType
from mhw_armor_edit.ftypes.sed import Sed, SedEntry
from mhw_armor_edit.struct_table import StructTableModel, SortFilterTableView


class SedTableModel(StructTableModel):
    def __init__(self, parent=None):
        super().__init__(SedEntry.fields(), parent)

    def get_field_value(self, entry, field):
        value = getattr(entry, field)
        if field == "equip_type":
            return EquipType(value).name
        return super().get_field_value(entry, field)


class SedEditor(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.model = None
        self.table_model = SedTableModel(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
        if model is None:
            self.table_model.update([])
        else:
            self.table_model.update(model.data.entries)


class SedPlugin(EditorPlugin):
    pattern = "*.sed"
    data_factory = Sed
    widget_factory = SedEditor
    relations = {}