Skip to content

Commit

Permalink
import/export full file, individual items. quick access menu
Browse files Browse the repository at this point in the history
  • Loading branch information
fre-sch committed May 3, 2019
1 parent 21bf23a commit 0263afe
Show file tree
Hide file tree
Showing 8 changed files with 338 additions and 173 deletions.
17 changes: 13 additions & 4 deletions src/mhw_armor_edit/editor/armor_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@

from PyQt5 import uic
from PyQt5.QtCore import (Qt, QModelIndex)
from PyQt5.QtWidgets import (QDataWidgetMapper, QHeaderView, QMenu)
from PyQt5.QtWidgets import (QDataWidgetMapper, QHeaderView)

from mhw_armor_edit.assets import Assets
from mhw_armor_edit.editor.models import (SkillTranslationModel,
EditorPlugin)
from mhw_armor_edit.ftypes.am_dat import AmDatEntry, AmDat
from mhw_armor_edit.import_export import (ExportDialog, ImportDialog,
ImportExportManager)
from mhw_armor_edit.import_export import (ImportExportManager)
from mhw_armor_edit.tree import TreeModel, TreeNode
from mhw_armor_edit.utils import ItemDelegate, get_t9n, create_action
from mhw_armor_edit.utils import ItemDelegate, get_t9n

log = logging.getLogger()
ArmorEditorWidget, ArmorEditorWidgetBase = uic.loadUiType(
Expand Down Expand Up @@ -243,3 +242,13 @@ class AmDatPlugin(EditorPlugin):
"t9n_skill_pt": r"common\text\vfont\skill_pt_eng.gmd",
}
}
import_export = {
"safe_attrs": [
"defense", "rarity", "cost", "fire_res", "water_res", "ice_res",
"thunder_res", "dragon_res", "num_gem_slots", "gem_slot1_lvl",
"gem_slot2_lvl", "gem_slot3_lvl", "set_skill1", "set_skill1_lvl",
"set_skill2", "set_skill2_lvl", "skill1", "skill1_lvl", "skill2",
"skill2_lvl", "skill3", "skill3_lvl", "mdl_main_id",
"mdl_secondary_id"
]
}
7 changes: 7 additions & 0 deletions src/mhw_armor_edit/editor/itm_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from mhw_armor_edit.assets import Assets
from mhw_armor_edit.editor.models import EditorPlugin
from mhw_armor_edit.ftypes.itm import Itm
from mhw_armor_edit.import_export import ImportExportManager
from mhw_armor_edit.utils import get_t9n_item, get_t9n


Expand Down Expand Up @@ -120,6 +121,9 @@ def data(self, qindex: QModelIndex, role=None):
column = qindex.column()
adapt = ModelAdapter(self.model, entry)
return adapt[column]
elif role == Qt.UserRole:
entry = self.entries[qindex.row()]
return entry

def setData(self, qindex: QModelIndex, value, role=None):
if role == Qt.EditRole or role == Qt.DisplayRole:
Expand Down Expand Up @@ -160,6 +164,9 @@ def __init__(self, parent=None):
self.mapper.setModel(self.itm_model)
self.item_browser.setModel(self.itm_model)
self.item_browser.activated.connect(self.handle_item_browser_activated)
self.import_export_manager = ImportExportManager(
self.item_browser, ItmPlugin.import_export.get("safe_attrs"))
self.import_export_manager.connect_custom_context_menu()
self.mapper.addMapping(self.name_value, Column.name, b"text")
self.mapper.addMapping(self.id_value, Column.id, b"text")
self.mapper.addMapping(self.description_value, Column.description, b"text")
Expand Down
1 change: 1 addition & 0 deletions src/mhw_armor_edit/editor/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ class EditorPlugin:
data_factory = None
widget_factory = None
relations = {}
import_export = {}

def __init_subclass__(subcls, **kwargs):
super().__init_subclass__(**kwargs)
Expand Down
13 changes: 12 additions & 1 deletion src/mhw_armor_edit/editor/weapon_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ def __init__(self, parent=None):
self.mapper.setItemDelegate(ItemDelegate())
self.mapper.setModel(self.table_model)
self.skill_id_value.setModel(self.skill_model)
self.import_export_manager = ImportExportManager(self.weapon_tree_view)
self.import_export_manager = ImportExportManager(
self.weapon_tree_view, WpDatPlugin.import_export.get("safe_attrs"))
self.import_export_manager.connect_custom_context_menu()
mappings = [
(self.id_value, WpDatEntry.id.index, b"text"),
Expand Down Expand Up @@ -262,3 +263,13 @@ class WpDatPlugin(EditorPlugin):
}
},
}
import_export = {
"safe_attrs": [
"base_model_id", "part1_id", "part2_id", "color", "is_fixed_upgrade",
"crafting_cost", "rarity", "kire_id", "handicraft", "raw_damage",
"defense", "affinity", "element_id", "element_damage",
"hidden_element_id", "hidden_element_damage", "elderseal",
"num_gem_slots", "gem_slot1_lvl", "gem_slot2_lvl", "gem_slot3_lvl",
"wep1_id", "wep2_id", "skill_id"
]
}
18 changes: 18 additions & 0 deletions src/mhw_armor_edit/editor/weapon_gun_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from mhw_armor_edit.editor.shell_table_editor import ShellTableTreeModel
from mhw_armor_edit.ftypes.bbtbl import BbtblEntry
from mhw_armor_edit.ftypes.wp_dat_g import WpDatGEntry, WpDatG
from mhw_armor_edit.import_export import ImportExportManager
from mhw_armor_edit.struct_table import StructTableModel
from mhw_armor_edit.utils import get_t9n, ItemDelegate

Expand All @@ -34,6 +35,9 @@ def get_field_value(self, entry, field):
def data(self, qindex, role=None):
if role == Qt.DisplayRole or role == Qt.EditRole:
return super().data(qindex, role)
elif role == Qt.UserRole:
entry = self.entries[qindex.row()]
return entry
return None

def headerData(self, section, orient, role=None):
Expand Down Expand Up @@ -92,6 +96,9 @@ def __init__(self, parent=None):
self.weapon_tree_view.activated.connect(self.handle_weapon_tree_view_activated)
self.skill_model = SkillTranslationModel()
self.skill_id_value.setModel(self.skill_model)
self.import_export_manager = ImportExportManager(
self.weapon_tree_view, WpDatGPlugin.import_export.get("safe_attrs"))
self.import_export_manager.connect_custom_context_menu()
mappings = [
(self.id_value, WpDatGEntry.id.index, b"text"),
(self.name_value, WpDatGEntry.gmd_name_index.index, b"text"),
Expand Down Expand Up @@ -225,3 +232,14 @@ class WpDatGPlugin(EditorPlugin):
}
},
}
import_export = {
"safe_attrs": [
"base_model_id", "part1_id", "part2_id", "color", "is_fixed_upgrade",
"muzzle_type", "barrel_type", "magazine_type", "scope_type",
"crafting_cost", "rarity", "raw_damage", "defense", "affinity",
"element_id", "element_damage", "hidden_element_id",
"hidden_element_damage", "elderseal", "shell_table_id", "deviation",
"num_gem_slots", "gem_slot1_lvl", "gem_slot2_lvl", "gem_slot3_lvl",
"special_ammo_type", "skill_id", "unk6",
]
}
Loading

0 comments on commit 0263afe

Please sign in to comment.