Files
pyfa/gui/builtinContextMenus/shared/patterns.py
2022-03-12 02:19:03 +03:00

36 lines
1.3 KiB
Python

from collections import OrderedDict
from itertools import chain
# noinspection PyPackageRequirements
import wx
from gui.utils.sorter import smartSort
from service.damagePattern import DamagePattern as DmgPatternSvc
_t = wx.GetTranslation
class DamagePatternMixin:
def _getPatterns(self):
sDP = DmgPatternSvc.getInstance()
builtinPatterns = sDP.getBuiltinDamagePatternList()
userPatterns = sorted(sDP.getUserDamagePatternList(), key=lambda p: smartSort(p.fullName))
# Order here is important: patterns with duplicate names from the latter will overwrite
# patterns from the former
patterns = sorted(
chain(builtinPatterns, userPatterns),
key=lambda p: p.fullName not in ["Uniform", "Selected Ammo"])
return patterns
def _getItems(self, patterns):
items = (OrderedDict(), OrderedDict())
for pattern in patterns:
container = items
for categoryName in pattern.hierarchy:
categoryName = _t(categoryName) if pattern.builtin else categoryName
container = container[1].setdefault(categoryName, (OrderedDict(), OrderedDict()))
shortName = _t(pattern.shortName) if pattern.builtin else pattern.shortName
container[0][shortName] = pattern
return items