From 546a3b6e017c26a0f23c65a5a9fb194af9a0b433 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sat, 27 Jun 2020 21:06:16 -0400 Subject: [PATCH] Fix turrent ammo type grouping (using English names for grouping). Also made missile damage type grouping translation-aware --- gui/builtinContextMenus/moduleAmmoChange.py | 24 ++++++++++++++------- pyfa.py | 3 +-- service/ammo.py | 6 +++--- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/gui/builtinContextMenus/moduleAmmoChange.py b/gui/builtinContextMenus/moduleAmmoChange.py index 6fc81313ca..0fd4938d3b 100644 --- a/gui/builtinContextMenus/moduleAmmoChange.py +++ b/gui/builtinContextMenus/moduleAmmoChange.py @@ -19,6 +19,14 @@ def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() # Format: {type ID: set(loadable, charges)} self.loadableChargesCache = {} + # Translations for the missile categories, as the text here is auto-generated via damage attributes + self.ddMissileChargeCatTrans = { + 'em': _t('EM'), + 'thermal': _t('Thermal'), + 'explosive': _t('Explosive'), + 'kinetic': _t('Kinetic'), + 'mixed': _t('Mixed') + } def display(self, callingWindow, srcContext, mainItem, selection): if srcContext not in ('fittingModule', 'projectedModule'): @@ -48,7 +56,7 @@ def _getAmmo(self, mod): def _addCharge(self, menu, charge): id_ = ContextMenuCombined.nextID() - name = charge.name if charge is not None else 'Empty' + name = charge.name if charge is not None else _t('Empty') self.chargeEventMap[id_] = charge item = wx.MenuItem(menu, id_, name) menu.Bind(wx.EVT_MENU, self.handleAmmoSwitch, item) @@ -71,7 +79,7 @@ def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, p self.chargeEventMap = {} modType, chargeDict = Ammo.getInstance().getModuleStructuredAmmo(self.module, ammo=self.mainCharges) if modType == 'ddTurret': - self._addSeparator(menu, 'Long Range') + self._addSeparator(menu, _t('Long Range')) menuItems = [] for charges in chargeDict.values(): if len(charges) == 1: @@ -83,25 +91,25 @@ def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, p subMenu = wx.Menu() subMenu.Bind(wx.EVT_MENU, self.handleAmmoSwitch) menuItem.SetSubMenu(subMenu) - self._addSeparator(subMenu, 'Less Damage') + self._addSeparator(subMenu, _t('Less Damage')) for charge in charges: subMenu.Append(self._addCharge(rootMenu if msw else subMenu, charge)) - self._addSeparator(subMenu, 'More Damage') + self._addSeparator(subMenu, _t('More Damage')) for menuItem in menuItems: menu.Append(menuItem) - self._addSeparator(menu, 'Short Range') + self._addSeparator(menu, _t('Short Range')) elif modType == 'ddMissile': menuItems = [] for chargeCatName, charges in chargeDict.items(): - menuItem = wx.MenuItem(menu, wx.ID_ANY, chargeCatName.capitalize()) + menuItem = wx.MenuItem(menu, wx.ID_ANY, self.ddMissileChargeCatTrans.get(chargeCatName, chargeCatName)) menuItems.append(menuItem) subMenu = wx.Menu() subMenu.Bind(wx.EVT_MENU, self.handleAmmoSwitch) menuItem.SetSubMenu(subMenu) - self._addSeparator(subMenu, 'Less Damage') + self._addSeparator(subMenu, _t('Less Damage')) for charge in charges: subMenu.Append(self._addCharge(rootMenu if msw else subMenu, charge)) - self._addSeparator(subMenu, 'More Damage') + self._addSeparator(subMenu, _t('More Damage')) for menuItem in menuItems: menu.Append(menuItem) elif modType == 'general': diff --git a/pyfa.py b/pyfa.py index ce47cc4479..6b4186048d 100755 --- a/pyfa.py +++ b/pyfa.py @@ -106,8 +106,7 @@ def _process_args(self, largs, rargs, values): config.debug = options.debug config.loggingLevel = config.LOGLEVEL_MAP.get(options.logginglevel.lower(), config.LOGLEVEL_MAP['error']) - from service.settings import LocaleSettings - config.language = options.language or LocaleSettings.getInstance().get('locale') + config.language = options.language config.defPaths(options.savepath) config.defLogging() diff --git a/service/ammo.py b/service/ammo.py index b7b69924f3..63b726cb93 100644 --- a/service/ammo.py +++ b/service/ammo.py @@ -69,16 +69,16 @@ def turretSorter(charge): damage += d # Take optimal and falloff as range factor rangeFactor = range_ + falloff - return -rangeFactor, charge.name.rsplit()[-2:], damage, charge.name + return -rangeFactor, charge.typeName.rsplit()[-2:], damage, charge.name all = OrderedDict() sub = [] prevNameBase = None prevRange = None for charge in sorted(chargesFlat, key=turretSorter): - if 'civilian' in charge.name.lower(): + if 'civilian' in charge.typeName.lower(): continue - currNameBase = ' '.join(charge.name.rsplit()[-2:]) + currNameBase = ' '.join(charge.typeName.rsplit()[-2:]) currRange = charge.getAttribute('weaponRangeMultiplier') if sub and (currRange != prevRange or currNameBase != prevNameBase): all[sub[0].name] = sub