Merge branch 'master' into singularity

This commit is contained in:
DarkPhoenix
2013-08-31 15:17:25 +04:00
9 changed files with 127 additions and 69 deletions

View File

@@ -50,12 +50,9 @@ class BoosterView(d.Display):
def kbEvent(self,event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
row = self.GetFirstSelected()
if row != -1:
cFit.removeBooster(fitID, self.GetItemData(row))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.removeBooster(self.boosters[self.GetItemData(row)])
event.Skip()
@@ -71,7 +68,8 @@ class BoosterView(d.Display):
sFit = service.Fit.getInstance()
fit = sFit.getFit(event.fitID)
stuff = fit.boosters if fit is not None else None
self.origional = fit.boosters if fit is not None else None
self.boosters = stuff = fit.boosters[:] if fit is not None else None
if event.fitID != self.lastFitId:
self.lastFitId = event.fitID
@@ -102,10 +100,13 @@ class BoosterView(d.Display):
if row != -1:
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
cFit.removeBooster(fitID, self.GetItemData(row))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.removeBooster(self.boosters[self.GetItemData(row)])
def removeBooster(self, booster):
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
cFit.removeBooster(fitID, self.origional.index(booster))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
def click(self, event):
event.Skip()

View File

@@ -1,2 +1,2 @@
__all__ = ["moduleAmmoPicker", "itemStats", "damagePattern", "marketJump", "droneSplit",
__all__ = ["itemRemove", "moduleAmmoPicker", "itemStats", "damagePattern", "marketJump", "droneSplit",
"ammoPattern", "project", "factorReload", "whProjector"]

View File

@@ -0,0 +1,44 @@
from gui.contextMenu import ContextMenu
import gui.mainFrame
import service
import wx
import gui.globalEvents as GE
class ItemRemove(ContextMenu):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, srcContext, selection):
return srcContext in ("fittingModule", "fittingCharge", "droneItem", "implantItem", "boosterItem", "projectedModule", "projectedCharge",
"projectedFit", "projectedDrone")
def getText(self, itmContext, selection):
return "Remove {0}".format(itmContext if itmContext is not None else "Item")
def activate(self, fullContext, selection, i):
srcContext = fullContext[0]
sFit = service.Fit.getInstance()
fitID = self.mainFrame.getActiveFit()
cFit = sFit.getFit(fitID)
if srcContext == "fittingModule":
for module in selection:
if module is not None:
sFit.removeModule(fitID,cFit.modules.index(module))
elif srcContext in ("fittingCharge" , "projectedCharge"):
sFit.setAmmo(fitID, None, selection)
elif srcContext == "droneItem":
sFit.removeDrone(fitID, cFit.drones.index(selection[0]))
elif srcContext == "implantItem":
sFit.removeImplant(fitID, cFit.implants.index(selection[0]))
elif srcContext == "boosterItem":
sFit.removeBooster(fitID, cFit.boosters.index(selection[0]))
else:
sFit.removeProjected(fitID, selection[0])
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
ItemRemove.register()

View File

@@ -9,7 +9,7 @@ class WhProjector(ContextMenu):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, srcContext, selection):
return srcContext in ("projectedDrone", "projectedModule", "projectedCharge", "projectedFit", "projectedNone")
return srcContext == "projected"
def getText(self, itmContext, selection):
return "Add System Effects"

View File

@@ -227,15 +227,10 @@ class FittingView(d.Display):
row = self.GetFirstSelected()
firstSel = row
while row != -1:
cFit = service.Fit.getInstance()
populate = cFit.removeModule(self.activeFitID, self.mods[self.GetItemData(row)].position)
self.removeModule(self.mods[row])
self.Select(row,0)
row = self.GetNextSelected(row)
if populate is not None:
self.Select(firstSel)
if populate: self.slotsChanged()
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.activeFitID))
event.Skip()
def fitRemoved(self, event):
@@ -305,16 +300,19 @@ class FittingView(d.Display):
if row != -1:
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
cFit = service.Fit.getInstance()
fit = cFit.getFit(self.activeFitID)
populate = cFit.removeModule(self.activeFitID, fit.modules.index(self.mods[self.GetItemData(row)]))
if populate is not None:
if populate: self.slotsChanged()
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.activeFitID))
self.removeModule(self.mods[row])
else:
if "wxMSW" in wx.PlatformInfo:
self.click(event)
def removeModule(self, module):
cFit = service.Fit.getInstance()
fit = cFit.getFit(self.activeFitID)
populate = cFit.removeModule(self.activeFitID, fit.modules.index(module))
if populate is not None:
if populate: self.slotsChanged()
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.activeFitID))
def swapItems(self, x, y, itemID):
mstate = wx.GetMouseState()

View File

