Fix item stats for skills and move some stuff around

This commit is contained in:
cncfanatics
2010-10-06 13:58:42 +02:00
parent 91d39deb87
commit c0b739b8f7
5 changed files with 51 additions and 44 deletions

View File

@@ -1 +1 @@
__all__ = ["itemStats", "damagePatternMenu"]
__all__ = ["itemStats", "damagePattern"]

View File

@@ -0,0 +1,19 @@
from gui.contextMenu import ContextMenu
from gui.itemStats import ItemStatsDialog
import gui.mainFrame
import service
class DamagePattern(ContextMenu):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, context, selection):
return context in ("resistancesViewFull",)
def getText(self, context, selection):
return "%s stats" % context.capitalize()
def activate(self, context, selection, i):
pass
DamagePattern.register()

View File

@@ -1,31 +0,0 @@
from gui.contextMenu import ContextMenu
from gui.itemStats import ItemStatsDialog
import gui.mainFrame
import service
class DamagePattern(ContextMenu):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, context, selection):
return context in ("resistancesViewFull",)
def getText(self, context, selection):
return "%s stats" % context.capitalize()
def activate(self, context, selection):
if context == "ship":
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
stuff = cFit.getFit(fitID).ship
elif context == "ammo":
stuff = selection[0].charge
else:
stuff = selection[0]
if context == "module" and stuff.isEmpty:
return
dlg=ItemStatsDialog(stuff)
DamagePattern.register()

View File

@@ -25,6 +25,7 @@ import wx.gizmos
from gui import bitmapLoader
import service
import gui.display as d
from gui.contextMenu import ContextMenu
import sys
CharListUpdated, CHAR_LIST_UPDATED = wx.lib.newevent.NewEvent()
@@ -258,7 +259,9 @@ class SkillTreeView (wx.Panel):
tree.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup)
tree.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.scheduleMenu)
self.levelChangeMenu = wx.Menu()
self.statsMenu = ContextMenu.getMenu(None, "skill")
self.levelChangeMenu = ContextMenu.getMenu(None, "skill") or wx.Menu()
self.levelChangeMenu.AppendSeparator()
self.levelIds = {}
idUnlearned = wx.NewId()
@@ -318,18 +321,26 @@ class SkillTreeView (wx.Panel):
cChar = service.Character.getInstance()
charID = self.Parent.Parent.getActiveCharacter()
cMarket = service.Market.getInstance()
if cChar.getCharName(charID) not in ("All 0", "All 5"):
self.levelChangeMenu.selection = cMarket.getItem(self.skillTreeListCtrl.GetPyData(item))
self.PopupMenu(self.levelChangeMenu)
else:
self.statsMenu.selection = cMarket.getItem(self.skillTreeListCtrl.GetPyData(item))
self.PopupMenu(self.statsMenu)
def changeLevel(self, event):
cChar = service.Character.getInstance()
charID = self.Parent.Parent.getActiveCharacter()
selection = self.skillTreeListCtrl.GetSelection()
skillID = self.skillTreeListCtrl.GetPyData(selection)
level = self.levelIds[event.Id]
level = self.levelIds.get(event.Id)
if level:
cChar = service.Character.getInstance()
charID = self.Parent.Parent.getActiveCharacter()
selection = self.skillTreeListCtrl.GetSelection()
skillID = self.skillTreeListCtrl.GetPyData(selection)
self.skillTreeListCtrl.SetItemText(selection, "Level %d" % level if isinstance(level, int) else level, 1)
cChar.changeLevel(charID, skillID, level)
self.skillTreeListCtrl.SetItemText(selection, "Level %d" % level if isinstance(level, int) else level, 1)
cChar.changeLevel(charID, skillID, level)
event.Skip()
class ImplantsTreeView (wx.Panel):

View File

@@ -29,6 +29,7 @@ class ContextMenu(object):
@classmethod
def getMenu(cls, selection, *contexts):
menu = wx.Menu()
menu.selection = selection
empty = True
for i, context in enumerate(contexts):
amount = 0
@@ -43,7 +44,7 @@ class ContextMenu(object):
for it, text in enumerate(texts):
id = wx.NewId()
item = wx.MenuItem(menu, id, text)
cls.activeMenu[id] = (m, context, selection, it)
cls.activeMenu[id] = (m, context, it)
menu.Bind(wx.EVT_MENU, cls.handler)
bitmap = m.getBitmap(context, selection)
@@ -60,9 +61,16 @@ class ContextMenu(object):
@classmethod
def handler(cls, event):
m, context, selection, i = cls.activeMenu[event.Id]
cls.activeMenu.clear()
m.activate(context, selection, i)
stuff = cls.activeMenu.get(event.Id)
if stuff is not None:
m, context, i = stuff
selection = event.EventObject.selection
if not hasattr(selection, "__iter__"):
selection = (selection,)
cls.activeMenu.clear()
m.activate(context, selection, i)
event.Skip()
def display(self, context, selection):
raise NotImplementedError()