Merge branch 'master' into copyRework
This commit is contained in:
@@ -1 +1,2 @@
|
||||
__all__ = ["moduleAmmoPicker", "itemStats", "damagePattern", "marketJump", "droneSplit"]
|
||||
__all__ = ["moduleAmmoPicker", "itemStats", "damagePattern", "marketJump", "droneSplit",
|
||||
"ammoPattern"]
|
||||
|
||||
45
gui/builtinContextMenus/ammoPattern.py
Executable file
45
gui/builtinContextMenus/ammoPattern.py
Executable 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()
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
Reference in New Issue
Block a user