@@ -78,7 +78,7 @@ class Display(wx.ListCtrl):
"""
Return a tuple indicating which (item, subItem) the given pt (client coordinates) is over.
This uses the buildin version on Windows, and poor mans replacement on other platforms.
This uses the built-in version on Windows, and poor mans replacement on other platforms.
"""
# The buildin version works on Windows
@@ -124,7 +124,7 @@ class Display(wx.ListCtrl):
bottomItem = topItem + self.GetCountPerPage()
if bottomItem >= self.GetItemCount():
bottomItem = self.GetItemCount() - 1
bottomItem = self.GetItemCount() - 1
topRect = self.GetItemRect(topItem, wx.LIST_RECT_LABEL)
bottomRect = self.GetItemRect(bottomItem, wx.LIST_RECT_BOUNDS)

View File

@@ -107,11 +107,8 @@ class DroneView(d.Display):
row = self.GetFirstSelected()
firstSel = row
if row != -1:
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
drone = self.drones[self.GetItemData(row)]
cFit.removeDrone(fitID, self.original.index(drone))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.removeDrone(drone)
event.Skip()
@@ -197,11 +194,14 @@ class DroneView(d.Display):
if row != -1:
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
drone = self.drones[self.GetItemData(row)]
cFit.removeDrone(fitID, self.original.index(drone))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.removeDrone(drone)
def removeDrone(self, drone):
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
cFit.removeDrone(fitID, self.original.index(drone))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
def click(self, event):
event.Skip()

View File

@@ -48,12 +48,9 @@ class ImplantView(d.Display):
def kbEvent(self,event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
row = self.GetFirstSelected()
if row != -1:
cFit.removeImplant(fitID, self.GetItemData(row))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.removeImplant(self.implants[self.GetItemData(row)])
event.Skip()
def fitChanged(self, event):
@@ -100,11 +97,13 @@ class ImplantView(d.Display):
if row != -1:
col = self.getColumn(event.Position)
if col != self.getColIndex(State):
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
implant = self.implants[self.GetItemData(row)]
cFit.removeImplant(fitID, self.original.index(implant))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
self.removeImplant(self.implants[self.GetItemData(row)])
def removeImplant(self, implant):
fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance()
cFit.removeImplant(fitID, self.original.index(implant))
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
def click(self, event):
event.Skip()

View File

@@ -59,6 +59,11 @@ class ProjectedView(d.Display):
self.Bind(wx.EVT_KEY_UP, self.kbEvent)
self.droneView = gui.droneView.DroneView
if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
self.SetDropTarget(ProjectedViewDrop(self.mergeDrones))
@@ -182,36 +187,47 @@ class ProjectedView(d.Display):
sFit = service.Fit.getInstance()
sFit.toggleProjected(fitID, item, "right" if event.Button == 3 else "left")
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
elif event.Button == 3:
sMkt = service.Market.getInstance()
if isinstance(item, eos.types.Drone):
srcContext = "projectedDrone"
itemContext = sMkt.getCategoryByItem(item.item).name
context = ((srcContext, itemContext),)
elif isinstance(item, eos.types.Module):
modSrcContext = "projectedModule"
modItemContext = sMkt.getCategoryByItem(item.item).name
modFullContext = (modSrcContext, modItemContext)
if item.charge is not None:
chgSrcContext = "projectedCharge"
chgItemContext = sMkt.getCategoryByItem(item.charge).name
chgFullContext = (chgSrcContext, chgItemContext)
context = (modFullContext, chgFullContext)
else:
context = (modFullContext,)
def scheduleMenu(self, event):
event.Skip()
if self.getColumn(event.Position) != self.getColIndex(State):
wx.CallAfter(self.spawnMenu)
def spawnMenu(self):
sel = self.GetFirstSelected()
menu = None
if sel != -1:
item = self.get(sel)
sMkt = service.Market.getInstance()
if isinstance(item, eos.types.Drone):
srcContext = "projectedDrone"
itemContext = sMkt.getCategoryByItem(item.item).name
context = ((srcContext, itemContext),)
elif isinstance(item, eos.types.Module):
modSrcContext = "projectedModule"
modItemContext = sMkt.getCategoryByItem(item.item).name
modFullContext = (modSrcContext, modItemContext)
if item.charge is not None:
chgSrcContext = "projectedCharge"
chgItemContext = sMkt.getCategoryByItem(item.charge).name
chgFullContext = (chgSrcContext, chgItemContext)
context = (modFullContext, chgFullContext)
else:
context = (("projectedFit",),)
menu = ContextMenu.getMenu((item,), *context)
if menu is not None:
self.PopupMenu(menu)
elif row == -1 and event.Button == 3:
context = (modFullContext,)
else:
fitSrcContext = "projectedFit"
fitItemContext = item.name
context = ((fitSrcContext,fitItemContext),)
context = context + (("projected",),)
menu = ContextMenu.getMenu((item,), *context)
elif sel == -1:
fitID = self.mainFrame.getActiveFit()
if fitID is None:
return
context = (("projectedNone",),)
context = (("projected",),)
menu = ContextMenu.getMenu([], *context)
if menu is not None:
self.PopupMenu(menu)
if menu is not None:
self.PopupMenu(menu)
def remove(self, event):
row, _ = self.HitTest(event.Position)