@@ -100,8 +100,8 @@ def DBInMemory():
|
||||
import eos.db
|
||||
|
||||
# Output debug info to help us troubleshoot Travis
|
||||
print((eos.db.saveddata_engine))
|
||||
print((eos.db.gamedata_engine))
|
||||
print(eos.db.saveddata_engine)
|
||||
print(eos.db.gamedata_engine)
|
||||
|
||||
helper = {
|
||||
'config': eos.config,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import pytest
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
|
||||
|
||||
# noinspection PyShadowingNames
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import pytest
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
|
||||
|
||||
# noinspection PyShadowingNames
|
||||
|
||||
@@ -38,7 +38,7 @@ call([
|
||||
iscc,
|
||||
os.path.join(os.getcwd(), "dist_assets", "win", "pyfa-setup.iss"),
|
||||
"/dMyAppVersion=%s" % (config['version']),
|
||||
"/dMyAppExpansion=%s" % (expansion),
|
||||
"/dMyAppExpansion=%s" % expansion,
|
||||
"/dMyAppDir=%s" % source,
|
||||
"/dMyOutputDir=%s" % os.path.join(os.getcwd(), "dist"),
|
||||
"/dMyOutputFile=%s" % fileName]) # stdout=devnull, stderr=devnull
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Column, String, Integer, ForeignKey, Boolean, Table
|
||||
from sqlalchemy.orm import relation, mapper, synonym, deferred
|
||||
from sqlalchemy import Boolean, Column, Integer, String, Table
|
||||
from sqlalchemy.orm import deferred, mapper, synonym
|
||||
|
||||
from eos.db import gamedata_meta
|
||||
from eos.gamedata import Category
|
||||
|
||||
@@ -17,15 +17,15 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Table, Float
|
||||
from sqlalchemy import Boolean, Column, Float, ForeignKey, Integer, String, Table
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm import relation, mapper, synonym, deferred, backref
|
||||
from sqlalchemy.orm import backref, deferred, mapper, relation, synonym
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from eos.db.gamedata.effect import typeeffects_table
|
||||
|
||||
from eos.db import gamedata_meta
|
||||
from eos.gamedata import Attribute, Effect, Group, Item, MetaType, Traits, DynamicItemItem, DynamicItem
|
||||
from eos.db.gamedata.dynamicAttributes import dynamicApplicable_table, dynamic_table
|
||||
from eos.db.gamedata.dynamicAttributes import dynamicApplicable_table
|
||||
from eos.db.gamedata.effect import typeeffects_table
|
||||
from eos.gamedata import Attribute, DynamicItem, Effect, Group, Item, MetaType, Traits
|
||||
|
||||
items_table = Table("invtypes", gamedata_meta,
|
||||
Column("typeID", Integer, primary_key=True),
|
||||
|
||||
@@ -17,16 +17,16 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy.orm import join, exc, aliased, joinedload, subqueryload
|
||||
from sqlalchemy.sql import and_, or_, select
|
||||
from sqlalchemy.inspection import inspect
|
||||
from sqlalchemy.orm import aliased, exc, join
|
||||
from sqlalchemy.sql import and_, or_, select
|
||||
|
||||
import eos.config
|
||||
from eos.db import gamedata_session
|
||||
from eos.db.gamedata.metaGroup import metatypes_table, items_table
|
||||
from eos.db.gamedata.group import groups_table
|
||||
from eos.db.gamedata.metaGroup import items_table, metatypes_table
|
||||
from eos.db.util import processEager, processWhere
|
||||
from eos.gamedata import AlphaClone, Attribute, Category, Group, Item, MarketGroup, MetaGroup, AttributeInfo, MetaData, DynamicItem
|
||||
from eos.gamedata import AlphaClone, Attribute, AttributeInfo, Category, DynamicItem, Group, Item, MarketGroup, MetaData, MetaGroup
|
||||
|
||||
cache = {}
|
||||
configVal = getattr(eos.config, "gamedataCache", None)
|
||||
|
||||
@@ -17,33 +17,32 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from sqlalchemy.sql import and_
|
||||
from sqlalchemy.orm import relation, reconstructor, mapper, relationship
|
||||
from sqlalchemy import ForeignKey, Column, Integer, String, Table, Boolean, DateTime
|
||||
import datetime
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.db import saveddata_session
|
||||
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Table
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm import mapper, reconstructor, relation, relationship
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from sqlalchemy.sql import and_
|
||||
|
||||
from eos.db import saveddata_meta, saveddata_session
|
||||
from eos.db.saveddata.cargo import cargo_table
|
||||
from eos.db.saveddata.drone import drones_table
|
||||
from eos.db.saveddata.fighter import fighters_table
|
||||
from eos.db.saveddata.implant import fitImplants_table
|
||||
from eos.db.saveddata.module import modules_table
|
||||
from eos.effectHandlerHelpers import HandledModuleList, HandledImplantBoosterList, HandledProjectedModList, \
|
||||
HandledDroneCargoList, HandledProjectedDroneList
|
||||
from eos.saveddata.implant import Implant
|
||||
from eos.saveddata.character import Character
|
||||
from eos.saveddata.user import User
|
||||
from eos.saveddata.fighter import Fighter
|
||||
from eos.saveddata.fit import Fit as es_Fit, ImplantLocation
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.effectHandlerHelpers import HandledDroneCargoList, HandledImplantBoosterList, HandledModuleList, HandledProjectedDroneList, HandledProjectedModList
|
||||
from eos.saveddata.booster import Booster
|
||||
from eos.saveddata.module import Module
|
||||
from eos.saveddata.cargo import Cargo
|
||||
from eos.saveddata.character import Character
|
||||
from eos.saveddata.damagePattern import DamagePattern
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.saveddata.fighter import Fighter
|
||||
from eos.saveddata.fit import Fit as es_Fit
|
||||
from eos.saveddata.implant import Implant
|
||||
from eos.saveddata.module import Module
|
||||
from eos.saveddata.targetResists import TargetResists
|
||||
from eos.saveddata.user import User
|
||||
|
||||
fits_table = Table("fits", saveddata_meta,
|
||||
Column("ID", Integer, primary_key=True),
|
||||
|
||||
@@ -17,10 +17,11 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, Boolean, DateTime, Float
|
||||
from sqlalchemy.orm import mapper
|
||||
import datetime
|
||||
|
||||
from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, Table
|
||||
from sqlalchemy.orm import mapper
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.saveddata.mutator import Mutator
|
||||
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
# Used by:
|
||||
# Variations of module: Armor Command Burst I (2 of 2)
|
||||
|
||||
'''
|
||||
"""
|
||||
Some documentation:
|
||||
When the fit is calculated, we gather up all the gang effects and stick them onto the fit. We don't run the actual
|
||||
effect yet, only give the fit details so that it can run the effect at a later time. We need to do this so that we can
|
||||
only run the strongest effect. When we are done, one of the last things that we do with the fit is to loop through those
|
||||
bonuses and actually run the effect. To do this, we have a special argument passed into the effect handler that tells it
|
||||
which warfareBuffID to run (shouldn't need this right now, but better safe than sorry)
|
||||
'''
|
||||
"""
|
||||
|
||||
type = "active", "gang"
|
||||
|
||||
|
||||
@@ -166,14 +166,14 @@ class Effect(EqBase):
|
||||
|
||||
t = t if isinstance(t, tuple) or t is None else (t,)
|
||||
self.__type = t
|
||||
except (ImportError) as e:
|
||||
except ImportError as e:
|
||||
# Effect probably doesn't exist, so create a dummy effect and flag it with a warning.
|
||||
self.__handler = effectDummy
|
||||
self.__runTime = "normal"
|
||||
self.__activeByDefault = True
|
||||
self.__type = None
|
||||
pyfalog.debug("ImportError generating handler: {0}", e)
|
||||
except (AttributeError) as e:
|
||||
except AttributeError as e:
|
||||
# Effect probably exists but there is an issue with it. Turn it into a dummy effect so we can continue, but flag it with an error.
|
||||
self.__handler = effectDummy
|
||||
self.__runTime = "normal"
|
||||
@@ -630,8 +630,8 @@ class Unit(EqBase):
|
||||
def attributeIDCallback(v):
|
||||
v = int(v)
|
||||
if not v: # some attributes come through with a value of 0? See #1387
|
||||
return "%d" % (v)
|
||||
attribute = eos.db.getAttributeInfo(v, eager=("unit"))
|
||||
return "%d" % v
|
||||
attribute = eos.db.getAttributeInfo(v, eager="unit")
|
||||
return "%s (%d)" % (attribute.name.capitalize(), v)
|
||||
|
||||
def TranslateValue(self, value):
|
||||
|
||||
@@ -34,10 +34,10 @@ class ItemAttrShortcut(object):
|
||||
return return_value or default
|
||||
|
||||
def getBaseAttrValue(self, key, default=0):
|
||||
'''
|
||||
"""
|
||||
Gets base value in this order:
|
||||
Mutated value > override value > attribute value
|
||||
'''
|
||||
"""
|
||||
return_value = self.itemModifiedAttributes.getOriginal(key)
|
||||
|
||||
return return_value or default
|
||||
@@ -382,7 +382,7 @@ class ModifiedAttributeDict(collections.MutableMapping):
|
||||
if resist:
|
||||
afflictPenal += "r"
|
||||
|
||||
self.__afflict(attributeName, "%s*" % (afflictPenal), multiplier, multiplier != 1)
|
||||
self.__afflict(attributeName, "%s*" % afflictPenal, multiplier, multiplier != 1)
|
||||
|
||||
def boost(self, attributeName, boostFactor, skill=None, *args, **kwargs):
|
||||
"""Boost value by some percentage"""
|
||||
|
||||
@@ -17,19 +17,17 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from logbook import Logger
|
||||
from copy import deepcopy
|
||||
|
||||
from sqlalchemy.orm import validates, reconstructor
|
||||
from math import floor
|
||||
|
||||
from logbook import Logger
|
||||
from sqlalchemy.orm import reconstructor, validates
|
||||
|
||||
import eos.db
|
||||
from eos.effectHandlerHelpers import HandledItem, HandledCharge
|
||||
from eos.effectHandlerHelpers import HandledCharge, HandledItem
|
||||
from eos.enum import Enum
|
||||
from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut, ChargeAttrShortcut
|
||||
from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict
|
||||
from eos.saveddata.citadel import Citadel
|
||||
from eos.saveddata.mutator import Mutator
|
||||
from utils.deprecated import deprecated
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
@@ -651,7 +649,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut):
|
||||
for i in range(5):
|
||||
itemChargeGroup = self.getModifiedItemAttr('chargeGroup' + str(i), None)
|
||||
if itemChargeGroup is not None:
|
||||
g = eos.db.getGroup(int(itemChargeGroup), eager=("items.attributes"))
|
||||
g = eos.db.getGroup(int(itemChargeGroup), eager="items.attributes")
|
||||
if g is None:
|
||||
continue
|
||||
for singleItem in g.items:
|
||||
|
||||
@@ -131,7 +131,7 @@ class Ship(ItemAttrShortcut, HandledItem):
|
||||
return None
|
||||
|
||||
items = []
|
||||
g = eos.db.getGroup("Ship Modifiers", eager=("items.attributes"))
|
||||
g = eos.db.getGroup("Ship Modifiers", eager="items.attributes")
|
||||
for item in g.items:
|
||||
# Rely on name detection because race is not reliable
|
||||
if item.name.lower().startswith(self.item.name.lower()):
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import copy
|
||||
import wx
|
||||
import math
|
||||
|
||||
from gui.utils import color as color_utils
|
||||
from gui.utils import draw, anim_effects
|
||||
from service.fit import Fit
|
||||
from gui.utils import anim_effects
|
||||
import math
|
||||
|
||||
import wx
|
||||
|
||||
from gui.utils import anim_effects
|
||||
|
||||
|
||||
# todo: clean class up. Took from pyfa gauge, has a bunch of extra shit we don't need
|
||||
|
||||
|
||||
@@ -19,15 +19,14 @@
|
||||
|
||||
import io
|
||||
import os.path
|
||||
import zipfile
|
||||
from collections import OrderedDict
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
from logbook import Logger
|
||||
|
||||
import config
|
||||
|
||||
from logbook import Logger
|
||||
logging = Logger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ class BoosterSideEffect(ContextMenu):
|
||||
# if not self.settings.get('fighterAbilities'):
|
||||
# return False
|
||||
|
||||
if self.mainFrame.getActiveFit() is None or srcContext not in ("boosterItem"):
|
||||
if self.mainFrame.getActiveFit() is None or srcContext not in "boosterItem":
|
||||
return False
|
||||
|
||||
self.booster = selection[0]
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
from gui.contextMenu import ContextMenu
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
from service.settings import ContextMenuSettings
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
|
||||
class Cargo(ContextMenu):
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
import wx
|
||||
from service.settings import ContextMenuSettings
|
||||
from service.fit import Fit
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.settings import ContextMenuSettings
|
||||
|
||||
|
||||
class CargoAmmo(ContextMenu):
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.settings import ContextMenuSettings
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
|
||||
class CommandFits(ContextMenu):
|
||||
@@ -26,7 +25,7 @@ class CommandFits(ContextMenu):
|
||||
if evt is not None:
|
||||
ids = getattr(evt, 'typeID')
|
||||
if not isinstance(ids, set):
|
||||
ids = set([ids])
|
||||
ids = {ids}
|
||||
|
||||
if evt is None or not ids.isdisjoint(cls.commandTypeIDs):
|
||||
# we are adding or removing an item that defines a command fit. Need to refresh fit list
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
import gui.globalEvents as GE
|
||||
from service.fit import Fit
|
||||
from service.settings import ContextMenuSettings
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
|
||||
class ItemRemove(ContextMenu):
|
||||
|
||||
@@ -3,19 +3,11 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.settings import ContextMenuSettings
|
||||
from eos.saveddata.booster import Booster
|
||||
from eos.saveddata.module import Module
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.saveddata.fighter import Fighter
|
||||
from eos.saveddata.implant import Implant
|
||||
from eos.saveddata.cargo import Cargo
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.market import Market
|
||||
from service.settings import ContextMenuSettings
|
||||
|
||||
|
||||
class MetaSwap(ContextMenu):
|
||||
|
||||
@@ -3,15 +3,13 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
from eos.saveddata.module import Hardpoint
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from service.settings import ContextMenuSettings
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from eos.saveddata.module import Hardpoint
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.market import Market
|
||||
from service.settings import ContextMenuSettings
|
||||
|
||||
|
||||
class ModuleAmmoPicker(ContextMenu):
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import gui.mainFrame
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
import gui.globalEvents as GE
|
||||
from gui.builtinContextMenus.moduleAmmoPicker import ModuleAmmoPicker
|
||||
from eos.db.saveddata.queries import getFit as db_getFit
|
||||
from service.fit import Fit
|
||||
from service.settings import ContextMenuSettings
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from eos.db.saveddata.queries import getFit as db_getFit
|
||||
# noinspection PyPackageRequirements
|
||||
from gui.builtinContextMenus.moduleAmmoPicker import ModuleAmmoPicker
|
||||
from service.settings import ContextMenuSettings
|
||||
|
||||
|
||||
class ModuleGlobalAmmoPicker(ModuleAmmoPicker):
|
||||
|
||||
@@ -18,7 +18,7 @@ class MutaplasmidCM(ContextMenu):
|
||||
# if not self.settings.get('ammoPattern'):
|
||||
# return False
|
||||
|
||||
if srcContext not in ("fittingModule") or self.mainFrame.getActiveFit() is None:
|
||||
if srcContext not in "fittingModule" or self.mainFrame.getActiveFit() is None:
|
||||
return False
|
||||
|
||||
mod = selection[0]
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
from gui.contextMenu import ContextMenu
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
from service.settings import ContextMenuSettings
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
|
||||
class Project(ContextMenu):
|
||||
|
||||
@@ -3,12 +3,11 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
from service.fit import Fit
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.builtinViews.emptyView import BlankPage
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from gui.builtinViews.emptyView import BlankPage
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.fit import Fit
|
||||
|
||||
|
||||
class TabbedFits(ContextMenu):
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.mainFrame
|
||||
|
||||
import gui.globalEvents as GE
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.fit import Fit
|
||||
from service.settings import ContextMenuSettings
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
|
||||
class TacticalMode(ContextMenu):
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.mainFrame
|
||||
import gui.globalEvents as GE
|
||||
import re
|
||||
from itertools import chain
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
from service.market import Market
|
||||
from service.fit import Fit
|
||||
from service.settings import ContextMenuSettings
|
||||
from itertools import chain
|
||||
import re
|
||||
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.market import Market
|
||||
from service.settings import ContextMenuSettings
|
||||
|
||||
|
||||
class WhProjector(ContextMenu):
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import wx
|
||||
import wx.lib.newevent
|
||||
from gui.attribute_gauge import AttributeGauge
|
||||
|
||||
import eos
|
||||
import eos.db
|
||||
from gui.attribute_gauge import AttributeGauge
|
||||
|
||||
_ValueChanged, EVT_VALUE_CHANGED = wx.lib.newevent.NewEvent()
|
||||
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
from service.fit import Fit
|
||||
from .attributeSlider import AttributeSlider, EVT_VALUE_CHANGED
|
||||
|
||||
import gui.mainFrame
|
||||
from gui.contextMenu import ContextMenu
|
||||
from .itemAttributes import ItemParams
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
import gui.globalEvents as GE
|
||||
import random
|
||||
|
||||
import wx
|
||||
from logbook import Logger
|
||||
|
||||
import gui.globalEvents as GE
|
||||
import gui.mainFrame
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from service.fit import Fit
|
||||
from .attributeSlider import AttributeSlider, EVT_VALUE_CHANGED
|
||||
from .itemAttributes import ItemParams
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
import wx
|
||||
|
||||
import config
|
||||
import gui.builtinMarketBrowser.pfSearchBox as SBox
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.display import Display
|
||||
from service.attribute import Attribute
|
||||
from service.fit import Fit
|
||||
from gui.utils.staticHelpers import DragDropHelper
|
||||
|
||||
from logbook import Logger
|
||||
|
||||
from gui.builtinMarketBrowser.events import RECENTLY_USED_MODULES, MAX_RECENTLY_USED_MODULES, ItemSelected
|
||||
import gui.builtinMarketBrowser.pfSearchBox as SBox
|
||||
from gui.builtinMarketBrowser.events import ItemSelected, MAX_RECENTLY_USED_MODULES, RECENTLY_USED_MODULES
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.display import Display
|
||||
from gui.utils.staticHelpers import DragDropHelper
|
||||
from service.attribute import Attribute
|
||||
from service.fit import Fit
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
from gui.preferenceView import PreferenceView
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
|
||||
import gui.mainFrame
|
||||
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.preferenceView import PreferenceView
|
||||
from service.settings import EsiSettings
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from wx.lib.intctrl import IntCtrl
|
||||
|
||||
from service.esi import Esi
|
||||
# noinspection PyPackageRequirements
|
||||
|
||||
|
||||
class PFEsiPref(PreferenceView):
|
||||
|
||||
@@ -3,12 +3,9 @@
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
import copy
|
||||
|
||||
from gui.preferenceView import PreferenceView
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.utils.color import CalculateTransition
|
||||
import gui.utils.draw as drawUtils
|
||||
from gui.preferenceView import PreferenceView
|
||||
|
||||
|
||||
###########################################################################
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
|
||||
import re
|
||||
import time
|
||||
import config
|
||||
|
||||
import wx
|
||||
from logbook import Logger
|
||||
|
||||
import config
|
||||
import gui.builtinShipBrowser.sfBrowserItem as SFItem
|
||||
import gui.globalEvents as GE
|
||||
import gui.fitCommands as cmd
|
||||
import gui.mainFrame
|
||||
import gui.utils.color as colorUtils
|
||||
import gui.utils.draw as drawUtils
|
||||
import gui.utils.fonts as fonts
|
||||
from .events import ImportSelected, SearchSelected, FitSelected, BoosterListUpdated, Stage3Selected, FitRenamed, FitRemoved
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.builtinShipBrowser.pfBitmapFrame import PFBitmapFrame
|
||||
from service.fit import Fit
|
||||
import gui.fitCommands as cmd
|
||||
from .events import BoosterListUpdated, FitRemoved, FitSelected, ImportSelected, SearchSelected, Stage3Selected
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ import gui.mainFrame
|
||||
import gui.utils.color as colorUtils
|
||||
import gui.utils.draw as drawUtils
|
||||
import gui.utils.fonts as fonts
|
||||
from .events import Stage3Selected, Stage2Selected, Stage1Selected, FitSelected
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
from .events import FitSelected, Stage3Selected
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -129,15 +129,15 @@ class PriceViewFull(StatsView):
|
||||
|
||||
total_price = 0
|
||||
|
||||
if (self.settings.get("ship")):
|
||||
if self.settings.get("ship"):
|
||||
total_price += ship_price
|
||||
if (self.settings.get("modules")):
|
||||
if self.settings.get("modules"):
|
||||
total_price += module_price
|
||||
if (self.settings.get("drones")):
|
||||
if self.settings.get("drones"):
|
||||
total_price += drone_price + fighter_price
|
||||
if (self.settings.get("cargo")):
|
||||
if self.settings.get("cargo"):
|
||||
total_price += cargo_price
|
||||
if (self.settings.get("character")):
|
||||
if self.settings.get("character"):
|
||||
total_price += booster_price + implant_price
|
||||
|
||||
self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True))
|
||||
|
||||
@@ -125,15 +125,15 @@ class PriceViewMinimal(StatsView):
|
||||
|
||||
total_price = 0
|
||||
|
||||
if (self.settings.get("ship")):
|
||||
if self.settings.get("ship"):
|
||||
total_price += ship_price
|
||||
if (self.settings.get("modules")):
|
||||
if self.settings.get("modules"):
|
||||
total_price += module_price
|
||||
if (self.settings.get("drones")):
|
||||
if self.settings.get("drones"):
|
||||
total_price += drone_price + fighter_price
|
||||
if (self.settings.get("cargo")):
|
||||
if self.settings.get("cargo"):
|
||||
total_price += cargo_price
|
||||
if (self.settings.get("character")):
|
||||
if self.settings.get("character"):
|
||||
total_price += booster_price + implant_price
|
||||
|
||||
self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True))
|
||||
|
||||
@@ -21,29 +21,26 @@
|
||||
import wx
|
||||
# noinspection PyPackageRequirements
|
||||
import wx.lib.newevent
|
||||
import gui.mainFrame
|
||||
from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED
|
||||
from logbook import Logger
|
||||
|
||||
import gui.builtinViews.emptyView
|
||||
import gui.display as d
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED, EVT_FIT_REMOVED, FitSelected, EVT_FIT_SELECTED
|
||||
import gui.fitCommands as cmd
|
||||
import gui.globalEvents as GE
|
||||
import gui.mainFrame
|
||||
import gui.multiSwitch
|
||||
from eos.saveddata.mode import Mode
|
||||
from eos.saveddata.module import Module, Slot, Rack
|
||||
from gui.builtinViewColumns.state import State
|
||||
from eos.saveddata.module import Module, Rack, Slot
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
import gui.builtinViews.emptyView
|
||||
from logbook import Logger
|
||||
from gui.builtinMarketBrowser.events import ITEM_SELECTED
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_REMOVED, EVT_FIT_RENAMED, EVT_FIT_SELECTED, FitSelected
|
||||
from gui.builtinViewColumns.state import State
|
||||
from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED
|
||||
import gui.fitCommands as cmd
|
||||
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.utils.staticHelpers import DragDropHelper
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
|
||||
from gui.utils.staticHelpers import DragDropHelper
|
||||
import gui.utils.fonts as fonts
|
||||
|
||||
import gui.globalEvents as GE
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -361,9 +358,9 @@ class FittingView(d.Display):
|
||||
self.parent.SetPageTextIcon(pageIndex, text, bitmap)
|
||||
|
||||
def appendItem(self, event):
|
||||
'''
|
||||
"""
|
||||
Adds items that are double clicks from the market browser. We handle both modules and ammo
|
||||
'''
|
||||
"""
|
||||
if not self:
|
||||
event.Skip()
|
||||
return
|
||||
@@ -390,7 +387,7 @@ class FittingView(d.Display):
|
||||
event.Skip()
|
||||
|
||||
def removeItem(self, event):
|
||||
'''Double Left Click - remove module'''
|
||||
"""Double Left Click - remove module"""
|
||||
if event.CmdDown():
|
||||
return
|
||||
row, _ = self.HitTest(event.Position)
|
||||
|
||||
@@ -17,35 +17,30 @@
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
# =============================================================================
|
||||
|
||||
import re
|
||||
|
||||
import roman
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
import wx.dataview
|
||||
import wx.lib.agw.hyperlink
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx.lib.newevent
|
||||
from logbook import Logger
|
||||
# noinspection PyPackageRequirements
|
||||
from wx.dataview import TreeListCtrl
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.contextMenu import ContextMenu
|
||||
import gui.globalEvents as GE
|
||||
from gui.builtinViews.implantEditor import BaseImplantEditorView
|
||||
from gui.builtinViews.entityEditor import EntityEditor, BaseValidator, TextEntryValidatedDialog
|
||||
from service.fit import Fit
|
||||
from service.character import Character
|
||||
from service.esi import Esi
|
||||
from service.network import AuthenticationError, TimeoutError
|
||||
from service.market import Market
|
||||
from logbook import Logger
|
||||
|
||||
from wx.lib.agw.floatspin import FloatSpin
|
||||
|
||||
|
||||
from gui.utils.clipboard import toClipboard, fromClipboard
|
||||
|
||||
import roman
|
||||
import re
|
||||
import webbrowser
|
||||
import gui.globalEvents as GE
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.builtinViews.entityEditor import BaseValidator, EntityEditor, TextEntryValidatedDialog
|
||||
from gui.builtinViews.implantEditor import BaseImplantEditorView
|
||||
from gui.contextMenu import ContextMenu
|
||||
from gui.utils.clipboard import fromClipboard, toClipboard
|
||||
from service.character import Character
|
||||
from service.esi import Esi
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ PageAdded, EVT_NOTEBOOK_PAGE_ADDED = wx.lib.newevent.NewEvent()
|
||||
PageClosed, EVT_NOTEBOOK_PAGE_CLOSED = wx.lib.newevent.NewEvent()
|
||||
|
||||
|
||||
class VetoAble():
|
||||
class VetoAble:
|
||||
def __init__(self):
|
||||
self.__vetoed = False
|
||||
|
||||
@@ -41,7 +41,7 @@ class VetoAble():
|
||||
return self.__vetoed
|
||||
|
||||
|
||||
class NotebookTabChangeEvent():
|
||||
class NotebookTabChangeEvent:
|
||||
def __init__(self, old, new):
|
||||
self.__old = old
|
||||
self.__new = new
|
||||
|
||||
@@ -319,7 +319,7 @@ class SsoCharacterMgmt(wx.Dialog):
|
||||
self.Centre(wx.BOTH)
|
||||
|
||||
def ssoLogin(self, event):
|
||||
if (self):
|
||||
if self:
|
||||
# todo: these events don't unbind properly when window is closed (?), hence the `if`. Figure out better way of doing this.
|
||||
self.popCharList()
|
||||
event.Skip()
|
||||
@@ -384,7 +384,7 @@ class FittingsTreeView(wx.Panel):
|
||||
dict = {}
|
||||
fits = data
|
||||
for fit in fits:
|
||||
if (fit['fitting_id'] in sEsi.fittings_deleted):
|
||||
if fit['fitting_id'] in sEsi.fittings_deleted:
|
||||
continue
|
||||
ship = getItem(fit['ship_type_id'])
|
||||
if ship is None:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import wx
|
||||
|
||||
from gui.fitCommands.helpers import ModuleInfoCache
|
||||
import eos.db
|
||||
from logbook import Logger
|
||||
|
||||
import eos.db
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
from gui.fitCommands.helpers import ModuleInfoCache
|
||||
from eos.saveddata.module import Module, State
|
||||
import eos.db
|
||||
from logbook import Logger
|
||||
|
||||
import eos.db
|
||||
from eos.saveddata.module import Module, State
|
||||
from gui.fitCommands.helpers import ModuleInfoCache
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import wx
|
||||
from logbook import Logger
|
||||
|
||||
import eos.db
|
||||
import gui.mainFrame
|
||||
from service.fit import Fit
|
||||
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
from eos.saveddata.module import Module
|
||||
from logbook import Logger
|
||||
import eos.db
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
import wx
|
||||
from service.fit import Fit
|
||||
from logbook import Logger
|
||||
|
||||
import gui.mainFrame
|
||||
from gui import globalEvents as GE
|
||||
from gui.fitCommands.calc.fitSetCharge import FitSetChargeCommand
|
||||
from gui.fitCommands.calc.fitReplaceModule import FitReplaceModuleCommand
|
||||
from gui.fitCommands.calc.fitRemoveCargo import FitRemoveCargoCommand
|
||||
from gui.fitCommands.calc.fitRemoveModule import FitRemoveModuleCommand
|
||||
|
||||
from gui.fitCommands.calc.fitReplaceModule import FitReplaceModuleCommand
|
||||
from service.fit import Fit
|
||||
from .calc.fitAddCargo import FitAddCargoCommand
|
||||
from logbook import Logger
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
|
||||
114
gui/mainFrame.py
114
gui/mainFrame.py
@@ -17,76 +17,62 @@
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
# =============================================================================
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
from logbook import Logger
|
||||
|
||||
import sqlalchemy
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
# noinspection PyPackageRequirements
|
||||
from wx.lib.wordwrap import wordwrap
|
||||
# noinspection PyPackageRequirements
|
||||
from wx.lib.inspection import InspectionTool
|
||||
import time
|
||||
|
||||
from codecs import open
|
||||
|
||||
import config
|
||||
|
||||
from eos.config import gamedata_version, gamedata_date
|
||||
import datetime
|
||||
|
||||
import gui.aboutData
|
||||
from gui.chrome_tabs import ChromeNotebook
|
||||
import gui.globalEvents as GE
|
||||
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.mainMenuBar import MainMenuBar
|
||||
from gui.additionsPane import AdditionsPane
|
||||
from gui.marketBrowser import MarketBrowser
|
||||
from gui.builtinMarketBrowser.events import ItemSelected
|
||||
from gui.multiSwitch import MultiSwitch
|
||||
from gui.statsPane import StatsPane
|
||||
from gui.shipBrowser import ShipBrowser
|
||||
from gui.builtinShipBrowser.events import FitSelected, ImportSelected, Stage3Selected
|
||||
from gui.characterEditor import CharacterEditor
|
||||
from gui.characterSelection import CharacterSelection
|
||||
from gui.patternEditor import DmgPatternEditorDlg
|
||||
from gui.resistsEditor import ResistsEditorDlg
|
||||
from gui.setEditor import ImplantSetEditorDlg
|
||||
from gui.devTools import DevTools
|
||||
from gui.preferenceDialog import PreferenceDialog
|
||||
from gui.graphFrame import GraphFrame
|
||||
from gui.ssoLogin import SsoLogin
|
||||
from gui.copySelectDialog import CopySelectDialog
|
||||
from gui.utils.clipboard import toClipboard, fromClipboard
|
||||
from gui.updateDialog import UpdateDialog
|
||||
# noinspection PyUnresolvedReferences
|
||||
from gui.builtinViews import emptyView, entityEditor, fittingView, implantEditor # noqa: F401
|
||||
from gui import graphFrame
|
||||
|
||||
from service.settings import SettingsProvider
|
||||
from service.fit import Fit
|
||||
from service.character import Character
|
||||
from service.update import Update
|
||||
from service.esiAccess import SsoMode
|
||||
|
||||
# import this to access override setting
|
||||
from eos.modifiedAttributeDict import ModifiedAttributeDict
|
||||
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
||||
from eos.db.saveddata.queries import getFit as db_getFit
|
||||
from service.port import Port, IPortUser, EfsPort
|
||||
from service.settings import HTMLExportSettings
|
||||
|
||||
import os.path
|
||||
import threading
|
||||
import time
|
||||
import webbrowser
|
||||
from codecs import open
|
||||
from time import gmtime, strftime
|
||||
|
||||
import threading
|
||||
import webbrowser
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
import wx.adv
|
||||
from logbook import Logger
|
||||
# noinspection PyPackageRequirements
|
||||
# noinspection PyPackageRequirements
|
||||
from wx.lib.inspection import InspectionTool
|
||||
|
||||
from service.esi import Esi, LoginMethod
|
||||
import config
|
||||
import gui.globalEvents as GE
|
||||
from eos.config import gamedata_date, gamedata_version
|
||||
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
||||
from eos.db.saveddata.queries import getFit as db_getFit
|
||||
# import this to access override setting
|
||||
from eos.modifiedAttributeDict import ModifiedAttributeDict
|
||||
from gui import graphFrame
|
||||
from gui.additionsPane import AdditionsPane
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.builtinMarketBrowser.events import ItemSelected
|
||||
from gui.builtinShipBrowser.events import FitSelected, ImportSelected, Stage3Selected
|
||||
# noinspection PyUnresolvedReferences
|
||||
from gui.builtinViews import emptyView, entityEditor, fittingView, implantEditor # noqa: F401
|
||||
from gui.characterEditor import CharacterEditor
|
||||
from gui.characterSelection import CharacterSelection
|
||||
from gui.chrome_tabs import ChromeNotebook
|
||||
from gui.copySelectDialog import CopySelectDialog
|
||||
from gui.devTools import DevTools
|
||||
from gui.esiFittings import EveFittings, ExportToEve, SsoCharacterMgmt
|
||||
from gui.graphFrame import GraphFrame
|
||||
from gui.mainMenuBar import MainMenuBar
|
||||
from gui.marketBrowser import MarketBrowser
|
||||
from gui.multiSwitch import MultiSwitch
|
||||
from gui.patternEditor import DmgPatternEditorDlg
|
||||
from gui.preferenceDialog import PreferenceDialog
|
||||
from gui.resistsEditor import ResistsEditorDlg
|
||||
from gui.setEditor import ImplantSetEditorDlg
|
||||
from gui.shipBrowser import ShipBrowser
|
||||
from gui.ssoLogin import SsoLogin
|
||||
from gui.statsPane import StatsPane
|
||||
from gui.updateDialog import UpdateDialog
|
||||
from gui.utils.clipboard import fromClipboard, toClipboard
|
||||
from service.character import Character
|
||||
from service.esi import Esi, LoginMethod
|
||||
from service.esiAccess import SsoMode
|
||||
from service.fit import Fit
|
||||
from service.port import EfsPort, IPortUser, Port
|
||||
from service.settings import HTMLExportSettings, SettingsProvider
|
||||
from service.update import Update
|
||||
|
||||
disableOverrideEditor = False
|
||||
|
||||
|
||||
@@ -14,11 +14,10 @@
|
||||
# ===============================================================================
|
||||
|
||||
import copy
|
||||
|
||||
import wx
|
||||
|
||||
from gui.utils import color as color_utils
|
||||
from gui.utils import draw, anim_effects
|
||||
from service.fit import Fit
|
||||
from gui.utils import anim_effects, color as color_utils, draw
|
||||
|
||||
|
||||
class PyGauge(wx.Window):
|
||||
|
||||
7
pyfa.py
7
pyfa.py
@@ -19,13 +19,14 @@
|
||||
# ==============================================================================
|
||||
|
||||
|
||||
import datetime
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
from optparse import AmbiguousOptionError, BadOptionError, OptionParser
|
||||
from service.prereqsCheck import PreCheckException, PreCheckMessage, version_precheck, version_block
|
||||
|
||||
import config
|
||||
import datetime
|
||||
from service.prereqsCheck import PreCheckException, PreCheckMessage, version_block, version_precheck
|
||||
|
||||
|
||||
# ascii_text = '''
|
||||
# ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
@@ -6,13 +6,8 @@ This script will generate a dynamicItemAttributes.json file using res files
|
||||
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import re
|
||||
import sqlite3
|
||||
import json
|
||||
|
||||
from PIL import Image
|
||||
|
||||
import os
|
||||
from shutil import copyfile
|
||||
|
||||
parser = argparse.ArgumentParser(description='This script updates module icons for pyfa')
|
||||
|
||||
@@ -410,7 +410,7 @@ else:
|
||||
if not effect_file.startswith('__'):
|
||||
file_name, file_extension = effect_file.rsplit('.', 1)
|
||||
# Ignore non-py files and exclude implementation-specific 'effects'
|
||||
if file_extension == "py" and not file_name in ("__init__"):
|
||||
if file_extension == "py" and not file_name in "__init__":
|
||||
effect_list.append(file_name)
|
||||
|
||||
# Stage 2
|
||||
|
||||
@@ -6,15 +6,13 @@ This script updates only market/item icons.
|
||||
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import re
|
||||
import sqlite3
|
||||
import json
|
||||
import os
|
||||
import sqlite3
|
||||
from shutil import copyfile
|
||||
|
||||
from PIL import Image
|
||||
|
||||
from shutil import copyfile
|
||||
|
||||
parser = argparse.ArgumentParser(description='This script updates module icons for pyfa')
|
||||
parser.add_argument('-e', '--eve', required=True, type=str, help='path to eve\'s ')
|
||||
parser.add_argument('-s', '--server', required=False, default='tq', type=str, help='which server to use (defaults to tq)')
|
||||
@@ -67,7 +65,7 @@ graphics = graphicIDsLoader.load(os.path.join(to_path, 'graphicIDs.fsdbinary'))
|
||||
|
||||
graphics_py_ob = {}
|
||||
for x, v in graphics.items():
|
||||
if (hasattr(v, 'iconFolder')):
|
||||
if hasattr(v, 'iconFolder'):
|
||||
graphics_py_ob[x] = v.iconFolder
|
||||
|
||||
# Add children to market group list
|
||||
|
||||
@@ -19,17 +19,16 @@
|
||||
#===============================================================================
|
||||
|
||||
|
||||
'''
|
||||
"""
|
||||
This script is used to compare two different database versions.
|
||||
It shows removed/changed/new items with list of changed effects,
|
||||
changed attributes and effects which were renamed
|
||||
'''
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import os.path
|
||||
import re
|
||||
import sqlite3
|
||||
import sys
|
||||
|
||||
script_dir = os.path.dirname(__file__)
|
||||
default_old = os.path.join(script_dir, "..", "eve.db")
|
||||
@@ -282,14 +281,12 @@ def main(old, new, groups=True, effects=True, attributes=True, renames=True):
|
||||
oldgroup = old_itmdata[item][0]
|
||||
groupdata = (S["unchanged"], oldgroup, None)
|
||||
# Set old set of effects and mark all as unchanged
|
||||
effectsdata = {}
|
||||
effectsdata[S["unchanged"]] = set()
|
||||
effectsdata = {S["unchanged"]: set()}
|
||||
if effects:
|
||||
oldeffects = old_itmdata[item][1]
|
||||
effectsdata[S["unchanged"]].update(oldeffects)
|
||||
# Set old set of attributes and mark all as unchanged
|
||||
attrdata = {}
|
||||
attrdata[S["unchanged"]] = {}
|
||||
attrdata = {S["unchanged"]: {}}
|
||||
if attributes:
|
||||
oldattrs = old_itmdata[item][2]
|
||||
for attr in oldattrs:
|
||||
@@ -307,14 +304,12 @@ def main(old, new, groups=True, effects=True, attributes=True, renames=True):
|
||||
newgroup = new_itmdata[item][0]
|
||||
groupdata = (S["unchanged"], None, newgroup)
|
||||
# Set new set of effects and mark all as unchanged
|
||||
effectsdata = {}
|
||||
effectsdata[S["unchanged"]] = set()
|
||||
effectsdata = {S["unchanged"]: set()}
|
||||
if effects:
|
||||
neweffects = new_itmdata[item][1]
|
||||
effectsdata[S["unchanged"]].update(neweffects)
|
||||
# Set new set of attributes and mark all as unchanged
|
||||
attrdata = {}
|
||||
attrdata[S["unchanged"]] = {}
|
||||
attrdata = {S["unchanged"]: {}}
|
||||
if attributes:
|
||||
newattrs = new_itmdata[item][2]
|
||||
for attr in newattrs:
|
||||
|
||||
@@ -18,10 +18,9 @@
|
||||
# License along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
#======================================================================
|
||||
|
||||
import functools
|
||||
import os
|
||||
import sys
|
||||
import functools
|
||||
import re
|
||||
|
||||
# Add eos root path to sys.path so we can import ourselves
|
||||
path = os.path.dirname(__file__)
|
||||
@@ -46,7 +45,6 @@ def main(db, json_path):
|
||||
eos.config.debug = False
|
||||
|
||||
# Now thats done, we can import the eos modules using the config
|
||||
import eos.db
|
||||
import eos.gamedata
|
||||
|
||||
# Create the database tables
|
||||
@@ -241,7 +239,7 @@ def main(db, json_path):
|
||||
row['iconFile'] = row['iconFile'].lower().replace('modules/', '').replace('.png', '')
|
||||
|
||||
if jsonName is 'clonegrades':
|
||||
if (row['alphaCloneID'] not in tmp):
|
||||
if row['alphaCloneID'] not in tmp:
|
||||
cloneParent = eos.gamedata.AlphaClone()
|
||||
setattr(cloneParent, 'alphaCloneID', row['alphaCloneID'])
|
||||
setattr(cloneParent, 'alphaCloneName', row['alphaCloneName'])
|
||||
@@ -249,7 +247,7 @@ def main(db, json_path):
|
||||
tmp.append(row['alphaCloneID'])
|
||||
|
||||
for k, v in row.items():
|
||||
if (isinstance(v, str)):
|
||||
if isinstance(v, str):
|
||||
v = v.strip()
|
||||
setattr(instance, fieldMap.get(k, k), v)
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
'''
|
||||
"""
|
||||
A change to EVE Online's cache format rendered Reverence unable to correctly dump the icons file. As a stop gap, this
|
||||
reads the offical SDE iconIDs.yaml and populates our own icons.json file. This files should then be transferred to the
|
||||
other JSON files Phobos dumps before being converted to SQL
|
||||
'''
|
||||
"""
|
||||
|
||||
import yaml
|
||||
import json
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
# Requires eve-old.db file (which is the previous releases database so that we can lookup the old items)
|
||||
# See https://community.eveonline.com/news/patch-notes/patch-notes-for-july-2017-release
|
||||
|
||||
import sys
|
||||
from os.path import realpath, join, dirname, abspath
|
||||
from sqlalchemy import MetaData, create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
import csv
|
||||
import sys
|
||||
from os.path import abspath, dirname, join, realpath
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
newDB = create_engine('sqlite:///' + unicode(realpath(join(dirname(abspath(__file__)), "..", "eve.db")), sys.getfilesystemencoding()))
|
||||
oldDB = create_engine('sqlite:///' + unicode(realpath(join(dirname(abspath(__file__)), "..", "eve-old.db")), sys.getfilesystemencoding()))
|
||||
|
||||
@@ -33,10 +33,10 @@ class Attribute(object):
|
||||
@staticmethod
|
||||
def getAttributeInfo(identity):
|
||||
if isinstance(identity, (int, str)):
|
||||
info = eos.db.getAttributeInfo(identity, eager=("unit"))
|
||||
info = eos.db.getAttributeInfo(identity, eager="unit")
|
||||
elif isinstance(identity, (int, float)):
|
||||
id_ = int(identity)
|
||||
info = eos.db.getAttributeInfo(id_, eager=("unit"))
|
||||
info = eos.db.getAttributeInfo(id_, eager="unit")
|
||||
else:
|
||||
info = None
|
||||
return info
|
||||
|
||||
@@ -337,7 +337,7 @@ class Character(object):
|
||||
@staticmethod
|
||||
def getApiDetails(charID):
|
||||
# todo: fix this (or get rid of?)
|
||||
return ("", "", "", [])
|
||||
return "", "", "", []
|
||||
char = eos.db.getCharacter(charID)
|
||||
if char.chars is not None:
|
||||
chars = json.loads(char.chars)
|
||||
|
||||
@@ -138,7 +138,7 @@ class Esi(EsiAccess):
|
||||
def handleLogin(self, message):
|
||||
|
||||
# we already have authenticated stuff for the auto mode
|
||||
if (self.settings.get('ssoMode') == SsoMode.AUTO):
|
||||
if self.settings.get('ssoMode') == SsoMode.AUTO:
|
||||
ssoInfo = message['SSOInfo'][0]
|
||||
auth_response = json.loads(base64.b64decode(ssoInfo))
|
||||
else:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
'''
|
||||
"""
|
||||
|
||||
A lot of the inspiration (and straight up code copying!) for this class comes from EsiPy <https://github.com/Kyria/EsiPy>
|
||||
Much of the credit goes to the maintainer of that package, Kyria <tweetfleet slack: @althalus>. The reasoning for no
|
||||
@@ -7,7 +7,7 @@ low level.
|
||||
|
||||
Eventually I'll rewrite this to be a bit cleaner and a bit more generic, but for now, it works!
|
||||
|
||||
'''
|
||||
"""
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from logbook import Logger
|
||||
@@ -63,7 +63,7 @@ class APIException(Exception):
|
||||
elif 'message' in self.response:
|
||||
return 'HTTP Error %s: %s' % (self.status_code,
|
||||
self.response['message'])
|
||||
return 'HTTP Error %s' % (self.status_code)
|
||||
return 'HTTP Error %s' % self.status_code
|
||||
|
||||
|
||||
class ESIEndpoints(Enum):
|
||||
@@ -89,7 +89,7 @@ class EsiAccess(object):
|
||||
|
||||
@property
|
||||
def sso_url(self):
|
||||
if (self.settings.get("ssoMode") == SsoMode.CUSTOM):
|
||||
if self.settings.get("ssoMode") == SsoMode.CUSTOM:
|
||||
return "https://login.eveonline.com"
|
||||
return "https://www.pyfa.io"
|
||||
|
||||
@@ -136,7 +136,7 @@ class EsiAccess(object):
|
||||
def getLoginURI(self, redirect=None):
|
||||
self.state = str(uuid.uuid4())
|
||||
|
||||
if (self.settings.get("ssoMode") == SsoMode.AUTO):
|
||||
if self.settings.get("ssoMode") == SsoMode.AUTO:
|
||||
args = {
|
||||
'state': self.state,
|
||||
'pyfa_version': config.version,
|
||||
@@ -256,7 +256,7 @@ class EsiAccess(object):
|
||||
self._session.headers.update(self.get_oauth_header(ssoChar.accessToken))
|
||||
|
||||
def _after_request(self, resp):
|
||||
if ("warning" in resp.headers):
|
||||
if "warning" in resp.headers:
|
||||
pyfalog.warn("{} - {}".format(resp.headers["warning"], resp.url))
|
||||
|
||||
if resp.status_code >= 400:
|
||||
|
||||
@@ -18,33 +18,31 @@
|
||||
# ===============================================================================
|
||||
|
||||
import copy
|
||||
from logbook import Logger
|
||||
from time import time
|
||||
import datetime
|
||||
from time import time
|
||||
|
||||
import wx
|
||||
from logbook import Logger
|
||||
|
||||
import eos.db
|
||||
from eos.saveddata.booster import Booster as es_Booster
|
||||
from eos.saveddata.cargo import Cargo as es_Cargo
|
||||
from eos.saveddata.character import Character as saveddata_Character
|
||||
from eos.saveddata.citadel import Citadel as es_Citadel
|
||||
from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern
|
||||
from eos.saveddata.drone import Drone as es_Drone
|
||||
from eos.saveddata.fighter import Fighter as es_Fighter
|
||||
from eos.saveddata.implant import Implant as es_Implant
|
||||
from eos.saveddata.ship import Ship as es_Ship
|
||||
from eos.saveddata.module import Module as es_Module, State, Slot, ProjectedMap, ProjectedSystem, LocalMap
|
||||
from eos.saveddata.fit import Fit as FitType, ImplantLocation
|
||||
from eos.saveddata.module import Module as es_Module, State
|
||||
from eos.saveddata.ship import Ship as es_Ship
|
||||
from service.character import Character
|
||||
from service.damagePattern import DamagePattern
|
||||
from service.fitDeprecated import FitDeprecated
|
||||
from service.settings import SettingsProvider
|
||||
from utils.deprecated import deprecated
|
||||
import wx
|
||||
from service.fitDeprecated import FitDeprecated
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
class DeferRecalc():
|
||||
class DeferRecalc:
|
||||
def __init__(self, fitID):
|
||||
self.fitID = fitID
|
||||
self.sFit = Fit.getInstance()
|
||||
|
||||
@@ -458,7 +458,7 @@ class FitDeprecated(object):
|
||||
if m.isValidState(State.ACTIVE):
|
||||
m.state = State.ACTIVE
|
||||
|
||||
if (recalc):
|
||||
if recalc:
|
||||
# As some items may affect state-limiting attributes of the ship, calculate new attributes first
|
||||
self.recalc(fit)
|
||||
# Then, check states of all modules and change where needed. This will recalc if needed
|
||||
|
||||
@@ -17,9 +17,6 @@
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
# =============================================================================
|
||||
|
||||
import config
|
||||
import pkg_resources
|
||||
|
||||
|
||||
class Jargon(object):
|
||||
def __init__(self, rawdata: dict):
|
||||
|
||||
@@ -17,25 +17,22 @@
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
import re
|
||||
import threading
|
||||
from logbook import Logger
|
||||
import queue
|
||||
from itertools import chain
|
||||
import threading
|
||||
from collections import OrderedDict
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
from logbook import Logger
|
||||
from sqlalchemy.sql import or_
|
||||
|
||||
import config
|
||||
import eos.db
|
||||
from service import conversions
|
||||
from service.settings import SettingsProvider
|
||||
from service.jargon import JargonLoader
|
||||
|
||||
from eos.gamedata import Category as types_Category, Group as types_Group, Item as types_Item, MarketGroup as types_MarketGroup, \
|
||||
MetaGroup as types_MetaGroup, MetaType as types_MetaType
|
||||
from collections import OrderedDict
|
||||
from service import conversions
|
||||
from service.jargon import JargonLoader
|
||||
from service.settings import SettingsProvider
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
# =============================================================================
|
||||
|
||||
import time
|
||||
from logbook import Logger
|
||||
from xml.dom import minidom
|
||||
|
||||
from service.network import Network
|
||||
from service.price import Price, VALIDITY, TIMEOUT, TimeoutError
|
||||
from logbook import Logger
|
||||
|
||||
from service.network import Network
|
||||
from service.price import Price, TIMEOUT, VALIDITY
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
# =============================================================================
|
||||
|
||||
import time
|
||||
from logbook import Logger
|
||||
from xml.dom import minidom
|
||||
|
||||
from service.network import Network
|
||||
from service.price import Price, VALIDITY, TIMEOUT, TimeoutError
|
||||
from logbook import Logger
|
||||
|
||||
from service.network import Network
|
||||
from service.price import Price, VALIDITY
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -1,23 +1,20 @@
|
||||
import inspect
|
||||
import os
|
||||
import platform
|
||||
import re
|
||||
import sys
|
||||
import traceback
|
||||
import json
|
||||
import eos.db
|
||||
|
||||
import json
|
||||
from math import log
|
||||
|
||||
from logbook import Logger
|
||||
|
||||
import eos.db
|
||||
from config import version as pyfaVersion
|
||||
from eos.db import gamedata_session, getAttributeInfo, getCategory, getGroup
|
||||
from eos.effectHandlerHelpers import HandledList
|
||||
from eos.enum import Enum
|
||||
from eos.gamedata import Attribute, Effect, Group, Item, ItemEffect
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.saveddata.module import Hardpoint, Module, Slot, State
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
from eos.enum import Enum
|
||||
from eos.saveddata.module import Hardpoint, Slot, Module, State
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.effectHandlerHelpers import HandledList
|
||||
from eos.db import gamedata_session, getItemsByCategory, getCategory, getAttributeInfo, getGroup
|
||||
from eos.gamedata import Category, Group, Item, Traits, Attribute, Effect, ItemEffect
|
||||
from logbook import Logger
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -29,7 +26,7 @@ class RigSize(Enum):
|
||||
CAPITAL = 4
|
||||
|
||||
|
||||
class EfsPort():
|
||||
class EfsPort:
|
||||
wepTestSet = {}
|
||||
version = 0.01
|
||||
|
||||
@@ -500,7 +497,7 @@ class EfsPort():
|
||||
|
||||
# Since the effect modules are fairly opaque a mock test fit is used to test the impact of traits.
|
||||
# standin class used to prevent . notation causing issues when used as an arg
|
||||
class standin():
|
||||
class standin:
|
||||
pass
|
||||
tf = standin()
|
||||
tf.modules = HandledList(turrets + launchers)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import sys
|
||||
import inspect
|
||||
import re
|
||||
import platform
|
||||
import re
|
||||
import sys
|
||||
|
||||
version_block = ''
|
||||
|
||||
@@ -10,7 +9,7 @@ class PreCheckException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class PreCheckMessage():
|
||||
class PreCheckMessage:
|
||||
def __init__(self, msg):
|
||||
# wx may not be installed, in which case print to console. For all other prechecks, should pop up a MessageDialog
|
||||
try:
|
||||
|
||||
@@ -18,18 +18,17 @@
|
||||
# =============================================================================
|
||||
|
||||
|
||||
import time
|
||||
import threading
|
||||
import queue
|
||||
from xml.dom import minidom
|
||||
import threading
|
||||
import time
|
||||
|
||||
from logbook import Logger
|
||||
import wx
|
||||
from logbook import Logger
|
||||
|
||||
from eos import db
|
||||
from service.network import Network, TimeoutError
|
||||
from service.fit import Fit
|
||||
from service.market import Market
|
||||
from service.network import TimeoutError
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
@@ -235,4 +234,3 @@ class PriceWorkerThread(threading.Thread):
|
||||
self.wait[x.typeID].append(callback)
|
||||
|
||||
|
||||
from service.marketSources import evemarketer, evemarketdata # noqa: E402
|
||||
|
||||
@@ -17,21 +17,19 @@
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
# =============================================================================
|
||||
|
||||
import threading
|
||||
import json
|
||||
import calendar
|
||||
import threading
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
# noinspection PyPackageRequirements
|
||||
import dateutil.parser
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
from logbook import Logger
|
||||
from packaging.version import Version
|
||||
|
||||
import config
|
||||
from service.network import Network
|
||||
from service.settings import UpdateSettings
|
||||
from logbook import Logger
|
||||
from packaging.version import Version
|
||||
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
import sys
|
||||
import os
|
||||
import sys
|
||||
|
||||
import wx
|
||||
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
# Add root to python paths, this allows us to import submodules
|
||||
sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..')))
|
||||
|
||||
@@ -6,8 +6,6 @@ script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..')))
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
from _development.helpers_fits import RifterFit, KeepstarFit
|
||||
|
||||
def test_race(DB, RifterFit, KeepstarFit):
|
||||
"""
|
||||
|
||||
@@ -9,8 +9,6 @@ print(script_dir)
|
||||
sys.path.append(script_dir)
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
from _development.helpers_fits import RifterFit
|
||||
|
||||
def test_multiply_stacking_penalties(DB, Saveddata, RifterFit):
|
||||
"""
|
||||
|
||||
@@ -7,9 +7,6 @@ script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..', '..')))
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
from _development.helpers_fits import RifterFit, KeepstarFit
|
||||
from _development.helpers_items import StrongBluePillBooster
|
||||
|
||||
|
||||
def test_itemModifiedAttributes(DB, StrongBluePillBooster):
|
||||
|
||||
@@ -4,14 +4,11 @@
|
||||
# This must be done on every test in order to pass in Travis
|
||||
import os
|
||||
import sys
|
||||
from copy import deepcopy
|
||||
|
||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..', '..')))
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
from _development.helpers_fits import RifterFit, KeepstarFit, HeronFit
|
||||
|
||||
|
||||
def test_calculateModifiedAttributes(DB, RifterFit, KeepstarFit):
|
||||
|
||||
@@ -6,9 +6,7 @@ script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..')))
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers_fits import RifterFit, KeepstarFit
|
||||
from service.fit import Fit
|
||||
|
||||
|
||||
|
||||
@@ -64,8 +64,8 @@ def print_db_info():
|
||||
import eos
|
||||
print()
|
||||
print("------------ data base connection info ------------")
|
||||
print((eos.db.saveddata_engine))
|
||||
print((eos.db.gamedata_engine))
|
||||
print(eos.db.saveddata_engine)
|
||||
print(eos.db.gamedata_engine)
|
||||
print()
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'''
|
||||
"""
|
||||
string manipulation module
|
||||
'''
|
||||
"""
|
||||
import re
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user