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:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user