From 8747be71ac8efde4b7952ebbab7d7f43bdd9a9f6 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Sat, 19 Nov 2011 18:13:13 +0400 Subject: [PATCH] Add WH support to pyfa --- eos | 2 +- gui/builtinContextMenus/__init__.py | 2 +- gui/builtinContextMenus/whProjector.py | 47 ++++++++++++++++++++++++++ gui/projectedView.py | 11 ++++-- service/fit.py | 4 +++ 5 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 gui/builtinContextMenus/whProjector.py diff --git a/eos b/eos index 3870eeedf..e087b36c3 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit 3870eeedfe81891bcea313f05b67fac9f2cf13f3 +Subproject commit e087b36c3f2a328c56486c5e8f902934586218c1 diff --git a/gui/builtinContextMenus/__init__.py b/gui/builtinContextMenus/__init__.py index 808202464..1497d7452 100644 --- a/gui/builtinContextMenus/__init__.py +++ b/gui/builtinContextMenus/__init__.py @@ -1,2 +1,2 @@ __all__ = ["moduleAmmoPicker", "itemStats", "damagePattern", "marketJump", "droneSplit", - "ammoPattern", "project", "factorReload"] + "ammoPattern", "project", "factorReload", "whProjector"] diff --git a/gui/builtinContextMenus/whProjector.py b/gui/builtinContextMenus/whProjector.py new file mode 100644 index 000000000..1ecf17de4 --- /dev/null +++ b/gui/builtinContextMenus/whProjector.py @@ -0,0 +1,47 @@ +from gui.contextMenu import ContextMenu +import gui.mainFrame +import gui.globalEvents as GE +import service +import wx + +class WhProjector(ContextMenu): + def __init__(self): + self.mainFrame = gui.mainFrame.MainFrame.getInstance() + + def display(self, srcContext, selection): + return srcContext in ("projectedDrone", "projectedModule", "projectedCharge", "projectedFit", "projectedNone") + + def getText(self, itmContext, selection): + return "System effects" + + def activate(self, fullContext, selection, i): + pass + + def getSubMenu(self, context, selection, menu, i): + self.idmap = {} + m = wx.Menu() + sMkt = service.Market.getInstance() + effdata = sMkt.getSystemWideEffects() + for swType in sorted(effdata): + item = wx.MenuItem(m, wx.ID_ANY, swType) + sub = wx.Menu() + sub.Bind(wx.EVT_MENU, self.handleSelection) + item.SetSubMenu(sub) + m.AppendItem(item) + for swData in sorted(effdata[swType], key=lambda tpl: tpl[2]): + wxid = wx.NewId() + swObj, swName, swClass = swData + self.idmap[wxid] = (swObj, swName) + subitem = wx.MenuItem(sub, wxid, swClass) + sub.AppendItem(subitem) + return m + + + def handleSelection(self, event): + swObj, swName = self.idmap[event.Id] + sFit = service.Fit.getInstance() + fitID = self.mainFrame.getActiveFit() + sFit.project(fitID, swObj) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) + +WhProjector.register() diff --git a/gui/projectedView.py b/gui/projectedView.py index dc64fc423..d380a5a97 100644 --- a/gui/projectedView.py +++ b/gui/projectedView.py @@ -200,11 +200,18 @@ class ProjectedView(d.Display): else: context = (modFullContext,) else: - context = ("projectedFit",) - + context = (("projectedFit",),) menu = ContextMenu.getMenu((item,), *context) if menu is not None: self.PopupMenu(menu) + elif row == -1 and event.Button == 3: + fitID = self.mainFrame.getActiveFit() + if fitID is None: + return + context = (("projectedNone",),) + menu = ContextMenu.getMenu([], *context) + if menu is not None: + self.PopupMenu(menu) def remove(self, event): row, _ = self.HitTest(event.Position) diff --git a/service/fit.py b/service/fit.py index bc001651c..a49e33392 100644 --- a/service/fit.py +++ b/service/fit.py @@ -258,6 +258,10 @@ class Fit(object): fit.projectedDrones.append(drone) drone.amount += 1 + elif thing.group.name == "Effect Beacon": + module = eos.types.Module(thing) + module.state = State.ONLINE + fit.projectedModules.append(module) else: module = eos.types.Module(thing) module.state = State.ACTIVE