diff --git a/gui/copySelectDialog.py b/gui/copySelectDialog.py index 723247b05..349d45b05 100644 --- a/gui/copySelectDialog.py +++ b/gui/copySelectDialog.py @@ -193,7 +193,7 @@ class CopySelectDialog(wx.Dialog): def exportEsi(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) - Port.exportESI(fit, True, callback) + Port.exportESI(fit, False, False, False, callback) def exportXml(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) diff --git a/gui/esiFittings.py b/gui/esiFittings.py index 0f9950880..fde4f4999 100644 --- a/gui/esiFittings.py +++ b/gui/esiFittings.py @@ -283,7 +283,7 @@ class ExportToEve(AuxiliaryFrame): def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title=_t("Export fit to EVE"), pos=wx.DefaultPosition, - size=wx.Size(400, 140) if "wxGTK" in wx.PlatformInfo else wx.Size(350, 115), resizeable=True) + size=wx.Size(400, 175) if "wxGTK" in wx.PlatformInfo else wx.Size(350, 145), resizeable=True) self.mainFrame = parent @@ -305,6 +305,16 @@ class ExportToEve(AuxiliaryFrame): self.exportChargesCb.Bind(wx.EVT_CHECKBOX, self.OnChargeExportChange) mainSizer.Add(self.exportChargesCb, 0, 0, 5) + self.exportImplantsCb = wx.CheckBox(self, wx.ID_ANY, _t('Export Implants'), wx.DefaultPosition, wx.DefaultSize, 0) + self.exportImplantsCb.SetValue(EsiSettings.getInstance().get('exportImplants')) + self.exportImplantsCb.Bind(wx.EVT_CHECKBOX, self.OnImplantsExportChange) + mainSizer.Add(self.exportImplantsCb, 0, 0, 5) + + self.exportBoostersCb = wx.CheckBox(self, wx.ID_ANY, _t('Export Boosters'), wx.DefaultPosition, wx.DefaultSize, 0) + self.exportBoostersCb.SetValue(EsiSettings.getInstance().get('exportBoosters')) + self.exportBoostersCb.Bind(wx.EVT_CHECKBOX, self.OnBoostersExportChange) + mainSizer.Add(self.exportBoostersCb, 0, 0, 5) + self.exportBtn.Bind(wx.EVT_BUTTON, self.exportFitting) self.statusbar = wx.StatusBar(self) @@ -324,6 +334,14 @@ class ExportToEve(AuxiliaryFrame): EsiSettings.getInstance().set('exportCharges', self.exportChargesCb.GetValue()) event.Skip() + def OnImplantsExportChange(self, event): + EsiSettings.getInstance().set('exportImplants', self.exportChargesCb.GetValue()) + event.Skip() + + def OnBoostersExportChange(self, event): + EsiSettings.getInstance().set('exportBoosters', self.exportChargesCb.GetValue()) + event.Skip() + def updateCharList(self): sEsi = Esi.getInstance() chars = sEsi.getSsoCharacters() @@ -360,8 +378,10 @@ class ExportToEve(AuxiliaryFrame): sFit = Fit.getInstance() exportCharges = self.exportChargesCb.GetValue() + exportImplants = self.exportImplantsCb.GetValue() + exportBoosters = self.exportBoostersCb.GetValue() try: - data = sPort.exportESI(sFit.getFit(fitID), exportCharges) + data = sPort.exportESI(sFit.getFit(fitID), exportCharges, exportImplants, exportBoosters) except ESIExportException as e: msg = str(e) if not msg: diff --git a/service/port/esi.py b/service/port/esi.py index 905dc75f1..ef708c972 100644 --- a/service/port/esi.py +++ b/service/port/esi.py @@ -56,7 +56,7 @@ INV_FLAG_DRONEBAY = 87 INV_FLAG_FIGHTER = 158 -def exportESI(ofit, exportCharges, callback): +def exportESI(ofit, exportCharges, exportImplants, exportBoosters, callback): # A few notes: # max fit name length is 50 characters # Most keys are created simply because they are required, but bogus data is okay @@ -133,6 +133,22 @@ def exportESI(ofit, exportCharges, callback): item['type_id'] = fighter.item.ID fit['items'].append(item) + if exportImplants: + for implant in ofit.implants: + item = nested_dict() + item['flag'] = INV_FLAG_CARGOBAY + item['quantity'] = 1 + item['type_id'] = implant.item.ID + fit['items'].append(item) + + if exportBoosters: + for booster in ofit.boosters: + item = nested_dict() + item['flag'] = INV_FLAG_CARGOBAY + item['quantity'] = 1 + item['type_id'] = booster.item.ID + fit['items'].append(item) + if len(fit['items']) == 0: raise ESIExportException("Cannot export fitting: module list cannot be empty.") diff --git a/service/port/port.py b/service/port/port.py index 2e20d95e4..9014ef1ce 100644 --- a/service/port/port.py +++ b/service/port/port.py @@ -323,8 +323,8 @@ class Port: return importESI(string) @staticmethod - def exportESI(fit, exportCharges, callback=None): - return exportESI(fit, exportCharges, callback=callback) + def exportESI(fit, exportCharges, exportImplants, exportBoosters, callback=None): + return exportESI(fit, exportCharges, exportImplants, exportBoosters, callback=callback) # XML-related methods @staticmethod diff --git a/service/settings.py b/service/settings.py index ed1fecf74..c974a8a17 100644 --- a/service/settings.py +++ b/service/settings.py @@ -376,6 +376,8 @@ class EsiSettings: "timeout": 60, "server": "Tranquility", "exportCharges": True, + "exportImplants": True, + "exportBoosters": True, "enforceJwtExpiration": True }