Add context menu to apply implant set to fit

This commit is contained in:
blitzmann
2016-03-20 22:28:18 -04:00
parent 145f252ca6
commit d4632b9059
3 changed files with 69 additions and 2 deletions

View File

@@ -20,4 +20,5 @@ __all__ = [
"priceClear",
"amount",
"metaSwap",
"implantSets",
]

View File

@@ -0,0 +1,53 @@
from gui.contextMenu import ContextMenu
from gui.itemStats import ItemStatsDialog
import eos.types
import gui.mainFrame
import service
import gui.globalEvents as GE
import wx
class ImplantSets(ContextMenu):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, srcContext, selection):
return srcContext == "implantView"
def getText(self, itmContext, selection):
return "Add Implant Set"
def getSubMenu(self, context, selection, rootMenu, i, pitem):
m = wx.Menu()
bindmenu = rootMenu if "wxMSW" in wx.PlatformInfo else m
sIS = service.ImplantSets.getInstance()
implantSets = sIS.getImplantSetList()
self.idmap = {}
for set in implantSets:
id = wx.NewId()
mitem = wx.MenuItem(rootMenu, id, set.name)
bindmenu.Bind(wx.EVT_MENU, self.handleSelection, mitem)
self.idmap[id] = set
m.AppendItem(mitem)
return m
def handleSelection(self, event):
set = self.idmap.get(event.Id, None)
if set is None:
event.Skip()
return
sFit = service.Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
for implant in set.implants:
print implant.item.ID, implant.item.name
sFit.addImplant(fitID, implant.item.ID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
ImplantSets.register()

View File

@@ -172,9 +172,15 @@ class ImplantDisplay(d.Display):
def spawnMenu(self):
sel = self.GetFirstSelected()
menu = None
sFit = service.Fit.getInstance()
fit = sFit.getFit(self.mainFrame.getActiveFit())
if not fit:
return
if sel != -1:
sFit = service.Fit.getInstance()
fit = sFit.getFit(self.mainFrame.getActiveFit())
implant = fit.appliedImplants[sel]
sMkt = service.Market.getInstance()
@@ -182,4 +188,11 @@ class ImplantDisplay(d.Display):
itemContext = sMkt.getCategoryByItem(implant.item).name
menu = ContextMenu.getMenu((implant,), (sourceContext, itemContext))
elif sel == -1 and fit.implantSource == ImplantLocation.FIT:
fitID = self.mainFrame.getActiveFit()
if fitID is None:
return
context = (("implantView",),)
menu = ContextMenu.getMenu([], *context)
if menu is not None:
self.PopupMenu(menu)