Toggle fighter abilities in fighter context menu
This commit is contained in:
@@ -17,10 +17,7 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
|
||||
from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut, ChargeAttrShortcut
|
||||
from eos.effectHandlerHelpers import HandledItem, HandledCharge
|
||||
from sqlalchemy.orm import validates, reconstructor
|
||||
import eos.db
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -28,34 +25,32 @@ logger = logging.getLogger(__name__)
|
||||
class FighterAbility(object):
|
||||
|
||||
def __init__(self, effect):
|
||||
print "creating fighter ability"
|
||||
"""Initialize from the program"""
|
||||
self.__effect = effect
|
||||
self.effectID = effect.ID if effect is not None else None
|
||||
self.active = False
|
||||
#self.build()
|
||||
self.build()
|
||||
|
||||
@reconstructor
|
||||
def init(self):
|
||||
'''Initialize from the database'''
|
||||
print "Initialize fighter ability from the database, effectID:"
|
||||
self.__effect = None
|
||||
print self.effectID
|
||||
|
||||
'''
|
||||
if self.effectID:
|
||||
self.__item = eos.db.getItem(self.itemID)
|
||||
if self.__item is None:
|
||||
logger.error("Item (id: %d) does not exist", self.itemID)
|
||||
self.__effect = next((x for x in self.fighter.item.effects.itervalues() if x.ID == self.effectID), None)
|
||||
if self.__effect is None:
|
||||
logger.error("Effect (id: %d) does not exist", self.effectID)
|
||||
return
|
||||
'''
|
||||
|
||||
self.build()
|
||||
|
||||
def build(self):
|
||||
# pull needed values from effect to here
|
||||
pass
|
||||
|
||||
@property
|
||||
def effect(self):
|
||||
return self.__effect
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self.__effect.handlerName
|
||||
|
||||
@@ -21,4 +21,5 @@ __all__ = [
|
||||
"amount",
|
||||
"metaSwap",
|
||||
"implantSets",
|
||||
"fighterAbilities",
|
||||
]
|
||||
|
||||
54
gui/builtinContextMenus/fighterAbilities.py
Normal file
54
gui/builtinContextMenus/fighterAbilities.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import wx
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.mainFrame
|
||||
import service
|
||||
import gui.globalEvents as GE
|
||||
|
||||
class FighterAbility(ContextMenu):
|
||||
def __init__(self):
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
def display(self, srcContext, selection):
|
||||
if self.mainFrame.getActiveFit() is None or srcContext != "fighterItem":
|
||||
return False
|
||||
|
||||
self.fighter = selection[0]
|
||||
return True
|
||||
|
||||
def getText(self, itmContext, selection):
|
||||
return "Abilities"
|
||||
|
||||
def addAbility(self, menu, ability):
|
||||
label = ability.name
|
||||
id = wx.NewId()
|
||||
self.abilityIds[id] = ability
|
||||
menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_CHECK)
|
||||
menu.Bind(wx.EVT_MENU, self.handleMode, menuItem)
|
||||
return menuItem
|
||||
|
||||
def getSubMenu(self, context, selection, rootMenu, i, pitem):
|
||||
msw = True if "wxMSW" in wx.PlatformInfo else False
|
||||
self.context = context
|
||||
self.abilityIds = {}
|
||||
|
||||
sub = wx.Menu()
|
||||
|
||||
for ability in self.fighter.abilities:
|
||||
menuItem = self.addAbility(rootMenu if msw else sub, ability)
|
||||
sub.AppendItem(menuItem)
|
||||
menuItem.Check(ability.active)
|
||||
|
||||
return sub
|
||||
|
||||
def handleMode(self, event):
|
||||
ability = self.abilityIds[event.Id]
|
||||
if ability is False or ability not in self.fighter.abilities:
|
||||
event.Skip()
|
||||
return
|
||||
|
||||
sFit = service.Fit.getInstance()
|
||||
fitID = self.mainFrame.getActiveFit()
|
||||
sFit.toggleFighterAbility(fitID, ability)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
|
||||
FighterAbility.register()
|
||||
@@ -778,6 +778,12 @@ class Fit(object):
|
||||
self.recalc(fit)
|
||||
return True
|
||||
|
||||
def toggleFighterAbility(self, fitID, ability):
|
||||
fit = eos.db.getFit(fitID)
|
||||
ability.active = not ability.active
|
||||
eos.db.commit()
|
||||
self.recalc(fit)
|
||||
|
||||
def changeChar(self, fitID, charID):
|
||||
if fitID is None or charID is None:
|
||||
if charID is not None:
|
||||
|
||||
Reference in New Issue
Block a user