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