From 0f0e544f542a62488c2f47a3300777fcef1bad1b Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Thu, 1 Aug 2019 08:38:45 +0300 Subject: [PATCH] Fill window with actual data --- eos/db/saveddata/queries.py | 15 +++++++++++++-- eos/saveddata/fit.py | 12 ++++++++++++ gui/builtinContextMenus/fitAddBrowse.py | 13 +++++++++---- gui/builtinViewColumns/baseName.py | 4 +++- service/fit.py | 16 +++++++++++++++- 5 files changed, 52 insertions(+), 8 deletions(-) diff --git a/eos/db/saveddata/queries.py b/eos/db/saveddata/queries.py index 122c3fe66..0ff84b5a1 100644 --- a/eos/db/saveddata/queries.py +++ b/eos/db/saveddata/queries.py @@ -24,7 +24,7 @@ from sqlalchemy import desc, select from sqlalchemy import func from eos.db import saveddata_session, sd_lock -from eos.db.saveddata.fit import projectedFits_table +from eos.db.saveddata.fit import fits_table, projectedFits_table from eos.db.util import processEager, processWhere from eos.saveddata.price import Price from eos.saveddata.user import User @@ -33,7 +33,7 @@ from eos.saveddata.damagePattern import DamagePattern from eos.saveddata.targetProfile import TargetProfile from eos.saveddata.character import Character from eos.saveddata.implantSet import ImplantSet -from eos.saveddata.fit import Fit +from eos.saveddata.fit import Fit, FitLite from eos.saveddata.module import Module from eos.saveddata.miscData import MiscData from eos.saveddata.override import Override @@ -326,6 +326,17 @@ def getFitList(eager=None): return fits +def getFitListLite(): + with sd_lock: + stmt = select([fits_table.c.ID, fits_table.c.name, fits_table.c.shipID]) + data = eos.db.saveddata_session.execute(stmt).fetchall() + fits = [] + for fitID, fitName, shipID in data: + fit = FitLite(id=fitID, name=fitName, shipID=shipID) + fits.append(fit) + return fits + + @cachedQuery(Price, 1, "typeID") def getPrice(typeID): if isinstance(typeID, int): diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index c548e1b04..4aecb0f7d 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -42,6 +42,18 @@ from eos.utils.stats import DmgTypes pyfalog = Logger(__name__) +class FitLite: + + def __init__(self, id=None, name=None, shipID=None, shipName=None): + self.ID = id + self.name = name + self.shipID = shipID + self.shipName = shipName + + def __repr__(self): + return 'FitLite(ID={})'.format(self.ID) + + class Fit: """Represents a fitting, with modules, ship, implants, etc.""" diff --git a/gui/builtinContextMenus/fitAddBrowse.py b/gui/builtinContextMenus/fitAddBrowse.py index 75a4551ad..fb9c42293 100644 --- a/gui/builtinContextMenus/fitAddBrowse.py +++ b/gui/builtinContextMenus/fitAddBrowse.py @@ -3,6 +3,7 @@ import wx import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional +from service.fit import Fit class AddBrowsedFits(ContextMenuUnconditional): @@ -47,10 +48,10 @@ class FitBrowserLiteDialog(wx.Dialog): listButtonSizer = wx.BoxSizer(wx.VERTICAL) listButtonSizer.AddStretchSpacer() - self.addButton = wx.Button(self, wx.ID_ANY, '>>', wx.DefaultPosition, wx.DefaultSize, 0) - listButtonSizer.Add(self.addButton, 0, wx.EXPAND | wx.ALL, 5) - self.removeButton = wx.Button(self, wx.ID_ANY, '<<', wx.DefaultPosition, wx.DefaultSize, 0) - listButtonSizer.Add(self.removeButton, 0, wx.EXPAND | wx.ALL, 5) + addButton = wx.Button(self, wx.ID_ANY, '>>', wx.DefaultPosition, wx.DefaultSize, 0) + listButtonSizer.Add(addButton, 0, wx.EXPAND | wx.ALL, 5) + removeButton = wx.Button(self, wx.ID_ANY, '<<', wx.DefaultPosition, wx.DefaultSize, 0) + listButtonSizer.Add(removeButton, 0, wx.EXPAND | wx.ALL, 5) listButtonSizer.AddStretchSpacer() listSizer.Add(listButtonSizer, 0, wx.EXPAND | wx.ALL, 5) @@ -62,6 +63,10 @@ class FitBrowserLiteDialog(wx.Dialog): if buttonSizer: mainSizer.Add(buttonSizer, 0, wx.EXPAND | wx.ALL, 5) + fits = Fit.getInstance().getAllFitsLite() + fits.sort(key=lambda f: (f.shipName, f.name)) + fromList.update(fits) + self.SetSizer(mainSizer) self.CenterOnParent() self.Fit() diff --git a/gui/builtinViewColumns/baseName.py b/gui/builtinViewColumns/baseName.py index c18518122..e5fb772c6 100644 --- a/gui/builtinViewColumns/baseName.py +++ b/gui/builtinViewColumns/baseName.py @@ -26,7 +26,7 @@ from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.module import Module, Rack -from eos.saveddata.fit import Fit +from eos.saveddata.fit import Fit, FitLite from eos.saveddata.targetProfile import TargetProfile from eos.const import FittingSlot from service.fit import Fit as FitSvc @@ -71,6 +71,8 @@ class BaseName(ViewColumn): return "" else: return "%s (%s)" % (stuff.name, stuff.ship.item.name) + elif isinstance(stuff, FitLite): + return "{} ({})".format(stuff.name, stuff.shipName) elif isinstance(stuff, Rack): if FitSvc.getInstance().serviceFittingOptions["rackLabels"]: if stuff.slot == FittingSlot.MODE: diff --git a/service/fit.py b/service/fit.py index d97040595..ae5e775f9 100644 --- a/service/fit.py +++ b/service/fit.py @@ -54,7 +54,6 @@ class DeferRecalc: self.sFit.recalc(self.fitID) -# inherits from FitDeprecated so that I can move all the dead shit, but not affect functionality class Fit: instance = None processors = {} @@ -104,6 +103,21 @@ class Fit: fits = eos.db.getFitList() return fits + @staticmethod + def getAllFitsLite(): + fits = eos.db.getFitListLite() + shipMap = {f.shipID: None for f in fits} + for shipID in shipMap: + ship = eos.db.getItem(shipID) + if ship is not None: + shipMap[shipID] = ship.name + for fit in fits: + try: + fit.shipName = shipMap[fit.shipID] + except KeyError: + pass + return fits + @staticmethod def getFitsWithShip(shipID): """ Lists fits of shipID, used with shipBrowser """