Make it run again
This commit is contained in:
@@ -21,6 +21,7 @@ from sqlalchemy.orm import join, exc
|
|||||||
from sqlalchemy.sql import and_, or_, select
|
from sqlalchemy.sql import and_, or_, select
|
||||||
|
|
||||||
import eos.config
|
import eos.config
|
||||||
|
from eos.gamedata import Item, Attribute
|
||||||
from eos.db import gamedata_session
|
from eos.db import gamedata_session
|
||||||
from eos.db.gamedata.metaGroup import metatypes_table, items_table
|
from eos.db.gamedata.metaGroup import metatypes_table, items_table
|
||||||
from eos.db.util import processEager, processWhere
|
from eos.db.util import processEager, processWhere
|
||||||
@@ -280,9 +281,9 @@ def directAttributeRequest(itemIDs, attrIDs):
|
|||||||
if not isinstance(itemID, int):
|
if not isinstance(itemID, int):
|
||||||
raise TypeError("All itemIDs must be integer")
|
raise TypeError("All itemIDs must be integer")
|
||||||
|
|
||||||
q = select((eos.types.Item.typeID, eos.types.Attribute.attributeID, eos.types.Attribute.value),
|
q = select((Item.typeID, Attribute.attributeID, Attribute.value),
|
||||||
and_(eos.types.Attribute.attributeID.in_(attrIDs), eos.types.Item.typeID.in_(itemIDs)),
|
and_(Attribute.attributeID.in_(attrIDs), Item.typeID.in_(itemIDs)),
|
||||||
from_obj=[join(eos.types.Attribute, eos.types.Item)])
|
from_obj=[join(Attribute, Item)])
|
||||||
|
|
||||||
result = gamedata_session.execute(q).fetchall()
|
result = gamedata_session.execute(q).fetchall()
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -18,12 +18,12 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import gui.marketBrowser as mb
|
import gui.marketBrowser as mb
|
||||||
from gui.builtinViewColumns.state import State
|
from gui.builtinViewColumns.state import State
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class BoosterViewDrop(wx.PyDropTarget):
|
class BoosterViewDrop(wx.PyDropTarget):
|
||||||
def __init__(self, dropFn):
|
def __init__(self, dropFn):
|
||||||
@@ -85,7 +85,7 @@ class BoosterView(d.Display):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
||||||
@@ -115,7 +115,7 @@ class BoosterView(d.Display):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def addItem(self, event):
|
def addItem(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
@@ -139,7 +139,7 @@ class BoosterView(d.Display):
|
|||||||
|
|
||||||
def removeBooster(self, booster):
|
def removeBooster(self, booster):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.removeBooster(fitID, self.origional.index(booster))
|
sFit.removeBooster(fitID, self.origional.index(booster))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ class BoosterView(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col == self.getColIndex(State):
|
if col == self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.toggleBooster(fitID, row)
|
sFit.toggleBooster(fitID, row)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -163,7 +163,7 @@ class BoosterView(d.Display):
|
|||||||
def spawnMenu(self):
|
def spawnMenu(self):
|
||||||
sel = self.GetFirstSelected()
|
sel = self.GetFirstSelected()
|
||||||
if sel != -1:
|
if sel != -1:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
item = fit.boosters[sel]
|
item = fit.boosters[sel]
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
@@ -25,7 +24,7 @@ class AmmoPattern(ContextMenu):
|
|||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
item = selection[0]
|
item = selection[0]
|
||||||
fit = self.mainFrame.getActiveFit()
|
fit = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.setAsPattern(fit, item)
|
sFit.setAsPattern(fit, item)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fit))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fit))
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ from gui.contextMenu import ContextMenu
|
|||||||
from gui.itemStats import ItemStatsDialog
|
from gui.itemStats import ItemStatsDialog
|
||||||
import eos.types
|
import eos.types
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
@@ -46,7 +45,7 @@ class AmountChanger(wx.Dialog):
|
|||||||
self.button.Bind(wx.EVT_BUTTON, self.change)
|
self.button.Bind(wx.EVT_BUTTON, self.change)
|
||||||
|
|
||||||
def change(self, event):
|
def change(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
fitID = mainFrame.getActiveFit()
|
fitID = mainFrame.getActiveFit()
|
||||||
|
|
||||||
|
|||||||
@@ -2,16 +2,16 @@ from gui.contextMenu import ContextMenu
|
|||||||
from gui.itemStats import ItemStatsDialog
|
from gui.itemStats import ItemStatsDialog
|
||||||
import eos.types
|
import eos.types
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import wx
|
import wx
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class Cargo(ContextMenu):
|
class Cargo(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
|
|
||||||
def display(self, srcContext, selection):
|
def display(self, srcContext, selection):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
@@ -24,7 +24,7 @@ class Cargo(ContextMenu):
|
|||||||
return "Add {0} to Cargo".format(itmContext)
|
return "Add {0} to Cargo".format(itmContext)
|
||||||
|
|
||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
typeID = int(selection[0].ID)
|
typeID = int(selection[0].ID)
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from eos.types import Skill
|
from eos.types import Skill
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.character import Character
|
||||||
|
|
||||||
class ChangeAffectingSkills(ContextMenu):
|
class ChangeAffectingSkills(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -15,8 +16,8 @@ class ChangeAffectingSkills(ContextMenu):
|
|||||||
if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule", "fittingCharge", "fittingShip"):
|
if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule", "fittingCharge", "fittingShip"):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
self.sChar = service.Character.getInstance()
|
self.sChar = Character.getInstance()
|
||||||
self.sFit = service.Fit.getInstance()
|
self.sFit = Fit.getInstance()
|
||||||
fit = self.sFit.getFit(self.mainFrame.getActiveFit())
|
fit = self.sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
|
|
||||||
self.charID = fit.character.ID
|
self.charID = fit.character.ID
|
||||||
@@ -26,7 +27,7 @@ class ChangeAffectingSkills(ContextMenu):
|
|||||||
|
|
||||||
if srcContext == "fittingShip":
|
if srcContext == "fittingShip":
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
self.stuff = sFit.getFit(fitID).ship
|
self.stuff = sFit.getFit(fitID).ship
|
||||||
cont = sFit.getFit(fitID).ship.itemModifiedAttributes
|
cont = sFit.getFit(fitID).ship.itemModifiedAttributes
|
||||||
elif srcContext == "fittingCharge":
|
elif srcContext == "fittingCharge":
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.damagePattern import DamagePattern as import_DamagePattern
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
@@ -18,8 +19,8 @@ class DamagePattern(ContextMenu):
|
|||||||
return srcContext == "resistancesViewFull" and self.mainFrame.getActiveFit() is not None
|
return srcContext == "resistancesViewFull" and self.mainFrame.getActiveFit() is not None
|
||||||
|
|
||||||
def getText(self, itmContext, selection):
|
def getText(self, itmContext, selection):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = import_DamagePattern.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
self.fit = sFit.getFit(fitID)
|
self.fit = sFit.getFit(fitID)
|
||||||
|
|
||||||
@@ -59,7 +60,7 @@ class DamagePattern(ContextMenu):
|
|||||||
menuItem.pattern = pattern
|
menuItem.pattern = pattern
|
||||||
|
|
||||||
# determine active pattern
|
# determine active pattern
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
f = sFit.getFit(fitID)
|
f = sFit.getFit(fitID)
|
||||||
dp = f.damagePattern
|
dp = f.damagePattern
|
||||||
@@ -98,7 +99,7 @@ class DamagePattern(ContextMenu):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.setDamagePattern(fitID, pattern)
|
sFit.setDamagePattern(fitID, pattern)
|
||||||
setattr(self.mainFrame,"_activeDmgPattern", pattern)
|
setattr(self.mainFrame,"_activeDmgPattern", pattern)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
@@ -15,7 +14,7 @@ class ItemRemove(ContextMenu):
|
|||||||
return "Remove {0} Stack".format(itmContext)
|
return "Remove {0} Stack".format(itmContext)
|
||||||
|
|
||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ from gui.contextMenu import ContextMenu
|
|||||||
from gui.itemStats import ItemStatsDialog
|
from gui.itemStats import ItemStatsDialog
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
class DroneSplit(ContextMenu):
|
class DroneSplit(ContextMenu):
|
||||||
@@ -48,7 +47,7 @@ class DroneSpinner(wx.Dialog):
|
|||||||
self.button.Bind(wx.EVT_BUTTON, self.split)
|
self.button.Bind(wx.EVT_BUTTON, self.split)
|
||||||
|
|
||||||
def split(self, event):
|
def split(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
fitID = mainFrame.getActiveFit()
|
fitID = mainFrame.getActiveFit()
|
||||||
if self.context == "droneItem":
|
if self.context == "droneItem":
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class FactorReload(ContextMenu):
|
class FactorReload(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -16,14 +16,14 @@ class FactorReload(ContextMenu):
|
|||||||
return "Factor in Reload Time"
|
return "Factor in Reload Time"
|
||||||
|
|
||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.serviceFittingOptions["useGlobalForceReload"] = not sFit.serviceFittingOptions["useGlobalForceReload"]
|
sFit.serviceFittingOptions["useGlobalForceReload"] = not sFit.serviceFittingOptions["useGlobalForceReload"]
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.refreshFit(fitID)
|
sFit.refreshFit(fitID)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
def getBitmap(self, context, selection):
|
def getBitmap(self, context, selection):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
if fit.factorReload:
|
if fit.factorReload:
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import wx
|
import wx
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
class FighterAbility(ContextMenu):
|
class FighterAbility(ContextMenu):
|
||||||
@@ -48,7 +47,7 @@ class FighterAbility(ContextMenu):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.toggleFighterAbility(fitID, ability)
|
sFit.toggleFighterAbility(fitID, ability)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
@@ -59,7 +58,7 @@ class ImplantSets(ContextMenu):
|
|||||||
|
|
||||||
if self.context == "implantEditor":
|
if self.context == "implantEditor":
|
||||||
# we are calling from character editor, the implant source is different
|
# we are calling from character editor, the implant source is different
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
charID = self.selection.getActiveCharacter()
|
charID = self.selection.getActiveCharacter()
|
||||||
|
|
||||||
for implant in set.implants:
|
for implant in set.implants:
|
||||||
@@ -67,7 +66,7 @@ class ImplantSets(ContextMenu):
|
|||||||
|
|
||||||
wx.PostEvent(self.selection, GE.CharChanged())
|
wx.PostEvent(self.selection, GE.CharChanged())
|
||||||
else:
|
else:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
for implant in set.implants:
|
for implant in set.implants:
|
||||||
sFit.addImplant(fitID, implant.item.ID, recalc=implant == set.implants[-1])
|
sFit.addImplant(fitID, implant.item.ID, recalc=implant == set.implants[-1])
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
@@ -21,7 +20,7 @@ class ItemRemove(ContextMenu):
|
|||||||
|
|
||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
srcContext = fullContext[0]
|
srcContext = fullContext[0]
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
from gui.itemStats import ItemStatsDialog
|
from gui.itemStats import ItemStatsDialog
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class ItemStats(ContextMenu):
|
class ItemStats(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -27,7 +27,7 @@ class ItemStats(ContextMenu):
|
|||||||
srcContext = fullContext[0]
|
srcContext = fullContext[0]
|
||||||
if srcContext == "fittingShip":
|
if srcContext == "fittingShip":
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
stuff = sFit.getFit(fitID).ship
|
stuff = sFit.getFit(fitID).ship
|
||||||
else:
|
else:
|
||||||
stuff = selection[0]
|
stuff = selection[0]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
from gui.itemStats import ItemStatsDialog
|
from gui.itemStats import ItemStatsDialog
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
from service.market import Market
|
||||||
|
|
||||||
class MarketJump(ContextMenu):
|
class MarketJump(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -19,7 +19,7 @@ class MarketJump(ContextMenu):
|
|||||||
if not srcContext in validContexts or selection is None or len(selection) < 1:
|
if not srcContext in validContexts or selection is None or len(selection) < 1:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
item = getattr(selection[0], "item", selection[0])
|
item = getattr(selection[0], "item", selection[0])
|
||||||
mktGrp = sMkt.getMarketGroupByItem(item)
|
mktGrp = sMkt.getMarketGroupByItem(item)
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
from gui.itemStats import ItemStatsDialog
|
from gui.itemStats import ItemStatsDialog
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
from service.market import Market
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class MetaSwap(ContextMenu):
|
class MetaSwap(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -17,7 +18,7 @@ class MetaSwap(ContextMenu):
|
|||||||
|
|
||||||
# Check if list of variations is same for all of selection
|
# Check if list of variations is same for all of selection
|
||||||
# If not - don't show the menu
|
# If not - don't show the menu
|
||||||
mkt = service.Market.getInstance()
|
mkt = Market.getInstance()
|
||||||
self.variations = None
|
self.variations = None
|
||||||
for i in selection:
|
for i in selection:
|
||||||
variations = mkt.getVariationsByItems([i.item])
|
variations = mkt.getVariationsByItems([i.item])
|
||||||
@@ -88,7 +89,7 @@ class MetaSwap(ContextMenu):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from eos.types import Hardpoint
|
from eos.types import Hardpoint
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
from service.market import Market
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class ModuleAmmoPicker(ContextMenu):
|
class ModuleAmmoPicker(ContextMenu):
|
||||||
DAMAGE_TYPES = ("em", "explosive", "kinetic", "thermal")
|
DAMAGE_TYPES = ("em", "explosive", "kinetic", "thermal")
|
||||||
@@ -40,7 +41,7 @@ class ModuleAmmoPicker(ContextMenu):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
self.modules = modules
|
self.modules = modules
|
||||||
self.charges = list(filter(lambda charge: service.Market.getInstance().getPublicityByItem(charge), validCharges))
|
self.charges = list(filter(lambda charge: Market.getInstance().getPublicityByItem(charge), validCharges))
|
||||||
return len(self.charges) > 0
|
return len(self.charges) > 0
|
||||||
|
|
||||||
def getText(self, itmContext, selection):
|
def getText(self, itmContext, selection):
|
||||||
@@ -214,7 +215,7 @@ class ModuleAmmoPicker(ContextMenu):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
sFit.setAmmo(fitID, charge.ID if charge is not None else None, self.modules)
|
sFit.setAmmo(fitID, charge.ID if charge is not None else None, self.modules)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from eos.types import Hardpoint
|
from eos.types import Hardpoint
|
||||||
@@ -26,7 +25,7 @@ class ModuleGlobalAmmoPicker(ModuleAmmoPicker):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
fit = eos.db.getFit(fitID)
|
fit = eos.db.getFit(fitID)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from gui.contextMenu import ContextMenu
|
|||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import wx
|
import wx
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import service
|
from service.market import Market
|
||||||
|
|
||||||
class PriceClear(ContextMenu):
|
class PriceClear(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -15,7 +15,7 @@ class PriceClear(ContextMenu):
|
|||||||
return "Reset Price Cache"
|
return "Reset Price Cache"
|
||||||
|
|
||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sMkt.clearPriceCache()
|
sMkt.clearPriceCache()
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import wx
|
import wx
|
||||||
import eos.db
|
import eos.db
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class Project(ContextMenu):
|
class Project(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -13,7 +13,7 @@ class Project(ContextMenu):
|
|||||||
if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None:
|
if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ class Project(ContextMenu):
|
|||||||
return "Project {0} onto Fit".format(itmContext)
|
return "Project {0} onto Fit".format(itmContext)
|
||||||
|
|
||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
trigger = sFit.project(fitID, selection[0])
|
trigger = sFit.project(fitID, selection[0])
|
||||||
if trigger:
|
if trigger:
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import wx
|
import wx
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
from gui.shipBrowser import Stage3Selected
|
from gui.shipBrowser import Stage3Selected
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class ShipJump(ContextMenu):
|
class ShipJump(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -16,7 +16,7 @@ class ShipJump(ContextMenu):
|
|||||||
|
|
||||||
def activate(self, fullContext, selection, i):
|
def activate(self, fullContext, selection, i):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
stuff = sFit.getFit(fitID).ship
|
stuff = sFit.getFit(fitID).ship
|
||||||
groupID = stuff.item.group.ID
|
groupID = stuff.item.group.ID
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import wx
|
import wx
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class TacticalMode(ContextMenu):
|
class TacticalMode(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -12,7 +13,7 @@ class TacticalMode(ContextMenu):
|
|||||||
if self.mainFrame.getActiveFit() is None or srcContext != "fittingShip":
|
if self.mainFrame.getActiveFit() is None or srcContext != "fittingShip":
|
||||||
return False
|
return False
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
|
|
||||||
@@ -52,7 +53,7 @@ class TacticalMode(ContextMenu):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.setMode(fitID, self.modeIds[event.Id])
|
sFit.setMode(fitID, self.modeIds[event.Id])
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
from service import targetResists as svc_targetResists
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
@@ -18,7 +19,7 @@ class TargetResists(ContextMenu):
|
|||||||
if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull":
|
if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull":
|
||||||
return False
|
return False
|
||||||
|
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = svc_targetResists.TargetResists.getInstance()
|
||||||
self.patterns = sTR.getTargetResistsList()
|
self.patterns = sTR.getTargetResistsList()
|
||||||
self.patterns.sort(key=lambda p: (p.name in ["None"], p.name))
|
self.patterns.sort(key=lambda p: (p.name in ["None"], p.name))
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ class TargetResists(ContextMenu):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.setTargetResists(fitID, pattern)
|
sFit.setTargetResists(fitID, pattern)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -50,7 +51,7 @@ class TargetResists(ContextMenu):
|
|||||||
item.pattern = pattern
|
item.pattern = pattern
|
||||||
|
|
||||||
# determine active pattern
|
# determine active pattern
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
f = sFit.getFit(fitID)
|
f = sFit.getFit(fitID)
|
||||||
tr = f.targetResists
|
tr = f.targetResists
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
|
from service.market import Market
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class WhProjector(ContextMenu):
|
class WhProjector(ContextMenu):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -16,7 +17,7 @@ class WhProjector(ContextMenu):
|
|||||||
|
|
||||||
def getSubMenu(self, context, selection, rootMenu, i, pitem):
|
def getSubMenu(self, context, selection, rootMenu, i, pitem):
|
||||||
msw = True if "wxMSW" in wx.PlatformInfo else False
|
msw = True if "wxMSW" in wx.PlatformInfo else False
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
effdata = sMkt.getSystemWideEffects()
|
effdata = sMkt.getSystemWideEffects()
|
||||||
|
|
||||||
self.idmap = {}
|
self.idmap = {}
|
||||||
@@ -48,7 +49,7 @@ class WhProjector(ContextMenu):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.project(fitID, swObj)
|
sFit.project(fitID, swObj)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|||||||
@@ -18,12 +18,11 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
from gui.graph import Graph
|
from gui.graph import Graph
|
||||||
import service
|
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from eos.graph.fitDps import FitDpsGraph as FitDps
|
from eos.graph.fitDps import FitDpsGraph as FitDps
|
||||||
from eos.graph import Data
|
from eos.graph import Data
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
from service.attribute import Attribute
|
||||||
|
|
||||||
class FitDpsGraph(Graph):
|
class FitDpsGraph(Graph):
|
||||||
propertyAttributeMap = {"angle": "maxVelocity",
|
propertyAttributeMap = {"angle": "maxVelocity",
|
||||||
@@ -53,7 +52,7 @@ class FitDpsGraph(Graph):
|
|||||||
|
|
||||||
def getIcons(self):
|
def getIcons(self):
|
||||||
icons = {}
|
icons = {}
|
||||||
sAttr = service.Attribute.getInstance()
|
sAttr = Attribute.getInstance()
|
||||||
for key, attrName in self.propertyAttributeMap.iteritems():
|
for key, attrName in self.propertyAttributeMap.iteritems():
|
||||||
iconFile = sAttr.getAttributeInfo(attrName).icon.iconFile
|
iconFile = sAttr.getAttributeInfo(attrName).icon.iconFile
|
||||||
bitmap = BitmapLoader.getBitmap(iconFile, "icons")
|
bitmap = BitmapLoader.getBitmap(iconFile, "icons")
|
||||||
|
|||||||
@@ -4,8 +4,9 @@ from gui.preferenceView import PreferenceView
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
from service.crest import CrestModes
|
from service.crest import CrestModes
|
||||||
|
from service.crest import Crest
|
||||||
|
from service.settings import CRESTSettings
|
||||||
|
|
||||||
from wx.lib.intctrl import IntCtrl
|
from wx.lib.intctrl import IntCtrl
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ class PFCrestPref ( PreferenceView):
|
|||||||
def populatePanel( self, panel ):
|
def populatePanel( self, panel ):
|
||||||
|
|
||||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
self.settings = service.settings.CRESTSettings.getInstance()
|
self.settings = CRESTSettings.getInstance()
|
||||||
self.dirtySettings = False
|
self.dirtySettings = False
|
||||||
dlgWidth = panel.GetParent().GetParent().ClientSize.width
|
dlgWidth = panel.GetParent().GetParent().ClientSize.width
|
||||||
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
@@ -107,16 +108,16 @@ class PFCrestPref ( PreferenceView):
|
|||||||
def OnModeChange(self, event):
|
def OnModeChange(self, event):
|
||||||
self.settings.set('mode', event.GetInt())
|
self.settings.set('mode', event.GetInt())
|
||||||
self.ToggleProxySettings(self.settings.get('mode'))
|
self.ToggleProxySettings(self.settings.get('mode'))
|
||||||
service.Crest.restartService()
|
Crest.restartService()
|
||||||
|
|
||||||
def OnServerChange(self, event):
|
def OnServerChange(self, event):
|
||||||
self.settings.set('server', event.GetInt())
|
self.settings.set('server', event.GetInt())
|
||||||
service.Crest.restartService()
|
Crest.restartService()
|
||||||
|
|
||||||
def OnBtnApply(self, event):
|
def OnBtnApply(self, event):
|
||||||
self.settings.set('clientID', self.inputClientID.GetValue().strip())
|
self.settings.set('clientID', self.inputClientID.GetValue().strip())
|
||||||
self.settings.set('clientSecret', self.inputClientSecret.GetValue().strip())
|
self.settings.set('clientSecret', self.inputClientSecret.GetValue().strip())
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
sCrest.delAllCharacters()
|
sCrest.delAllCharacters()
|
||||||
|
|
||||||
def ToggleProxySettings(self, mode):
|
def ToggleProxySettings(self, mode):
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ from gui.preferenceView import PreferenceView
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
from service.settings import SettingsProvider
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class PFGeneralPref ( PreferenceView):
|
class PFGeneralPref ( PreferenceView):
|
||||||
title = "General"
|
title = "General"
|
||||||
@@ -14,7 +14,7 @@ class PFGeneralPref ( PreferenceView):
|
|||||||
def populatePanel( self, panel ):
|
def populatePanel( self, panel ):
|
||||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
self.dirtySettings = False
|
self.dirtySettings = False
|
||||||
self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []})
|
self.openFitsSettings = SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []})
|
||||||
|
|
||||||
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ class PFGeneralPref ( PreferenceView):
|
|||||||
|
|
||||||
defCharSizer = wx.BoxSizer( wx.HORIZONTAL )
|
defCharSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
self.sFit = service.Fit.getInstance()
|
self.sFit = Fit.getInstance()
|
||||||
|
|
||||||
self.cbGlobalChar.SetValue(self.sFit.serviceFittingOptions["useGlobalCharacter"])
|
self.cbGlobalChar.SetValue(self.sFit.serviceFittingOptions["useGlobalCharacter"])
|
||||||
self.cbGlobalDmgPattern.SetValue(self.sFit.serviceFittingOptions["useGlobalDamagePattern"])
|
self.cbGlobalDmgPattern.SetValue(self.sFit.serviceFittingOptions["useGlobalDamagePattern"])
|
||||||
|
|||||||
@@ -5,9 +5,10 @@ from gui.preferenceView import PreferenceView
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
|
from service.settings import HTMLExportSettings
|
||||||
|
|
||||||
|
|
||||||
class PFHTMLExportPref ( PreferenceView):
|
class PFHTMLExportPref ( PreferenceView):
|
||||||
title = "HTML Export"
|
title = "HTML Export"
|
||||||
@@ -22,7 +23,7 @@ class PFHTMLExportPref ( PreferenceView):
|
|||||||
|
|
||||||
def populatePanel( self, panel ):
|
def populatePanel( self, panel ):
|
||||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
self.HTMLExportSettings = service.settings.HTMLExportSettings.getInstance()
|
self.HTMLExportSettings = HTMLExportSettings.getInstance()
|
||||||
self.dirtySettings = False
|
self.dirtySettings = False
|
||||||
dlgWidth = panel.GetParent().GetParent().ClientSize.width
|
dlgWidth = panel.GetParent().GetParent().ClientSize.width
|
||||||
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ from gui.preferenceView import PreferenceView
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
from service.settings import NetworkSettings
|
||||||
|
from service.network import Network
|
||||||
|
|
||||||
class PFNetworkPref ( PreferenceView):
|
class PFNetworkPref ( PreferenceView):
|
||||||
title = "Network"
|
title = "Network"
|
||||||
@@ -12,8 +13,8 @@ class PFNetworkPref ( PreferenceView):
|
|||||||
def populatePanel( self, panel ):
|
def populatePanel( self, panel ):
|
||||||
|
|
||||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
self.settings = service.settings.NetworkSettings.getInstance()
|
self.settings = NetworkSettings.getInstance()
|
||||||
self.network = service.Network.getInstance()
|
self.network = Network.getInstance()
|
||||||
self.dirtySettings = False
|
self.dirtySettings = False
|
||||||
|
|
||||||
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
@@ -164,7 +165,7 @@ class PFNetworkPref ( PreferenceView):
|
|||||||
|
|
||||||
self.UpdateApplyButtonState()
|
self.UpdateApplyButtonState()
|
||||||
|
|
||||||
if self.nMode is not service.settings.NetworkSettings.PROXY_MODE_MANUAL: # == 2
|
if self.nMode is not NetworkSettings.PROXY_MODE_MANUAL: # == 2
|
||||||
self.ToggleProxySettings(False)
|
self.ToggleProxySettings(False)
|
||||||
else:
|
else:
|
||||||
self.ToggleProxySettings(True)
|
self.ToggleProxySettings(True)
|
||||||
@@ -236,7 +237,7 @@ class PFNetworkPref ( PreferenceView):
|
|||||||
|
|
||||||
self.UpdateApplyButtonState()
|
self.UpdateApplyButtonState()
|
||||||
|
|
||||||
if choice is not service.settings.NetworkSettings.PROXY_MODE_MANUAL:
|
if choice is not NetworkSettings.PROXY_MODE_MANUAL:
|
||||||
self.ToggleProxySettings(False)
|
self.ToggleProxySettings(False)
|
||||||
else:
|
else:
|
||||||
self.ToggleProxySettings(True)
|
self.ToggleProxySettings(True)
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from gui.preferenceView import PreferenceView
|
from gui.preferenceView import PreferenceView
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
from service.settings import UpdateSettings
|
||||||
|
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
|
|
||||||
@@ -17,7 +16,7 @@ class PFUpdatePref (PreferenceView):
|
|||||||
"suppressed release notifications, if any."
|
"suppressed release notifications, if any."
|
||||||
|
|
||||||
def populatePanel( self, panel ):
|
def populatePanel( self, panel ):
|
||||||
self.UpdateSettings = service.settings.UpdateSettings.getInstance()
|
self.UpdateSettings = UpdateSettings.getInstance()
|
||||||
self.dirtySettings = False
|
self.dirtySettings = False
|
||||||
|
|
||||||
dlgWidth = panel.GetParent().GetParent().ClientSize.width
|
dlgWidth = panel.GetParent().GetParent().ClientSize.width
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
from gui.statsView import StatsView
|
from gui.statsView import StatsView
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
@@ -114,7 +113,7 @@ class FirepowerViewFull(StatsView):
|
|||||||
def switchToMiningYieldView(self, event):
|
def switchToMiningYieldView(self, event):
|
||||||
# Getting the active fit
|
# Getting the active fit
|
||||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(mainFrame.getActiveFit())
|
fit = sFit.getFit(mainFrame.getActiveFit())
|
||||||
# Remove ourselves from statsPane's view list
|
# Remove ourselves from statsPane's view list
|
||||||
self.parent.views.remove(self)
|
self.parent.views.remove(self)
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
from gui.statsView import StatsView
|
from gui.statsView import StatsView
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
@@ -103,7 +102,7 @@ class MiningYieldViewFull(StatsView):
|
|||||||
def switchToFirepowerView(self, event):
|
def switchToFirepowerView(self, event):
|
||||||
# Getting the active fit
|
# Getting the active fit
|
||||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(mainFrame.getActiveFit())
|
fit = sFit.getFit(mainFrame.getActiveFit())
|
||||||
# Remove ourselves from statsPane's view list
|
# Remove ourselves from statsPane's view list
|
||||||
self.parent.views.remove(self)
|
self.parent.views.remove(self)
|
||||||
@@ -124,9 +123,9 @@ class MiningYieldViewFull(StatsView):
|
|||||||
def refreshPanel(self, fit):
|
def refreshPanel(self, fit):
|
||||||
#If we did anything intresting, we'd update our labels to reflect the new fit's stats here
|
#If we did anything intresting, we'd update our labels to reflect the new fit's stats here
|
||||||
|
|
||||||
stats = (("labelFullminingyieldMiner", lambda: fit.minerYield * 3600, 3, 0, 0, u"%s m\u00B3/h",None),
|
stats = (("labelFullminingyieldMiner", lambda: fit.minerYield, 3, 0, 0, u"%s m\u00B3/s",None),
|
||||||
("labelFullminingyieldDrone", lambda: fit.droneYield * 3600, 3, 0, 0, u"%s m\u00B3/h", None),
|
("labelFullminingyieldDrone", lambda: fit.droneYield, 3, 0, 0, u"%s m\u00B3/s", None),
|
||||||
("labelFullminingyieldTotal", lambda: fit.totalYield * 3600, 3, 0, 0, u"%s m\u00B3/h", None))
|
("labelFullminingyieldTotal", lambda: fit.totalYield, 3, 0, 0, u"%s m\u00B3/s", None))
|
||||||
|
|
||||||
counter = 0
|
counter = 0
|
||||||
for labelName, value, prec, lowest, highest, valueFormat, altFormat in stats:
|
for labelName, value, prec, lowest, highest, valueFormat, altFormat in stats:
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ from gui.statsView import StatsView
|
|||||||
from gui import builtinStatsViews
|
from gui import builtinStatsViews
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
import service
|
from service.market import Market
|
||||||
|
|
||||||
class PriceViewFull(StatsView):
|
class PriceViewFull(StatsView):
|
||||||
name = "priceViewFull"
|
name = "priceViewFull"
|
||||||
@@ -92,7 +92,7 @@ class PriceViewFull(StatsView):
|
|||||||
for _ in xrange(cargo.amount):
|
for _ in xrange(cargo.amount):
|
||||||
typeIDs.append(cargo.itemID)
|
typeIDs.append(cargo.itemID)
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sMkt.getPrices(typeIDs, self.processPrices)
|
sMkt.getPrices(typeIDs, self.processPrices)
|
||||||
self.labelEMStatus.SetLabel("Updating prices...")
|
self.labelEMStatus.SetLabel("Updating prices...")
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ from gui.bitmapLoader import BitmapLoader
|
|||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.builtinStatsViews.resistancesViewFull as rvf
|
import gui.builtinStatsViews.resistancesViewFull as rvf
|
||||||
import service
|
from service.fit import Fit
|
||||||
|
|
||||||
class RechargeViewFull(StatsView):
|
class RechargeViewFull(StatsView):
|
||||||
name = "rechargeViewFull"
|
name = "rechargeViewFull"
|
||||||
@@ -43,7 +43,7 @@ class RechargeViewFull(StatsView):
|
|||||||
|
|
||||||
def toggleEffective(self, event):
|
def toggleEffective(self, event):
|
||||||
self.effective = event.effective
|
self.effective = event.effective
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
self.refreshPanel(sFit.getFit(self.mainFrame.getActiveFit()))
|
self.refreshPanel(sFit.getFit(self.mainFrame.getActiveFit()))
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ from gui import builtinStatsViews
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from gui import pygauge as PG
|
from gui import pygauge as PG
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
import service
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.builtinViews.fittingView as fv
|
import gui.builtinViews.fittingView as fv
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|||||||
@@ -22,14 +22,16 @@ from gui.viewColumn import ViewColumn
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
|
|
||||||
import service
|
from service.attribute import Attribute
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
class AttributeDisplay(ViewColumn):
|
class AttributeDisplay(ViewColumn):
|
||||||
name = "attr"
|
name = "attr"
|
||||||
def __init__(self, fittingView, params):
|
def __init__(self, fittingView, params):
|
||||||
ViewColumn.__init__(self, fittingView)
|
ViewColumn.__init__(self, fittingView)
|
||||||
sAttr = service.Attribute.getInstance()
|
sAttr = Attribute.getInstance()
|
||||||
info = sAttr.getAttributeInfo(params["attribute"])
|
info = sAttr.getAttributeInfo(params["attribute"])
|
||||||
self.info = info
|
self.info = info
|
||||||
if params["showIcon"]:
|
if params["showIcon"]:
|
||||||
@@ -57,7 +59,7 @@ class AttributeDisplay(ViewColumn):
|
|||||||
self.direct = True
|
self.direct = True
|
||||||
self.view = fittingView
|
self.view = fittingView
|
||||||
originalRefresh = fittingView.refresh
|
originalRefresh = fittingView.refresh
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
#Hack into our master view and add a callback for ourselves to know when to query
|
#Hack into our master view and add a callback for ourselves to know when to query
|
||||||
def refresh(stuff):
|
def refresh(stuff):
|
||||||
self.directInfo = sMkt.directAttrRequest(stuff, info) if stuff else None
|
self.directInfo = sMkt.directAttrRequest(stuff, info) if stuff else None
|
||||||
|
|||||||
@@ -21,9 +21,10 @@
|
|||||||
from gui.viewColumn import ViewColumn
|
from gui.viewColumn import ViewColumn
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
|
|
||||||
|
#from eos.saveddata.fit import Fit
|
||||||
|
from service.fit import Fit
|
||||||
import wx
|
import wx
|
||||||
from eos.types import Drone, Cargo, Fit, Module, Slot, Rack, Implant, Fighter
|
from eos.types import Drone, Cargo, Module, Slot, Rack, Implant, Fighter
|
||||||
import service
|
|
||||||
|
|
||||||
class BaseName(ViewColumn):
|
class BaseName(ViewColumn):
|
||||||
name = "Base Name"
|
name = "Base Name"
|
||||||
@@ -51,7 +52,7 @@ class BaseName(ViewColumn):
|
|||||||
else:
|
else:
|
||||||
return "%s (%s)" % (stuff.name, stuff.ship.item.name)
|
return "%s (%s)" % (stuff.name, stuff.ship.item.name)
|
||||||
elif isinstance(stuff, Rack):
|
elif isinstance(stuff, Rack):
|
||||||
if service.Fit.getInstance().serviceFittingOptions["rackLabels"]:
|
if Fit.getInstance().serviceFittingOptions["rackLabels"]:
|
||||||
if stuff.slot == Slot.MODE:
|
if stuff.slot == Slot.MODE:
|
||||||
return u'─ Tactical Mode ─'
|
return u'─ Tactical Mode ─'
|
||||||
else:
|
else:
|
||||||
@@ -68,7 +69,7 @@ class BaseName(ViewColumn):
|
|||||||
else:
|
else:
|
||||||
item = getattr(stuff, "item", stuff)
|
item = getattr(stuff, "item", stuff)
|
||||||
|
|
||||||
if service.Fit.getInstance().serviceFittingOptions["showMarketShortcuts"]:
|
if Fit.getInstance().serviceFittingOptions["showMarketShortcuts"]:
|
||||||
marketShortcut = getattr(item, "marketShortcut", None)
|
marketShortcut = getattr(item, "marketShortcut", None)
|
||||||
|
|
||||||
if marketShortcut:
|
if marketShortcut:
|
||||||
|
|||||||
@@ -18,12 +18,12 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
|
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
from gui.viewColumn import ViewColumn
|
from gui.viewColumn import ViewColumn
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from eos.types import Mode
|
from eos.types import Mode
|
||||||
|
from service.attribute import Attribute
|
||||||
|
|
||||||
class CapacitorUse(ViewColumn):
|
class CapacitorUse(ViewColumn):
|
||||||
name = "Capacitor Usage"
|
name = "Capacitor Usage"
|
||||||
@@ -32,7 +32,7 @@ class CapacitorUse(ViewColumn):
|
|||||||
|
|
||||||
self.mask = wx.LIST_MASK_IMAGE
|
self.mask = wx.LIST_MASK_IMAGE
|
||||||
|
|
||||||
sAttr = service.Attribute.getInstance()
|
sAttr = Attribute.getInstance()
|
||||||
info = sAttr.getAttributeInfo("capacitorNeed")
|
info = sAttr.getAttributeInfo("capacitorNeed")
|
||||||
self.imageId = fittingView.imageList.GetImageIndex("capacitorRecharge_small", "gui")
|
self.imageId = fittingView.imageList.GetImageIndex("capacitorRecharge_small", "gui")
|
||||||
self.bitmap = BitmapLoader.getBitmap("capacitorRecharge_small", "gui")
|
self.bitmap = BitmapLoader.getBitmap("capacitorRecharge_small", "gui")
|
||||||
|
|||||||
@@ -20,11 +20,12 @@
|
|||||||
from gui import builtinViewColumns
|
from gui import builtinViewColumns
|
||||||
from gui.viewColumn import ViewColumn
|
from gui.viewColumn import ViewColumn
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import service
|
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
import wx
|
import wx
|
||||||
from eos.types import Mode
|
from eos.types import Mode
|
||||||
|
|
||||||
|
from service.attribute import Attribute
|
||||||
|
|
||||||
class MaxRange(ViewColumn):
|
class MaxRange(ViewColumn):
|
||||||
name = "Max Range"
|
name = "Max Range"
|
||||||
def __init__(self, fittingView, params = None):
|
def __init__(self, fittingView, params = None):
|
||||||
@@ -33,7 +34,7 @@ class MaxRange(ViewColumn):
|
|||||||
"displayName": False}
|
"displayName": False}
|
||||||
ViewColumn.__init__(self, fittingView)
|
ViewColumn.__init__(self, fittingView)
|
||||||
|
|
||||||
sAttr = service.Attribute.getInstance()
|
sAttr = Attribute.getInstance()
|
||||||
info = sAttr.getAttributeInfo("maxRange")
|
info = sAttr.getAttributeInfo("maxRange")
|
||||||
self.info = info
|
self.info = info
|
||||||
if params["showIcon"]:
|
if params["showIcon"]:
|
||||||
|
|||||||
@@ -405,9 +405,9 @@ class Miscellanea(ViewColumn):
|
|||||||
cycleTime = stuff.cycleTime
|
cycleTime = stuff.cycleTime
|
||||||
if not miningAmount or not cycleTime:
|
if not miningAmount or not cycleTime:
|
||||||
return "", None
|
return "", None
|
||||||
minePerHour = (float(miningAmount) * 1000 / cycleTime) * 3600
|
minePerSec = float(miningAmount) * 1000 / cycleTime
|
||||||
text = "{0}/h".format(formatAmount(minePerHour, 3, 0, 3))
|
text = "{0}/s".format(formatAmount(minePerSec, 3, 0, 3))
|
||||||
tooltip = "Mining Yield per hour"
|
tooltip = "Yield per second"
|
||||||
return text, tooltip
|
return text, tooltip
|
||||||
elif itemGroup == "Logistic Drone":
|
elif itemGroup == "Logistic Drone":
|
||||||
armorAmount = stuff.getModifiedItemAttr("armorDamageAmount")
|
armorAmount = stuff.getModifiedItemAttr("armorDamageAmount")
|
||||||
@@ -442,9 +442,9 @@ class Miscellanea(ViewColumn):
|
|||||||
cycleTime = stuff.getModifiedItemAttr("duration")
|
cycleTime = stuff.getModifiedItemAttr("duration")
|
||||||
if not miningAmount or not cycleTime:
|
if not miningAmount or not cycleTime:
|
||||||
return "", None
|
return "", None
|
||||||
minePerHour = (float(miningAmount) * 1000 / cycleTime) * 3600
|
minePerSec = float(miningAmount) * 1000 / cycleTime
|
||||||
text = "{0}/h".format(formatAmount(minePerHour, 3, 0, 3))
|
text = "{0}/s".format(formatAmount(minePerSec, 3, 0, 3))
|
||||||
tooltip = "Mining Yield per hour"
|
tooltip = "Yield per second"
|
||||||
return text, tooltip
|
return text, tooltip
|
||||||
elif itemGroup == "Micro Jump Drive":
|
elif itemGroup == "Micro Jump Drive":
|
||||||
cycleTime = stuff.getModifiedItemAttr("duration") / 1000
|
cycleTime = stuff.getModifiedItemAttr("duration") / 1000
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ from gui.bitmapLoader import BitmapLoader
|
|||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
from eos.types import Drone, Cargo
|
from eos.types import Drone, Cargo
|
||||||
import wx
|
import wx
|
||||||
import service
|
from service.market import Market
|
||||||
|
|
||||||
class Price(ViewColumn):
|
class Price(ViewColumn):
|
||||||
name = "Price"
|
name = "Price"
|
||||||
@@ -36,7 +36,7 @@ class Price(ViewColumn):
|
|||||||
if stuff.item is None or stuff.item.group.name == "Ship Modifiers":
|
if stuff.item is None or stuff.item.group.name == "Ship Modifiers":
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
price = sMkt.getPriceNow(stuff.item.ID)
|
price = sMkt.getPriceNow(stuff.item.ID)
|
||||||
|
|
||||||
if not price or not price.price or not price.isValid:
|
if not price or not price.price or not price.isValid:
|
||||||
@@ -50,7 +50,7 @@ class Price(ViewColumn):
|
|||||||
return formatAmount(price, 3, 3, 9, currency=True)
|
return formatAmount(price, 3, 3, 9, currency=True)
|
||||||
|
|
||||||
def delayedText(self, mod, display, colItem):
|
def delayedText(self, mod, display, colItem):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
def callback(item):
|
def callback(item):
|
||||||
price = sMkt.getPriceNow(item.ID)
|
price = sMkt.getPriceNow(item.ID)
|
||||||
text = formatAmount(price.price, 3, 3, 9, currency=True) if price.price else ""
|
text = formatAmount(price.price, 3, 3, 9, currency=True) if price.price else ""
|
||||||
|
|||||||
@@ -21,13 +21,12 @@ from gui.viewColumn import ViewColumn
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
|
|
||||||
class PropertyDisplay(ViewColumn):
|
class PropertyDisplay(ViewColumn):
|
||||||
name = "prop"
|
name = "prop"
|
||||||
def __init__(self, fittingView, params):
|
def __init__(self, fittingView, params):
|
||||||
ViewColumn.__init__(self, fittingView)
|
ViewColumn.__init__(self, fittingView)
|
||||||
sAttr = service.Attribute.getInstance()
|
sAttr = Attribute.getInstance()
|
||||||
attributeSlave = params["attributeSlave"] or params["property"]
|
attributeSlave = params["attributeSlave"] or params["property"]
|
||||||
# This function can throw an exception if the database isn't sane
|
# This function can throw an exception if the database isn't sane
|
||||||
# We need to do a sanity check before this runs
|
# We need to do a sanity check before this runs
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import wx
|
|||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import gui.chromeTabs
|
import gui.chromeTabs
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import service
|
|
||||||
|
|
||||||
class BlankPage(wx.Panel):
|
class BlankPage(wx.Panel):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
@@ -23,7 +22,7 @@ class BlankPage(wx.Panel):
|
|||||||
def pageChanged(self, event):
|
def pageChanged(self, event):
|
||||||
if self.parent.IsActive(self):
|
if self.parent.IsActive(self):
|
||||||
fitID = None
|
fitID = None
|
||||||
# sFit = service.Fit.getInstance()
|
# sFit = Fit.getInstance()
|
||||||
# sFit.switchFit(fitID)
|
# sFit.switchFit(fitID)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import service
|
|
||||||
|
|
||||||
class BaseValidator(wx.PyValidator):
|
class BaseValidator(wx.PyValidator):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
import wx.lib.newevent
|
import wx.lib.newevent
|
||||||
import service
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.marketBrowser
|
import gui.marketBrowser
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
@@ -32,6 +31,9 @@ from gui.bitmapLoader import BitmapLoader
|
|||||||
import gui.builtinViews.emptyView
|
import gui.builtinViews.emptyView
|
||||||
from gui.utils.exportHtml import exportHtml
|
from gui.utils.exportHtml import exportHtml
|
||||||
|
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
#Tab spawning handler
|
#Tab spawning handler
|
||||||
@@ -55,7 +57,7 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
|
|||||||
pass
|
pass
|
||||||
if count < 0:
|
if count < 0:
|
||||||
startup = getattr(event, "startup", False) # see OpenFitsThread in gui.mainFrame
|
startup = getattr(event, "startup", False) # see OpenFitsThread in gui.mainFrame
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
openFitInNew = sFit.serviceFittingOptions["openFitInNew"]
|
openFitInNew = sFit.serviceFittingOptions["openFitInNew"]
|
||||||
mstate = wx.GetMouseState()
|
mstate = wx.GetMouseState()
|
||||||
|
|
||||||
@@ -207,7 +209,7 @@ class FittingView(d.Display):
|
|||||||
def pageChanged(self, event):
|
def pageChanged(self, event):
|
||||||
if self.parent.IsActive(self):
|
if self.parent.IsActive(self):
|
||||||
fitID = self.getActiveFit()
|
fitID = self.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.switchFit(fitID)
|
sFit.switchFit(fitID)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -262,7 +264,7 @@ class FittingView(d.Display):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# Sometimes there is no active page after deletion, hence the try block
|
# Sometimes there is no active page after deletion, hence the try block
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.refreshFit(self.getActiveFit())
|
sFit.refreshFit(self.getActiveFit())
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.activeFitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.activeFitID))
|
||||||
except wx._core.PyDeadObjectError:
|
except wx._core.PyDeadObjectError:
|
||||||
@@ -282,7 +284,7 @@ class FittingView(d.Display):
|
|||||||
fitID = event.fitID
|
fitID = event.fitID
|
||||||
startup = getattr(event, "startup", False)
|
startup = getattr(event, "startup", False)
|
||||||
self.activeFitID = fitID
|
self.activeFitID = fitID
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
self.updateTab()
|
self.updateTab()
|
||||||
if not startup or startup == 2: # see OpenFitsThread in gui.mainFrame
|
if not startup or startup == 2: # see OpenFitsThread in gui.mainFrame
|
||||||
self.Show(fitID is not None)
|
self.Show(fitID is not None)
|
||||||
@@ -293,7 +295,7 @@ class FittingView(d.Display):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def updateTab(self):
|
def updateTab(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.getActiveFit(), basic=True)
|
fit = sFit.getFit(self.getActiveFit(), basic=True)
|
||||||
|
|
||||||
bitmap = BitmapLoader.getImage("race_%s_small" % fit.ship.item.race, "gui")
|
bitmap = BitmapLoader.getImage("race_%s_small" % fit.ship.item.race, "gui")
|
||||||
@@ -308,7 +310,7 @@ class FittingView(d.Display):
|
|||||||
itemID = event.itemID
|
itemID = event.itemID
|
||||||
fitID = self.activeFitID
|
fitID = self.activeFitID
|
||||||
if fitID != None:
|
if fitID != None:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
if sFit.isAmmo(itemID):
|
if sFit.isAmmo(itemID):
|
||||||
modules = []
|
modules = []
|
||||||
sel = self.GetFirstSelected()
|
sel = self.GetFirstSelected()
|
||||||
@@ -337,7 +339,7 @@ class FittingView(d.Display):
|
|||||||
self.click(event)
|
self.click(event)
|
||||||
|
|
||||||
def removeModule(self, module):
|
def removeModule(self, module):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.activeFitID)
|
fit = sFit.getFit(self.activeFitID)
|
||||||
populate = sFit.removeModule(self.activeFitID, fit.modules.index(module))
|
populate = sFit.removeModule(self.activeFitID, fit.modules.index(module))
|
||||||
|
|
||||||
@@ -351,7 +353,7 @@ class FittingView(d.Display):
|
|||||||
|
|
||||||
dstRow, _ = self.HitTest((x, y))
|
dstRow, _ = self.HitTest((x, y))
|
||||||
if dstRow != -1 and dstRow not in self.blanks:
|
if dstRow != -1 and dstRow not in self.blanks:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
moduleChanged = sFit.changeModule(fitID, self.mods[dstRow].position, srcIdx)
|
moduleChanged = sFit.changeModule(fitID, self.mods[dstRow].position, srcIdx)
|
||||||
if moduleChanged is None:
|
if moduleChanged is None:
|
||||||
@@ -367,7 +369,7 @@ class FittingView(d.Display):
|
|||||||
if dstRow != -1 and dstRow not in self.blanks:
|
if dstRow != -1 and dstRow not in self.blanks:
|
||||||
module = self.mods[dstRow]
|
module = self.mods[dstRow]
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.moveCargoToModule(self.mainFrame.getActiveFit(), module.position, srcIdx, mstate.CmdDown() and module.isEmpty)
|
sFit.moveCargoToModule(self.mainFrame.getActiveFit(), module.position, srcIdx, mstate.CmdDown() and module.isEmpty)
|
||||||
|
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
||||||
@@ -375,7 +377,7 @@ class FittingView(d.Display):
|
|||||||
def swapItems(self, x, y, srcIdx):
|
def swapItems(self, x, y, srcIdx):
|
||||||
'''Swap two modules in fitting window'''
|
'''Swap two modules in fitting window'''
|
||||||
mstate = wx.GetMouseState()
|
mstate = wx.GetMouseState()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.activeFitID)
|
fit = sFit.getFit(self.activeFitID)
|
||||||
|
|
||||||
if mstate.CmdDown():
|
if mstate.CmdDown():
|
||||||
@@ -408,7 +410,7 @@ class FittingView(d.Display):
|
|||||||
known to the display, and not the backend, so it's safe.
|
known to the display, and not the backend, so it's safe.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.activeFitID)
|
fit = sFit.getFit(self.activeFitID)
|
||||||
|
|
||||||
slotOrder = [Slot.SUBSYSTEM, Slot.HIGH, Slot.MED, Slot.LOW, Slot.RIG, Slot.SERVICE]
|
slotOrder = [Slot.SUBSYSTEM, Slot.HIGH, Slot.MED, Slot.LOW, Slot.RIG, Slot.SERVICE]
|
||||||
@@ -481,7 +483,7 @@ class FittingView(d.Display):
|
|||||||
if self.activeFitID is None:
|
if self.activeFitID is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
selection = []
|
selection = []
|
||||||
sel = self.GetFirstSelected()
|
sel = self.GetFirstSelected()
|
||||||
contexts = []
|
contexts = []
|
||||||
@@ -505,7 +507,7 @@ class FittingView(d.Display):
|
|||||||
|
|
||||||
sel = self.GetNextSelected(sel)
|
sel = self.GetNextSelected(sel)
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.activeFitID)
|
fit = sFit.getFit(self.activeFitID)
|
||||||
|
|
||||||
contexts.append(("fittingShip", "Ship" if not fit.isStructure else "Citadel"))
|
contexts.append(("fittingShip", "Ship" if not fit.isStructure else "Citadel"))
|
||||||
@@ -537,7 +539,7 @@ class FittingView(d.Display):
|
|||||||
else:
|
else:
|
||||||
mods = self.getSelectedMods()
|
mods = self.getSelectedMods()
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
ctrl = wx.GetMouseState().CmdDown() or wx.GetMouseState().MiddleDown()
|
ctrl = wx.GetMouseState().CmdDown() or wx.GetMouseState().MiddleDown()
|
||||||
click = "ctrl" if ctrl is True else "right" if event.GetButton() == 3 else "left"
|
click = "ctrl" if ctrl is True else "right" if event.GetButton() == 3 else "left"
|
||||||
@@ -571,7 +573,7 @@ class FittingView(d.Display):
|
|||||||
self.Freeze()
|
self.Freeze()
|
||||||
d.Display.refresh(self, stuff)
|
d.Display.refresh(self, stuff)
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.activeFitID)
|
fit = sFit.getFit(self.activeFitID)
|
||||||
slotMap = {}
|
slotMap = {}
|
||||||
|
|
||||||
@@ -637,7 +639,7 @@ class FittingView(d.Display):
|
|||||||
for i in xrange(len(self.DEFAULT_COLS)):
|
for i in xrange(len(self.DEFAULT_COLS)):
|
||||||
columnsWidths.append(0)
|
columnsWidths.append(0)
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
try:
|
try:
|
||||||
fit = sFit.getFit(self.activeFitID)
|
fit = sFit.getFit(self.activeFitID)
|
||||||
except:
|
except:
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import wx.gizmos
|
import wx.gizmos
|
||||||
import gui.fleetBrowser
|
import gui.fleetBrowser
|
||||||
import service
|
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
|
||||||
#Tab spawning handler
|
#Tab spawning handler
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import gui.PFSearchBox as SBox
|
import gui.PFSearchBox as SBox
|
||||||
from gui.marketBrowser import SearchBox
|
from gui.marketBrowser import SearchBox
|
||||||
from wx.lib.buttons import GenBitmapButton
|
from wx.lib.buttons import GenBitmapButton
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
class BaseImplantEditorView (wx.Panel):
|
class BaseImplantEditorView (wx.Panel):
|
||||||
def addMarketViewImage(self, iconFile):
|
def addMarketViewImage(self, iconFile):
|
||||||
@@ -71,7 +71,7 @@ class BaseImplantEditorView (wx.Panel):
|
|||||||
|
|
||||||
# Populate the market tree
|
# Populate the market tree
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
for mktGrp in sMkt.getImplantTree():
|
for mktGrp in sMkt.getImplantTree():
|
||||||
iconId = self.addMarketViewImage(sMkt.getIconByMarketGroup(mktGrp))
|
iconId = self.addMarketViewImage(sMkt.getIconByMarketGroup(mktGrp))
|
||||||
childId = self.availableImplantsTree.AppendItem(root, mktGrp.name, iconId, data=wx.TreeItemData(mktGrp.ID))
|
childId = self.availableImplantsTree.AppendItem(root, mktGrp.name, iconId, data=wx.TreeItemData(mktGrp.ID))
|
||||||
@@ -126,7 +126,7 @@ class BaseImplantEditorView (wx.Panel):
|
|||||||
|
|
||||||
def expandLookup(self, event):
|
def expandLookup(self, event):
|
||||||
tree = self.availableImplantsTree
|
tree = self.availableImplantsTree
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
parent = event.Item
|
parent = event.Item
|
||||||
child, _ = tree.GetFirstChild(parent)
|
child, _ = tree.GetFirstChild(parent)
|
||||||
text = tree.GetItemText(child)
|
text = tree.GetItemText(child)
|
||||||
@@ -235,7 +235,7 @@ class ItemView(d.Display):
|
|||||||
self.update(self.items)
|
self.update(self.items)
|
||||||
|
|
||||||
def scheduleSearch(self, event=None):
|
def scheduleSearch(self, event=None):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
search = self.searchBox.GetLineText(0)
|
search = self.searchBox.GetLineText(0)
|
||||||
# Make sure we do not count wildcard as search symbol
|
# Make sure we do not count wildcard as search symbol
|
||||||
|
|||||||
@@ -18,12 +18,12 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
import gui.marketBrowser as mb
|
import gui.marketBrowser as mb
|
||||||
from gui.builtinViewColumns.state import State
|
from gui.builtinViewColumns.state import State
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import globalEvents as GE
|
import globalEvents as GE
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class CargoViewDrop(wx.PyDropTarget):
|
class CargoViewDrop(wx.PyDropTarget):
|
||||||
def __init__(self, dropFn):
|
def __init__(self, dropFn):
|
||||||
@@ -75,7 +75,7 @@ class CargoView(d.Display):
|
|||||||
if data[0] == "fitting":
|
if data[0] == "fitting":
|
||||||
self.swapModule(x, y, int(data[1]))
|
self.swapModule(x, y, int(data[1]))
|
||||||
elif data[0] == "market":
|
elif data[0] == "market":
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.addCargo(self.mainFrame.getActiveFit(), int(data[1]), 1)
|
sFit.addCargo(self.mainFrame.getActiveFit(), int(data[1]), 1)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ class CargoView(d.Display):
|
|||||||
keycode = event.GetKeyCode()
|
keycode = event.GetKeyCode()
|
||||||
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
|
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
row = self.GetFirstSelected()
|
row = self.GetFirstSelected()
|
||||||
if row != -1:
|
if row != -1:
|
||||||
sFit.removeCargo(fitID, self.GetItemData(row))
|
sFit.removeCargo(fitID, self.GetItemData(row))
|
||||||
@@ -103,7 +103,7 @@ class CargoView(d.Display):
|
|||||||
|
|
||||||
def swapModule(self, x, y, modIdx):
|
def swapModule(self, x, y, modIdx):
|
||||||
'''Swap a module from fitting window with cargo'''
|
'''Swap a module from fitting window with cargo'''
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
dstRow, _ = self.HitTest((x, y))
|
dstRow, _ = self.HitTest((x, y))
|
||||||
mstate = wx.GetMouseState()
|
mstate = wx.GetMouseState()
|
||||||
@@ -125,7 +125,7 @@ class CargoView(d.Display):
|
|||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
||||||
@@ -161,7 +161,7 @@ class CargoView(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col != self.getColIndex(State):
|
if col != self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
cargo = self.cargo[self.GetItemData(row)]
|
cargo = self.cargo[self.GetItemData(row)]
|
||||||
sFit.removeCargo(fitID, self.original.index(cargo))
|
sFit.removeCargo(fitID, self.original.index(cargo))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -174,11 +174,11 @@ class CargoView(d.Display):
|
|||||||
def spawnMenu(self):
|
def spawnMenu(self):
|
||||||
sel = self.GetFirstSelected()
|
sel = self.GetFirstSelected()
|
||||||
if sel != -1:
|
if sel != -1:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
cargo = fit.cargo[sel]
|
cargo = fit.cargo[sel]
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sourceContext = "cargoItem"
|
sourceContext = "cargoItem"
|
||||||
itemContext = sMkt.getCategoryByItem(cargo.item).name
|
itemContext = sMkt.getCategoryByItem(cargo.item).name
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,14 @@ import wx
|
|||||||
import wx.lib.newevent
|
import wx.lib.newevent
|
||||||
import wx.gizmos
|
import wx.gizmos
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import service
|
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
from gui.builtinViews.implantEditor import BaseImplantEditorView
|
from gui.builtinViews.implantEditor import BaseImplantEditorView
|
||||||
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.character import Character
|
||||||
|
from service.network import AuthenticationError, TimeoutError
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
|
|
||||||
class CharacterTextValidor(BaseValidator):
|
class CharacterTextValidor(BaseValidator):
|
||||||
@@ -60,7 +63,7 @@ class CharacterEntityEditor(EntityEditor):
|
|||||||
self.SetEditorValidator(CharacterTextValidor)
|
self.SetEditorValidator(CharacterTextValidor)
|
||||||
|
|
||||||
def getEntitiesFromContext(self):
|
def getEntitiesFromContext(self):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
charList = sorted(sChar.getCharacterList(), key=lambda c: c.name)
|
charList = sorted(sChar.getCharacterList(), key=lambda c: c.name)
|
||||||
|
|
||||||
# Do some processing to ensure that we have All 0 and All 5 at the top
|
# Do some processing to ensure that we have All 0 and All 5 at the top
|
||||||
@@ -76,21 +79,21 @@ class CharacterEntityEditor(EntityEditor):
|
|||||||
return charList
|
return charList
|
||||||
|
|
||||||
def DoNew(self, name):
|
def DoNew(self, name):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
return sChar.new(name)
|
return sChar.new(name)
|
||||||
|
|
||||||
def DoRename(self, entity, name):
|
def DoRename(self, entity, name):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
sChar.rename(entity, name)
|
sChar.rename(entity, name)
|
||||||
|
|
||||||
def DoCopy(self, entity, name):
|
def DoCopy(self, entity, name):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
copy = sChar.copy(entity)
|
copy = sChar.copy(entity)
|
||||||
sChar.rename(copy, name)
|
sChar.rename(copy, name)
|
||||||
return copy
|
return copy
|
||||||
|
|
||||||
def DoDelete(self, entity):
|
def DoDelete(self, entity):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
sChar.delete(entity)
|
sChar.delete(entity)
|
||||||
|
|
||||||
|
|
||||||
@@ -104,7 +107,7 @@ class CharacterEditor(wx.Frame):
|
|||||||
|
|
||||||
self.mainFrame = parent
|
self.mainFrame = parent
|
||||||
#self.disableWin = wx.WindowDisabler(self)
|
#self.disableWin = wx.WindowDisabler(self)
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE))
|
self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE))
|
||||||
|
|
||||||
@@ -181,7 +184,7 @@ class CharacterEditor(wx.Frame):
|
|||||||
self.Destroy()
|
self.Destroy()
|
||||||
|
|
||||||
def saveChar(self, event):
|
def saveChar(self, event):
|
||||||
sChr = service.Character.getInstance()
|
sChr = Character.getInstance()
|
||||||
char = self.entityEditor.getActiveEntity()
|
char = self.entityEditor.getActiveEntity()
|
||||||
sChr.saveCharacter(char.ID)
|
sChr.saveCharacter(char.ID)
|
||||||
wx.PostEvent(self, GE.CharListUpdated())
|
wx.PostEvent(self, GE.CharListUpdated())
|
||||||
@@ -192,7 +195,7 @@ class CharacterEditor(wx.Frame):
|
|||||||
dlg.ShowModal()
|
dlg.ShowModal()
|
||||||
|
|
||||||
def revertChar(self, event):
|
def revertChar(self, event):
|
||||||
sChr = service.Character.getInstance()
|
sChr = Character.getInstance()
|
||||||
char = self.entityEditor.getActiveEntity()
|
char = self.entityEditor.getActiveEntity()
|
||||||
sChr.revertCharacter(char.ID)
|
sChr.revertCharacter(char.ID)
|
||||||
wx.PostEvent(self, GE.CharListUpdated())
|
wx.PostEvent(self, GE.CharListUpdated())
|
||||||
@@ -223,7 +226,7 @@ class CharacterEditor(wx.Frame):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def Destroy(self):
|
def Destroy(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
if fitID is not None:
|
if fitID is not None:
|
||||||
sFit.clearFit(fitID)
|
sFit.clearFit(fitID)
|
||||||
@@ -296,7 +299,7 @@ class SkillTreeView (wx.Panel):
|
|||||||
self.Layout()
|
self.Layout()
|
||||||
|
|
||||||
def populateSkillTree(self, event=None):
|
def populateSkillTree(self, event=None):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
char = self.charEditor.entityEditor.getActiveEntity()
|
char = self.charEditor.entityEditor.getActiveEntity()
|
||||||
dirtyGroups = set([skill.item.group.ID for skill in char.dirtySkills])
|
dirtyGroups = set([skill.item.group.ID for skill in char.dirtySkills])
|
||||||
|
|
||||||
@@ -326,7 +329,7 @@ class SkillTreeView (wx.Panel):
|
|||||||
tree.Delete(child)
|
tree.Delete(child)
|
||||||
|
|
||||||
#Get the real intrestin' stuff
|
#Get the real intrestin' stuff
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
char = self.charEditor.entityEditor.getActiveEntity()
|
char = self.charEditor.entityEditor.getActiveEntity()
|
||||||
for id, name in sChar.getSkills(tree.GetPyData(root)):
|
for id, name in sChar.getSkills(tree.GetPyData(root)):
|
||||||
iconId = self.skillBookImageId
|
iconId = self.skillBookImageId
|
||||||
@@ -348,7 +351,7 @@ class SkillTreeView (wx.Panel):
|
|||||||
return
|
return
|
||||||
|
|
||||||
char = self.charEditor.entityEditor.getActiveEntity()
|
char = self.charEditor.entityEditor.getActiveEntity()
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
if char.name not in ("All 0", "All 5"):
|
if char.name not in ("All 0", "All 5"):
|
||||||
self.levelChangeMenu.selection = sMkt.getItem(self.skillTreeListCtrl.GetPyData(item))
|
self.levelChangeMenu.selection = sMkt.getItem(self.skillTreeListCtrl.GetPyData(item))
|
||||||
self.PopupMenu(self.levelChangeMenu)
|
self.PopupMenu(self.levelChangeMenu)
|
||||||
@@ -359,7 +362,7 @@ class SkillTreeView (wx.Panel):
|
|||||||
def changeLevel(self, event):
|
def changeLevel(self, event):
|
||||||
level = self.levelIds.get(event.Id)
|
level = self.levelIds.get(event.Id)
|
||||||
|
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
char = self.charEditor.entityEditor.getActiveEntity()
|
char = self.charEditor.entityEditor.getActiveEntity()
|
||||||
selection = self.skillTreeListCtrl.GetSelection()
|
selection = self.skillTreeListCtrl.GetSelection()
|
||||||
skillID = self.skillTreeListCtrl.GetPyData(selection)
|
skillID = self.skillTreeListCtrl.GetPyData(selection)
|
||||||
@@ -405,19 +408,19 @@ class ImplantEditorView(BaseImplantEditorView):
|
|||||||
self.determineEnabled()
|
self.determineEnabled()
|
||||||
|
|
||||||
def getImplantsFromContext(self):
|
def getImplantsFromContext(self):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
char = self.Parent.Parent.entityEditor.getActiveEntity()
|
char = self.Parent.Parent.entityEditor.getActiveEntity()
|
||||||
|
|
||||||
return sChar.getImplants(char.ID)
|
return sChar.getImplants(char.ID)
|
||||||
|
|
||||||
def addImplantToContext(self, item):
|
def addImplantToContext(self, item):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
char = self.Parent.Parent.entityEditor.getActiveEntity()
|
char = self.Parent.Parent.entityEditor.getActiveEntity()
|
||||||
|
|
||||||
sChar.addImplant(char.ID, item.ID)
|
sChar.addImplant(char.ID, item.ID)
|
||||||
|
|
||||||
def removeImplantFromContext(self, implant):
|
def removeImplantFromContext(self, implant):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
char = self.Parent.Parent.entityEditor.getActiveEntity()
|
char = self.Parent.Parent.entityEditor.getActiveEntity()
|
||||||
|
|
||||||
sChar.removeImplant(char.ID, implant)
|
sChar.removeImplant(char.ID, implant)
|
||||||
@@ -536,7 +539,7 @@ class APIView (wx.Panel):
|
|||||||
self.charChanged(None)
|
self.charChanged(None)
|
||||||
|
|
||||||
def charChanged(self, event):
|
def charChanged(self, event):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
activeChar = self.charEditor.entityEditor.getActiveEntity()
|
activeChar = self.charEditor.entityEditor.getActiveEntity()
|
||||||
|
|
||||||
ID, key, char, chars = sChar.getApiDetails(activeChar.ID)
|
ID, key, char, chars = sChar.getApiDetails(activeChar.ID)
|
||||||
@@ -575,13 +578,13 @@ class APIView (wx.Panel):
|
|||||||
self.stStatus.SetLabel("Invalid keyID or vCode!")
|
self.stStatus.SetLabel("Invalid keyID or vCode!")
|
||||||
return
|
return
|
||||||
|
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
try:
|
try:
|
||||||
activeChar = self.charEditor.entityEditor.getActiveEntity()
|
activeChar = self.charEditor.entityEditor.getActiveEntity()
|
||||||
list = sChar.apiCharList(activeChar.ID, self.inputID.GetLineText(0), self.inputKey.GetLineText(0))
|
list = sChar.apiCharList(activeChar.ID, self.inputID.GetLineText(0), self.inputKey.GetLineText(0))
|
||||||
except service.network.AuthenticationError, e:
|
except AuthenticationError, e:
|
||||||
self.stStatus.SetLabel("Authentication failure. Please check keyID and vCode combination.")
|
self.stStatus.SetLabel("Authentication failure. Please check keyID and vCode combination.")
|
||||||
except service.network.TimeoutError, e:
|
except TimeoutError, e:
|
||||||
self.stStatus.SetLabel("Request timed out. Please check network connectivity and/or proxy settings.")
|
self.stStatus.SetLabel("Request timed out. Please check network connectivity and/or proxy settings.")
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.stStatus.SetLabel("Error:\n%s"%e.message)
|
self.stStatus.SetLabel("Error:\n%s"%e.message)
|
||||||
@@ -601,7 +604,7 @@ class APIView (wx.Panel):
|
|||||||
charName = self.charChoice.GetString(self.charChoice.GetSelection())
|
charName = self.charChoice.GetString(self.charChoice.GetSelection())
|
||||||
if charName:
|
if charName:
|
||||||
try:
|
try:
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
activeChar = self.charEditor.entityEditor.getActiveEntity()
|
activeChar = self.charEditor.entityEditor.getActiveEntity()
|
||||||
sChar.apiFetch(activeChar.ID, charName)
|
sChar.apiFetch(activeChar.ID, charName)
|
||||||
self.stStatus.SetLabel("Successfully fetched %s\'s skills from EVE API." % charName)
|
self.stStatus.SetLabel("Successfully fetched %s\'s skills from EVE API." % charName)
|
||||||
@@ -614,7 +617,7 @@ class SaveCharacterAs(wx.Dialog):
|
|||||||
wx.Dialog.__init__(self, parent, title="Save Character As...", size=wx.Size(300, 60))
|
wx.Dialog.__init__(self, parent, title="Save Character As...", size=wx.Size(300, 60))
|
||||||
self.charID = charID
|
self.charID = charID
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
name = sChar.getCharName(charID)
|
name = sChar.getCharName(charID)
|
||||||
bSizer1 = wx.BoxSizer(wx.HORIZONTAL)
|
bSizer1 = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
|
||||||
@@ -631,7 +634,7 @@ class SaveCharacterAs(wx.Dialog):
|
|||||||
self.button.Bind(wx.EVT_BUTTON, self.change)
|
self.button.Bind(wx.EVT_BUTTON, self.change)
|
||||||
|
|
||||||
def change(self, event):
|
def change(self, event):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
sChar.saveCharacterAs(self.charID, self.input.GetLineText(0))
|
sChar.saveCharacterAs(self.charID, self.input.GetLineText(0))
|
||||||
wx.PostEvent(self.parent, GE.CharListUpdated())
|
wx.PostEvent(self.parent, GE.CharListUpdated())
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,11 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
|
from service.character import Character
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class CharacterSelection(wx.Panel):
|
class CharacterSelection(wx.Panel):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
@@ -76,7 +77,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
|
|
||||||
def refreshCharacterList(self, event=None):
|
def refreshCharacterList(self, event=None):
|
||||||
choice = self.charChoice
|
choice = self.charChoice
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
activeChar = self.getActiveCharacter()
|
activeChar = self.getActiveCharacter()
|
||||||
|
|
||||||
choice.Clear()
|
choice.Clear()
|
||||||
@@ -94,7 +95,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
charID = sChar.all5ID()
|
charID = sChar.all5ID()
|
||||||
self.selectChar(charID)
|
self.selectChar(charID)
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.changeChar(fitID, charID)
|
sFit.changeChar(fitID, charID)
|
||||||
|
|
||||||
choice.Append(u"\u2015 Open Character Editor \u2015", -1)
|
choice.Append(u"\u2015 Open Character Editor \u2015", -1)
|
||||||
@@ -104,7 +105,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def refreshApi(self, event):
|
def refreshApi(self, event):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
ID, key, charName, chars = sChar.getApiDetails(self.getActiveCharacter())
|
ID, key, charName, chars = sChar.getApiDetails(self.getActiveCharacter())
|
||||||
if charName:
|
if charName:
|
||||||
try:
|
try:
|
||||||
@@ -117,7 +118,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
def charChanged(self, event):
|
def charChanged(self, event):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
charID = self.getActiveCharacter()
|
charID = self.getActiveCharacter()
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
|
|
||||||
if charID == -1:
|
if charID == -1:
|
||||||
# revert to previous character
|
# revert to previous character
|
||||||
@@ -129,7 +130,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
else:
|
else:
|
||||||
self.btnRefresh.Enable(False)
|
self.btnRefresh.Enable(False)
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.changeChar(fitID, charID)
|
sFit.changeChar(fitID, charID)
|
||||||
self.charCache = self.charChoice.GetCurrentSelection()
|
self.charCache = self.charChoice.GetCurrentSelection()
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -148,7 +149,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
self.charChoice.Enable(event.fitID != None)
|
self.charChoice.Enable(event.fitID != None)
|
||||||
choice = self.charChoice
|
choice = self.charChoice
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
currCharID = choice.GetClientData(choice.GetCurrentSelection())
|
currCharID = choice.GetClientData(choice.GetCurrentSelection())
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
newCharID = fit.character.ID if fit is not None else None
|
newCharID = fit.character.ID if fit is not None else None
|
||||||
@@ -156,7 +157,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
self.skillReqsStaticBitmap.SetBitmap(self.cleanSkills)
|
self.skillReqsStaticBitmap.SetBitmap(self.cleanSkills)
|
||||||
self.skillReqsStaticBitmap.SetToolTipString("No active fit")
|
self.skillReqsStaticBitmap.SetToolTipString("No active fit")
|
||||||
else:
|
else:
|
||||||
sCharacter = service.Character.getInstance()
|
sCharacter = Character.getInstance()
|
||||||
reqs = sCharacter.checkRequirements(fit)
|
reqs = sCharacter.checkRequirements(fit)
|
||||||
sCharacter.skillReqsDict = {'charname':fit.character.name, 'skills':[]}
|
sCharacter.skillReqsDict = {'charname':fit.character.name, 'skills':[]}
|
||||||
if len(reqs) == 0:
|
if len(reqs) == 0:
|
||||||
@@ -175,7 +176,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
self.skillReqsStaticBitmap.SetToolTipString(tip.strip())
|
self.skillReqsStaticBitmap.SetToolTipString(tip.strip())
|
||||||
|
|
||||||
if newCharID == None:
|
if newCharID == None:
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
self.selectChar(sChar.all5ID())
|
self.selectChar(sChar.all5ID())
|
||||||
|
|
||||||
elif currCharID != newCharID:
|
elif currCharID != newCharID:
|
||||||
@@ -187,7 +188,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
|
|
||||||
def _buildSkillsTooltip(self, reqs, currItem = "", tabulationLevel = 0):
|
def _buildSkillsTooltip(self, reqs, currItem = "", tabulationLevel = 0):
|
||||||
tip = ""
|
tip = ""
|
||||||
sCharacter = service.Character.getInstance()
|
sCharacter = Character.getInstance()
|
||||||
|
|
||||||
if tabulationLevel == 0:
|
if tabulationLevel == 0:
|
||||||
for item, subReqs in reqs.iteritems():
|
for item, subReqs in reqs.iteritems():
|
||||||
@@ -210,7 +211,7 @@ class CharacterSelection(wx.Panel):
|
|||||||
return tip
|
return tip
|
||||||
|
|
||||||
def _buildSkillsTooltipCondensed(self, reqs, currItem = "", tabulationLevel = 0, skillsMap = {}):
|
def _buildSkillsTooltipCondensed(self, reqs, currItem = "", tabulationLevel = 0, skillsMap = {}):
|
||||||
sCharacter = service.Character.getInstance()
|
sCharacter = Character.getInstance()
|
||||||
|
|
||||||
if tabulationLevel == 0:
|
if tabulationLevel == 0:
|
||||||
for item, subReqs in reqs.iteritems():
|
for item, subReqs in reqs.iteritems():
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ import gui.utils.fonts as fonts
|
|||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import gui.utils.fonts as fonts
|
import gui.utils.fonts as fonts
|
||||||
|
|
||||||
import service
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
_PageChanging, EVT_NOTEBOOK_PAGE_CHANGING = wx.lib.newevent.NewEvent()
|
_PageChanging, EVT_NOTEBOOK_PAGE_CHANGING = wx.lib.newevent.NewEvent()
|
||||||
_PageChanged, EVT_NOTEBOOK_PAGE_CHANGED = wx.lib.newevent.NewEvent()
|
_PageChanged, EVT_NOTEBOOK_PAGE_CHANGED = wx.lib.newevent.NewEvent()
|
||||||
@@ -699,7 +700,7 @@ class PFTabsContainer(wx.Panel):
|
|||||||
self.containerHeight = height
|
self.containerHeight = height
|
||||||
self.startDrag = False
|
self.startDrag = False
|
||||||
self.dragging = False
|
self.dragging = False
|
||||||
self.sFit = service.Fit.getInstance()
|
self.sFit = Fit.getInstance()
|
||||||
|
|
||||||
self.inclination = 7
|
self.inclination = 7
|
||||||
if canAdd:
|
if canAdd:
|
||||||
|
|||||||
@@ -20,11 +20,13 @@
|
|||||||
import wx
|
import wx
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import service
|
|
||||||
import gui.droneView
|
import gui.droneView
|
||||||
from gui.builtinViewColumns.state import State
|
from gui.builtinViewColumns.state import State
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import eos.types
|
import eos.types
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
|
|
||||||
class DummyItem:
|
class DummyItem:
|
||||||
@@ -88,7 +90,7 @@ class CommandView(d.Display):
|
|||||||
keycode = event.GetKeyCode()
|
keycode = event.GetKeyCode()
|
||||||
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
|
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
row = self.GetFirstSelected()
|
row = self.GetFirstSelected()
|
||||||
if row != -1:
|
if row != -1:
|
||||||
sFit.removeCommand(fitID, self.get(row))
|
sFit.removeCommand(fitID, self.get(row))
|
||||||
@@ -99,7 +101,7 @@ class CommandView(d.Display):
|
|||||||
if type == "fit":
|
if type == "fit":
|
||||||
activeFit = self.mainFrame.getActiveFit()
|
activeFit = self.mainFrame.getActiveFit()
|
||||||
if activeFit:
|
if activeFit:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
draggedFit = sFit.getFit(fitID)
|
draggedFit = sFit.getFit(fitID)
|
||||||
sFit.addCommandFit(activeFit, draggedFit)
|
sFit.addCommandFit(activeFit, draggedFit)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
||||||
@@ -118,7 +120,7 @@ class CommandView(d.Display):
|
|||||||
return fit.name
|
return fit.name
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
||||||
@@ -168,7 +170,7 @@ class CommandView(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col == self.getColIndex(State):
|
if col == self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.toggleCommandFit(fitID, item)
|
sFit.toggleCommandFit(fitID, item)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -183,7 +185,7 @@ class CommandView(d.Display):
|
|||||||
if sel != -1:
|
if sel != -1:
|
||||||
item = self.get(sel)
|
item = self.get(sel)
|
||||||
if item is None: return
|
if item is None: return
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
fitSrcContext = "commandFit"
|
fitSrcContext = "commandFit"
|
||||||
fitItemContext = item.name
|
fitItemContext = item.name
|
||||||
context = ((fitSrcContext,fitItemContext),)
|
context = ((fitSrcContext,fitItemContext),)
|
||||||
@@ -204,6 +206,6 @@ class CommandView(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col != self.getColIndex(State):
|
if col != self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.removeCommand(fitID, self.get(row))
|
sFit.removeCommand(fitID, self.get(row))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import json
|
|||||||
import wx
|
import wx
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
import service
|
|
||||||
from service.crest import CrestModes
|
from service.crest import CrestModes
|
||||||
|
|
||||||
from eos.types import Cargo
|
from eos.types import Cargo
|
||||||
@@ -23,7 +22,7 @@ class CrestFittings(wx.Frame):
|
|||||||
|
|
||||||
self.mainFrame = parent
|
self.mainFrame = parent
|
||||||
mainSizer = wx.BoxSizer(wx.VERTICAL)
|
mainSizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
|
|
||||||
characterSelectSizer = wx.BoxSizer( wx.HORIZONTAL )
|
characterSelectSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||||
|
|
||||||
@@ -90,7 +89,7 @@ class CrestFittings(wx.Frame):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def updateCharList(self):
|
def updateCharList(self):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
chars = sCrest.getCrestCharacters()
|
chars = sCrest.getCrestCharacters()
|
||||||
|
|
||||||
if len(chars) == 0:
|
if len(chars) == 0:
|
||||||
@@ -123,7 +122,7 @@ class CrestFittings(wx.Frame):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def getActiveCharacter(self):
|
def getActiveCharacter(self):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
|
|
||||||
if sCrest.settings.get('mode') == CrestModes.IMPLICIT:
|
if sCrest.settings.get('mode') == CrestModes.IMPLICIT:
|
||||||
return sCrest.implicitCharacter.ID
|
return sCrest.implicitCharacter.ID
|
||||||
@@ -132,7 +131,7 @@ class CrestFittings(wx.Frame):
|
|||||||
return self.charChoice.GetClientData(selection) if selection is not None else None
|
return self.charChoice.GetClientData(selection) if selection is not None else None
|
||||||
|
|
||||||
def fetchFittings(self, event):
|
def fetchFittings(self, event):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
try:
|
try:
|
||||||
waitDialog = wx.BusyInfo("Fetching fits, please wait...", parent=self)
|
waitDialog = wx.BusyInfo("Fetching fits, please wait...", parent=self)
|
||||||
fittings = sCrest.getFittings(self.getActiveCharacter())
|
fittings = sCrest.getFittings(self.getActiveCharacter())
|
||||||
@@ -150,12 +149,12 @@ class CrestFittings(wx.Frame):
|
|||||||
if not selection:
|
if not selection:
|
||||||
return
|
return
|
||||||
data = self.fitTree.fittingsTreeCtrl.GetPyData(selection)
|
data = self.fitTree.fittingsTreeCtrl.GetPyData(selection)
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fits = sFit.importFitFromBuffer(data)
|
fits = sFit.importFitFromBuffer(data)
|
||||||
self.mainFrame._openAfterImport(fits)
|
self.mainFrame._openAfterImport(fits)
|
||||||
|
|
||||||
def deleteFitting(self, event):
|
def deleteFitting(self, event):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
selection = self.fitView.fitSelection
|
selection = self.fitView.fitSelection
|
||||||
if not selection:
|
if not selection:
|
||||||
return
|
return
|
||||||
@@ -180,7 +179,7 @@ class ExportToEve(wx.Frame):
|
|||||||
self.mainFrame = parent
|
self.mainFrame = parent
|
||||||
self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE))
|
self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE))
|
||||||
|
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
mainSizer = wx.BoxSizer(wx.VERTICAL)
|
mainSizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
hSizer = wx.BoxSizer(wx.HORIZONTAL)
|
hSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||||
|
|
||||||
@@ -217,7 +216,7 @@ class ExportToEve(wx.Frame):
|
|||||||
self.Centre(wx.BOTH)
|
self.Centre(wx.BOTH)
|
||||||
|
|
||||||
def updateCharList(self):
|
def updateCharList(self):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
chars = sCrest.getCrestCharacters()
|
chars = sCrest.getCrestCharacters()
|
||||||
|
|
||||||
if len(chars) == 0:
|
if len(chars) == 0:
|
||||||
@@ -245,7 +244,7 @@ class ExportToEve(wx.Frame):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def getActiveCharacter(self):
|
def getActiveCharacter(self):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
|
|
||||||
if sCrest.settings.get('mode') == CrestModes.IMPLICIT:
|
if sCrest.settings.get('mode') == CrestModes.IMPLICIT:
|
||||||
return sCrest.implicitCharacter.ID
|
return sCrest.implicitCharacter.ID
|
||||||
@@ -254,7 +253,7 @@ class ExportToEve(wx.Frame):
|
|||||||
return self.charChoice.GetClientData(selection) if selection is not None else None
|
return self.charChoice.GetClientData(selection) if selection is not None else None
|
||||||
|
|
||||||
def exportFitting(self, event):
|
def exportFitting(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
self.statusbar.SetStatusText("", 0)
|
self.statusbar.SetStatusText("", 0)
|
||||||
@@ -264,7 +263,7 @@ class ExportToEve(wx.Frame):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.statusbar.SetStatusText("Sending request and awaiting response", 1)
|
self.statusbar.SetStatusText("Sending request and awaiting response", 1)
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = sFit.exportCrest(fitID)
|
data = sFit.exportCrest(fitID)
|
||||||
@@ -321,7 +320,7 @@ class CrestMgmt(wx.Dialog):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def popCharList(self):
|
def popCharList(self):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
chars = sCrest.getCrestCharacters()
|
chars = sCrest.getCrestCharacters()
|
||||||
|
|
||||||
self.lcCharacters.DeleteAllItems()
|
self.lcCharacters.DeleteAllItems()
|
||||||
@@ -335,7 +334,7 @@ class CrestMgmt(wx.Dialog):
|
|||||||
self.lcCharacters.SetColumnWidth(1, wx.LIST_AUTOSIZE)
|
self.lcCharacters.SetColumnWidth(1, wx.LIST_AUTOSIZE)
|
||||||
|
|
||||||
def addChar(self, event):
|
def addChar(self, event):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
uri = sCrest.startServer()
|
uri = sCrest.startServer()
|
||||||
webbrowser.open(uri)
|
webbrowser.open(uri)
|
||||||
|
|
||||||
@@ -343,7 +342,7 @@ class CrestMgmt(wx.Dialog):
|
|||||||
item = self.lcCharacters.GetFirstSelected()
|
item = self.lcCharacters.GetFirstSelected()
|
||||||
if item > -1:
|
if item > -1:
|
||||||
charID = self.lcCharacters.GetItemData(item)
|
charID = self.lcCharacters.GetItemData(item)
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
sCrest.delCrestCharacter(charID)
|
sCrest.delCrestCharacter(charID)
|
||||||
self.popCharList()
|
self.popCharList()
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,13 @@
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import gui.marketBrowser as mb
|
import gui.marketBrowser as mb
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
from gui.builtinViewColumns.state import State
|
from gui.builtinViewColumns.state import State
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
class DroneViewDrop(wx.PyDropTarget):
|
class DroneViewDrop(wx.PyDropTarget):
|
||||||
def __init__(self, dropFn):
|
def __init__(self, dropFn):
|
||||||
@@ -141,7 +142,7 @@ class DroneView(d.Display):
|
|||||||
wx.PostEvent(self.mainFrame, mb.ItemSelected(itemID=int(data[1])))
|
wx.PostEvent(self.mainFrame, mb.ItemSelected(itemID=int(data[1])))
|
||||||
|
|
||||||
def _merge(self, src, dst):
|
def _merge(self, src, dst):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
if sFit.mergeDrones(fitID, self.drones[src], self.drones[dst]):
|
if sFit.mergeDrones(fitID, self.drones[src], self.drones[dst]):
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -151,7 +152,7 @@ class DroneView(d.Display):
|
|||||||
'Fighter Bombers', 'Combat Utility Drones',
|
'Fighter Bombers', 'Combat Utility Drones',
|
||||||
'Electronic Warfare Drones', 'Logistic Drones', 'Mining Drones', 'Salvage Drones')
|
'Electronic Warfare Drones', 'Logistic Drones', 'Mining Drones', 'Salvage Drones')
|
||||||
def droneKey(self, drone):
|
def droneKey(self, drone):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
groupName = sMkt.getMarketGroupByItem(drone.item).name
|
groupName = sMkt.getMarketGroupByItem(drone.item).name
|
||||||
|
|
||||||
@@ -159,7 +160,7 @@ class DroneView(d.Display):
|
|||||||
drone.item.name)
|
drone.item.name)
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
||||||
@@ -193,7 +194,7 @@ class DroneView(d.Display):
|
|||||||
|
|
||||||
|
|
||||||
def addItem(self, event):
|
def addItem(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
@@ -218,7 +219,7 @@ class DroneView(d.Display):
|
|||||||
|
|
||||||
def removeDrone(self, drone):
|
def removeDrone(self, drone):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.removeDrone(fitID, self.original.index(drone))
|
sFit.removeDrone(fitID, self.original.index(drone))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -229,7 +230,7 @@ class DroneView(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col == self.getColIndex(State):
|
if col == self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
drone = self.drones[row]
|
drone = self.drones[row]
|
||||||
sFit.toggleDrone(fitID, self.original.index(drone))
|
sFit.toggleDrone(fitID, self.original.index(drone))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -244,7 +245,7 @@ class DroneView(d.Display):
|
|||||||
if sel != -1:
|
if sel != -1:
|
||||||
drone = self.drones[sel]
|
drone = self.drones[sel]
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sourceContext = "droneItem"
|
sourceContext = "droneItem"
|
||||||
itemContext = sMkt.getCategoryByItem(drone.item).name
|
itemContext = sMkt.getCategoryByItem(drone.item).name
|
||||||
menu = ContextMenu.getMenu((drone,), (sourceContext, itemContext))
|
menu = ContextMenu.getMenu((drone,), (sourceContext, itemContext))
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import gui.marketBrowser as mb
|
import gui.marketBrowser as mb
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
@@ -27,6 +26,7 @@ import gui.display as d
|
|||||||
from gui.builtinViewColumns.state import State
|
from gui.builtinViewColumns.state import State
|
||||||
from eos.types import Slot
|
from eos.types import Slot
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
class FighterViewDrop(wx.PyDropTarget):
|
class FighterViewDrop(wx.PyDropTarget):
|
||||||
def __init__(self, dropFn):
|
def __init__(self, dropFn):
|
||||||
@@ -81,7 +81,7 @@ class FighterView(wx.Panel):
|
|||||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
activeFitID = self.mainFrame.getActiveFit()
|
activeFitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(activeFitID)
|
fit = sFit.getFit(activeFitID)
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ class FighterDisplay(d.Display):
|
|||||||
'Electronic Warfare Drones', 'Logistic Drones', 'Mining Drones', 'Salvage Drones',
|
'Electronic Warfare Drones', 'Logistic Drones', 'Mining Drones', 'Salvage Drones',
|
||||||
'Light Fighters', 'Heavy Fighters', 'Support Fighters')
|
'Light Fighters', 'Heavy Fighters', 'Support Fighters')
|
||||||
def droneKey(self, drone):
|
def droneKey(self, drone):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
groupName = sMkt.getMarketGroupByItem(drone.item).name
|
groupName = sMkt.getMarketGroupByItem(drone.item).name
|
||||||
print groupName
|
print groupName
|
||||||
@@ -224,7 +224,7 @@ class FighterDisplay(d.Display):
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.Parent.DisablePage(self.Parent, not fit)
|
self.Parent.Parent.Parent.DisablePage(self.Parent, not fit)
|
||||||
@@ -259,7 +259,7 @@ class FighterDisplay(d.Display):
|
|||||||
|
|
||||||
|
|
||||||
def addItem(self, event):
|
def addItem(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
trigger = sFit.addFighter(fitID, event.itemID)
|
trigger = sFit.addFighter(fitID, event.itemID)
|
||||||
if trigger:
|
if trigger:
|
||||||
@@ -278,7 +278,7 @@ class FighterDisplay(d.Display):
|
|||||||
|
|
||||||
def removeFighter(self, fighter):
|
def removeFighter(self, fighter):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.removeFighter(fitID, self.original.index(fighter))
|
sFit.removeFighter(fitID, self.original.index(fighter))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -289,7 +289,7 @@ class FighterDisplay(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col == self.getColIndex(State):
|
if col == self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fighter = self.fighters[row]
|
fighter = self.fighters[row]
|
||||||
sFit.toggleFighter(fitID, self.original.index(fighter))
|
sFit.toggleFighter(fitID, self.original.index(fighter))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -304,7 +304,7 @@ class FighterDisplay(d.Display):
|
|||||||
if sel != -1:
|
if sel != -1:
|
||||||
fighter = self.fighters[sel]
|
fighter = self.fighters[sel]
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sourceContext = "fighterItem"
|
sourceContext = "fighterItem"
|
||||||
itemContext = sMkt.getCategoryByItem(fighter.item).name
|
itemContext = sMkt.getCategoryByItem(fighter.item).name
|
||||||
menu = ContextMenu.getMenu((fighter,), (sourceContext, itemContext))
|
menu = ContextMenu.getMenu((fighter,), (sourceContext, itemContext))
|
||||||
|
|||||||
@@ -19,11 +19,16 @@
|
|||||||
import wx
|
import wx
|
||||||
from wx.lib.scrolledpanel import ScrolledPanel
|
from wx.lib.scrolledpanel import ScrolledPanel
|
||||||
|
|
||||||
import service
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.shipBrowser
|
import gui.shipBrowser
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.fleet import Fleet
|
||||||
|
from service.character import Character
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
|
|
||||||
from gui import characterEditor as CharEditor
|
from gui import characterEditor as CharEditor
|
||||||
|
|
||||||
class GangView ( ScrolledPanel ):
|
class GangView ( ScrolledPanel ):
|
||||||
@@ -157,14 +162,14 @@ class GangView ( ScrolledPanel ):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
return
|
return
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
fleetSrv = service.Fleet.getInstance()
|
fleetSrv = Fleet.getInstance()
|
||||||
|
|
||||||
activeFitID = self.mainFrame.getActiveFit()
|
activeFitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(activeFitID)
|
fit = sFit.getFit(activeFitID)
|
||||||
|
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
charList = sChar.getCharacterList()
|
charList = sChar.getCharacterList()
|
||||||
|
|
||||||
if activeFitID:
|
if activeFitID:
|
||||||
@@ -211,11 +216,11 @@ class GangView ( ScrolledPanel ):
|
|||||||
for id in self.fleet:
|
for id in self.fleet:
|
||||||
if location == self.fleet[id]['stText']: type = id
|
if location == self.fleet[id]['stText']: type = id
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
boostee = sFit.getFit(activeFitID)
|
boostee = sFit.getFit(activeFitID)
|
||||||
booster = None
|
booster = None
|
||||||
|
|
||||||
fleetSrv = service.Fleet.getInstance()
|
fleetSrv = Fleet.getInstance()
|
||||||
|
|
||||||
if type == 0: fleetSrv.setLinearFleetCom(boostee, booster)
|
if type == 0: fleetSrv.setLinearFleetCom(boostee, booster)
|
||||||
if type == 1: fleetSrv.setLinearWingCom(boostee, booster)
|
if type == 1: fleetSrv.setLinearWingCom(boostee, booster)
|
||||||
@@ -231,7 +236,7 @@ class GangView ( ScrolledPanel ):
|
|||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID))
|
||||||
|
|
||||||
def fitRenamed(self, event):
|
def fitRenamed(self, event):
|
||||||
fleetSrv = service.Fleet.getInstance()
|
fleetSrv = Fleet.getInstance()
|
||||||
activeFitID = self.mainFrame.getActiveFit()
|
activeFitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
if activeFitID:
|
if activeFitID:
|
||||||
@@ -241,10 +246,10 @@ class GangView ( ScrolledPanel ):
|
|||||||
|
|
||||||
def fitSelected(self, event):
|
def fitSelected(self, event):
|
||||||
''' Fires when active fit is selected and when booster is saved to fit. Update the UI to reflect changes '''
|
''' Fires when active fit is selected and when booster is saved to fit. Update the UI to reflect changes '''
|
||||||
fleetSrv = service.Fleet.getInstance()
|
fleetSrv = Fleet.getInstance()
|
||||||
|
|
||||||
activeFitID = self.mainFrame.getActiveFit()
|
activeFitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID or activeFitID)
|
fit = sFit.getFit(event.fitID or activeFitID)
|
||||||
|
|
||||||
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
||||||
@@ -291,12 +296,12 @@ class GangView ( ScrolledPanel ):
|
|||||||
|
|
||||||
activeFitID = self.mainFrame.getActiveFit()
|
activeFitID = self.mainFrame.getActiveFit()
|
||||||
if activeFitID:
|
if activeFitID:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
boostee = sFit.getFit(activeFitID)
|
boostee = sFit.getFit(activeFitID)
|
||||||
booster = sFit.getFit(fitID)
|
booster = sFit.getFit(fitID)
|
||||||
|
|
||||||
fleetSrv = service.Fleet.getInstance()
|
fleetSrv = Fleet.getInstance()
|
||||||
|
|
||||||
if type == 0: fleetSrv.setLinearFleetCom(boostee, booster)
|
if type == 0: fleetSrv.setLinearFleetCom(boostee, booster)
|
||||||
if type == 1: fleetSrv.setLinearWingCom(boostee, booster)
|
if type == 1: fleetSrv.setLinearWingCom(boostee, booster)
|
||||||
@@ -306,8 +311,8 @@ class GangView ( ScrolledPanel ):
|
|||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFitID))
|
||||||
|
|
||||||
def RefreshBoosterFits(self, event = None):
|
def RefreshBoosterFits(self, event = None):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
fitList = sFit.getBoosterFits()
|
fitList = sFit.getBoosterFits()
|
||||||
|
|
||||||
for id in self.fleet:
|
for id in self.fleet:
|
||||||
@@ -336,7 +341,7 @@ class GangView ( ScrolledPanel ):
|
|||||||
choice.SetSelection(0)
|
choice.SetSelection(0)
|
||||||
|
|
||||||
def RefreshCharacterList(self, event = None):
|
def RefreshCharacterList(self, event = None):
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
charList = sChar.getCharacterList()
|
charList = sChar.getCharacterList()
|
||||||
for id in self.fleet:
|
for id in self.fleet:
|
||||||
choice = self.fleet[id]['chChar']
|
choice = self.fleet[id]['chChar']
|
||||||
@@ -365,7 +370,7 @@ class GangView ( ScrolledPanel ):
|
|||||||
#Those are drags coming from pyfa sources, NOT builtin wx drags
|
#Those are drags coming from pyfa sources, NOT builtin wx drags
|
||||||
self.draggedFitID = None
|
self.draggedFitID = None
|
||||||
if type == "fit":
|
if type == "fit":
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
|
|
||||||
if fit and not fit.isStructure:
|
if fit and not fit.isStructure:
|
||||||
@@ -384,7 +389,7 @@ class GangView ( ScrolledPanel ):
|
|||||||
type = self.options.index(menuItem.GetText())
|
type = self.options.index(menuItem.GetText())
|
||||||
|
|
||||||
if self.draggedFitID:
|
if self.draggedFitID:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
draggedFit = sFit.getFit(self.draggedFitID)
|
draggedFit = sFit.getFit(self.draggedFitID)
|
||||||
|
|
||||||
self.AddCommander(draggedFit.ID, type)
|
self.AddCommander(draggedFit.ID, type)
|
||||||
@@ -392,7 +397,7 @@ class GangView ( ScrolledPanel ):
|
|||||||
|
|
||||||
def OnFitChoiceSelected(self, event):
|
def OnFitChoiceSelected(self, event):
|
||||||
''' Fired when booster choice is selected '''
|
''' Fired when booster choice is selected '''
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
# set type via choice box used
|
# set type via choice box used
|
||||||
chFit = event.GetEventObject()
|
chFit = event.GetEventObject()
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ import gui.display
|
|||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
|
||||||
from gui.graph import Graph
|
from gui.graph import Graph
|
||||||
import service
|
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
enabled = True
|
enabled = True
|
||||||
mplImported = False
|
mplImported = False
|
||||||
@@ -78,7 +78,7 @@ class GraphFrame(wx.Frame):
|
|||||||
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
|
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
self.SetSizer(self.mainSizer)
|
self.SetSizer(self.mainSizer)
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
self.fits = [fit] if fit is not None else []
|
self.fits = [fit] if fit is not None else []
|
||||||
self.fitList = FitList(self)
|
self.fitList = FitList(self)
|
||||||
@@ -242,7 +242,7 @@ class GraphFrame(wx.Frame):
|
|||||||
self.draw()
|
self.draw()
|
||||||
|
|
||||||
def AppendFitToList(self, fitID):
|
def AppendFitToList(self, fitID):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
if fit not in self.fits:
|
if fit not in self.fits:
|
||||||
self.fits.append(fit)
|
self.fits.append(fit)
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
import gui.marketBrowser as mb
|
import gui.marketBrowser as mb
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
@@ -26,6 +25,7 @@ from gui.builtinViewColumns.state import State
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import globalEvents as GE
|
import globalEvents as GE
|
||||||
from eos.types import ImplantLocation
|
from eos.types import ImplantLocation
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
class ImplantView(wx.Panel):
|
class ImplantView(wx.Panel):
|
||||||
@@ -56,7 +56,7 @@ class ImplantView(wx.Panel):
|
|||||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
activeFitID = self.mainFrame.getActiveFit()
|
activeFitID = self.mainFrame.getActiveFit()
|
||||||
fit = sFit.getFit(activeFitID)
|
fit = sFit.getFit(activeFitID)
|
||||||
if fit:
|
if fit:
|
||||||
@@ -70,7 +70,7 @@ class ImplantView(wx.Panel):
|
|||||||
|
|
||||||
def OnRadioSelect(self, event):
|
def OnRadioSelect(self, event):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.toggleImplantSource(fitID, ImplantLocation.FIT if self.rbFit.GetValue() else ImplantLocation.CHARACTER)
|
sFit.toggleImplantSource(fitID, ImplantLocation.FIT if self.rbFit.GetValue() else ImplantLocation.CHARACTER)
|
||||||
|
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -107,7 +107,7 @@ class ImplantDisplay(d.Display):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.Parent.DisablePage(self.Parent, not fit or fit.isStructure)
|
self.Parent.Parent.Parent.DisablePage(self.Parent, not fit or fit.isStructure)
|
||||||
@@ -137,7 +137,7 @@ class ImplantDisplay(d.Display):
|
|||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def addItem(self, event):
|
def addItem(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
|
|
||||||
fit = sFit.getFit(fitID)
|
fit = sFit.getFit(fitID)
|
||||||
@@ -161,7 +161,7 @@ class ImplantDisplay(d.Display):
|
|||||||
|
|
||||||
def removeImplant(self, implant):
|
def removeImplant(self, implant):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.removeImplant(fitID, self.original.index(implant))
|
sFit.removeImplant(fitID, self.original.index(implant))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ class ImplantDisplay(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col == self.getColIndex(State):
|
if col == self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.toggleImplant(fitID, row)
|
sFit.toggleImplant(fitID, row)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ class ImplantDisplay(d.Display):
|
|||||||
sel = self.GetFirstSelected()
|
sel = self.GetFirstSelected()
|
||||||
menu = None
|
menu = None
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
|
|
||||||
if not fit:
|
if not fit:
|
||||||
@@ -194,7 +194,7 @@ class ImplantDisplay(d.Display):
|
|||||||
if sel != -1:
|
if sel != -1:
|
||||||
implant = fit.appliedImplants[sel]
|
implant = fit.appliedImplants[sel]
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sourceContext = "implantItem" if fit.implantSource == ImplantLocation.FIT else "implantItemChar"
|
sourceContext = "implantItem" if fit.implantSource == ImplantLocation.FIT else "implantItemChar"
|
||||||
itemContext = sMkt.getCategoryByItem(implant.item).name
|
itemContext = sMkt.getCategoryByItem(implant.item).name
|
||||||
|
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ import wx.lib.mixins.listctrl as listmix
|
|||||||
import wx.html
|
import wx.html
|
||||||
from eos.types import Fit, Ship, Citadel, Module, Skill, Booster, Implant, Drone, Mode, Fighter
|
from eos.types import Fit, Ship, Citadel, Module, Skill, Booster, Implant, Drone, Mode, Fighter
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
import service
|
|
||||||
import config
|
import config
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
from gui.utils.numberFormatter import formatAmount
|
from gui.utils.numberFormatter import formatAmount
|
||||||
import csv
|
import csv
|
||||||
|
from service.market import Market
|
||||||
|
from service.attribute import Attribute
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
@@ -72,7 +73,7 @@ class ItemStatsDialog(wx.Dialog):
|
|||||||
itmContext = None
|
itmContext = None
|
||||||
item = getattr(victim, "item", None) if srcContext.lower() not in ("projectedcharge", "fittingcharge") else getattr(victim, "charge", None)
|
item = getattr(victim, "item", None) if srcContext.lower() not in ("projectedcharge", "fittingcharge") else getattr(victim, "charge", None)
|
||||||
if item is None:
|
if item is None:
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
item = sMkt.getItem(victim.ID)
|
item = sMkt.getItem(victim.ID)
|
||||||
victim = None
|
victim = None
|
||||||
self.context = itmContext
|
self.context = itmContext
|
||||||
@@ -152,7 +153,7 @@ class ItemStatsContainer ( wx.Panel ):
|
|||||||
|
|
||||||
def __init__( self, parent, stuff, item, context = None):
|
def __init__( self, parent, stuff, item, context = None):
|
||||||
wx.Panel.__init__ ( self, parent )
|
wx.Panel.__init__ ( self, parent )
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||||
|
|
||||||
@@ -494,15 +495,15 @@ class ItemParams (wx.Panel):
|
|||||||
|
|
||||||
def TranslateValueUnit(self, value, unitName, unitDisplayName):
|
def TranslateValueUnit(self, value, unitName, unitDisplayName):
|
||||||
def itemIDCallback():
|
def itemIDCallback():
|
||||||
item = service.Market.getInstance().getItem(value)
|
item = Market.getInstance().getItem(value)
|
||||||
return "%s (%d)" % (item.name, value) if item is not None else str(value)
|
return "%s (%d)" % (item.name, value) if item is not None else str(value)
|
||||||
|
|
||||||
def groupIDCallback():
|
def groupIDCallback():
|
||||||
group = service.Market.getInstance().getGroup(value)
|
group = Market.getInstance().getGroup(value)
|
||||||
return "%s (%d)" % (group.name, value) if group is not None else str(value)
|
return "%s (%d)" % (group.name, value) if group is not None else str(value)
|
||||||
|
|
||||||
def attributeIDCallback():
|
def attributeIDCallback():
|
||||||
attribute = service.Attribute.getInstance().getAttributeInfo(value)
|
attribute = Attribute.getInstance().getAttributeInfo(value)
|
||||||
return "%s (%d)" % (attribute.name.capitalize(), value)
|
return "%s (%d)" % (attribute.name.capitalize(), value)
|
||||||
|
|
||||||
trans = {"Inverse Absolute Percent": (lambda: (1-value)*100, unitName),
|
trans = {"Inverse Absolute Percent": (lambda: (1-value)*100, unitName),
|
||||||
@@ -664,7 +665,7 @@ class ItemCompare(wx.Panel):
|
|||||||
self.paramList.InsertColumn(len(self.attrs)+1, "Price")
|
self.paramList.InsertColumn(len(self.attrs)+1, "Price")
|
||||||
self.paramList.SetColumnWidth(len(self.attrs)+1, 60)
|
self.paramList.SetColumnWidth(len(self.attrs)+1, 60)
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sMkt.getPrices([x.ID for x in self.items], self.processPrices)
|
sMkt.getPrices([x.ID for x in self.items], self.processPrices)
|
||||||
|
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
@@ -687,15 +688,15 @@ class ItemCompare(wx.Panel):
|
|||||||
|
|
||||||
def TranslateValueUnit(self, value, unitName, unitDisplayName):
|
def TranslateValueUnit(self, value, unitName, unitDisplayName):
|
||||||
def itemIDCallback():
|
def itemIDCallback():
|
||||||
item = service.Market.getInstance().getItem(value)
|
item = Market.getInstance().getItem(value)
|
||||||
return "%s (%d)" % (item.name, value) if item is not None else str(value)
|
return "%s (%d)" % (item.name, value) if item is not None else str(value)
|
||||||
|
|
||||||
def groupIDCallback():
|
def groupIDCallback():
|
||||||
group = service.Market.getInstance().getGroup(value)
|
group = Market.getInstance().getGroup(value)
|
||||||
return "%s (%d)" % (group.name, value) if group is not None else str(value)
|
return "%s (%d)" % (group.name, value) if group is not None else str(value)
|
||||||
|
|
||||||
def attributeIDCallback():
|
def attributeIDCallback():
|
||||||
attribute = service.Attribute.getInstance().getAttributeInfo(value)
|
attribute = Attribute.getInstance().getAttributeInfo(value)
|
||||||
return "%s (%d)" % (attribute.name.capitalize(), value)
|
return "%s (%d)" % (attribute.name.capitalize(), value)
|
||||||
|
|
||||||
trans = {"Inverse Absolute Percent": (lambda: (1 - value) * 100, unitName),
|
trans = {"Inverse Absolute Percent": (lambda: (1 - value) * 100, unitName),
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ from codecs import open
|
|||||||
from wx._core import PyDeadObjectError
|
from wx._core import PyDeadObjectError
|
||||||
from wx.lib.wordwrap import wordwrap
|
from wx.lib.wordwrap import wordwrap
|
||||||
|
|
||||||
import service
|
|
||||||
import config
|
import config
|
||||||
import threading
|
import threading
|
||||||
import webbrowser
|
import webbrowser
|
||||||
@@ -58,6 +57,13 @@ from gui.utils.clipboard import toClipboard, fromClipboard
|
|||||||
from gui.fleetBrowser import FleetBrowser
|
from gui.fleetBrowser import FleetBrowser
|
||||||
from gui.updateDialog import UpdateDialog
|
from gui.updateDialog import UpdateDialog
|
||||||
from gui.builtinViews import *
|
from gui.builtinViews import *
|
||||||
|
from gui import graphFrame
|
||||||
|
|
||||||
|
from service.settings import SettingsProvider
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.character import Character
|
||||||
|
from service.crest import Crest
|
||||||
|
from service.update import Update
|
||||||
|
|
||||||
# import this to access override setting
|
# import this to access override setting
|
||||||
from eos.modifiedAttributeDict import ModifiedAttributeDict
|
from eos.modifiedAttributeDict import ModifiedAttributeDict
|
||||||
@@ -208,7 +214,7 @@ class MainFrame(wx.Frame):
|
|||||||
self.LoadPreviousOpenFits()
|
self.LoadPreviousOpenFits()
|
||||||
|
|
||||||
#Check for updates
|
#Check for updates
|
||||||
self.sUpdate = service.Update.getInstance()
|
self.sUpdate = Update.getInstance()
|
||||||
self.sUpdate.CheckUpdate(self.ShowUpdateBox)
|
self.sUpdate.CheckUpdate(self.ShowUpdateBox)
|
||||||
|
|
||||||
if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
|
if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
|
||||||
@@ -223,9 +229,9 @@ class MainFrame(wx.Frame):
|
|||||||
dlg.ShowModal()
|
dlg.ShowModal()
|
||||||
|
|
||||||
def LoadPreviousOpenFits(self):
|
def LoadPreviousOpenFits(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
self.prevOpenFits = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []})
|
self.prevOpenFits = SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []})
|
||||||
fits = self.prevOpenFits['pyfaOpenFits']
|
fits = self.prevOpenFits['pyfaOpenFits']
|
||||||
|
|
||||||
# Remove any fits that cause exception when fetching (non-existent fits)
|
# Remove any fits that cause exception when fetching (non-existent fits)
|
||||||
@@ -245,7 +251,7 @@ class MainFrame(wx.Frame):
|
|||||||
|
|
||||||
def LoadMainFrameAttribs(self):
|
def LoadMainFrameAttribs(self):
|
||||||
mainFrameDefaultAttribs = {"wnd_width": 1000, "wnd_height": 700, "wnd_maximized": False, "browser_width": 300, "market_height": 0, "fitting_height": -200}
|
mainFrameDefaultAttribs = {"wnd_width": 1000, "wnd_height": 700, "wnd_maximized": False, "browser_width": 300, "market_height": 0, "fitting_height": -200}
|
||||||
self.mainFrameAttribs = service.SettingsProvider.getInstance().getSettings("pyfaMainWindowAttribs", mainFrameDefaultAttribs)
|
self.mainFrameAttribs = SettingsProvider.getInstance().getSettings("pyfaMainWindowAttribs", mainFrameDefaultAttribs)
|
||||||
|
|
||||||
if self.mainFrameAttribs["wnd_maximized"]:
|
if self.mainFrameAttribs["wnd_maximized"]:
|
||||||
width = mainFrameDefaultAttribs["wnd_width"]
|
width = mainFrameDefaultAttribs["wnd_width"]
|
||||||
@@ -319,7 +325,7 @@ class MainFrame(wx.Frame):
|
|||||||
self.prevOpenFits['pyfaOpenFits'].append(m())
|
self.prevOpenFits['pyfaOpenFits'].append(m())
|
||||||
|
|
||||||
# save all teh settingz
|
# save all teh settingz
|
||||||
service.SettingsProvider.getInstance().saveAll()
|
SettingsProvider.getInstance().saveAll()
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
def ExitApp(self, event):
|
def ExitApp(self, event):
|
||||||
@@ -372,7 +378,7 @@ class MainFrame(wx.Frame):
|
|||||||
|
|
||||||
def showExportDialog(self, event):
|
def showExportDialog(self, event):
|
||||||
""" Export active fit """
|
""" Export active fit """
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.getActiveFit())
|
fit = sFit.getFit(self.getActiveFit())
|
||||||
defaultFile = "%s - %s.xml"%(fit.ship.item.name, fit.name) if fit else None
|
defaultFile = "%s - %s.xml"%(fit.ship.item.name, fit.name) if fit else None
|
||||||
|
|
||||||
@@ -540,7 +546,7 @@ class MainFrame(wx.Frame):
|
|||||||
dlg.Show()
|
dlg.Show()
|
||||||
|
|
||||||
def updateTitle(self, event):
|
def updateTitle(self, event):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
char = sCrest.implicitCharacter
|
char = sCrest.implicitCharacter
|
||||||
if char:
|
if char:
|
||||||
t = time.gmtime(char.eve.expires-time.time())
|
t = time.gmtime(char.eve.expires-time.time())
|
||||||
@@ -575,7 +581,7 @@ class MainFrame(wx.Frame):
|
|||||||
self.SetTitle(self.title)
|
self.SetTitle(self.title)
|
||||||
|
|
||||||
menu = self.GetMenuBar()
|
menu = self.GetMenuBar()
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
|
|
||||||
if type == CrestModes.IMPLICIT:
|
if type == CrestModes.IMPLICIT:
|
||||||
menu.SetLabel(menu.ssoLoginId, "Login to EVE")
|
menu.SetLabel(menu.ssoLoginId, "Login to EVE")
|
||||||
@@ -588,7 +594,7 @@ class MainFrame(wx.Frame):
|
|||||||
menu.Enable(menu.exportToEveId, not enable)
|
menu.Enable(menu.exportToEveId, not enable)
|
||||||
|
|
||||||
def ssoHandler(self, event):
|
def ssoHandler(self, event):
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
if sCrest.settings.get('mode') == CrestModes.IMPLICIT:
|
if sCrest.settings.get('mode') == CrestModes.IMPLICIT:
|
||||||
if sCrest.implicitCharacter is not None:
|
if sCrest.implicitCharacter is not None:
|
||||||
sCrest.logout()
|
sCrest.logout()
|
||||||
@@ -610,7 +616,7 @@ class MainFrame(wx.Frame):
|
|||||||
menu.SetLabel(menu.toggleOverridesId, "Turn Overrides Off" if ModifiedAttributeDict.OVERRIDES else "Turn Overrides On")
|
menu.SetLabel(menu.toggleOverridesId, "Turn Overrides Off" if ModifiedAttributeDict.OVERRIDES else "Turn Overrides On")
|
||||||
|
|
||||||
def saveChar(self, event):
|
def saveChar(self, event):
|
||||||
sChr = service.Character.getInstance()
|
sChr = Character.getInstance()
|
||||||
charID = self.charSelection.getActiveCharacter()
|
charID = self.charSelection.getActiveCharacter()
|
||||||
sChr.saveCharacter(charID)
|
sChr.saveCharacter(charID)
|
||||||
wx.PostEvent(self, GE.CharListUpdated())
|
wx.PostEvent(self, GE.CharListUpdated())
|
||||||
@@ -621,7 +627,7 @@ class MainFrame(wx.Frame):
|
|||||||
dlg.ShowModal()
|
dlg.ShowModal()
|
||||||
|
|
||||||
def revertChar(self, event):
|
def revertChar(self, event):
|
||||||
sChr = service.Character.getInstance()
|
sChr = Character.getInstance()
|
||||||
charID = self.charSelection.getActiveCharacter()
|
charID = self.charSelection.getActiveCharacter()
|
||||||
sChr.revertCharacter(charID)
|
sChr.revertCharacter(charID)
|
||||||
wx.PostEvent(self, GE.CharListUpdated())
|
wx.PostEvent(self, GE.CharListUpdated())
|
||||||
@@ -659,31 +665,31 @@ class MainFrame(wx.Frame):
|
|||||||
self.marketBrowser.search.Focus()
|
self.marketBrowser.search.Focus()
|
||||||
|
|
||||||
def clipboardEft(self):
|
def clipboardEft(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
toClipboard(sFit.exportFit(self.getActiveFit()))
|
toClipboard(sFit.exportFit(self.getActiveFit()))
|
||||||
|
|
||||||
def clipboardEftImps(self):
|
def clipboardEftImps(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
toClipboard(sFit.exportEftImps(self.getActiveFit()))
|
toClipboard(sFit.exportEftImps(self.getActiveFit()))
|
||||||
|
|
||||||
def clipboardDna(self):
|
def clipboardDna(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
toClipboard(sFit.exportDna(self.getActiveFit()))
|
toClipboard(sFit.exportDna(self.getActiveFit()))
|
||||||
|
|
||||||
def clipboardCrest(self):
|
def clipboardCrest(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
toClipboard(sFit.exportCrest(self.getActiveFit()))
|
toClipboard(sFit.exportCrest(self.getActiveFit()))
|
||||||
|
|
||||||
def clipboardXml(self):
|
def clipboardXml(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
toClipboard(sFit.exportXml(None, self.getActiveFit()))
|
toClipboard(sFit.exportXml(None, self.getActiveFit()))
|
||||||
|
|
||||||
def clipboardMultiBuy(self):
|
def clipboardMultiBuy(self):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
toClipboard(sFit.exportMultiBuy(self.getActiveFit()))
|
toClipboard(sFit.exportMultiBuy(self.getActiveFit()))
|
||||||
|
|
||||||
def importFromClipboard(self, event):
|
def importFromClipboard(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
try:
|
try:
|
||||||
fits = sFit.importFitFromBuffer(fromClipboard(), self.getActiveFit())
|
fits = sFit.importFitFromBuffer(fromClipboard(), self.getActiveFit())
|
||||||
except:
|
except:
|
||||||
@@ -709,7 +715,7 @@ class MainFrame(wx.Frame):
|
|||||||
|
|
||||||
def exportSkillsNeeded(self, event):
|
def exportSkillsNeeded(self, event):
|
||||||
""" Exports skills needed for active fit and active character """
|
""" Exports skills needed for active fit and active character """
|
||||||
sCharacter = service.Character.getInstance()
|
sCharacter = Character.getInstance()
|
||||||
saveDialog = wx.FileDialog(self, "Export Skills Needed As...",
|
saveDialog = wx.FileDialog(self, "Export Skills Needed As...",
|
||||||
wildcard = "EVEMon skills training file (*.emp)|*.emp|" \
|
wildcard = "EVEMon skills training file (*.emp)|*.emp|" \
|
||||||
"EVEMon skills training XML file (*.xml)|*.xml|" \
|
"EVEMon skills training XML file (*.xml)|*.xml|" \
|
||||||
@@ -737,7 +743,7 @@ class MainFrame(wx.Frame):
|
|||||||
|
|
||||||
def fileImportDialog(self, event):
|
def fileImportDialog(self, event):
|
||||||
"""Handles importing single/multiple EVE XML / EFT cfg fit files"""
|
"""Handles importing single/multiple EVE XML / EFT cfg fit files"""
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
dlg = wx.FileDialog(self, "Open One Or More Fitting Files",
|
dlg = wx.FileDialog(self, "Open One Or More Fitting Files",
|
||||||
wildcard = "EVE XML fitting files (*.xml)|*.xml|" \
|
wildcard = "EVE XML fitting files (*.xml)|*.xml|" \
|
||||||
"EFT text fitting files (*.cfg)|*.cfg|" \
|
"EFT text fitting files (*.cfg)|*.cfg|" \
|
||||||
@@ -767,7 +773,7 @@ class MainFrame(wx.Frame):
|
|||||||
if '.' not in os.path.basename(filePath):
|
if '.' not in os.path.basename(filePath):
|
||||||
filePath += ".xml"
|
filePath += ".xml"
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
max = sFit.countAllFits()
|
max = sFit.countAllFits()
|
||||||
|
|
||||||
self.progressDialog = wx.ProgressDialog("Backup fits",
|
self.progressDialog = wx.ProgressDialog("Backup fits",
|
||||||
@@ -779,7 +785,7 @@ class MainFrame(wx.Frame):
|
|||||||
|
|
||||||
def exportHtml(self, event):
|
def exportHtml(self, event):
|
||||||
from gui.utils.exportHtml import exportHtml
|
from gui.utils.exportHtml import exportHtml
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
settings = service.settings.HTMLExportSettings.getInstance()
|
settings = service.settings.HTMLExportSettings.getInstance()
|
||||||
|
|
||||||
max = sFit.countAllFits()
|
max = sFit.countAllFits()
|
||||||
@@ -865,7 +871,7 @@ class MainFrame(wx.Frame):
|
|||||||
|
|
||||||
if dlg.ShowModal() == wx.ID_OK:
|
if dlg.ShowModal() == wx.ID_OK:
|
||||||
self.waitDialog = wx.BusyInfo("Importing Character...")
|
self.waitDialog = wx.BusyInfo("Importing Character...")
|
||||||
sCharacter = service.Character.getInstance()
|
sCharacter = Character.getInstance()
|
||||||
sCharacter.importCharacter(dlg.GetPaths(), self.importCharacterCallback)
|
sCharacter.importCharacter(dlg.GetPaths(), self.importCharacterCallback)
|
||||||
|
|
||||||
def importCharacterCallback(self):
|
def importCharacterCallback(self):
|
||||||
@@ -878,7 +884,8 @@ class MainFrame(wx.Frame):
|
|||||||
def openGraphFrame(self, event):
|
def openGraphFrame(self, event):
|
||||||
if not self.graphFrame:
|
if not self.graphFrame:
|
||||||
self.graphFrame = GraphFrame(self)
|
self.graphFrame = GraphFrame(self)
|
||||||
if gui.graphFrame.enabled:
|
|
||||||
|
if graphFrame.enabled:
|
||||||
self.graphFrame.Show()
|
self.graphFrame.Show()
|
||||||
else:
|
else:
|
||||||
self.graphFrame.SetFocus()
|
self.graphFrame.SetFocus()
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ from gui.bitmapLoader import BitmapLoader
|
|||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
import gui.graphFrame
|
import gui.graphFrame
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import service
|
from service.crest import Crest
|
||||||
|
from service.character import Character
|
||||||
|
|
||||||
if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
|
if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
|
||||||
from service.crest import CrestModes
|
from service.crest import CrestModes
|
||||||
@@ -120,7 +121,7 @@ class MainMenuBar(wx.MenuBar):
|
|||||||
windowMenu.AppendItem(preferencesItem)
|
windowMenu.AppendItem(preferencesItem)
|
||||||
|
|
||||||
if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
|
if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
|
||||||
self.sCrest = service.Crest.getInstance()
|
self.sCrest = Crest.getInstance()
|
||||||
|
|
||||||
# CREST Menu
|
# CREST Menu
|
||||||
crestMenu = wx.Menu()
|
crestMenu = wx.Menu()
|
||||||
@@ -164,7 +165,7 @@ class MainMenuBar(wx.MenuBar):
|
|||||||
self.Enable(wx.ID_COPY, enable)
|
self.Enable(wx.ID_COPY, enable)
|
||||||
self.Enable(self.exportSkillsNeededId, enable)
|
self.Enable(self.exportSkillsNeededId, enable)
|
||||||
|
|
||||||
sChar = service.Character.getInstance()
|
sChar = Character.getInstance()
|
||||||
charID = self.mainFrame.charSelection.getActiveCharacter()
|
charID = self.mainFrame.charSelection.getActiveCharacter()
|
||||||
char = sChar.getCharacter(charID)
|
char = sChar.getCharacter(charID)
|
||||||
|
|
||||||
|
|||||||
@@ -18,11 +18,12 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import wx
|
import wx
|
||||||
import service
|
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
from gui.cachingImageList import CachingImageList
|
from gui.cachingImageList import CachingImageList
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.PFSearchBox as SBox
|
import gui.PFSearchBox as SBox
|
||||||
|
from service.market import Market
|
||||||
|
from service.attribute import Attribute
|
||||||
|
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
|
|
||||||
@@ -45,7 +46,7 @@ class MarketBrowser(wx.Panel):
|
|||||||
vbox.Add(self.splitter, 1, wx.EXPAND)
|
vbox.Add(self.splitter, 1, wx.EXPAND)
|
||||||
|
|
||||||
# Grab market service instance and create child objects
|
# Grab market service instance and create child objects
|
||||||
self.sMkt = service.Market.getInstance()
|
self.sMkt = Market.getInstance()
|
||||||
self.searchMode = False
|
self.searchMode = False
|
||||||
self.marketView = MarketTree(self.splitter, self)
|
self.marketView = MarketTree(self.splitter, self)
|
||||||
self.itemView = ItemView(self.splitter, self)
|
self.itemView = ItemView(self.splitter, self)
|
||||||
@@ -416,7 +417,7 @@ class ItemView(d.Display):
|
|||||||
def populate(self, items):
|
def populate(self, items):
|
||||||
if len(items) > 0:
|
if len(items) > 0:
|
||||||
# Get dictionary with meta level attribute
|
# Get dictionary with meta level attribute
|
||||||
sAttr = service.Attribute.getInstance()
|
sAttr = Attribute.getInstance()
|
||||||
attrs = sAttr.getAttributeInfo("metaLevel")
|
attrs = sAttr.getAttributeInfo("metaLevel")
|
||||||
sMkt = self.sMkt
|
sMkt = self.sMkt
|
||||||
self.metalvls = sMkt.directAttrRequest(items, attrs)
|
self.metalvls = sMkt.directAttrRequest(items, attrs)
|
||||||
@@ -432,7 +433,7 @@ class ItemView(d.Display):
|
|||||||
def refresh(self, items):
|
def refresh(self, items):
|
||||||
if len(items) > 1:
|
if len(items) > 1:
|
||||||
# Get dictionary with meta level attribute
|
# Get dictionary with meta level attribute
|
||||||
sAttr = service.Attribute.getInstance()
|
sAttr = Attribute.getInstance()
|
||||||
attrs = sAttr.getAttributeInfo("metaLevel")
|
attrs = sAttr.getAttributeInfo("metaLevel")
|
||||||
sMkt = self.sMkt
|
sMkt = self.sMkt
|
||||||
self.metalvls = sMkt.directAttrRequest(items, attrs)
|
self.metalvls = sMkt.directAttrRequest(items, attrs)
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import wx
|
import wx
|
||||||
|
|
||||||
import service
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import gui.mainFrame
|
import gui.mainFrame
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
class NotesView(wx.Panel):
|
class NotesView(wx.Panel):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
@@ -19,7 +21,7 @@ class NotesView(wx.Panel):
|
|||||||
self.Bind(wx.EVT_TIMER, self.delayedSave, self.saveTimer)
|
self.Bind(wx.EVT_TIMER, self.delayedSave, self.saveTimer)
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
||||||
@@ -38,7 +40,7 @@ class NotesView(wx.Panel):
|
|||||||
self.saveTimer.Start(1000, True)
|
self.saveTimer.Start(1000, True)
|
||||||
|
|
||||||
def delayedSave(self, event):
|
def delayedSave(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.lastFitId)
|
fit = sFit.getFit(self.lastFitId)
|
||||||
newNotes = self.editNotes.GetValue()
|
newNotes = self.editNotes.GetValue()
|
||||||
fit.notes = newNotes
|
fit.notes = newNotes
|
||||||
|
|||||||
@@ -19,11 +19,11 @@
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import service
|
|
||||||
from wx.lib.intctrl import IntCtrl
|
from wx.lib.intctrl import IntCtrl
|
||||||
from gui.utils.clipboard import toClipboard, fromClipboard
|
from gui.utils.clipboard import toClipboard, fromClipboard
|
||||||
from service.damagePattern import ImportError
|
from service.damagePattern import ImportError
|
||||||
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
||||||
|
from service.damagePattern import DamagePattern, ImportError
|
||||||
###########################################################################
|
###########################################################################
|
||||||
## Class DmgPatternEditorDlg
|
## Class DmgPatternEditorDlg
|
||||||
###########################################################################
|
###########################################################################
|
||||||
@@ -59,26 +59,26 @@ class DmgPatternEntityEditor(EntityEditor):
|
|||||||
self.SetEditorValidator(DmgPatternTextValidor)
|
self.SetEditorValidator(DmgPatternTextValidor)
|
||||||
|
|
||||||
def getEntitiesFromContext(self):
|
def getEntitiesFromContext(self):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = DamagePattern.getInstance()
|
||||||
choices = sorted(sDP.getDamagePatternList(), key=lambda p: p.name)
|
choices = sorted(sDP.getDamagePatternList(), key=lambda p: p.name)
|
||||||
return [c for c in choices if c.name != "Selected Ammo"]
|
return [c for c in choices if c.name != "Selected Ammo"]
|
||||||
|
|
||||||
def DoNew(self, name):
|
def DoNew(self, name):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = DamagePattern.getInstance()
|
||||||
return sDP.newPattern(name)
|
return sDP.newPattern(name)
|
||||||
|
|
||||||
def DoRename(self, entity, name):
|
def DoRename(self, entity, name):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = DamagePattern.getInstance()
|
||||||
sDP.renamePattern(entity, name)
|
sDP.renamePattern(entity, name)
|
||||||
|
|
||||||
def DoCopy(self, entity, name):
|
def DoCopy(self, entity, name):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = DamagePattern.getInstance()
|
||||||
copy = sDP.copyPattern(entity)
|
copy = sDP.copyPattern(entity)
|
||||||
sDP.renamePattern(copy, name)
|
sDP.renamePattern(copy, name)
|
||||||
return copy
|
return copy
|
||||||
|
|
||||||
def DoDelete(self, entity):
|
def DoDelete(self, entity):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = DamagePattern.getInstance()
|
||||||
sDP.deletePattern(entity)
|
sDP.deletePattern(entity)
|
||||||
|
|
||||||
class DmgPatternEditorDlg(wx.Dialog):
|
class DmgPatternEditorDlg(wx.Dialog):
|
||||||
@@ -208,7 +208,7 @@ class DmgPatternEditorDlg(wx.Dialog):
|
|||||||
if event is not None:
|
if event is not None:
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
service.DamagePattern.getInstance().saveChanges(p)
|
DamagePattern.getInstance().saveChanges(p)
|
||||||
|
|
||||||
def restrict(self):
|
def restrict(self):
|
||||||
for type in self.DAMAGE_TYPES:
|
for type in self.DAMAGE_TYPES:
|
||||||
@@ -251,11 +251,11 @@ class DmgPatternEditorDlg(wx.Dialog):
|
|||||||
def importPatterns(self, event):
|
def importPatterns(self, event):
|
||||||
text = fromClipboard()
|
text = fromClipboard()
|
||||||
if text:
|
if text:
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = DamagePattern.getInstance()
|
||||||
try:
|
try:
|
||||||
sDP.importPatterns(text)
|
sDP.importPatterns(text)
|
||||||
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
||||||
except service.damagePattern.ImportError, e:
|
except ImportError, e:
|
||||||
self.stNotice.SetLabel(str(e))
|
self.stNotice.SetLabel(str(e))
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.stNotice.SetLabel("Could not import from clipboard: unknown errors")
|
self.stNotice.SetLabel("Could not import from clipboard: unknown errors")
|
||||||
@@ -265,6 +265,6 @@ class DmgPatternEditorDlg(wx.Dialog):
|
|||||||
self.stNotice.SetLabel("Could not import from clipboard")
|
self.stNotice.SetLabel("Could not import from clipboard")
|
||||||
|
|
||||||
def exportPatterns(self, event):
|
def exportPatterns(self, event):
|
||||||
sDP = service.DamagePattern.getInstance()
|
sDP = DamagePattern.getInstance()
|
||||||
toClipboard( sDP.exportPatterns() )
|
toClipboard( sDP.exportPatterns() )
|
||||||
self.stNotice.SetLabel("Patterns exported to clipboard")
|
self.stNotice.SetLabel("Patterns exported to clipboard")
|
||||||
|
|||||||
@@ -20,11 +20,11 @@
|
|||||||
import wx
|
import wx
|
||||||
import gui.display as d
|
import gui.display as d
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
import service
|
|
||||||
import gui.droneView
|
import gui.droneView
|
||||||
from gui.builtinViewColumns.state import State
|
from gui.builtinViewColumns.state import State
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import eos.types
|
import eos.types
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
|
||||||
class DummyItem:
|
class DummyItem:
|
||||||
@@ -91,7 +91,7 @@ class ProjectedView(d.Display):
|
|||||||
# if source is coming from projected, we are trying to combine drones.
|
# if source is coming from projected, we are trying to combine drones.
|
||||||
self.mergeDrones(x, y, int(data[1]))
|
self.mergeDrones(x, y, int(data[1]))
|
||||||
elif data[0] == "market":
|
elif data[0] == "market":
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit.project(fitID, int(data[1]))
|
sFit.project(fitID, int(data[1]))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
|
||||||
@@ -100,7 +100,7 @@ class ProjectedView(d.Display):
|
|||||||
keycode = event.GetKeyCode()
|
keycode = event.GetKeyCode()
|
||||||
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
|
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
row = self.GetFirstSelected()
|
row = self.GetFirstSelected()
|
||||||
if row != -1:
|
if row != -1:
|
||||||
sFit.removeProjected(fitID, self.get(row))
|
sFit.removeProjected(fitID, self.get(row))
|
||||||
@@ -111,7 +111,7 @@ class ProjectedView(d.Display):
|
|||||||
if type == "fit":
|
if type == "fit":
|
||||||
activeFit = self.mainFrame.getActiveFit()
|
activeFit = self.mainFrame.getActiveFit()
|
||||||
if activeFit:
|
if activeFit:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
draggedFit = sFit.getFit(fitID)
|
draggedFit = sFit.getFit(fitID)
|
||||||
sFit.project(activeFit, draggedFit)
|
sFit.project(activeFit, draggedFit)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
||||||
@@ -135,7 +135,7 @@ class ProjectedView(d.Display):
|
|||||||
def _merge(self, src, dst):
|
def _merge(self, src, dst):
|
||||||
dstDrone = self.get(dst)
|
dstDrone = self.get(dst)
|
||||||
if isinstance(dstDrone, eos.types.Drone):
|
if isinstance(dstDrone, eos.types.Drone):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
if sFit.mergeDrones(fitID, self.get(src), dstDrone, True):
|
if sFit.mergeDrones(fitID, self.get(src), dstDrone, True):
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
@@ -159,7 +159,7 @@ class ProjectedView(d.Display):
|
|||||||
return fit.name
|
return fit.name
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
|
|
||||||
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
self.Parent.Parent.DisablePage(self, not fit or fit.isStructure)
|
||||||
@@ -231,7 +231,7 @@ class ProjectedView(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col == self.getColIndex(State):
|
if col == self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.toggleProjected(fitID, item, "right" if event.Button == 3 else "left")
|
sFit.toggleProjected(fitID, item, "right" if event.Button == 3 else "left")
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ class ProjectedView(d.Display):
|
|||||||
if sel != -1:
|
if sel != -1:
|
||||||
item = self.get(sel)
|
item = self.get(sel)
|
||||||
if item is None: return
|
if item is None: return
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
if isinstance(item, eos.types.Drone):
|
if isinstance(item, eos.types.Drone):
|
||||||
srcContext = "projectedDrone"
|
srcContext = "projectedDrone"
|
||||||
itemContext = sMkt.getCategoryByItem(item.item).name
|
itemContext = sMkt.getCategoryByItem(item.item).name
|
||||||
@@ -287,6 +287,6 @@ class ProjectedView(d.Display):
|
|||||||
col = self.getColumn(event.Position)
|
col = self.getColumn(event.Position)
|
||||||
if col != self.getColIndex(State):
|
if col != self.getColIndex(State):
|
||||||
fitID = self.mainFrame.getActiveFit()
|
fitID = self.mainFrame.getActiveFit()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.removeProjected(fitID, self.get(row))
|
sFit.removeProjected(fitID, self.get(row))
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||||
|
|||||||
@@ -13,12 +13,13 @@ from gui.marketBrowser import SearchBox
|
|||||||
import gui.display as d
|
import gui.display as d
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import service
|
|
||||||
import csv
|
import csv
|
||||||
import eos.db
|
import eos.db
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class AttributeEditor( wx.Frame ):
|
class AttributeEditor( wx.Frame ):
|
||||||
@@ -108,7 +109,7 @@ class AttributeEditor( wx.Frame ):
|
|||||||
self.itemView.updateItems(True)
|
self.itemView.updateItems(True)
|
||||||
|
|
||||||
def OnExport(self, event):
|
def OnExport(self, event):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
items = sMkt.getItemsWithOverrides()
|
items = sMkt.getItemsWithOverrides()
|
||||||
defaultFile = "pyfa_overrides.csv"
|
defaultFile = "pyfa_overrides.csv"
|
||||||
|
|
||||||
@@ -131,7 +132,7 @@ class AttributeEditor( wx.Frame ):
|
|||||||
"Confirm Delete", wx.YES | wx.NO | wx.ICON_EXCLAMATION)
|
"Confirm Delete", wx.YES | wx.NO | wx.ICON_EXCLAMATION)
|
||||||
|
|
||||||
if dlg.ShowModal() == wx.ID_YES:
|
if dlg.ShowModal() == wx.ID_YES:
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
items = sMkt.getItemsWithOverrides()
|
items = sMkt.getItemsWithOverrides()
|
||||||
# We can't just delete overrides, as loaded items will still have
|
# We can't just delete overrides, as loaded items will still have
|
||||||
# them assigned. Deleting them from the database won't propagate
|
# them assigned. Deleting them from the database won't propagate
|
||||||
@@ -152,7 +153,7 @@ class ItemView(d.Display):
|
|||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
d.Display.__init__(self, parent)
|
d.Display.__init__(self, parent)
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
self.things = sMkt.getItemsWithOverrides()
|
self.things = sMkt.getItemsWithOverrides()
|
||||||
self.items = self.things
|
self.items = self.things
|
||||||
@@ -173,14 +174,14 @@ class ItemView(d.Display):
|
|||||||
self.update(self.items)
|
self.update(self.items)
|
||||||
|
|
||||||
def updateItems(self, updateDisplay=False):
|
def updateItems(self, updateDisplay=False):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
self.things = sMkt.getItemsWithOverrides()
|
self.things = sMkt.getItemsWithOverrides()
|
||||||
self.items = self.things
|
self.items = self.things
|
||||||
if updateDisplay:
|
if updateDisplay:
|
||||||
self.update(self.things)
|
self.update(self.things)
|
||||||
|
|
||||||
def scheduleSearch(self, event=None):
|
def scheduleSearch(self, event=None):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
search = self.searchBox.GetLineText(0)
|
search = self.searchBox.GetLineText(0)
|
||||||
# Make sure we do not count wildcard as search symbol
|
# Make sure we do not count wildcard as search symbol
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import service
|
|
||||||
from gui.utils.clipboard import toClipboard, fromClipboard
|
from gui.utils.clipboard import toClipboard, fromClipboard
|
||||||
from service.targetResists import ImportError
|
from service.targetResists import ImportError
|
||||||
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
||||||
|
from service.targetResists import TargetResists
|
||||||
|
|
||||||
|
|
||||||
class TargetResistsTextValidor(BaseValidator):
|
class TargetResistsTextValidor(BaseValidator):
|
||||||
@@ -56,26 +56,26 @@ class TargetResistsEntityEditor(EntityEditor):
|
|||||||
self.SetEditorValidator(TargetResistsTextValidor)
|
self.SetEditorValidator(TargetResistsTextValidor)
|
||||||
|
|
||||||
def getEntitiesFromContext(self):
|
def getEntitiesFromContext(self):
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = TargetResists.getInstance()
|
||||||
choices = sorted(sTR.getTargetResistsList(), key=lambda p: p.name)
|
choices = sorted(sTR.getTargetResistsList(), key=lambda p: p.name)
|
||||||
return choices
|
return choices
|
||||||
|
|
||||||
def DoNew(self, name):
|
def DoNew(self, name):
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = TargetResists.getInstance()
|
||||||
return sTR.newPattern(name)
|
return sTR.newPattern(name)
|
||||||
|
|
||||||
def DoRename(self, entity, name):
|
def DoRename(self, entity, name):
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = TargetResists.getInstance()
|
||||||
sTR.renamePattern(entity, name)
|
sTR.renamePattern(entity, name)
|
||||||
|
|
||||||
def DoCopy(self, entity, name):
|
def DoCopy(self, entity, name):
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = TargetResists.getInstance()
|
||||||
copy = sTR.copyPattern(entity)
|
copy = sTR.copyPattern(entity)
|
||||||
sTR.renamePattern(copy, name)
|
sTR.renamePattern(copy, name)
|
||||||
return copy
|
return copy
|
||||||
|
|
||||||
def DoDelete(self, entity):
|
def DoDelete(self, entity):
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = TargetResists.getInstance()
|
||||||
sTR.deletePattern(entity)
|
sTR.deletePattern(entity)
|
||||||
|
|
||||||
class ResistsEditorDlg(wx.Dialog):
|
class ResistsEditorDlg(wx.Dialog):
|
||||||
@@ -224,7 +224,7 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
if event is not None:
|
if event is not None:
|
||||||
event.Skip()
|
event.Skip()
|
||||||
|
|
||||||
service.TargetResists.getInstance().saveChanges(p)
|
TargetResists.getInstance().saveChanges(p)
|
||||||
|
|
||||||
except ValueError:
|
except ValueError:
|
||||||
editObj.SetForegroundColour(wx.RED)
|
editObj.SetForegroundColour(wx.RED)
|
||||||
@@ -264,7 +264,7 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
|
|
||||||
text = fromClipboard()
|
text = fromClipboard()
|
||||||
if text:
|
if text:
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = TargetResists.getInstance()
|
||||||
try:
|
try:
|
||||||
sTR.importPatterns(text)
|
sTR.importPatterns(text)
|
||||||
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
||||||
@@ -279,6 +279,6 @@ class ResistsEditorDlg(wx.Dialog):
|
|||||||
|
|
||||||
def exportPatterns(self, event):
|
def exportPatterns(self, event):
|
||||||
"Event fired when export to clipboard button is clicked"
|
"Event fired when export to clipboard button is clicked"
|
||||||
sTR = service.TargetResists.getInstance()
|
sTR = TargetResists.getInstance()
|
||||||
toClipboard( sTR.exportPatterns() )
|
toClipboard( sTR.exportPatterns() )
|
||||||
self.stNotice.SetLabel("Patterns exported to clipboard")
|
self.stNotice.SetLabel("Patterns exported to clipboard")
|
||||||
|
|||||||
@@ -20,11 +20,11 @@
|
|||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
from gui.builtinViews.implantEditor import BaseImplantEditorView
|
from gui.builtinViews.implantEditor import BaseImplantEditorView
|
||||||
import service
|
|
||||||
from gui.utils.clipboard import toClipboard, fromClipboard
|
from gui.utils.clipboard import toClipboard, fromClipboard
|
||||||
from service.implantSet import ImportError
|
from service.implantSet import ImportError
|
||||||
import logging
|
import logging
|
||||||
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator
|
||||||
|
from service.implantSet import ImplantSets
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -59,25 +59,25 @@ class ImplantSetEntityEditor(EntityEditor):
|
|||||||
self.SetEditorValidator(ImplantTextValidor)
|
self.SetEditorValidator(ImplantTextValidor)
|
||||||
|
|
||||||
def getEntitiesFromContext(self):
|
def getEntitiesFromContext(self):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
return sorted(sIS.getImplantSetList(), key=lambda c: c.name)
|
return sorted(sIS.getImplantSetList(), key=lambda c: c.name)
|
||||||
|
|
||||||
def DoNew(self, name):
|
def DoNew(self, name):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
return sIS.newSet(name)
|
return sIS.newSet(name)
|
||||||
|
|
||||||
def DoRename(self, entity, name):
|
def DoRename(self, entity, name):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
sIS.renameSet(entity, name)
|
sIS.renameSet(entity, name)
|
||||||
|
|
||||||
def DoCopy(self, entity, name):
|
def DoCopy(self, entity, name):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
copy = sIS.copySet(entity)
|
copy = sIS.copySet(entity)
|
||||||
sIS.renameSet(copy, name)
|
sIS.renameSet(copy, name)
|
||||||
return copy
|
return copy
|
||||||
|
|
||||||
def DoDelete(self, entity):
|
def DoDelete(self, entity):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
sIS.deleteSet(entity)
|
sIS.deleteSet(entity)
|
||||||
|
|
||||||
|
|
||||||
@@ -91,20 +91,20 @@ class ImplantSetEditor(BaseImplantEditorView):
|
|||||||
self.Parent.entityEditor.Bind(wx.EVT_CHOICE, self.contextChanged)
|
self.Parent.entityEditor.Bind(wx.EVT_CHOICE, self.contextChanged)
|
||||||
|
|
||||||
def getImplantsFromContext(self):
|
def getImplantsFromContext(self):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
set = self.Parent.entityEditor.getActiveEntity()
|
set = self.Parent.entityEditor.getActiveEntity()
|
||||||
if set:
|
if set:
|
||||||
return sIS.getImplants(set.ID)
|
return sIS.getImplants(set.ID)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def addImplantToContext(self, item):
|
def addImplantToContext(self, item):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
set = self.Parent.entityEditor.getActiveEntity()
|
set = self.Parent.entityEditor.getActiveEntity()
|
||||||
|
|
||||||
sIS.addImplant(set.ID, item.ID)
|
sIS.addImplant(set.ID, item.ID)
|
||||||
|
|
||||||
def removeImplantFromContext(self, implant):
|
def removeImplantFromContext(self, implant):
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
set = self.Parent.entityEditor.getActiveEntity()
|
set = self.Parent.entityEditor.getActiveEntity()
|
||||||
|
|
||||||
sIS.removeImplant(set.ID, implant)
|
sIS.removeImplant(set.ID, implant)
|
||||||
@@ -191,7 +191,7 @@ class ImplantSetEditorDlg(wx.Dialog):
|
|||||||
|
|
||||||
text = fromClipboard()
|
text = fromClipboard()
|
||||||
if text:
|
if text:
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
try:
|
try:
|
||||||
sIS.importSets(text)
|
sIS.importSets(text)
|
||||||
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
self.stNotice.SetLabel("Patterns successfully imported from clipboard")
|
||||||
@@ -209,6 +209,6 @@ class ImplantSetEditorDlg(wx.Dialog):
|
|||||||
def exportPatterns(self, event):
|
def exportPatterns(self, event):
|
||||||
"Event fired when export to clipboard button is clicked"
|
"Event fired when export to clipboard button is clicked"
|
||||||
|
|
||||||
sIS = service.ImplantSets.getInstance()
|
sIS = ImplantSets.getInstance()
|
||||||
toClipboard(sIS.exportSets())
|
toClipboard(sIS.exportSets())
|
||||||
self.stNotice.SetLabel("Sets exported to clipboard")
|
self.stNotice.SetLabel("Sets exported to clipboard")
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ import gui.sfBrowserItem as SFItem
|
|||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
import gui.utils.fonts as fonts
|
import gui.utils.fonts as fonts
|
||||||
|
|
||||||
import service
|
from service.fit import Fit
|
||||||
|
from service.market import Market
|
||||||
import gui.utils.fonts as fonts
|
import gui.utils.fonts as fonts
|
||||||
|
|
||||||
FitRenamed, EVT_FIT_RENAMED = wx.lib.newevent.NewEvent()
|
FitRenamed, EVT_FIT_RENAMED = wx.lib.newevent.NewEvent()
|
||||||
@@ -437,7 +438,7 @@ class NavigationPanel(SFItem.SFBrowserItem):
|
|||||||
if stage == 3:
|
if stage == 3:
|
||||||
shipID = self.Parent.GetStageData(stage)
|
shipID = self.Parent.GetStageData(stage)
|
||||||
shipName = self.Parent.GetStage3ShipName()
|
shipName = self.Parent.GetStage3ShipName()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = sFit.newFit(shipID, "%s fit" %shipName)
|
fitID = sFit.newFit(shipID, "%s fit" %shipName)
|
||||||
self.shipBrowser.fitIDMustEditName = fitID
|
self.shipBrowser.fitIDMustEditName = fitID
|
||||||
wx.PostEvent(self.Parent,Stage3Selected(shipID=shipID))
|
wx.PostEvent(self.Parent,Stage3Selected(shipID=shipID))
|
||||||
@@ -671,8 +672,8 @@ class ShipBrowser(wx.Panel):
|
|||||||
self.navpanel.ShowNewFitButton(False)
|
self.navpanel.ShowNewFitButton(False)
|
||||||
self.navpanel.ShowSwitchEmptyGroupsButton(False)
|
self.navpanel.ShowSwitchEmptyGroupsButton(False)
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
self.lpane.ShowLoading(False)
|
self.lpane.ShowLoading(False)
|
||||||
|
|
||||||
self.lpane.Freeze()
|
self.lpane.Freeze()
|
||||||
@@ -718,7 +719,7 @@ class ShipBrowser(wx.Panel):
|
|||||||
|
|
||||||
categoryID = self._stage2Data
|
categoryID = self._stage2Data
|
||||||
ships = list(data[1])
|
ships = list(data[1])
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
ships.sort(key=self.raceNameKey)
|
ships.sort(key=self.raceNameKey)
|
||||||
racesList = []
|
racesList = []
|
||||||
@@ -789,7 +790,7 @@ class ShipBrowser(wx.Panel):
|
|||||||
self.lpane.RemoveAllChildren()
|
self.lpane.RemoveAllChildren()
|
||||||
|
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sMkt.getShipListDelayed(categoryID, self.stage2Callback)
|
sMkt.getShipListDelayed(categoryID, self.stage2Callback)
|
||||||
|
|
||||||
self._stage2Data = categoryID
|
self._stage2Data = categoryID
|
||||||
@@ -819,8 +820,8 @@ class ShipBrowser(wx.Panel):
|
|||||||
self._lastStage = self._activeStage
|
self._lastStage = self._activeStage
|
||||||
self._activeStage = 3
|
self._activeStage = 3
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
ship = sMkt.getItem(shipID)
|
ship = sMkt.getItem(shipID)
|
||||||
categoryID = ship.group.ID
|
categoryID = ship.group.ID
|
||||||
@@ -875,8 +876,8 @@ class ShipBrowser(wx.Panel):
|
|||||||
self._lastStage = self._activeStage
|
self._lastStage = self._activeStage
|
||||||
self._activeStage = 4
|
self._activeStage = 4
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
query = event.text
|
query = event.text
|
||||||
|
|
||||||
self.lpane.Freeze()
|
self.lpane.Freeze()
|
||||||
@@ -1162,7 +1163,7 @@ class ShipItem(SFItem.SFBrowserItem):
|
|||||||
|
|
||||||
self.Bind(wx.EVT_CONTEXT_MENU, self.OnShowPopup)
|
self.Bind(wx.EVT_CONTEXT_MENU, self.OnShowPopup)
|
||||||
|
|
||||||
self.marketInstance = service.Market.getInstance()
|
self.marketInstance = Market.getInstance()
|
||||||
self.baseItem = self.marketInstance.getItem(self.shipID)
|
self.baseItem = self.marketInstance.getItem(self.shipID)
|
||||||
|
|
||||||
#=======================================================================\
|
#=======================================================================\
|
||||||
@@ -1249,7 +1250,7 @@ class ShipItem(SFItem.SFBrowserItem):
|
|||||||
def createNewFit(self, event=None):
|
def createNewFit(self, event=None):
|
||||||
self.tcFitName.Show(False)
|
self.tcFitName.Show(False)
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = sFit.newFit(self.shipID, self.tcFitName.GetValue())
|
fitID = sFit.newFit(self.shipID, self.tcFitName.GetValue())
|
||||||
|
|
||||||
wx.PostEvent(self.shipBrowser,Stage3Selected(shipID=self.shipID, back=False))
|
wx.PostEvent(self.shipBrowser,Stage3Selected(shipID=self.shipID, back=False))
|
||||||
@@ -1538,7 +1539,7 @@ class FitItem(SFItem.SFBrowserItem):
|
|||||||
self.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu)
|
self.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu)
|
||||||
|
|
||||||
def OnToggleBooster(self, event):
|
def OnToggleBooster(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
sFit.toggleBoostFit(self.fitID)
|
sFit.toggleBoostFit(self.fitID)
|
||||||
self.fitBooster = not self.fitBooster
|
self.fitBooster = not self.fitBooster
|
||||||
self.boosterBtn.Show(self.fitBooster)
|
self.boosterBtn.Show(self.fitBooster)
|
||||||
@@ -1549,7 +1550,7 @@ class FitItem(SFItem.SFBrowserItem):
|
|||||||
def OnProjectToFit(self, event):
|
def OnProjectToFit(self, event):
|
||||||
activeFit = self.mainFrame.getActiveFit()
|
activeFit = self.mainFrame.getActiveFit()
|
||||||
if activeFit:
|
if activeFit:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
projectedFit = sFit.getFit(self.fitID)
|
projectedFit = sFit.getFit(self.fitID)
|
||||||
sFit.project(activeFit, projectedFit)
|
sFit.project(activeFit, projectedFit)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
||||||
@@ -1558,7 +1559,7 @@ class FitItem(SFItem.SFBrowserItem):
|
|||||||
def OnAddCommandFit(self, event):
|
def OnAddCommandFit(self, event):
|
||||||
activeFit = self.mainFrame.getActiveFit()
|
activeFit = self.mainFrame.getActiveFit()
|
||||||
if activeFit:
|
if activeFit:
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
commandFit = sFit.getFit(self.fitID)
|
commandFit = sFit.getFit(self.fitID)
|
||||||
sFit.addCommandFit(activeFit, commandFit)
|
sFit.addCommandFit(activeFit, commandFit)
|
||||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=activeFit))
|
||||||
@@ -1576,7 +1577,7 @@ class FitItem(SFItem.SFBrowserItem):
|
|||||||
|
|
||||||
def OnContextMenu(self, event):
|
def OnContextMenu(self, event):
|
||||||
''' Handles context menu for fit. Dragging is handled by MouseLeftUp() '''
|
''' Handles context menu for fit. Dragging is handled by MouseLeftUp() '''
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
fit = sFit.getFit(self.mainFrame.getActiveFit())
|
||||||
|
|
||||||
if not fit:
|
if not fit:
|
||||||
@@ -1666,7 +1667,7 @@ class FitItem(SFItem.SFBrowserItem):
|
|||||||
self.copyFit()
|
self.copyFit()
|
||||||
|
|
||||||
def copyFit(self, event=None):
|
def copyFit(self, event=None):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fitID = sFit.copyFit(self.fitID)
|
fitID = sFit.copyFit(self.fitID)
|
||||||
self.shipBrowser.fitIDMustEditName = fitID
|
self.shipBrowser.fitIDMustEditName = fitID
|
||||||
wx.PostEvent(self.shipBrowser,Stage3Selected(shipID=self.shipID))
|
wx.PostEvent(self.shipBrowser,Stage3Selected(shipID=self.shipID))
|
||||||
@@ -1686,7 +1687,7 @@ class FitItem(SFItem.SFBrowserItem):
|
|||||||
self.Refresh()
|
self.Refresh()
|
||||||
|
|
||||||
def renameFit(self, event=None):
|
def renameFit(self, event=None):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
self.tcFitName.Show(False)
|
self.tcFitName.Show(False)
|
||||||
self.editWasShown = 0
|
self.editWasShown = 0
|
||||||
fitName = self.tcFitName.GetValue()
|
fitName = self.tcFitName.GetValue()
|
||||||
@@ -1720,7 +1721,7 @@ class FitItem(SFItem.SFBrowserItem):
|
|||||||
else:
|
else:
|
||||||
self.deleted = True
|
self.deleted = True
|
||||||
|
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.fitID)
|
fit = sFit.getFit(self.fitID)
|
||||||
|
|
||||||
sFit.deleteFit(self.fitID)
|
sFit.deleteFit(self.fitID)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
from gui.statsView import StatsView
|
from gui.statsView import StatsView
|
||||||
import service
|
from service.fit import Fit
|
||||||
from gui.pyfatogglepanel import TogglePanel
|
from gui.pyfatogglepanel import TogglePanel
|
||||||
import gui.builtinStatsViews
|
import gui.builtinStatsViews
|
||||||
from gui.contextMenu import ContextMenu
|
from gui.contextMenu import ContextMenu
|
||||||
@@ -33,7 +33,7 @@ class StatsPane(wx.Panel):
|
|||||||
"priceViewFull",]
|
"priceViewFull",]
|
||||||
|
|
||||||
def fitChanged(self, event):
|
def fitChanged(self, event):
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(event.fitID)
|
fit = sFit.getFit(event.fitID)
|
||||||
for view in self.views:
|
for view in self.views:
|
||||||
view.refreshPanel(fit)
|
view.refreshPanel(fit)
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
import wx
|
import wx
|
||||||
from gui.bitmapLoader import BitmapLoader
|
from gui.bitmapLoader import BitmapLoader
|
||||||
import config
|
import config
|
||||||
import service
|
|
||||||
import dateutil.parser
|
import dateutil.parser
|
||||||
|
|
||||||
class UpdateDialog(wx.Dialog):
|
class UpdateDialog(wx.Dialog):
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import service
|
|
||||||
import wx
|
import wx
|
||||||
|
from service.settings import HTMLExportSettings
|
||||||
|
from service.fit import Fit
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
class exportHtml():
|
class exportHtml():
|
||||||
_instance = None
|
_instance = None
|
||||||
@@ -16,7 +18,7 @@ class exportHtml():
|
|||||||
self.thread = exportHtmlThread()
|
self.thread = exportHtmlThread()
|
||||||
|
|
||||||
def refreshFittingHtml(self, force=False, callback=False):
|
def refreshFittingHtml(self, force=False, callback=False):
|
||||||
settings = service.settings.HTMLExportSettings.getInstance()
|
settings = HTMLExportSettings.getInstance()
|
||||||
|
|
||||||
if force or settings.getEnabled():
|
if force or settings.getEnabled():
|
||||||
self.thread.stop()
|
self.thread.stop()
|
||||||
@@ -39,9 +41,9 @@ class exportHtmlThread(threading.Thread):
|
|||||||
if self.stopRunning:
|
if self.stopRunning:
|
||||||
return
|
return
|
||||||
|
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
settings = service.settings.HTMLExportSettings.getInstance()
|
settings = HTMLExportSettings.getInstance()
|
||||||
|
|
||||||
timestamp = time.localtime(time.time())
|
timestamp = time.localtime(time.time())
|
||||||
localDate = "%d/%02d/%02d %02d:%02d" % (timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4])
|
localDate = "%d/%02d/%02d %02d:%02d" % (timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4])
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
from service.market import Market
|
|
||||||
from service.fit import Fit
|
|
||||||
from service.attribute import Attribute
|
|
||||||
from service.character import Character
|
|
||||||
from service.damagePattern import DamagePattern
|
|
||||||
from service.targetResists import TargetResists
|
|
||||||
from service.settings import SettingsProvider
|
|
||||||
from service.fleet import Fleet
|
|
||||||
from service.update import Update
|
|
||||||
from service.price import Price
|
|
||||||
from service.network import Network
|
|
||||||
from service.eveapi import EVEAPIConnection, ParseXML
|
|
||||||
from service.implantSet import ImplantSets
|
|
||||||
|
|
||||||
import wx
|
|
||||||
if not 'wxMac' in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3,0)):
|
|
||||||
from service.pycrest import EVE
|
|
||||||
from service.server import StoppableHTTPServer, AuthHandler
|
|
||||||
from service.crest import Crest
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
import copy
|
import copy
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import threading
|
import threading
|
||||||
from codecs import open
|
from codecs import open
|
||||||
from xml.etree import ElementTree
|
from xml.etree import ElementTree
|
||||||
@@ -28,11 +29,10 @@ import gzip
|
|||||||
|
|
||||||
import wx
|
import wx
|
||||||
|
|
||||||
|
import config
|
||||||
import eos.db
|
import eos.db
|
||||||
import eos.types
|
import eos.types
|
||||||
import service
|
from service.eveapi import EVEAPIConnection, ParseXML
|
||||||
import config
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@ class CharacterImportThread(threading.Thread):
|
|||||||
try:
|
try:
|
||||||
# we try to parse api XML data first
|
# we try to parse api XML data first
|
||||||
with open(path, mode='r') as charFile:
|
with open(path, mode='r') as charFile:
|
||||||
sheet = service.ParseXML(charFile)
|
sheet = ParseXML(charFile)
|
||||||
char = sCharacter.new(sheet.name+" (imported)")
|
char = sCharacter.new(sheet.name+" (imported)")
|
||||||
sCharacter.apiUpdateCharSheet(char.ID, sheet.skills)
|
sCharacter.apiUpdateCharSheet(char.ID, sheet.skills)
|
||||||
except:
|
except:
|
||||||
@@ -87,8 +87,6 @@ class SkillBackupThread(threading.Thread):
|
|||||||
def run(self):
|
def run(self):
|
||||||
path = self.path
|
path = self.path
|
||||||
sCharacter = Character.getInstance()
|
sCharacter = Character.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
|
||||||
fit = sFit.getFit(self.activeFit)
|
|
||||||
backupData = ""
|
backupData = ""
|
||||||
if self.saveFmt == "xml" or self.saveFmt == "emp":
|
if self.saveFmt == "xml" or self.saveFmt == "emp":
|
||||||
backupData = sCharacter.exportXml()
|
backupData = sCharacter.exportXml()
|
||||||
@@ -284,7 +282,7 @@ class Character(object):
|
|||||||
char.apiID = userID
|
char.apiID = userID
|
||||||
char.apiKey = apiKey
|
char.apiKey = apiKey
|
||||||
|
|
||||||
api = service.EVEAPIConnection()
|
api = EVEAPIConnection()
|
||||||
auth = api.auth(keyID=userID, vCode=apiKey)
|
auth = api.auth(keyID=userID, vCode=apiKey)
|
||||||
apiResult = auth.account.Characters()
|
apiResult = auth.account.Characters()
|
||||||
charList = map(lambda c: unicode(c.name), apiResult.characters)
|
charList = map(lambda c: unicode(c.name), apiResult.characters)
|
||||||
@@ -296,7 +294,7 @@ class Character(object):
|
|||||||
dbChar = eos.db.getCharacter(charID)
|
dbChar = eos.db.getCharacter(charID)
|
||||||
dbChar.defaultChar = charName
|
dbChar.defaultChar = charName
|
||||||
|
|
||||||
api = service.EVEAPIConnection()
|
api = EVEAPIConnection()
|
||||||
auth = api.auth(keyID=dbChar.apiID, vCode=dbChar.apiKey)
|
auth = api.auth(keyID=dbChar.apiID, vCode=dbChar.apiKey)
|
||||||
apiResult = auth.account.Characters()
|
apiResult = auth.account.Characters()
|
||||||
charID = None
|
charID = None
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ elsewhere (in which case can be accessed with packs[name])
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import pkgutil
|
import pkgutil
|
||||||
|
import importlib
|
||||||
|
|
||||||
# init parent dict
|
# init parent dict
|
||||||
all = {}
|
all = {}
|
||||||
@@ -15,10 +16,9 @@ all = {}
|
|||||||
# init container to store the separate conversion packs in case we need them
|
# init container to store the separate conversion packs in case we need them
|
||||||
packs = {}
|
packs = {}
|
||||||
|
|
||||||
|
|
||||||
prefix = __name__ + "."
|
prefix = __name__ + "."
|
||||||
for importer, modname, ispkg in pkgutil.iter_modules(__path__, prefix):
|
for importer, modname, ispkg in pkgutil.iter_modules(__path__, prefix):
|
||||||
conversionPack = __import__(modname, fromlist="dummy")
|
conversionPack = importlib.import_module(modname)
|
||||||
all.update(conversionPack.CONVERSIONS)
|
all.update(conversionPack.CONVERSIONS)
|
||||||
modname_tail = modname.rsplit('.', 1)[-1]
|
modname_tail = modname.rsplit('.', 1)[-1]
|
||||||
packs[modname_tail] = conversionPack.CONVERSIONS
|
packs[modname_tail] = conversionPack.CONVERSIONS
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import time
|
|||||||
import eos.db
|
import eos.db
|
||||||
from eos.enum import Enum
|
from eos.enum import Enum
|
||||||
from eos.types import CrestChar
|
from eos.types import CrestChar
|
||||||
|
|
||||||
import service
|
|
||||||
|
|
||||||
import gui.globalEvents as GE
|
import gui.globalEvents as GE
|
||||||
|
from service.settings import CRESTSettings
|
||||||
|
from service.server import StoppableHTTPServer, AuthHandler
|
||||||
|
from service.pycrest.eve import EVE
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ class Crest():
|
|||||||
characters still in the cache (if USER mode)
|
characters still in the cache (if USER mode)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.settings = service.settings.CRESTSettings.getInstance()
|
self.settings = CRESTSettings.getInstance()
|
||||||
self.scopes = ['characterFittingsRead', 'characterFittingsWrite']
|
self.scopes = ['characterFittingsRead', 'characterFittingsWrite']
|
||||||
|
|
||||||
# these will be set when needed
|
# these will be set when needed
|
||||||
@@ -73,7 +73,7 @@ class Crest():
|
|||||||
self.ssoTimer = None
|
self.ssoTimer = None
|
||||||
|
|
||||||
# Base EVE connection that is copied to all characters
|
# Base EVE connection that is copied to all characters
|
||||||
self.eve = service.pycrest.EVE(
|
self.eve = EVE(
|
||||||
client_id=self.settings.get('clientID') if self.settings.get('mode') == CrestModes.USER else self.clientIDs.get(self.settings.get('server')),
|
client_id=self.settings.get('clientID') if self.settings.get('mode') == CrestModes.USER else self.clientIDs.get(self.settings.get('server')),
|
||||||
api_key=self.settings.get('clientSecret') if self.settings.get('mode') == CrestModes.USER else None,
|
api_key=self.settings.get('clientSecret') if self.settings.get('mode') == CrestModes.USER else None,
|
||||||
redirect_uri=self.clientCallback,
|
redirect_uri=self.clientCallback,
|
||||||
@@ -161,7 +161,7 @@ class Crest():
|
|||||||
if self.httpd:
|
if self.httpd:
|
||||||
self.stopServer()
|
self.stopServer()
|
||||||
time.sleep(1) # we need this to ensure that the previous get_request finishes, and then the socket will close
|
time.sleep(1) # we need this to ensure that the previous get_request finishes, and then the socket will close
|
||||||
self.httpd = service.StoppableHTTPServer(('', 6461), service.AuthHandler)
|
self.httpd = StoppableHTTPServer(('', 6461), AuthHandler)
|
||||||
thread.start_new_thread(self.httpd.serve, (self.handleLogin,))
|
thread.start_new_thread(self.httpd.serve, (self.handleLogin,))
|
||||||
|
|
||||||
self.state = str(uuid.uuid4())
|
self.state = str(uuid.uuid4())
|
||||||
|
|||||||
@@ -17,15 +17,14 @@
|
|||||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import eos.db
|
|
||||||
import eos.types
|
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
import eos.db
|
||||||
|
import eos.types
|
||||||
|
|
||||||
|
|
||||||
class ImportError(Exception):
|
class ImportError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class DamagePattern():
|
class DamagePattern():
|
||||||
instance = None
|
instance = None
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ from xml.parsers import expat
|
|||||||
from time import strptime
|
from time import strptime
|
||||||
from calendar import timegm
|
from calendar import timegm
|
||||||
|
|
||||||
import service
|
from service.network import Network
|
||||||
|
|
||||||
proxy = None
|
proxy = None
|
||||||
proxySSL = False
|
proxySSL = False
|
||||||
@@ -395,7 +395,7 @@ class _RootContext(_Context):
|
|||||||
response = None
|
response = None
|
||||||
|
|
||||||
if response is None:
|
if response is None:
|
||||||
network = service.Network.getInstance()
|
network = Network.getInstance()
|
||||||
|
|
||||||
req = self._scheme+'://'+self._host+path
|
req = self._scheme+'://'+self._host+path
|
||||||
|
|
||||||
@@ -414,7 +414,7 @@ class _RootContext(_Context):
|
|||||||
# implementor is handling fallbacks...
|
# implementor is handling fallbacks...
|
||||||
try:
|
try:
|
||||||
return _ParseXML(response, True, store and (lambda obj: cache.store(self._host, path, kw, response, obj)))
|
return _ParseXML(response, True, store and (lambda obj: cache.store(self._host, path, kw, response, obj)))
|
||||||
except Error, e:
|
except Error as e:
|
||||||
response = retrieve_fallback(self._host, path, kw, reason=e)
|
response = retrieve_fallback(self._host, path, kw, reason=e)
|
||||||
if response is not None:
|
if response is not None:
|
||||||
return response
|
return response
|
||||||
|
|||||||
@@ -27,16 +27,18 @@ from codecs import open
|
|||||||
import xml.parsers.expat
|
import xml.parsers.expat
|
||||||
|
|
||||||
import eos.db
|
import eos.db
|
||||||
import eos.types
|
from eos.types import State, Slot, Module, Drone, Fighter
|
||||||
|
from eos.types import Fit as FitType
|
||||||
from eos.types import State, Slot
|
|
||||||
|
|
||||||
from service.market import Market
|
from service.market import Market
|
||||||
from service.damagePattern import DamagePattern
|
from service.damagePattern import DamagePattern
|
||||||
from service.character import Character
|
from service.character import Character
|
||||||
|
from eos.saveddata.character import Character as saveddata_Character
|
||||||
from service.fleet import Fleet
|
from service.fleet import Fleet
|
||||||
from service.settings import SettingsProvider
|
from service.settings import SettingsProvider
|
||||||
from service.port import Port
|
|
||||||
|
# TODO: port this to port.py
|
||||||
|
#from service.port import Port
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -90,7 +92,7 @@ class Fit(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.pattern = DamagePattern.getInstance().getDamagePattern("Uniform")
|
self.pattern = DamagePattern.getInstance().getDamagePattern("Uniform")
|
||||||
self.targetResists = None
|
self.targetResists = None
|
||||||
self.character = Character.getInstance().all5()
|
self.character = saveddata_Character.getAll5()
|
||||||
self.booster = False
|
self.booster = False
|
||||||
self.dirtyFitIDs = set()
|
self.dirtyFitIDs = set()
|
||||||
|
|
||||||
@@ -107,7 +109,7 @@ class Fit(object):
|
|||||||
"showMarketShortcuts": False,
|
"showMarketShortcuts": False,
|
||||||
"enableGaugeAnimation": True,
|
"enableGaugeAnimation": True,
|
||||||
"exportCharges": True,
|
"exportCharges": True,
|
||||||
"openFitInNew":False
|
"openFitInNew": False
|
||||||
}
|
}
|
||||||
|
|
||||||
self.serviceFittingOptions = SettingsProvider.getInstance().getSettings(
|
self.serviceFittingOptions = SettingsProvider.getInstance().getSettings(
|
||||||
@@ -164,7 +166,7 @@ class Fit(object):
|
|||||||
ship = eos.types.Ship(eos.db.getItem(shipID))
|
ship = eos.types.Ship(eos.db.getItem(shipID))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
ship = eos.types.Citadel(eos.db.getItem(shipID))
|
ship = eos.types.Citadel(eos.db.getItem(shipID))
|
||||||
fit = eos.types.Fit(ship)
|
fit = FitType(ship)
|
||||||
fit.name = name if name is not None else "New %s" % fit.ship.item.name
|
fit.name = name if name is not None else "New %s" % fit.ship.item.name
|
||||||
fit.damagePattern = self.pattern
|
fit.damagePattern = self.pattern
|
||||||
fit.targetResists = self.targetResists
|
fit.targetResists = self.targetResists
|
||||||
@@ -343,7 +345,7 @@ class Fit(object):
|
|||||||
thing = eos.db.getItem(thing,
|
thing = eos.db.getItem(thing,
|
||||||
eager=("attributes", "group.category"))
|
eager=("attributes", "group.category"))
|
||||||
|
|
||||||
if isinstance(thing, eos.types.Fit):
|
if isinstance(thing, FitType):
|
||||||
if thing in fit.projectedFits:
|
if thing in fit.projectedFits:
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -414,7 +416,7 @@ class Fit(object):
|
|||||||
thing.state = self.__getProposedState(thing, click)
|
thing.state = self.__getProposedState(thing, click)
|
||||||
if not thing.canHaveState(thing.state, fit):
|
if not thing.canHaveState(thing.state, fit):
|
||||||
thing.state = State.OFFLINE
|
thing.state = State.OFFLINE
|
||||||
elif isinstance(thing, eos.types.Fit):
|
elif isinstance(thing, FitType):
|
||||||
projectionInfo = thing.getProjectionInfo(fitID)
|
projectionInfo = thing.getProjectionInfo(fitID)
|
||||||
if projectionInfo:
|
if projectionInfo:
|
||||||
projectionInfo.active = not projectionInfo.active
|
projectionInfo.active = not projectionInfo.active
|
||||||
@@ -559,7 +561,7 @@ class Fit(object):
|
|||||||
|
|
||||||
# Gather modules and convert Cargo item to Module, silently return if not a module
|
# Gather modules and convert Cargo item to Module, silently return if not a module
|
||||||
try:
|
try:
|
||||||
cargoP = eos.types.Module(cargo.item)
|
cargoP = Module(cargo.item)
|
||||||
cargoP.owner = fit
|
cargoP.owner = fit
|
||||||
if cargoP.isValidState(State.ACTIVE):
|
if cargoP.isValidState(State.ACTIVE):
|
||||||
cargoP.state = State.ACTIVE
|
cargoP.state = State.ACTIVE
|
||||||
@@ -692,10 +694,10 @@ class Fit(object):
|
|||||||
break
|
break
|
||||||
'''
|
'''
|
||||||
if fighter is None:
|
if fighter is None:
|
||||||
fighter = eos.types.Fighter(item)
|
fighter = Fighter(item)
|
||||||
used = fit.getSlotsUsed(fighter.slot)
|
used = fit.getSlotsUsed(fighter.slot)
|
||||||
total = fit.getNumSlots(fighter.slot)
|
total = fit.getNumSlots(fighter.slot)
|
||||||
standardAttackActive = False;
|
standardAttackActive = False
|
||||||
for ability in fighter.abilities:
|
for ability in fighter.abilities:
|
||||||
if (ability.effect.isImplemented and ability.effect.handlerName == u'fighterabilityattackm'):
|
if (ability.effect.isImplemented and ability.effect.handlerName == u'fighterabilityattackm'):
|
||||||
# Activate "standard attack" if available
|
# Activate "standard attack" if available
|
||||||
@@ -704,7 +706,7 @@ class Fit(object):
|
|||||||
else:
|
else:
|
||||||
# Activate all other abilities (Neut, Web, etc) except propmods if no standard attack is active
|
# Activate all other abilities (Neut, Web, etc) except propmods if no standard attack is active
|
||||||
if (ability.effect.isImplemented
|
if (ability.effect.isImplemented
|
||||||
and standardAttackActive == False
|
and standardAttackActive is False
|
||||||
and ability.effect.handlerName != u'fighterabilitymicrowarpdrive'
|
and ability.effect.handlerName != u'fighterabilitymicrowarpdrive'
|
||||||
and ability.effect.handlerName != u'fighterabilityevasivemaneuvers'):
|
and ability.effect.handlerName != u'fighterabilityevasivemaneuvers'):
|
||||||
ability.active = True
|
ability.active = True
|
||||||
@@ -783,7 +785,7 @@ class Fit(object):
|
|||||||
d.amount = amount
|
d.amount = amount
|
||||||
d.amountActive = amount if active else 0
|
d.amountActive = amount if active else 0
|
||||||
|
|
||||||
newD = eos.types.Drone(d.item)
|
newD = Drone(d.item)
|
||||||
newD.amount = total - amount
|
newD.amount = total - amount
|
||||||
newD.amountActive = newD.amount if active else 0
|
newD.amountActive = newD.amount if active else 0
|
||||||
l.append(newD)
|
l.append(newD)
|
||||||
@@ -958,6 +960,8 @@ class Fit(object):
|
|||||||
fit.damagePattern = dp
|
fit.damagePattern = dp
|
||||||
self.recalc(fit)
|
self.recalc(fit)
|
||||||
|
|
||||||
|
# TODO: port this to port.py
|
||||||
|
'''
|
||||||
def exportFit(self, fitID):
|
def exportFit(self, fitID):
|
||||||
fit = eos.db.getFit(fitID)
|
fit = eos.db.getFit(fitID)
|
||||||
return Port.exportEft(fit)
|
return Port.exportEft(fit)
|
||||||
@@ -981,6 +985,7 @@ class Fit(object):
|
|||||||
def exportMultiBuy(self, fitID):
|
def exportMultiBuy(self, fitID):
|
||||||
fit = eos.db.getFit(fitID)
|
fit = eos.db.getFit(fitID)
|
||||||
return Port.exportMultiBuy(fit)
|
return Port.exportMultiBuy(fit)
|
||||||
|
'''
|
||||||
|
|
||||||
def backupFits(self, path, callback):
|
def backupFits(self, path, callback):
|
||||||
thread = FitBackupThread(path, callback)
|
thread = FitBackupThread(path, callback)
|
||||||
@@ -1056,14 +1061,17 @@ class Fit(object):
|
|||||||
if codec_found is None:
|
if codec_found is None:
|
||||||
return False, "Proper codec could not be established for %s" % path
|
return False, "Proper codec could not be established for %s" % path
|
||||||
|
|
||||||
|
# TODO: port this to port.py
|
||||||
|
'''
|
||||||
try:
|
try:
|
||||||
_, fitsImport = Port.importAuto(srcString, path, callback=callback, encoding=codec_found)
|
_, fitsImport = Port.importAuto(srcString, path, callback=callback, encoding=codec_found)
|
||||||
fits += fitsImport
|
fits += fitsImport
|
||||||
except xml.parsers.expat.ExpatError, e:
|
except xml.parsers.expat.ExpatError:
|
||||||
return False, "Malformed XML in %s" % path
|
return False, "Malformed XML in %s" % path
|
||||||
except Exception, e:
|
except Exception:
|
||||||
logger.exception("Unknown exception processing: %s", path)
|
logger.exception("Unknown exception processing: %s", path)
|
||||||
return False, "Unknown Error while processing %s" % path
|
return False, "Unknown Error while processing %s" % path
|
||||||
|
'''
|
||||||
|
|
||||||
IDs = []
|
IDs = []
|
||||||
numFits = len(fits)
|
numFits = len(fits)
|
||||||
@@ -1083,6 +1091,8 @@ class Fit(object):
|
|||||||
|
|
||||||
return True, fits
|
return True, fits
|
||||||
|
|
||||||
|
# TODO: port this to port.py
|
||||||
|
'''
|
||||||
def importFitFromBuffer(self, bufferStr, activeFit=None):
|
def importFitFromBuffer(self, bufferStr, activeFit=None):
|
||||||
_, fits = Port.importAuto(bufferStr, activeFit=activeFit)
|
_, fits = Port.importAuto(bufferStr, activeFit=activeFit)
|
||||||
for fit in fits:
|
for fit in fits:
|
||||||
@@ -1091,6 +1101,7 @@ class Fit(object):
|
|||||||
fit.targetResists = self.targetResists
|
fit.targetResists = self.targetResists
|
||||||
eos.db.save(fit)
|
eos.db.save(fit)
|
||||||
return fits
|
return fits
|
||||||
|
'''
|
||||||
|
|
||||||
def checkStates(self, fit, base):
|
def checkStates(self, fit, base):
|
||||||
changed = False
|
changed = False
|
||||||
|
|||||||
@@ -17,9 +17,11 @@
|
|||||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import eos.db
|
|
||||||
from eos.types import Fleet as Fleet_, Wing, Squad
|
|
||||||
import copy
|
import copy
|
||||||
|
import eos.db
|
||||||
|
from eos.saveddata.fleet import Fleet as Fleet_
|
||||||
|
from eos.saveddata.fleet import Fleet as Wing
|
||||||
|
from eos.saveddata.fleet import Fleet as Squad
|
||||||
|
|
||||||
class Fleet(object):
|
class Fleet(object):
|
||||||
instance = None
|
instance = None
|
||||||
|
|||||||
@@ -17,10 +17,11 @@
|
|||||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
|
import copy
|
||||||
|
|
||||||
import eos.db
|
import eos.db
|
||||||
import eos.types
|
import eos.types
|
||||||
import copy
|
from service.market import Market
|
||||||
import service.market
|
|
||||||
|
|
||||||
class ImportError(Exception):
|
class ImportError(Exception):
|
||||||
pass
|
pass
|
||||||
@@ -77,7 +78,7 @@ class ImplantSets():
|
|||||||
eos.db.save(s)
|
eos.db.save(s)
|
||||||
|
|
||||||
def importSets(self, text):
|
def importSets(self, text):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
lines = text.splitlines()
|
lines = text.splitlines()
|
||||||
newSets = []
|
newSets = []
|
||||||
errors = 0
|
errors = 0
|
||||||
@@ -122,4 +123,3 @@ class ImplantSets():
|
|||||||
patterns = self.getImplantSetList()
|
patterns = self.getImplantSetList()
|
||||||
patterns.sort(key=lambda p: p.name)
|
patterns.sort(key=lambda p: p.name)
|
||||||
return eos.types.ImplantSet.exportSets(*patterns)
|
return eos.types.ImplantSet.exportSets(*patterns)
|
||||||
|
|
||||||
|
|||||||
@@ -19,18 +19,18 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
import threading
|
import threading
|
||||||
import wx
|
import logging
|
||||||
|
|
||||||
import Queue
|
import Queue
|
||||||
|
|
||||||
|
import wx
|
||||||
|
from sqlalchemy.sql import or_
|
||||||
|
|
||||||
import config
|
import config
|
||||||
import eos.db
|
import eos.db
|
||||||
import eos.types
|
import eos.types
|
||||||
from sqlalchemy.sql import and_, or_
|
from service import conversions
|
||||||
from service.settings import SettingsProvider, NetworkSettings
|
from service.settings import SettingsProvider
|
||||||
import service
|
from service.price import Price
|
||||||
import service.conversions as conversions
|
|
||||||
import logging
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
@@ -86,7 +86,7 @@ class PriceWorkerThread(threading.Thread):
|
|||||||
|
|
||||||
# Grab prices, this is the time-consuming part
|
# Grab prices, this is the time-consuming part
|
||||||
if len(requests) > 0:
|
if len(requests) > 0:
|
||||||
service.Price.fetchPrices(requests)
|
Price.fetchPrices(requests)
|
||||||
|
|
||||||
wx.CallAfter(callback)
|
wx.CallAfter(callback)
|
||||||
queue.task_done()
|
queue.task_done()
|
||||||
@@ -766,7 +766,7 @@ class Market():
|
|||||||
def cb():
|
def cb():
|
||||||
try:
|
try:
|
||||||
callback(requests)
|
callback(requests)
|
||||||
except Exception, e:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
eos.db.commit()
|
eos.db.commit()
|
||||||
|
|
||||||
|
|||||||
@@ -17,12 +17,14 @@
|
|||||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
from service.settings import NetworkSettings
|
|
||||||
import urllib2
|
import urllib2
|
||||||
import urllib
|
import urllib
|
||||||
import config
|
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
|
import config
|
||||||
|
from service.settings import NetworkSettings
|
||||||
|
|
||||||
# network timeout, otherwise pyfa hangs for a long while if no internet connection
|
# network timeout, otherwise pyfa hangs for a long while if no internet connection
|
||||||
timeout = 3
|
timeout = 3
|
||||||
socket.setdefaulttimeout(timeout)
|
socket.setdefaulttimeout(timeout)
|
||||||
@@ -35,14 +37,13 @@ class RequestError(StandardError):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
class AuthenticationError(StandardError):
|
class AuthenticationError(StandardError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class ServerError(StandardError):
|
class ServerError(StandardError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class TimeoutError(StandardError):
|
class TimeoutError(StandardError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Network():
|
class Network():
|
||||||
# Request constants - every request must supply this, as it is checked if
|
# Request constants - every request must supply this, as it is checked if
|
||||||
@@ -55,7 +56,7 @@ class Network():
|
|||||||
_instance = None
|
_instance = None
|
||||||
@classmethod
|
@classmethod
|
||||||
def getInstance(cls):
|
def getInstance(cls):
|
||||||
if cls._instance == None:
|
if cls._instance is None:
|
||||||
cls._instance = Network()
|
cls._instance = Network()
|
||||||
|
|
||||||
return cls._instance
|
return cls._instance
|
||||||
@@ -101,14 +102,14 @@ class Network():
|
|||||||
request = urllib2.Request(url, headers=headers, data=urllib.urlencode(data) if data else None)
|
request = urllib2.Request(url, headers=headers, data=urllib.urlencode(data) if data else None)
|
||||||
try:
|
try:
|
||||||
return urllib2.urlopen(request)
|
return urllib2.urlopen(request)
|
||||||
except urllib2.HTTPError, error:
|
except urllib2.HTTPError as error:
|
||||||
if error.code == 404:
|
if error.code == 404:
|
||||||
raise RequestError()
|
raise RequestError()
|
||||||
elif error.code == 403:
|
elif error.code == 403:
|
||||||
raise AuthenticationError()
|
raise AuthenticationError()
|
||||||
elif error.code >= 500:
|
elif error.code >= 500:
|
||||||
raise ServerError()
|
raise ServerError()
|
||||||
except urllib2.URLError, error:
|
except urllib2.URLError as error:
|
||||||
if "timed out" in error.reason:
|
if "timed out" in error.reason:
|
||||||
raise TimeoutError()
|
raise TimeoutError()
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -20,15 +20,30 @@
|
|||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
import xml.dom
|
import xml.dom
|
||||||
|
|
||||||
from eos.types import State, Slot, Module, Cargo, Fit, Ship, Drone, Implant, Booster, Citadel
|
|
||||||
import service
|
|
||||||
import wx
|
|
||||||
import logging
|
import logging
|
||||||
import config
|
|
||||||
import collections
|
import collections
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
from eos.types import State, Slot, Module, Cargo, Fit, Ship, Drone, Implant, Booster, Citadel
|
||||||
|
from service.crest import Crest
|
||||||
|
from service.market import Market
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
from eos.types import State, Slot, Module, Cargo, Ship, Drone, Implant, Booster, Citadel
|
||||||
|
from service.crest import Crest
|
||||||
|
from service.market import Market
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
from eos.types import State, Slot, Module, Cargo, Ship, Drone, Implant, Booster, Citadel
|
||||||
|
from service.crest import Crest
|
||||||
|
from service.market import Market
|
||||||
|
from service.fit import Fit
|
||||||
|
|
||||||
logger = logging.getLogger("pyfa.service.port")
|
logger = logging.getLogger("pyfa.service.port")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -57,8 +72,8 @@ class Port(object):
|
|||||||
|
|
||||||
nested_dict = lambda: collections.defaultdict(nested_dict)
|
nested_dict = lambda: collections.defaultdict(nested_dict)
|
||||||
fit = nested_dict()
|
fit = nested_dict()
|
||||||
sCrest = service.Crest.getInstance()
|
sCrest = Crest.getInstance()
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
eve = sCrest.eve
|
eve = sCrest.eve
|
||||||
|
|
||||||
@@ -69,7 +84,7 @@ class Port(object):
|
|||||||
fit['ship']['id'] = ofit.ship.item.ID
|
fit['ship']['id'] = ofit.ship.item.ID
|
||||||
fit['ship']['name'] = ''
|
fit['ship']['name'] = ''
|
||||||
|
|
||||||
fit['description'] = "<pyfa:%d />"%ofit.ID
|
fit['description'] = "<pyfa:%d />" % ofit.ID
|
||||||
fit['items'] = []
|
fit['items'] = []
|
||||||
|
|
||||||
slotNum = {}
|
slotNum = {}
|
||||||
@@ -86,7 +101,7 @@ class Port(object):
|
|||||||
slot = int(module.getModifiedItemAttr("subSystemSlot"))
|
slot = int(module.getModifiedItemAttr("subSystemSlot"))
|
||||||
item['flag'] = slot
|
item['flag'] = slot
|
||||||
else:
|
else:
|
||||||
if not slot in slotNum:
|
if slot not in slotNum:
|
||||||
slotNum[slot] = INV_FLAGS[slot]
|
slotNum[slot] = INV_FLAGS[slot]
|
||||||
|
|
||||||
item['flag'] = slotNum[slot]
|
item['flag'] = slotNum[slot]
|
||||||
@@ -99,7 +114,7 @@ class Port(object):
|
|||||||
fit['items'].append(item)
|
fit['items'].append(item)
|
||||||
|
|
||||||
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
||||||
if not module.chargeID in charges:
|
if module.chargeID not in charges:
|
||||||
charges[module.chargeID] = 0
|
charges[module.chargeID] = 0
|
||||||
# `or 1` because some charges (ie scripts) are without qty
|
# `or 1` because some charges (ie scripts) are without qty
|
||||||
charges[module.chargeID] += module.numCharges or 1
|
charges[module.chargeID] += module.numCharges or 1
|
||||||
@@ -168,7 +183,7 @@ class Port(object):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def importCrest(str):
|
def importCrest(str):
|
||||||
fit = json.loads(str)
|
fit = json.loads(str)
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
f = Fit()
|
f = Fit()
|
||||||
f.name = fit['name']
|
f.name = fit['name']
|
||||||
@@ -216,7 +231,7 @@ class Port(object):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# Recalc to get slot numbers correct for T3 cruisers
|
# Recalc to get slot numbers correct for T3 cruisers
|
||||||
service.Fit.getInstance().recalc(f)
|
Fit.getInstance().recalc(f)
|
||||||
|
|
||||||
for module in moduleList:
|
for module in moduleList:
|
||||||
if module.fits(f):
|
if module.fits(f):
|
||||||
@@ -226,7 +241,7 @@ class Port(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def importDna(string):
|
def importDna(string):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
ids = map(int, re.findall(r'\d+', string))
|
ids = map(int, re.findall(r'\d+', string))
|
||||||
for id in ids:
|
for id in ids:
|
||||||
@@ -291,7 +306,7 @@ class Port(object):
|
|||||||
moduleList.append(m)
|
moduleList.append(m)
|
||||||
|
|
||||||
# Recalc to get slot numbers correct for T3 cruisers
|
# Recalc to get slot numbers correct for T3 cruisers
|
||||||
service.Fit.getInstance().recalc(f)
|
Fit.getInstance().recalc(f)
|
||||||
|
|
||||||
for module in moduleList:
|
for module in moduleList:
|
||||||
if module.fits(f):
|
if module.fits(f):
|
||||||
@@ -304,7 +319,7 @@ class Port(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def importEft(eftString):
|
def importEft(eftString):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
offineSuffix = " /OFFLINE"
|
offineSuffix = " /OFFLINE"
|
||||||
|
|
||||||
fit = Fit()
|
fit = Fit()
|
||||||
@@ -371,12 +386,12 @@ class Port(object):
|
|||||||
|
|
||||||
if item.category.name == "Drone":
|
if item.category.name == "Drone":
|
||||||
extraAmount = int(extraAmount) if extraAmount is not None else 1
|
extraAmount = int(extraAmount) if extraAmount is not None else 1
|
||||||
if not modName in droneMap:
|
if modName not in droneMap:
|
||||||
droneMap[modName] = 0
|
droneMap[modName] = 0
|
||||||
droneMap[modName] += extraAmount
|
droneMap[modName] += extraAmount
|
||||||
if len(modExtra) == 2 and item.category.name != "Drone":
|
if len(modExtra) == 2 and item.category.name != "Drone":
|
||||||
extraAmount = int(extraAmount) if extraAmount is not None else 1
|
extraAmount = int(extraAmount) if extraAmount is not None else 1
|
||||||
if not modName in cargoMap:
|
if modName not in cargoMap:
|
||||||
cargoMap[modName] = 0
|
cargoMap[modName] = 0
|
||||||
cargoMap[modName] += extraAmount
|
cargoMap[modName] += extraAmount
|
||||||
elif item.category.name == "Implant":
|
elif item.category.name == "Implant":
|
||||||
@@ -415,13 +430,13 @@ class Port(object):
|
|||||||
moduleList.append(m)
|
moduleList.append(m)
|
||||||
|
|
||||||
# Recalc to get slot numbers correct for T3 cruisers
|
# Recalc to get slot numbers correct for T3 cruisers
|
||||||
service.Fit.getInstance().recalc(fit)
|
Fit.getInstance().recalc(fit)
|
||||||
|
|
||||||
for m in moduleList:
|
for m in moduleList:
|
||||||
if m.fits(fit):
|
if m.fits(fit):
|
||||||
m.owner = fit
|
m.owner = fit
|
||||||
if not m.isValidState(m.state):
|
if not m.isValidState(m.state):
|
||||||
print "Error: Module", m, "cannot have state", m.state
|
print("Error: Module", m, "cannot have state", m.state)
|
||||||
|
|
||||||
fit.modules.append(m)
|
fit.modules.append(m)
|
||||||
|
|
||||||
@@ -442,7 +457,7 @@ class Port(object):
|
|||||||
"""Handle import from EFT config store file"""
|
"""Handle import from EFT config store file"""
|
||||||
|
|
||||||
# Check if we have such ship in database, bail if we don't
|
# Check if we have such ship in database, bail if we don't
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
try:
|
try:
|
||||||
sMkt.getItem(shipname)
|
sMkt.getItem(shipname)
|
||||||
except:
|
except:
|
||||||
@@ -596,7 +611,7 @@ class Port(object):
|
|||||||
moduleList.append(m)
|
moduleList.append(m)
|
||||||
|
|
||||||
# Recalc to get slot numbers correct for T3 cruisers
|
# Recalc to get slot numbers correct for T3 cruisers
|
||||||
service.Fit.getInstance().recalc(f)
|
Fit.getInstance().recalc(f)
|
||||||
|
|
||||||
for module in moduleList:
|
for module in moduleList:
|
||||||
if module.fits(f):
|
if module.fits(f):
|
||||||
@@ -615,7 +630,7 @@ class Port(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def importXml(text, callback=None, encoding="utf-8"):
|
def importXml(text, callback=None, encoding="utf-8"):
|
||||||
sMkt = service.Market.getInstance()
|
sMkt = Market.getInstance()
|
||||||
|
|
||||||
doc = xml.dom.minidom.parseString(text.encode(encoding))
|
doc = xml.dom.minidom.parseString(text.encode(encoding))
|
||||||
fittings = doc.getElementsByTagName("fittings").item(0)
|
fittings = doc.getElementsByTagName("fittings").item(0)
|
||||||
@@ -676,7 +691,7 @@ class Port(object):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# Recalc to get slot numbers correct for T3 cruisers
|
# Recalc to get slot numbers correct for T3 cruisers
|
||||||
service.Fit.getInstance().recalc(f)
|
Fit.getInstance().recalc(f)
|
||||||
|
|
||||||
for module in moduleList:
|
for module in moduleList:
|
||||||
if module.fits(f):
|
if module.fits(f):
|
||||||
@@ -694,10 +709,10 @@ class Port(object):
|
|||||||
offineSuffix = " /OFFLINE"
|
offineSuffix = " /OFFLINE"
|
||||||
export = "[%s, %s]\n" % (fit.ship.item.name, fit.name)
|
export = "[%s, %s]\n" % (fit.ship.item.name, fit.name)
|
||||||
stuff = {}
|
stuff = {}
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
for module in fit.modules:
|
for module in fit.modules:
|
||||||
slot = module.slot
|
slot = module.slot
|
||||||
if not slot in stuff:
|
if slot not in stuff:
|
||||||
stuff[slot] = []
|
stuff[slot] = []
|
||||||
curr = module.item.name if module.item else ("[Empty %s slot]" % Slot.getName(slot).capitalize() if slot is not None else "")
|
curr = module.item.name if module.item else ("[Empty %s slot]" % Slot.getName(slot).capitalize() if slot is not None else "")
|
||||||
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
||||||
@@ -776,12 +791,12 @@ class Port(object):
|
|||||||
if mod.slot == Slot.SUBSYSTEM:
|
if mod.slot == Slot.SUBSYSTEM:
|
||||||
subsystems.append(mod)
|
subsystems.append(mod)
|
||||||
continue
|
continue
|
||||||
if not mod.itemID in mods:
|
if mod.itemID not in mods:
|
||||||
mods[mod.itemID] = 0
|
mods[mod.itemID] = 0
|
||||||
mods[mod.itemID] += 1
|
mods[mod.itemID] += 1
|
||||||
|
|
||||||
if mod.charge:
|
if mod.charge:
|
||||||
if not mod.chargeID in charges:
|
if mod.chargeID not in charges:
|
||||||
charges[mod.chargeID] = 0
|
charges[mod.chargeID] = 0
|
||||||
# `or 1` because some charges (ie scripts) are without qty
|
# `or 1` because some charges (ie scripts) are without qty
|
||||||
charges[mod.chargeID] += mod.numCharges or 1
|
charges[mod.chargeID] += mod.numCharges or 1
|
||||||
@@ -792,13 +807,8 @@ class Port(object):
|
|||||||
for mod in mods:
|
for mod in mods:
|
||||||
dna += ":{0};{1}".format(mod, mods[mod])
|
dna += ":{0};{1}".format(mod, mods[mod])
|
||||||
|
|
||||||
# drones are known to be in split stacks
|
|
||||||
groupedDrones = OrderedDict()
|
|
||||||
for drone in fit.drones:
|
for drone in fit.drones:
|
||||||
groupedDrones[drone.itemID] = groupedDrones.get(drone.itemID, 0) + drone.amount
|
dna += ":{0};{1}".format(drone.itemID, drone.amount)
|
||||||
|
|
||||||
for droneItemID in groupedDrones:
|
|
||||||
dna += ":{0};{1}".format(droneItemID, groupedDrones[droneItemID])
|
|
||||||
|
|
||||||
for cargo in fit.cargo:
|
for cargo in fit.cargo:
|
||||||
# DNA format is a simple/dumb format. As CCP uses the slot information of the item itself
|
# DNA format is a simple/dumb format. As CCP uses the slot information of the item itself
|
||||||
@@ -807,7 +817,7 @@ class Port(object):
|
|||||||
# as being "Fitted" to whatever slot they are for, and it causes an corruption error in the
|
# as being "Fitted" to whatever slot they are for, and it causes an corruption error in the
|
||||||
# client when trying to save the fit
|
# client when trying to save the fit
|
||||||
if cargo.item.category.name == "Charge":
|
if cargo.item.category.name == "Charge":
|
||||||
if not cargo.item.ID in charges:
|
if cargo.item.ID not in charges:
|
||||||
charges[cargo.item.ID] = 0
|
charges[cargo.item.ID] = 0
|
||||||
charges[cargo.item.ID] += cargo.amount
|
charges[cargo.item.ID] += cargo.amount
|
||||||
|
|
||||||
@@ -821,7 +831,7 @@ class Port(object):
|
|||||||
doc = xml.dom.minidom.Document()
|
doc = xml.dom.minidom.Document()
|
||||||
fittings = doc.createElement("fittings")
|
fittings = doc.createElement("fittings")
|
||||||
doc.appendChild(fittings)
|
doc.appendChild(fittings)
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
|
|
||||||
for i, fit in enumerate(fits):
|
for i, fit in enumerate(fits):
|
||||||
try:
|
try:
|
||||||
@@ -847,7 +857,7 @@ class Port(object):
|
|||||||
# Order of subsystem matters based on this attr. See GH issue #130
|
# Order of subsystem matters based on this attr. See GH issue #130
|
||||||
slotId = module.getModifiedItemAttr("subSystemSlot") - 125
|
slotId = module.getModifiedItemAttr("subSystemSlot") - 125
|
||||||
else:
|
else:
|
||||||
if not slot in slotNum:
|
if slot not in slotNum:
|
||||||
slotNum[slot] = 0
|
slotNum[slot] = 0
|
||||||
|
|
||||||
slotId = slotNum[slot]
|
slotId = slotNum[slot]
|
||||||
@@ -861,7 +871,7 @@ class Port(object):
|
|||||||
fitting.appendChild(hardware)
|
fitting.appendChild(hardware)
|
||||||
|
|
||||||
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
||||||
if not module.charge.name in charges:
|
if module.charge.name not in charges:
|
||||||
charges[module.charge.name] = 0
|
charges[module.charge.name] = 0
|
||||||
# `or 1` because some charges (ie scripts) are without qty
|
# `or 1` because some charges (ie scripts) are without qty
|
||||||
charges[module.charge.name] += module.numCharges or 1
|
charges[module.charge.name] += module.numCharges or 1
|
||||||
@@ -874,7 +884,7 @@ class Port(object):
|
|||||||
fitting.appendChild(hardware)
|
fitting.appendChild(hardware)
|
||||||
|
|
||||||
for cargo in fit.cargo:
|
for cargo in fit.cargo:
|
||||||
if not cargo.item.name in charges:
|
if cargo.item.name not in charges:
|
||||||
charges[cargo.item.name] = 0
|
charges[cargo.item.name] = 0
|
||||||
charges[cargo.item.name] += cargo.amount
|
charges[cargo.item.name] += cargo.amount
|
||||||
|
|
||||||
@@ -885,7 +895,7 @@ class Port(object):
|
|||||||
hardware.setAttribute("type", name)
|
hardware.setAttribute("type", name)
|
||||||
fitting.appendChild(hardware)
|
fitting.appendChild(hardware)
|
||||||
except:
|
except:
|
||||||
print "Failed on fitID: %d"%fit.ID
|
print("Failed on fitID: %d" % fit.ID)
|
||||||
continue
|
continue
|
||||||
finally:
|
finally:
|
||||||
if callback:
|
if callback:
|
||||||
@@ -897,13 +907,12 @@ class Port(object):
|
|||||||
def exportMultiBuy(fit):
|
def exportMultiBuy(fit):
|
||||||
export = "%s\n" % (fit.ship.item.name)
|
export = "%s\n" % (fit.ship.item.name)
|
||||||
stuff = {}
|
stuff = {}
|
||||||
sFit = service.Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
for module in fit.modules:
|
for module in fit.modules:
|
||||||
slot = module.slot
|
slot = module.slot
|
||||||
if not slot in stuff:
|
if slot not in stuff:
|
||||||
stuff[slot] = []
|
stuff[slot] = []
|
||||||
curr = "%s\n" % module.item.name if module.item else (
|
curr = "%s\n" % module.item.name if module.item else ""
|
||||||
"")
|
|
||||||
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
if module.charge and sFit.serviceFittingOptions["exportCharges"]:
|
||||||
curr += "%s x%s\n" % (module.charge.name, module.numCharges)
|
curr += "%s x%s\n" % (module.charge.name, module.numCharges)
|
||||||
stuff[slot].append(curr)
|
stuff[slot].append(curr)
|
||||||
|
|||||||
@@ -18,10 +18,11 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import config
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import config
|
||||||
import eos.types
|
import eos.types
|
||||||
import eos.db.migration as migration
|
from eos.db import migration
|
||||||
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
||||||
|
|
||||||
class PrefetchThread(threading.Thread):
|
class PrefetchThread(threading.Thread):
|
||||||
@@ -44,27 +45,26 @@ prefetch.start()
|
|||||||
# @ todo: move this to pyfa.py
|
# @ todo: move this to pyfa.py
|
||||||
########
|
########
|
||||||
|
|
||||||
#Make sure the saveddata db exists
|
# Make sure the saveddata db exists
|
||||||
if not os.path.exists(config.savePath):
|
if config.savePath and not os.path.exists(config.savePath):
|
||||||
os.mkdir(config.savePath)
|
os.mkdir(config.savePath)
|
||||||
|
|
||||||
if os.path.isfile(config.saveDB):
|
if config.saveDB and os.path.isfile(config.saveDB):
|
||||||
# If database exists, run migration after init'd database
|
# If database exists, run migration after init'd database
|
||||||
eos.db.saveddata_meta.create_all()
|
eos.db.saveddata_meta.create_all()
|
||||||
migration.update(eos.db.saveddata_engine)
|
migration.update(eos.db.saveddata_engine)
|
||||||
# Import default database values
|
# Import default database values
|
||||||
# Import values that must exist otherwise Pyfa breaks
|
# Import values that must exist otherwise Pyfa breaks
|
||||||
DefaultDatabaseValues.importRequiredDefaults()
|
DefaultDatabaseValues.importRequiredDefaults()
|
||||||
else:
|
elif config.saveDB:
|
||||||
# If database does not exist, do not worry about migration. Simply
|
# If database does not exist, do not worry about migration. Simply
|
||||||
# create and set version
|
# create and set version
|
||||||
eos.db.saveddata_meta.create_all()
|
eos.db.saveddata_meta.create_all()
|
||||||
eos.db.saveddata_engine.execute('PRAGMA user_version = {}'.format(migration.getAppVersion()))
|
eos.db.saveddata_engine.execute('PRAGMA user_version = {}'.format(migration.getAppVersion()))
|
||||||
#Import default database values
|
# Import default database values
|
||||||
# Import values that must exist otherwise Pyfa breaks
|
# Import values that must exist otherwise Pyfa breaks
|
||||||
DefaultDatabaseValues.importRequiredDefaults()
|
DefaultDatabaseValues.importRequiredDefaults()
|
||||||
# Import default values for damage profiles
|
# Import default values for damage profiles
|
||||||
DefaultDatabaseValues.importDamageProfileDefaults()
|
DefaultDatabaseValues.importDamageProfileDefaults()
|
||||||
# Import default values for target resist profiles
|
# Import default values for target resist profiles
|
||||||
DefaultDatabaseValues.importResistProfileDefaults()
|
DefaultDatabaseValues.importResistProfileDefaults()
|
||||||
|
|
||||||
|
|||||||
@@ -17,12 +17,13 @@
|
|||||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import service
|
|
||||||
import eos.db
|
|
||||||
import eos.types
|
|
||||||
import time
|
import time
|
||||||
from xml.dom import minidom
|
from xml.dom import minidom
|
||||||
|
|
||||||
|
import eos
|
||||||
|
from service.network import Network, TimeoutError
|
||||||
|
|
||||||
VALIDITY = 24*60*60 # Price validity period, 24 hours
|
VALIDITY = 24*60*60 # Price validity period, 24 hours
|
||||||
REREQUEST = 4*60*60 # Re-request delay for failed fetches, 4 hours
|
REREQUEST = 4*60*60 # Re-request delay for failed fetches, 4 hours
|
||||||
TIMEOUT = 15*60 # Network timeout delay for connection issues, 15 minutes
|
TIMEOUT = 15*60 # Network timeout delay for connection issues, 15 minutes
|
||||||
@@ -71,15 +72,15 @@ class Price():
|
|||||||
|
|
||||||
# Attempt to send request and process it
|
# Attempt to send request and process it
|
||||||
try:
|
try:
|
||||||
network = service.Network.getInstance()
|
network = Network.getInstance()
|
||||||
data = network.request(baseurl, network.PRICES, data)
|
data = network.request(baseurl, network.PRICES, data)
|
||||||
xml = minidom.parse(data)
|
xml = minidom.parse(data)
|
||||||
types = xml.getElementsByTagName("marketstat").item(0).getElementsByTagName("type")
|
types = xml.getElementsByTagName("marketstat").item(0).getElementsByTagName("type")
|
||||||
# Cycle through all types we've got from request
|
# Cycle through all types we've got from request
|
||||||
for type in types:
|
for type_ in types:
|
||||||
# Get data out of each typeID details tree
|
# Get data out of each typeID details tree
|
||||||
typeID = int(type.getAttribute("id"))
|
typeID = int(type_.getAttribute("id"))
|
||||||
sell = type.getElementsByTagName("sell").item(0)
|
sell = type_.getElementsByTagName("sell").item(0)
|
||||||
# If price data wasn't there, set price to zero
|
# If price data wasn't there, set price to zero
|
||||||
try:
|
try:
|
||||||
percprice = float(sell.getElementsByTagName("percentile").item(0).firstChild.data)
|
percprice = float(sell.getElementsByTagName("percentile").item(0).firstChild.data)
|
||||||
@@ -96,7 +97,7 @@ class Price():
|
|||||||
del priceMap[typeID]
|
del priceMap[typeID]
|
||||||
|
|
||||||
# If getting or processing data returned any errors
|
# If getting or processing data returned any errors
|
||||||
except service.network.TimeoutError, e:
|
except TimeoutError:
|
||||||
# Timeout error deserves special treatment
|
# Timeout error deserves special treatment
|
||||||
for typeID in priceMap.keys():
|
for typeID in priceMap.keys():
|
||||||
priceobj = priceMap[typeID]
|
priceobj = priceMap[typeID]
|
||||||
|
|||||||
@@ -9,5 +9,3 @@ logger = logging.getLogger('pycrest')
|
|||||||
logger.addHandler(NullHandler())
|
logger.addHandler(NullHandler())
|
||||||
|
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
|
|
||||||
from .eve import EVE
|
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
|
import logging
|
||||||
|
import re
|
||||||
import os
|
import os
|
||||||
import base64
|
import base64
|
||||||
import time
|
import time
|
||||||
import zlib
|
import zlib
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from . import version
|
|
||||||
from compat import bytes_, text_
|
|
||||||
from errors import APIException
|
|
||||||
from requests.adapters import HTTPAdapter
|
from requests.adapters import HTTPAdapter
|
||||||
|
|
||||||
|
import config
|
||||||
|
from service.pycrest.compat import bytes_, text_
|
||||||
|
from service.pycrest.errors import APIException
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from urllib.parse import urlparse, urlunparse, parse_qsl
|
from urllib.parse import urlparse, urlunparse, parse_qsl
|
||||||
except ImportError: # pragma: no cover
|
except ImportError: # pragma: no cover
|
||||||
@@ -20,13 +22,6 @@ try:
|
|||||||
except ImportError: # pragma: no cover
|
except ImportError: # pragma: no cover
|
||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
|
|
||||||
try:
|
|
||||||
from urllib.parse import quote
|
|
||||||
except ImportError: # pragma: no cover
|
|
||||||
from urllib import quote
|
|
||||||
import logging
|
|
||||||
import re
|
|
||||||
import config
|
|
||||||
|
|
||||||
logger = logging.getLogger("pycrest.eve")
|
logger = logging.getLogger("pycrest.eve")
|
||||||
cache_re = re.compile(r'max-age=([0-9]+)')
|
cache_re = re.compile(r'max-age=([0-9]+)')
|
||||||
@@ -110,8 +105,7 @@ class APIConnection(object):
|
|||||||
"Accept": "application/json",
|
"Accept": "application/json",
|
||||||
})
|
})
|
||||||
session.headers.update(additional_headers)
|
session.headers.update(additional_headers)
|
||||||
session.mount('https://public-crest.eveonline.com',
|
session.mount('https://public-crest.eveonline.com', HTTPAdapter())
|
||||||
HTTPAdapter())
|
|
||||||
self._session = session
|
self._session = session
|
||||||
if cache:
|
if cache:
|
||||||
if isinstance(cache, APICache):
|
if isinstance(cache, APICache):
|
||||||
|
|||||||
@@ -1,32 +1,23 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import ssl
|
import ssl
|
||||||
import sys
|
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from requests.adapters import HTTPAdapter
|
from requests.adapters import HTTPAdapter
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from requests.packages import urllib3
|
from requests.packages import urllib3
|
||||||
from requests.packages.urllib3.util import ssl_
|
from requests.packages.urllib3.util import ssl_
|
||||||
|
from requests.packages.urllib3.exceptions import (
|
||||||
from requests.packages.urllib3.exceptions import (
|
SystemTimeWarning,
|
||||||
SystemTimeWarning,
|
SecurityWarning,
|
||||||
SecurityWarning,
|
)
|
||||||
)
|
from requests.packages.urllib3.packages.ssl_match_hostname import \
|
||||||
from requests.packages.urllib3.packages.ssl_match_hostname import \
|
match_hostname
|
||||||
match_hostname
|
|
||||||
except:
|
except:
|
||||||
import urllib3
|
import urllib3
|
||||||
from urllib3.util import ssl_
|
from urllib3.util import ssl_
|
||||||
|
from urllib3.exceptions import SystemTimeWarning, SecurityWarning
|
||||||
from urllib3.exceptions import (
|
from urllib3.packages.ssl_match_hostname import match_hostname
|
||||||
SystemTimeWarning,
|
|
||||||
SecurityWarning,
|
|
||||||
)
|
|
||||||
from urllib3.packages.ssl_match_hostname import \
|
|
||||||
match_hostname
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WeakCiphersHTTPSConnection(
|
class WeakCiphersHTTPSConnection(
|
||||||
|
|||||||
@@ -2,11 +2,12 @@ import BaseHTTPServer
|
|||||||
import urlparse
|
import urlparse
|
||||||
import socket
|
import socket
|
||||||
import thread
|
import thread
|
||||||
import wx
|
|
||||||
from service.settings import CRESTSettings
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import wx
|
||||||
|
|
||||||
|
from service.settings import CRESTSettings
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
HTML = '''
|
HTML = '''
|
||||||
@@ -121,4 +122,3 @@ if __name__ == "__main__":
|
|||||||
thread.start_new_thread(httpd.serve, ())
|
thread.start_new_thread(httpd.serve, ())
|
||||||
raw_input("Press <RETURN> to stop server\n")
|
raw_input("Press <RETURN> to stop server\n")
|
||||||
httpd.stop()
|
httpd.stop()
|
||||||
|
|
||||||
|
|||||||
@@ -19,11 +19,12 @@
|
|||||||
|
|
||||||
import cPickle
|
import cPickle
|
||||||
import os.path
|
import os.path
|
||||||
import config
|
|
||||||
import urllib2
|
import urllib2
|
||||||
|
|
||||||
|
import config
|
||||||
|
|
||||||
class SettingsProvider():
|
class SettingsProvider():
|
||||||
BASE_PATH = os.path.join(config.savePath, "settings")
|
BASE_PATH = os.path.join(config.savePath or ".", "settings")
|
||||||
settings = {}
|
settings = {}
|
||||||
_instance = None
|
_instance = None
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -17,14 +17,16 @@
|
|||||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import eos.db
|
|
||||||
import eos.types
|
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
class ImportError(Exception):
|
import eos
|
||||||
pass
|
from eos.saveddata import targetResists as db_targetResists
|
||||||
|
|
||||||
class TargetResists():
|
|
||||||
|
class ImportError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class TargetResists(object):
|
||||||
instance = None
|
instance = None
|
||||||
@classmethod
|
@classmethod
|
||||||
def getInstance(cls):
|
def getInstance(cls):
|
||||||
@@ -84,5 +86,4 @@ class TargetResists():
|
|||||||
def exportPatterns(self):
|
def exportPatterns(self):
|
||||||
patterns = self.getTargetResistsList()
|
patterns = self.getTargetResistsList()
|
||||||
patterns.sort(key=lambda p: p.name)
|
patterns.sort(key=lambda p: p.name)
|
||||||
return eos.types.TargetResists.exportPatterns(*patterns)
|
return db_targetResists.TargetResists.exportPatterns(*patterns)
|
||||||
|
|
||||||
|
|||||||
@@ -18,23 +18,25 @@
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import wx
|
|
||||||
import urllib2
|
|
||||||
import json
|
import json
|
||||||
import config
|
|
||||||
import service
|
|
||||||
import dateutil.parser
|
|
||||||
import calendar
|
import calendar
|
||||||
|
|
||||||
|
import wx
|
||||||
|
import dateutil.parser
|
||||||
|
|
||||||
|
import config
|
||||||
|
from service.network import Network
|
||||||
|
from service.settings import UpdateSettings
|
||||||
|
|
||||||
class CheckUpdateThread(threading.Thread):
|
class CheckUpdateThread(threading.Thread):
|
||||||
def __init__(self, callback):
|
def __init__(self, callback):
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
self.settings = service.settings.UpdateSettings.getInstance()
|
self.settings = UpdateSettings.getInstance()
|
||||||
self.network = service.Network.getInstance()
|
self.network = Network.getInstance()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
network = service.Network.getInstance()
|
network = Network.getInstance()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = network.request('https://api.github.com/repos/pyfa-org/Pyfa/releases', network.UPDATE)
|
response = network.request('https://api.github.com/repos/pyfa-org/Pyfa/releases', network.UPDATE)
|
||||||
@@ -91,5 +93,3 @@ class Update():
|
|||||||
if cls.instance == None:
|
if cls.instance == None:
|
||||||
cls.instance = Update()
|
cls.instance = Update()
|
||||||
return cls.instance
|
return cls.instance
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
34
tests/test_package.py
Normal file
34
tests/test_package.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
"""import tests."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import importlib
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
import service
|
||||||
|
import gui
|
||||||
|
import eos
|
||||||
|
import utils
|
||||||
|
|
||||||
|
|
||||||
|
def test_packages():
|
||||||
|
assert service
|
||||||
|
assert gui
|
||||||
|
assert eos
|
||||||
|
assert utils
|
||||||
|
|
||||||
|
|
||||||
|
def service_modules():
|
||||||
|
for root, folders, files in os.walk("service"):
|
||||||
|
for file_ in files:
|
||||||
|
if file_.endswith(".py") and not file_.startswith("_"):
|
||||||
|
mod_name = "{}.{}".format(
|
||||||
|
root.replace("/", "."),
|
||||||
|
file_.split(".py")[0],
|
||||||
|
)
|
||||||
|
yield mod_name
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("mod_name", service_modules())
|
||||||
|
def test_service_imports(mod_name):
|
||||||
|
assert importlib.import_module(mod_name)
|
||||||
Reference in New Issue
Block a user