Merge branch 'master' into copyRework

This commit is contained in:
Lucas Thode
2010-10-28 12:11:20 -05:00
7 changed files with 96 additions and 4 deletions

View File

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

View File

@@ -0,0 +1,45 @@
from gui.contextMenu import ContextMenu
import gui.mainFrame
import service
import gui.fittingView
import wx
import gui.fittingView
from gui import bitmapLoader
class AmmoPattern(ContextMenu):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, context, selection):
if context not in ("item", "itemSearch") or self.mainFrame.getActiveFit() is None:
return False
item = selection[0]
if context == "itemSearch":
item = service.Market.getInstance().getItem(item.ID)
for attr in ("emDamage", "thermalDamage", "explosiveDamage", "kineticDamage"):
if item.getAttribute(attr) is not None:
return True
return False
def getText(self, context, selection):
return "Set as damage pattern"
def activate(self, context, selection, i):
item = selection[0]
if context == "itemSearch":
item = service.Market.getInstance().getItem(item.ID)
fit = self.mainFrame.getActiveFit()
sFit = service.Fit.getInstance()
sFit.setAsPattern(fit, item)
wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fit))
def getBitmap(self, context, selection):
return None
AmmoPattern.register()

View File

@@ -9,7 +9,6 @@ class DamagePattern(ContextMenu):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, context, selection):
return context in ("resistancesViewFull",) and self.mainFrame.getActiveFit() is not None

View File

@@ -89,7 +89,7 @@ class ResistancesViewFull(StatsView):
bitmap.SetToolTip(tooltip)
sizerResistances.Add(bitmap, wx.GBPosition( row, col ), wx.GBSpan( 1, 1 ), wx.ALIGN_CENTER)
col+=1
self.stEHPs = wx.StaticText(contentPanel, wx.ID_ANY, "EHP", style = wx.DOUBLE_BORDER)
self.stEHPs = wx.StaticText(contentPanel, wx.ID_ANY, "EHP", style = wx.SIMPLE_BORDER if 'wxGTK' in wx.PlatformInfo else wx.DOUBLE_BORDER)
self.stEHPs.SetToolTip(wx.ToolTip("Click to toggle between effective HP and raw HP"))
self.stEHPs.Bind(wx.EVT_LEFT_UP, self.toggleEHP)

View File

@@ -311,7 +311,7 @@ class ItemView(d.Display):
if sel == -1:
return
menu = ContextMenu.getMenu(self.active[sel], "item" if self.searching is False else "itemSearch")
menu = ContextMenu.getMenu((self.active[sel],), "item" if self.searching is False else "itemSearch")
self.PopupMenu(menu)
def itemSort(self, item):

View File

@@ -23,6 +23,7 @@ from eos.types import State, Slot
import copy
from service.damagePattern import DamagePattern
class Fit(object):
instance = None
@classmethod
@@ -338,6 +339,25 @@ class Fit(object):
fit.clear()
fit.calculateModifiedAttributes()
def setAsPattern(self, fitID, ammo):
if fitID is None:
return
try:
sDP = DamagePattern.getInstance()
dp = sDP.getDamagePattern("Ammo")
except:
dp = eos.types.DamagePattern()
dp.name = "Ammo"
fit = eos.db.getFit(fitID)
for attr in ("em", "thermal", "kinetic", "explosive"):
setattr(dp, "%sAmount" % attr, ammo.getAttribute("%sDamage" % attr))
fit.damagePattern = dp
fit.clear()
fit.calculateModifiedAttributes()
def exportFit(self, fitID):
fit = eos.db.getFit(fitID)
return fit.exportEft()

View File

@@ -26,6 +26,26 @@ from sqlalchemy.orm.exc import NoResultFound
import Queue
import traceback
class ShipBrowserWorkerThread(threading.Thread):
def run(self):
self.queue = Queue.Queue()
self.processRequests()
def processRequests(self):
queue = self.queue
sMarket = Market.getInstance()
while True:
try:
callback, id = queue.get()
wx.CallAfter(callback, sMarket.getShipList(id))
except:
pass
finally:
try:
queue.task_done()
except:
pass
class PriceWorkerThread(threading.Thread):
def run(self):
self.queue = Queue.Queue()
@@ -120,6 +140,10 @@ class Market():
self.searchWorkerThread.daemon = True
self.searchWorkerThread.start()
self.shipBrowserWorkerThread = ShipBrowserWorkerThread()
self.shipBrowserWorkerThread.daemon = True
self.shipBrowserWorkerThread.start()
def getChildren(self, id):
"""
Get the children of the group or marketGroup with the passed id.
@@ -153,6 +177,9 @@ class Market():
return ships
def getShipListDelayed(self, id, callback):
self.shipBrowserWorkerThread.queue.put((id, callback))
def searchShips(self, name):
results = eos.db.searchItems(name)
ships = []