Merge branch 'master' into singularity
Conflicts: eos/db/saveddata/fit.py eos/effects/armoredwarfaremindlink.py eos/effects/elitebonuscommanddestroyerarmored1.py eos/effects/elitebonuscommanddestroyerinfo1.py eos/effects/elitebonuscommanddestroyerinfohidden1.py eos/effects/elitebonuscommanddestroyersiege1.py eos/effects/elitebonuscommanddestroyerskirmish1.py eos/effects/elitebonuscommandshiparmoredcs3.py eos/effects/elitebonuscommandshipinformationcs3.py eos/effects/elitebonuscommandshipinformationhiddencs3.py eos/effects/elitebonuscommandshipsiegecs3.py eos/effects/elitebonuscommandshipskirmishcs3.py eos/effects/miningforemanmindlink.py eos/effects/shipbonuscarriera4warfarelinksbonus.py eos/effects/shipbonuscarrierc4warfarelinksbonus.py eos/effects/shipbonuscarrierg4warfarelinksbonus.py eos/effects/shipbonuscarrierm4warfarelinksbonus.py eos/effects/shipbonusforceauxiliarya4warfarelinksbonus.py eos/effects/shipbonusforceauxiliaryc4warfarelinksbonus.py eos/effects/shipbonusforceauxiliaryg4warfarelinksbonus.py eos/effects/shipbonusforceauxiliarym4warfarelinksbonus.py eos/effects/shipbonussupercarriera5warfarelinksbonus.py eos/effects/shipbonussupercarrierc5warfarelinksbonus.py eos/effects/shipbonussupercarrierg5warfarelinksbonus.py eos/effects/shipbonussupercarrierm5warfarelinksbonus.py eos/effects/subsystembonusamarrdefensivearmoredwarfare.py eos/effects/subsystembonusamarrdefensiveinformationwarfare.py eos/effects/subsystembonusamarrdefensiveinformationwarfarehidden.py eos/effects/subsystembonusamarrdefensiveskirmishwarfare.py eos/effects/subsystembonuscaldaridefensiveinformationwarfare.py eos/effects/subsystembonuscaldaridefensiveinformationwarfarehidden.py eos/effects/subsystembonuscaldaridefensivesiegewarfare.py eos/effects/subsystembonuscaldaridefensiveskirmishwarfare.py eos/effects/subsystembonusgallentedefensivearmoredwarfare.py eos/effects/subsystembonusgallentedefensiveinformationwarfare.py eos/effects/subsystembonusgallentedefensiveinformationwarfarehidden.py eos/effects/subsystembonusgallentedefensiveskirmishwarfare.py eos/effects/subsystembonusminmatardefensivearmoredwarfare.py eos/effects/subsystembonusminmatardefensivesiegewarfare.py eos/effects/subsystembonusminmatardefensiveskirmishwarfare.py eos/saveddata/fit.py eos/saveddata/module.py gui/shipBrowser.py scripts/prep_data.py service/fit.py
This commit is contained in:
@@ -64,6 +64,9 @@ class PFGeneralPref ( PreferenceView):
|
||||
|
||||
self.cbExportCharges = wx.CheckBox( panel, wx.ID_ANY, u"Export loaded charges", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
mainSizer.Add( self.cbExportCharges, 0, wx.ALL|wx.EXPAND, 5 )
|
||||
|
||||
self.cbOpenFitInNew = wx.CheckBox( panel, wx.ID_ANY, u"Open fittings in a new page by default", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
mainSizer.Add( self.cbOpenFitInNew, 0, wx.ALL|wx.EXPAND, 5 )
|
||||
|
||||
defCharSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||
|
||||
@@ -81,6 +84,7 @@ class PFGeneralPref ( PreferenceView):
|
||||
self.cbMarketShortcuts.SetValue(self.sFit.serviceFittingOptions["showMarketShortcuts"] or False)
|
||||
self.cbGaugeAnimation.SetValue(self.sFit.serviceFittingOptions["enableGaugeAnimation"])
|
||||
self.cbExportCharges.SetValue(self.sFit.serviceFittingOptions["exportCharges"])
|
||||
self.cbOpenFitInNew.SetValue(self.sFit.serviceFittingOptions["openFitInNew"])
|
||||
|
||||
self.cbGlobalChar.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalCharStateChange)
|
||||
self.cbGlobalDmgPattern.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalDmgPatternStateChange)
|
||||
@@ -94,6 +98,7 @@ class PFGeneralPref ( PreferenceView):
|
||||
self.cbMarketShortcuts.Bind(wx.EVT_CHECKBOX, self.onCBShowShortcuts)
|
||||
self.cbGaugeAnimation.Bind(wx.EVT_CHECKBOX, self.onCBGaugeAnimation)
|
||||
self.cbExportCharges.Bind(wx.EVT_CHECKBOX, self.onCBExportCharges)
|
||||
self.cbOpenFitInNew.Bind(wx.EVT_CHECKBOX, self.onCBOpenFitInNew)
|
||||
|
||||
self.cbRackLabels.Enable(self.sFit.serviceFittingOptions["rackSlots"] or False)
|
||||
|
||||
@@ -158,8 +163,11 @@ class PFGeneralPref ( PreferenceView):
|
||||
|
||||
def onCBExportCharges(self, event):
|
||||
self.sFit.serviceFittingOptions["exportCharges"] = self.cbExportCharges.GetValue()
|
||||
|
||||
def onCBOpenFitInNew(self, event):
|
||||
self.sFit.serviceFittingOptions["openFitInNew"] = self.cbOpenFitInNew.GetValue()
|
||||
|
||||
def getImage(self):
|
||||
return BitmapLoader.getBitmap("prefs_settings", "gui")
|
||||
|
||||
PFGeneralPref.register()
|
||||
PFGeneralPref.register()
|
||||
@@ -69,6 +69,9 @@ class PFNetworkPref ( PreferenceView):
|
||||
self.nAddr = self.settings.getAddress()
|
||||
self.nPort = self.settings.getPort()
|
||||
self.nType = self.settings.getType()
|
||||
self.nAuth = self.settings.getProxyAuthDetails() # tuple of (login, password)
|
||||
if self.nAuth is None:
|
||||
self.nAuth = ("", "") # we don't want None here, it should be a tuple
|
||||
|
||||
ptypeSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||
|
||||
@@ -111,6 +114,21 @@ class PFNetworkPref ( PreferenceView):
|
||||
|
||||
mainSizer.Add( fgAddrSizer, 0, wx.EXPAND, 5)
|
||||
|
||||
# proxy auth information: login and pass
|
||||
self.stPSetLogin = wx.StaticText(panel, wx.ID_ANY, u"Username:", wx.DefaultPosition, wx.DefaultSize, 0)
|
||||
self.stPSetLogin.Wrap(-1)
|
||||
self.editProxySettingsLogin = wx.TextCtrl(panel, wx.ID_ANY, self.nAuth[0], wx.DefaultPosition, wx.DefaultSize, 0)
|
||||
self.stPSetPassword = wx.StaticText(panel, wx.ID_ANY, u"Password:", wx.DefaultPosition, wx.DefaultSize, 0)
|
||||
self.stPSetPassword.Wrap(-1)
|
||||
self.editProxySettingsPassword = wx.TextCtrl(panel, wx.ID_ANY, self.nAuth[1], wx.DefaultPosition,
|
||||
wx.DefaultSize, wx.TE_PASSWORD)
|
||||
pAuthSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
pAuthSizer.Add(self.stPSetLogin, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
pAuthSizer.Add(self.editProxySettingsLogin, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
pAuthSizer.Add(self.stPSetPassword, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
pAuthSizer.Add(self.editProxySettingsPassword, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
|
||||
mainSizer.Add(pAuthSizer, 0, wx.EXPAND, 5)
|
||||
|
||||
self.stPSAutoDetected = wx.StaticText( panel, wx.ID_ANY, u"Auto-detected: ", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.stPSAutoDetected.Wrap( -1 )
|
||||
mainSizer.Add( self.stPSAutoDetected, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||
@@ -138,13 +156,15 @@ class PFNetworkPref ( PreferenceView):
|
||||
self.chProxyType.Bind(wx.EVT_CHOICE, self.OnCHProxyTypeSelect)
|
||||
self.editProxySettingsAddr.Bind(wx.EVT_TEXT, self.OnEditPSAddrText)
|
||||
self.editProxySettingsPort.Bind(wx.EVT_TEXT, self.OnEditPSPortText)
|
||||
self.editProxySettingsLogin.Bind(wx.EVT_TEXT, self.OnEditPSLoginText)
|
||||
self.editProxySettingsPassword.Bind(wx.EVT_TEXT, self.OnEditPSPasswordText)
|
||||
|
||||
|
||||
self.btnApply.Bind(wx.EVT_BUTTON, self.OnBtnApply)
|
||||
|
||||
self.UpdateApplyButtonState()
|
||||
|
||||
if self.nMode is not 2:
|
||||
if self.nMode is not service.settings.NetworkSettings.PROXY_MODE_MANUAL: # == 2
|
||||
self.ToggleProxySettings(False)
|
||||
else:
|
||||
self.ToggleProxySettings(True)
|
||||
@@ -180,6 +200,16 @@ class PFNetworkPref ( PreferenceView):
|
||||
self.dirtySettings = True
|
||||
self.UpdateApplyButtonState()
|
||||
|
||||
def OnEditPSLoginText(self, event):
|
||||
self.nAuth = (self.editProxySettingsLogin.GetValue(), self.nAuth[1])
|
||||
self.dirtySettings = True
|
||||
self.UpdateApplyButtonState()
|
||||
|
||||
def OnEditPSPasswordText(self, event):
|
||||
self.nAuth = (self.nAuth[0], self.editProxySettingsPassword.GetValue())
|
||||
self.dirtySettings = True
|
||||
self.UpdateApplyButtonState()
|
||||
|
||||
def OnBtnApply(self, event):
|
||||
self.dirtySettings = False
|
||||
self.UpdateApplyButtonState()
|
||||
@@ -190,6 +220,7 @@ class PFNetworkPref ( PreferenceView):
|
||||
self.settings.setAddress(self.nAddr)
|
||||
self.settings.setPort(self.nPort)
|
||||
self.settings.setType(self.nType)
|
||||
self.settings.setProxyAuthDetails(self.nAuth[0], self.nAuth[1])
|
||||
|
||||
def UpdateApplyButtonState(self):
|
||||
if self.dirtySettings:
|
||||
@@ -205,7 +236,7 @@ class PFNetworkPref ( PreferenceView):
|
||||
|
||||
self.UpdateApplyButtonState()
|
||||
|
||||
if choice is not 2:
|
||||
if choice is not service.settings.NetworkSettings.PROXY_MODE_MANUAL:
|
||||
self.ToggleProxySettings(False)
|
||||
else:
|
||||
self.ToggleProxySettings(True)
|
||||
@@ -216,11 +247,19 @@ class PFNetworkPref ( PreferenceView):
|
||||
self.editProxySettingsAddr.Enable()
|
||||
self.stPSetPort.Enable()
|
||||
self.editProxySettingsPort.Enable()
|
||||
self.stPSetLogin.Enable()
|
||||
self.stPSetPassword.Enable()
|
||||
self.editProxySettingsLogin.Enable()
|
||||
self.editProxySettingsPassword.Enable()
|
||||
else:
|
||||
self.stPSetAddr.Disable()
|
||||
self.editProxySettingsAddr.Disable()
|
||||
self.stPSetPort.Disable()
|
||||
self.editProxySettingsPort.Disable()
|
||||
self.stPSetLogin.Disable()
|
||||
self.stPSetPassword.Disable()
|
||||
self.editProxySettingsLogin.Disable()
|
||||
self.editProxySettingsPassword.Disable()
|
||||
|
||||
def getImage(self):
|
||||
return BitmapLoader.getBitmap("prefs_proxy", "gui")
|
||||
|
||||
@@ -55,9 +55,11 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
|
||||
pass
|
||||
if count < 0:
|
||||
startup = getattr(event, "startup", False) # see OpenFitsThread in gui.mainFrame
|
||||
sFit = service.Fit.getInstance()
|
||||
openFitInNew = sFit.serviceFittingOptions["openFitInNew"]
|
||||
mstate = wx.GetMouseState()
|
||||
|
||||
if mstate.CmdDown() or startup:
|
||||
if (not openFitInNew and mstate.CmdDown()) or startup or (openFitInNew and not mstate.CmdDown()):
|
||||
self.multiSwitch.AddPage()
|
||||
|
||||
view = FittingView(self.multiSwitch)
|
||||
@@ -799,4 +801,4 @@ class FittingView(d.Display):
|
||||
|
||||
mdc.SelectObject(wx.NullBitmap)
|
||||
|
||||
self.FVsnapshot = mbmp
|
||||
self.FVsnapshot = mbmp
|
||||
@@ -30,6 +30,7 @@ import service
|
||||
import config
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.utils.numberFormatter import formatAmount
|
||||
import csv
|
||||
|
||||
try:
|
||||
from collections import OrderedDict
|
||||
@@ -299,6 +300,9 @@ class ItemParams (wx.Panel):
|
||||
self.toggleViewBtn = wx.ToggleButton( self, wx.ID_ANY, u"Toggle view mode", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
bSizer.Add( self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||
|
||||
self.exportStatsBtn = wx.ToggleButton( self, wx.ID_ANY, u"Export Item Stats", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
bSizer.Add( self.exportStatsBtn, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||
|
||||
if stuff is not None:
|
||||
self.refreshBtn = wx.Button( self, wx.ID_ANY, u"Refresh", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
|
||||
bSizer.Add( self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL)
|
||||
@@ -309,6 +313,7 @@ class ItemParams (wx.Panel):
|
||||
self.PopulateList()
|
||||
|
||||
self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON,self.ToggleViewMode)
|
||||
self.exportStatsBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ExportItemStats)
|
||||
|
||||
def _fetchValues(self):
|
||||
if self.stuff is None:
|
||||
@@ -347,6 +352,65 @@ class ItemParams (wx.Panel):
|
||||
self.UpdateList()
|
||||
event.Skip()
|
||||
|
||||
def ExportItemStats(self, event):
|
||||
exportFileName = self.item.name + " (" + str(self.item.ID) + ").csv"
|
||||
|
||||
saveFileDialog = wx.FileDialog(self, "Save CSV file", "", exportFileName,
|
||||
"CSV files (*.csv)|*.csv", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
|
||||
|
||||
if saveFileDialog.ShowModal() == wx.ID_CANCEL:
|
||||
return # the user hit cancel...
|
||||
|
||||
with open(saveFileDialog.GetPath(), "wb") as exportFile:
|
||||
writer = csv.writer(exportFile, delimiter=',')
|
||||
|
||||
writer.writerow(
|
||||
[
|
||||
"ID",
|
||||
"Internal Name",
|
||||
"Friendly Name",
|
||||
"Modified Value",
|
||||
"Base Value",
|
||||
]
|
||||
)
|
||||
|
||||
for attribute in self.attrValues:
|
||||
|
||||
try:
|
||||
attribute_id = self.attrInfo[attribute].ID
|
||||
except (KeyError, AttributeError):
|
||||
attribute_id = ''
|
||||
|
||||
try:
|
||||
attribute_name = self.attrInfo[attribute].name
|
||||
except (KeyError, AttributeError):
|
||||
attribute_name = attribute
|
||||
|
||||
try:
|
||||
attribute_displayname = self.attrInfo[attribute].displayName
|
||||
except (KeyError, AttributeError):
|
||||
attribute_displayname = ''
|
||||
|
||||
try:
|
||||
attribute_value = self.attrInfo[attribute].value
|
||||
except (KeyError, AttributeError):
|
||||
attribute_value = ''
|
||||
|
||||
try:
|
||||
attribute_modified_value = self.attrValues[attribute].value
|
||||
except (KeyError, AttributeError):
|
||||
attribute_modified_value = self.attrValues[attribute]
|
||||
|
||||
writer.writerow(
|
||||
[
|
||||
attribute_id,
|
||||
attribute_name,
|
||||
attribute_displayname,
|
||||
attribute_modified_value,
|
||||
attribute_value,
|
||||
]
|
||||
)
|
||||
|
||||
def PopulateList(self):
|
||||
self.paramList.InsertColumn(0,"Attribute")
|
||||
self.paramList.InsertColumn(1,"Current Value")
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import wx
|
||||
import re
|
||||
import copy
|
||||
from gui.bitmapLoader import BitmapLoader
|
||||
import gui.mainFrame
|
||||
@@ -742,17 +744,18 @@ class ShipBrowser(wx.Panel):
|
||||
fits = sFit.countFitsWithShip(ship.ID)
|
||||
t_fits += fits
|
||||
filter = subRacesFilter[ship.race] if ship.race else True
|
||||
|
||||
if override:
|
||||
filter = True
|
||||
|
||||
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
|
||||
|
||||
if self.filterShipsWithNoFits:
|
||||
if fits>0:
|
||||
if filter:
|
||||
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, fits), ship.race))
|
||||
if filter:
|
||||
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, fits), ship.race))
|
||||
else:
|
||||
if filter:
|
||||
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, fits), ship.race))
|
||||
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, fits), ship.race))
|
||||
|
||||
self.raceselect.RebuildRaces(racesList)
|
||||
|
||||
@@ -847,8 +850,10 @@ class ShipBrowser(wx.Panel):
|
||||
self._stage3ShipName = shipName
|
||||
self._stage3Data = shipID
|
||||
|
||||
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
|
||||
|
||||
for ID, name, booster, timestamp in fitList:
|
||||
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, name, booster, timestamp),shipID))
|
||||
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp),shipID))
|
||||
|
||||
self.lpane.RefreshList()
|
||||
self.lpane.Thaw()
|
||||
@@ -880,12 +885,17 @@ class ShipBrowser(wx.Panel):
|
||||
if query:
|
||||
ships = sMkt.searchShips(query)
|
||||
fitList = sFit.searchFits(query)
|
||||
|
||||
|
||||
for ship in ships:
|
||||
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, len(sFit.getFitsWithShip(ship.ID))), ship.race))
|
||||
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
|
||||
|
||||
self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, len(sFit.getFitsWithShip(ship.ID))), ship.race))
|
||||
|
||||
for ID, name, shipID, shipName, booster, timestamp in fitList:
|
||||
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, name, booster, timestamp), shipID))
|
||||
ship = sMkt.getItem(shipID)
|
||||
shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits
|
||||
|
||||
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp), shipID))
|
||||
if len(ships) == 0 and len(fitList) == 0 :
|
||||
self.lpane.AddWidget(PFStaticText(self.lpane, label = u"No matching results."))
|
||||
self.lpane.RefreshList(doFocus = False)
|
||||
@@ -920,10 +930,13 @@ class ShipBrowser(wx.Panel):
|
||||
|
||||
if fits:
|
||||
for fit in fits:
|
||||
shipTrait = fit.ship.traits.traitText if (fit.ship.traits is not None) else "" # empty string if no traits
|
||||
|
||||
self.lpane.AddWidget(FitItem(
|
||||
self.lpane,
|
||||
fit.ID, (
|
||||
fit.ship.item.name,
|
||||
shipTrait,
|
||||
fit.name,
|
||||
fit.booster,
|
||||
fit.timestamp),
|
||||
@@ -1080,7 +1093,7 @@ class CategoryItem(SFItem.SFBrowserItem):
|
||||
|
||||
|
||||
class ShipItem(SFItem.SFBrowserItem):
|
||||
def __init__(self, parent, shipID=None, shipFittingInfo=("Test", 2), itemData=None,
|
||||
def __init__(self, parent, shipID=None, shipFittingInfo=("Test","TestTrait", 2), itemData=None,
|
||||
id=wx.ID_ANY, pos=wx.DefaultPosition,
|
||||
size=(0, 40), style=0):
|
||||
SFItem.SFBrowserItem.__init__(self, parent, size = size)
|
||||
@@ -1104,7 +1117,8 @@ class ShipItem(SFItem.SFBrowserItem):
|
||||
self.shipBmp = BitmapLoader.getBitmap("ship_no_image_big", "gui")
|
||||
|
||||
self.shipFittingInfo = shipFittingInfo
|
||||
self.shipName, self.shipFits = shipFittingInfo
|
||||
self.shipName, self.shipTrait, self.shipFits = shipFittingInfo
|
||||
self.shipTrait = re.sub("<.*?>", " ", self.shipTrait)
|
||||
|
||||
self.newBmp = BitmapLoader.getBitmap("fit_add_small", "gui")
|
||||
self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui")
|
||||
@@ -1122,6 +1136,8 @@ class ShipItem(SFItem.SFBrowserItem):
|
||||
|
||||
self.raceDropShadowBmp = drawUtils.CreateDropShadowBitmap(self.raceBmp, 0.2)
|
||||
|
||||
self.SetToolTip(wx.ToolTip(self.shipTrait))
|
||||
|
||||
self.shipBrowser = self.Parent.Parent
|
||||
|
||||
self.editWidth = 150
|
||||
@@ -1198,7 +1214,7 @@ class ShipItem(SFItem.SFBrowserItem):
|
||||
self.newBtn.SetBitmap(self.newBmp)
|
||||
self.Refresh()
|
||||
else:
|
||||
shipName, fittings = self.shipFittingInfo
|
||||
shipName, shipTrait, fittings = self.shipFittingInfo
|
||||
if fittings > 0:
|
||||
wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID, back=True))
|
||||
else:
|
||||
@@ -1264,7 +1280,7 @@ class ShipItem(SFItem.SFBrowserItem):
|
||||
|
||||
self.shipNamey = (rect.height - self.shipBmp.GetHeight()) / 2
|
||||
|
||||
shipName, fittings = self.shipFittingInfo
|
||||
shipName, shipTrait, fittings = self.shipFittingInfo
|
||||
|
||||
mdc.SetFont(self.fontBig)
|
||||
wtext, htext = mdc.GetTextExtent(shipName)
|
||||
@@ -1303,7 +1319,7 @@ class ShipItem(SFItem.SFBrowserItem):
|
||||
mdc.DrawBitmap(self.raceDropShadowBmp, self.raceBmpx + 1, self.raceBmpy + 1)
|
||||
mdc.DrawBitmap(self.raceBmp,self.raceBmpx, self.raceBmpy)
|
||||
|
||||
shipName, fittings = self.shipFittingInfo
|
||||
shipName, shipTrait, fittings = self.shipFittingInfo
|
||||
|
||||
if fittings <1:
|
||||
fformat = "No fits"
|
||||
@@ -1401,7 +1417,7 @@ class PFBitmapFrame(wx.Frame):
|
||||
|
||||
|
||||
class FitItem(SFItem.SFBrowserItem):
|
||||
def __init__(self, parent, fitID=None, shipFittingInfo=("Test", "cnc's avatar", 0, 0 ), shipID = None, itemData=None,
|
||||
def __init__(self, parent, fitID=None, shipFittingInfo=("Test", "TestTrait", "cnc's avatar", 0, 0 ), shipID = None, itemData=None,
|
||||
id=wx.ID_ANY, pos=wx.DefaultPosition,
|
||||
size=(0, 40), style=0):
|
||||
|
||||
@@ -1435,8 +1451,8 @@ class FitItem(SFItem.SFBrowserItem):
|
||||
self.shipBmp = BitmapLoader.getBitmap("ship_no_image_big","gui")
|
||||
|
||||
self.shipFittingInfo = shipFittingInfo
|
||||
self.shipName, self.fitName, self.fitBooster, self.timestamp = shipFittingInfo
|
||||
|
||||
self.shipName, self.shipTrait, self.fitName, self.fitBooster, self.timestamp = shipFittingInfo
|
||||
self.shipTrait = re.sub("<.*?>", " ", self.shipTrait)
|
||||
# see GH issue #62
|
||||
if self.fitBooster is None: self.fitBooster = False
|
||||
|
||||
@@ -1455,7 +1471,8 @@ class FitItem(SFItem.SFBrowserItem):
|
||||
self.dragTLFBmp = None
|
||||
|
||||
self.bkBitmap = None
|
||||
|
||||
if self.shipTrait != "": # show no tooltip if no trait available
|
||||
self.SetToolTip(wx.ToolTip(u'{}\n{}\n{}'.format(self.shipName, u'─'*20, self.shipTrait)))
|
||||
self.padding = 4
|
||||
self.editWidth = 150
|
||||
|
||||
@@ -1526,6 +1543,15 @@ class FitItem(SFItem.SFBrowserItem):
|
||||
wx.PostEvent(self.mainFrame, BoosterListUpdated())
|
||||
event.Skip()
|
||||
|
||||
def OnProjectToFit(self, event):
|
||||
activeFit = self.mainFrame.getActiveFit()
|
||||
if activeFit:
|
||||
sFit = service.Fit.getInstance()
|
||||
projectedFit = sFit.getFit(self.fitID)
|
||||
sFit.project(activeFit, projectedFit)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
||||
self.mainFrame.additionsPane.select("Projected")
|
||||
|
||||
def OnMouseCaptureLost(self, event):
|
||||
''' Destroy drag information (GH issue #479)'''
|
||||
if self.dragging and self.dragged:
|
||||
@@ -1553,12 +1579,17 @@ class FitItem(SFItem.SFBrowserItem):
|
||||
sFit = service.Fit.getInstance()
|
||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||
|
||||
|
||||
# if fit and not fit.isStructure:
|
||||
# # If there is an active fit, get menu for setting individual boosters
|
||||
# menu.AppendSeparator()
|
||||
# boosterMenu = self.mainFrame.additionsPane.gangPage.buildBoostermenu()
|
||||
# menu.AppendSubMenu(boosterMenu, 'Set Booster')
|
||||
|
||||
if fit:
|
||||
projectedItem = menu.Append(wx.ID_ANY, "Project onto Active Fit")
|
||||
self.Bind(wx.EVT_MENU, self.OnProjectToFit, projectedItem)
|
||||
|
||||
self.PopupMenu(menu, pos)
|
||||
|
||||
event.Skip()
|
||||
@@ -1805,7 +1836,7 @@ class FitItem(SFItem.SFBrowserItem):
|
||||
|
||||
mdc.DrawBitmap(self.shipBmp, self.shipBmpx, self.shipBmpy, 0)
|
||||
|
||||
shipName, fittings, booster, timestamp = self.shipFittingInfo
|
||||
shipName, shipTrait, fittings, booster, timestamp = self.shipFittingInfo
|
||||
|
||||
mdc.SetFont(self.fontNormal)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user