Add a V in front of the active damage pattern and allow different

bitmaps per menu item when multiple are passed
This commit is contained in:
cncfanatics
2010-10-11 21:54:53 +02:00
parent 51813be6d1
commit 37c34a32f3
2 changed files with 28 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ import gui.mainFrame
import service
import gui.fittingView
import wx
from gui import bitmapLoader
class DamagePattern(ContextMenu):
def __init__(self):
@@ -16,14 +17,30 @@ class DamagePattern(ContextMenu):
self.patterns = sDP.getDamagePatternList()
self.patterns.sort(key=lambda p: p.name)
m = map(lambda p: p.name, self.patterns)
m.append("Raw")
return m
def activate(self, context, selection, i):
sDP = service.DamagePattern.getInstance()
sFit = service.Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
sFit.setDamagePattern(fitID, self.patterns[i] if i < len(self.patterns) else None)
sFit.setDamagePattern(fitID, self.patterns[i])
wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID))
def getBitmap(self, context, selection):
sFit = service.Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
f = sFit.getFit(fitID)
dp = f.damagePattern
if dp is None:
return None
l = []
index = self.patterns.index(dp)
bitmap = bitmapLoader.getBitmap("state_active_small", "icons")
for i in range(len(self.patterns)):
l.append(bitmap if i == index else None)
return l
DamagePattern.register()

View File

@@ -42,14 +42,20 @@ class ContextMenu(object):
if isinstance(texts, basestring):
texts = (texts,)
bitmap = m.getBitmap(context, selection)
multiple = not isinstance(bitmap, wx.Bitmap)
for it, text in enumerate(texts):
id = wx.NewId()
item = wx.MenuItem(menu, id, text)
menu.info[id] = (m, context, it)
bitmap = m.getBitmap(context, selection)
if bitmap:
item.SetBitmap(bitmap)
if bitmap is not None:
if multiple:
bp = bitmap[it]
if bp:
item.SetBitmap(bp)
else:
item.SetBitmap(bitmap)
menu.AppendItem(item)