Exemplo n.º 1
0
class cMainWindow(QMainWindow):
    def __init__(self):
        super(cMainWindow, self).__init__()
        loadUi('MainWindow.ui', self)
        self.mModel = Model.cModel()
        self.mainList.setModel( self.mModel )
        self.treeView.setModel( self.mModel )

        self.mMapper = QDataWidgetMapper()
        self.mMapper.setModel( self.mModel )
        self.mMapper.setOrientation( Qt.Vertical )
        self.mMapper.addMapping( self.nameLineEdit, 0)
        self.mMapper.addMapping( self.weaponComboBox, 1, b"currentText" )
        self.mMapper.addMapping( self.shiledSpinBox, 2)

        self.mainList.selectionModel().currentChanged.connect( self.CombattantSelected )

        self.shiledSpinBox.valueChanged.connect( self.SubmitToModel )
        self.weaponComboBox.currentIndexChanged.connect( self.SubmitToModel )

        weaponList = "Fist", "Dagger", "Sword", "Pike"
        self.weaponComboBox.addItems( weaponList )
    # --------------------------------


    def CombattantSelected(self, iIndex):
        self.mMapper.setRootIndex( iIndex )
        self.mMapper.toFirst()
    # --------------------------------


    def  SubmitToModel(self, iValue):
        self.mMapper.submit()
    # --------------------------------
Exemplo n.º 2
0
class CommitDateMaxFilterEditor(QWidget, Ui_CommitDateMaxFilter):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)

        self._data_mapper = QDataWidgetMapper()

    def setModel(self, model):
        self._model = model
        self._data_mapper.setModel(model)
        self._data_mapper.addMapping(self.uiCommitDateMax, 2)

    def setSelection(self, current: QModelIndex) -> None:
        parent = current.parent()
        self._data_mapper.setRootIndex(parent)
        self._data_mapper.setCurrentModelIndex(current)
Exemplo n.º 3
0
class CommitDateDeltaMinFilterEditor(QWidget, Ui_CommitDateDeltaMinFilter):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)

        self._data_mapper = QDataWidgetMapper()
        self.uiHelp.clicked.connect(_showTimeDurationHelp)

    def setModel(self, model):
        self._model = model
        self._data_mapper.setModel(model)
        self._data_mapper.addMapping(self.uiCommitDateDeltaMin, 2)

    def setSelection(self, current: QModelIndex) -> None:
        parent = current.parent()
        self._data_mapper.setRootIndex(parent)
        self._data_mapper.setCurrentModelIndex(current)
Exemplo n.º 4
0
class AuthorFilterEditor(QWidget, Ui_AuthorFilterProperties):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)

        self._data_mapper = QDataWidgetMapper()

    def setModel(self, model):
        self._model = model
        self._data_mapper.setModel(model)
        self._data_mapper.addMapping(self.uiAuthorName, 2)
        self._data_mapper.addMapping(self.uiAuthorEmail, 3)

    def setSelection(self, current: QModelIndex) -> None:
        parent = current.parent()
        self._data_mapper.setRootIndex(parent)
        self._data_mapper.setCurrentModelIndex(current)
Exemplo n.º 5
0
class NodeEditor(QWidget, Ui_FilterNodeProperties):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)

        self._data_mapper = QDataWidgetMapper()

    def setModel(self, model):
        self._model = model
        self._data_mapper.setModel(model)
        self._data_mapper.addMapping(self.uiName, 0)
        self._data_mapper.addMapping(self.uiComment, 1)

    def setSelection(self, current: QModelIndex) -> None:
        parent = current.parent()
        self._data_mapper.setRootIndex(parent)
        self._data_mapper.setCurrentModelIndex(current)
Exemplo n.º 6
0
def setMappings(mappings):
    """Set the mappings between the model and widgets.
    TODO: - Should this be extended to accept other columns?
          - Check if the already has the model.
    """
    column = 1
    mappers = list()
    for widget, obj in mappings:
        mapper = QDataWidgetMapper(widget)
        # logger.debug(obj.model())
        mapper.setModel(obj.model())
        mapper.addMapping(widget, column)
        delegate = Delegate(widget)
        mapper.setItemDelegate(delegate)
        mapper.setRootIndex(obj.parent().index())
        mapper.setCurrentModelIndex(obj.index())
        # QDataWidgetMapper needs a focus event to notice a change in the data.
        # To make sure the model is informed about the change, I connected the
        # stateChanged signal of the QCheckBox to the submit slot of the
        # QDataWidgetMapper. The same idea goes for the QComboBox.
        # https://bugreports.qt.io/browse/QTBUG-1818
        if isinstance(widget, QCheckBox):
            signal = widget.stateChanged
            try:
                signal.disconnect()
            except TypeError:
                pass
            signal.connect(mapper.submit)
        elif isinstance(widget, QComboBox):
            signal = widget.currentTextChanged
            try:
                signal.disconnect()
            except TypeError:
                pass
            signal.connect(mapper.submit)
        mappers.append(mapper)
    return mappers
