Add graph settings and save selected graph type there

This commit is contained in:
DarkPhoenix
2019-07-05 20:15:44 +03:00
parent e6dce726b7
commit 53de46bab7
8 changed files with 53 additions and 13 deletions

View File

@@ -32,10 +32,14 @@ class FitGraph(metaclass=ABCMeta):
# UI stuff
views = []
viewMap = {}
viewIndexMap = {}
@classmethod
def register(cls):
FitGraph.views.append(cls)
FitGraph.viewMap[cls.internalName] = cls
FitGraph.viewIndexMap[cls.internalName] = FitGraph.views.index(cls)
def __init__(self):
# Format: {(fit ID, target type, target ID): data}
@@ -46,6 +50,11 @@ class FitGraph(metaclass=ABCMeta):
def name(self):
raise NotImplementedError
@property
@abstractmethod
def internalName(self):
raise NotImplementedError
@property
@abstractmethod
def yDefs(self):

View File

@@ -26,6 +26,7 @@ from .base import FitGraph, XDef, YDef, Input
class FitCapRegenGraph(FitGraph):
# UI stuff
internalName = 'capRegenGraph'
name = 'Capacitor Regeneration'
xDefs = [
XDef(handle='time', unit='s', label='Time', mainInput=('time', 's')),

View File

@@ -37,6 +37,7 @@ class FitDamageStatsGraph(FitGraph):
self._timeCache.clear(fitID)
# UI stuff
internalName = 'dmgStatsGraph'
name = 'Damage Stats'
xDefs = [
XDef(handle='distance', unit='km', label='Distance', mainInput=('distance', 'km')),

View File

@@ -26,6 +26,7 @@ from .base import FitGraph, XDef, YDef, Input
class FitMobilityVsTimeGraph(FitGraph):
# UI stuff
internalName = 'mobilityGraph'
name = 'Mobility'
xDefs = [
XDef(handle='time', unit='s', label='Time', mainInput=('time', 's'))]

View File

@@ -26,6 +26,7 @@ from .base import FitGraph, XDef, YDef, Input
class FitShieldRegenGraph(FitGraph):
# UI stuff
internalName = 'shieldRegenGraph'
name = 'Shield Regeneration'
xDefs = [
XDef(handle='time', unit='s', label='Time', mainInput=('time', 's')),

View File

@@ -37,6 +37,7 @@ class FitWarpTimeGraph(FitGraph):
self._subspeedCache.clear(fitID)
# UI stuff
internalName = 'warpTimeGraph'
name = 'Warp Time'
xDefs = [
XDef(handle='distance', unit='AU', label='Distance', mainInput=('distance', 'AU')),

View File

@@ -31,6 +31,7 @@ import gui.globalEvents as GE
import gui.mainFrame
from gui.bitmap_loader import BitmapLoader
from gui.builtinGraphs.base import FitGraph
from service.settings import GraphSettings
from .panel import GraphControlPanel
@@ -113,7 +114,9 @@ class GraphFrame(wx.Frame):
# Setup - graph selector
for view in FitGraph.views:
self.graphSelection.Append(view.name, view())
self.graphSelection.SetSelection(0)
viewToSelect = GraphSettings.getInstance().get('selectedGraph')
viewToSelect = FitGraph.viewIndexMap.get(viewToSelect, 0)
self.graphSelection.SetSelection(viewToSelect)
self.ctrlPanel.updateControls(layout=False)
# Event bindings - local events
@@ -154,13 +157,14 @@ class GraphFrame(wx.Frame):
self.draw()
def OnGraphSwitched(self, event):
view = self.getView()
GraphSettings.getInstance().set('selectedGraph', view.internalName)
self.clearCache()
self.ctrlPanel.updateControls()
self.draw()
event.Skip()
def closeWindow(self):
from gui.builtinStatsViews.resistancesViewFull import EFFECTIVE_HP_TOGGLED
self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.OnFitChanged)
self.ctrlPanel.unbindExternalEvents()
self.Destroy()

View File

@@ -30,7 +30,7 @@ from logbook import Logger
pyfalog = Logger(__name__)
class SettingsProvider(object):
class SettingsProvider:
if config.savePath:
BASE_PATH = os.path.join(config.savePath, 'settings')
settings = {}
@@ -78,7 +78,7 @@ class SettingsProvider(object):
settings.save()
class Settings(object):
class Settings:
def __init__(self, location, info):
# type: (basestring, dict) -> None
# path string or empty string.
@@ -129,7 +129,7 @@ class Settings(object):
return list(self.info.items())
class NetworkSettings(object):
class NetworkSettings:
_instance = None
# constants for serviceNetworkDefaultSettings["mode"] parameter
@@ -276,7 +276,7 @@ class NetworkSettings(object):
return proxies
class HTMLExportSettings(object):
class HTMLExportSettings:
"""
Settings used by the HTML export feature.
"""
@@ -312,7 +312,7 @@ class HTMLExportSettings(object):
self.serviceHTMLExportSettings["path"] = path
class UpdateSettings(object):
class UpdateSettings:
"""
Settings used by update notification
"""
@@ -343,7 +343,7 @@ class UpdateSettings(object):
self.serviceUpdateSettings[type] = value
class EsiSettings(object):
class EsiSettings:
_instance = None
@classmethod
@@ -379,7 +379,7 @@ class EsiSettings(object):
self.settings[type] = value
class StatViewSettings(object):
class StatViewSettings:
_instance = None
@classmethod
@@ -416,7 +416,7 @@ class StatViewSettings(object):
self.serviceStatViewDefaultSettings[type] = value
class MarketPriceSettings(object):
class MarketPriceSettings:
_instance = None
@classmethod
@@ -450,7 +450,7 @@ class MarketPriceSettings(object):
self.PriceMenuDefaultSettings[type] = value
class ContextMenuSettings(object):
class ContextMenuSettings:
_instance = None
@classmethod
@@ -482,7 +482,7 @@ class ContextMenuSettings(object):
self.ContextMenuDefaultSettings[type] = value
class EOSSettings(object):
class EOSSettings:
_instance = None
@classmethod
@@ -501,4 +501,26 @@ class EOSSettings(object):
def set(self, type, value):
self.EOSSettings[type] = value
# @todo: migrate fit settings (from fit service) here?
class GraphSettings:
_instance = None
@classmethod
def getInstance(cls):
if cls._instance is None:
cls._instance = GraphSettings()
return cls._instance
def __init__(self):
defaults = {
'selectedGraph': None,
'mobileDroneMode': 0,
'ignoreResists': True}
self.settings = SettingsProvider.getInstance().getSettings('graphSettings', defaults)
def get(self, type):
return self.settings[type]
def set(self, type, value):
self.settings[type] = value