Exemplo n.º 7
0
class ArmorEditor(ArmorEditorWidgetBase, ArmorEditorWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.model = None
        self.parts_tree_model = ArmorSetTreeModel()
        self.skill_model = SkillTranslationModel()
        self.armor_item_mapper = QDataWidgetMapper(self)
        self.armor_item_mapper.setItemDelegate(ItemDelegate())
        self.armor_item_mapper.setModel(self.parts_tree_model)
        self.parts_tree_view.setModel(self.parts_tree_model)
        self.parts_tree_view.activated.connect(
            self.handle_parts_tree_activated)
        self.import_export_manager = ImportExportManager(self.parts_tree_view)
        self.import_export_manager.connect_custom_context_menu()
        for it in ("set_skill1_value", "set_skill2_value", "skill1_value",
                   "skill2_value", "skill3_value"):
            getattr(self, it).setModel(self.skill_model)
        mappings = [
            (self.id_value, Column.id, b"text"),
            (self.name_value, Column.gmd_name_index, b"text"),
            (self.description_value, Column.gmd_desc_index, b"text"),
            (self.setid_value, Column.set_id),
            (self.set_group_value, Column.set_group),
            (self.type_value, Column.type, b"currentIndex"),
            (self.order_value, Column.order),
            (self.variant_value, Column.variant, b"currentIndex"),
            (self.equip_slot_value, Column.equip_slot, b"currentIndex"),
            (self.gender_value, Column.gender, b"currentIndex"),
            (self.mdl_main_id_value, Column.mdl_main_id),
            (self.mdl_secondary_id_value, Column.mdl_secondary_id),
            (self.icon_color_value, Column.icon_color),
            (self.defense_value, Column.defense),
            (self.rarity_value, Column.rarity),
            (self.cost_value, Column.cost),
            (self.fire_res_value, Column.fire_res),
            (self.water_res_value, Column.water_res),
            (self.thunder_res_value, Column.thunder_res),
            (self.ice_res_value, Column.ice_res),
            (self.dragon_res_value, Column.dragon_res),
            (self.set_skill1_value, Column.set_skill1),
            (self.set_skill1_lvl_value, Column.set_skill1_lvl),
            (self.set_skill2_value, Column.set_skill2),
            (self.set_skill2_lvl_value, Column.set_skill2_lvl),
            (self.skill1_value, Column.skill1),
            (self.skill1_lvl_value, Column.skill1_lvl),
            (self.skill2_value, Column.skill2),
            (self.skill2_lvl_value, Column.skill2_lvl),
            (self.skill3_value, Column.skill3),
            (self.skill3_lvl_value, Column.skill3_lvl),
            (self.num_gem_slots, Column.num_gem_slots),
            (self.gem_slot1_lvl_value, Column.gem_slot1_lvl),
            (self.gem_slot2_lvl_value, Column.gem_slot2_lvl),
            (self.gem_slot3_lvl_value, Column.gem_slot3_lvl),
        ]
        for mapping in mappings:
            self.armor_item_mapper.addMapping(*mapping)

    def handle_parts_tree_activated(self, qindex: QModelIndex):
        if isinstance(qindex.internalPointer(), ArmorSetNode):
            return
        self.armor_item_mapper.setRootIndex(qindex.parent())
        self.armor_item_mapper.setCurrentModelIndex(qindex)
        entry = qindex.internalPointer().ref
        self.crafting_requirements_editor.set_current(entry.id)

    def set_model(self, model):
        self.model = model
        if self.model is None:
            self.parts_tree_model = None
            self.parts_tree_view.setModel(None)
            return

        self.skill_model.update(model.get_relation_data("t9n_skill_pt"))
        self.crafting_requirements_editor.set_model(model, None)
        self.parts_tree_model.update(model)
        self.configure_tree_view()

    def configure_tree_view(self):
        header = self.parts_tree_view.header()
        header.setSectionResizeMode(0, QHeaderView.Stretch)
        header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
        header.setStretchLastSection(False)
        for i in range(2, self.parts_tree_model.columnCount(None)):
            header.hideSection(i)