From 56f1e9ed3ab0daa0eb0b2ab1c842f338b50c93c6 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Thu, 16 Feb 2017 09:59:56 -0800 Subject: [PATCH] Finish migrate from #868. Lots of tox/formatting/inspection fixes to the files touched. --- gui/builtinContextMenus/ammoPattern.py | 5 + gui/builtinContextMenus/amount.py | 5 + gui/builtinContextMenus/cargo.py | 12 +- .../changeAffectingSkills.py | 5 + gui/builtinContextMenus/damagePattern.py | 5 + gui/builtinContextMenus/droneRemoveStack.py | 5 + gui/builtinContextMenus/droneSplit.py | 5 + gui/builtinContextMenus/factorReload.py | 5 + gui/builtinContextMenus/fighterAbilities.py | 5 + gui/builtinContextMenus/implantSets.py | 5 + gui/builtinContextMenus/itemRemove.py | 5 + gui/builtinContextMenus/itemStats.py | 4 + gui/builtinContextMenus/marketJump.py | 5 + gui/builtinContextMenus/metaSwap.py | 4 + gui/builtinContextMenus/moduleAmmoPicker.py | 5 + .../moduleGlobalAmmoPicker.py | 5 + gui/builtinContextMenus/openFit.py | 5 + gui/builtinContextMenus/priceClear.py | 5 + gui/builtinContextMenus/project.py | 5 + gui/builtinContextMenus/shipJump.py | 5 + gui/builtinContextMenus/tacticalMode.py | 5 + gui/builtinContextMenus/targetResists.py | 5 + gui/builtinContextMenus/whProjector.py | 5 + .../pyfaContextMenuPreferences.py | 118 ++++++++++++++++++ .../pyfaDatabasePreferences.py | 72 +++++------ .../pyfaEnginePreferences.py | 62 ++++----- .../pyfaLoggingPreferences.py | 45 +++---- .../pyfaStatViewPreferences.py | 49 +++----- .../pyfaUpdatePreferences.py | 2 +- .../targetingMiscViewMinimal.py | 2 +- gui/preferenceView.py | 7 +- gui/statsPane.py | 4 +- service/settings.py | 97 ++++++++++---- 33 files changed, 422 insertions(+), 156 deletions(-) create mode 100644 gui/builtinPreferenceViews/pyfaContextMenuPreferences.py diff --git a/gui/builtinContextMenus/ammoPattern.py b/gui/builtinContextMenus/ammoPattern.py index e131bb1c6..1b8dfd95c 100644 --- a/gui/builtinContextMenus/ammoPattern.py +++ b/gui/builtinContextMenus/ammoPattern.py @@ -4,13 +4,18 @@ import gui.mainFrame import wx import gui.globalEvents as GE from service.fit import Fit +from service.settings import ContextMenuSettings class AmmoPattern(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('ammoPattern'): + return False + if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None: return False diff --git a/gui/builtinContextMenus/amount.py b/gui/builtinContextMenus/amount.py index 12d483243..dd73c9b3e 100644 --- a/gui/builtinContextMenus/amount.py +++ b/gui/builtinContextMenus/amount.py @@ -7,13 +7,18 @@ import wx from service.fit import Fit from eos.saveddata.cargo import Cargo as es_Cargo from eos.saveddata.fighter import Fighter as es_Fighter +from service.settings import ContextMenuSettings class ChangeAmount(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('amount'): + return False + return srcContext in ("cargoItem", "projectedFit", "fighterItem", "projectedFighter") def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/cargo.py b/gui/builtinContextMenus/cargo.py index 97ea7b8ab..32d6370cf 100644 --- a/gui/builtinContextMenus/cargo.py +++ b/gui/builtinContextMenus/cargo.py @@ -4,20 +4,28 @@ import gui.globalEvents as GE # noinspection PyPackageRequirements import wx from service.fit import Fit +from service.settings import ContextMenuSettings class Cargo(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('cargo'): + return False + + if srcContext not in ("marketItemGroup", "marketItemMisc"): + return False + sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() - fit = sFit.getFit(fitID) # Make sure context menu registers in the correct view - if srcContext not in ("marketItemGroup", "marketItemMisc") or not fit or fit.isStructure: + if not fit or fit.isStructure: return False + return True def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/changeAffectingSkills.py b/gui/builtinContextMenus/changeAffectingSkills.py index 6c02d07b9..dc71fc06d 100644 --- a/gui/builtinContextMenus/changeAffectingSkills.py +++ b/gui/builtinContextMenus/changeAffectingSkills.py @@ -8,13 +8,18 @@ from eos.saveddata.character import Skill import gui.globalEvents as GE from service.fit import Fit from service.character import Character +from service.settings import ContextMenuSettings class ChangeAffectingSkills(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('changeAffectingSkills'): + return False + if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule", "fittingCharge", "fittingShip"): return False diff --git a/gui/builtinContextMenus/damagePattern.py b/gui/builtinContextMenus/damagePattern.py index 20e1b4343..8399dd069 100644 --- a/gui/builtinContextMenus/damagePattern.py +++ b/gui/builtinContextMenus/damagePattern.py @@ -6,6 +6,7 @@ import wx from gui.bitmapLoader import BitmapLoader from service.fit import Fit from service.damagePattern import DamagePattern as import_DamagePattern +from service.settings import ContextMenuSettings try: from collections import OrderedDict @@ -16,8 +17,12 @@ except ImportError: class DamagePattern(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('damagePattern'): + return False + return srcContext == "resistancesViewFull" and self.mainFrame.getActiveFit() is not None def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/droneRemoveStack.py b/gui/builtinContextMenus/droneRemoveStack.py index b8e4b820b..c7dae1e03 100644 --- a/gui/builtinContextMenus/droneRemoveStack.py +++ b/gui/builtinContextMenus/droneRemoveStack.py @@ -4,13 +4,18 @@ import gui.mainFrame import wx import gui.globalEvents as GE from service.fit import Fit +from service.settings import ContextMenuSettings class ItemRemove(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('droneRemoveStack'): + return False + return srcContext == "droneItem" def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/droneSplit.py b/gui/builtinContextMenus/droneSplit.py index 77ba87e8a..761262a8c 100644 --- a/gui/builtinContextMenus/droneSplit.py +++ b/gui/builtinContextMenus/droneSplit.py @@ -4,13 +4,18 @@ import gui.globalEvents as GE from service.fit import Fit # noinspection PyPackageRequirements import wx +from service.settings import ContextMenuSettings class DroneSplit(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('droneSplit'): + return False + return srcContext in ("droneItem", "projectedDrone") and selection[0].amount > 1 def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/factorReload.py b/gui/builtinContextMenus/factorReload.py index 86553c73b..6770e64af 100644 --- a/gui/builtinContextMenus/factorReload.py +++ b/gui/builtinContextMenus/factorReload.py @@ -5,13 +5,18 @@ import gui.globalEvents as GE import wx from gui.bitmapLoader import BitmapLoader from service.fit import Fit +from service.settings import ContextMenuSettings class FactorReload(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('factorReload'): + return False + return srcContext == "firepowerViewFull" and self.mainFrame.getActiveFit() is not None def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/fighterAbilities.py b/gui/builtinContextMenus/fighterAbilities.py index 8c26a9ffe..6f6bc8051 100644 --- a/gui/builtinContextMenus/fighterAbilities.py +++ b/gui/builtinContextMenus/fighterAbilities.py @@ -4,13 +4,18 @@ from gui.contextMenu import ContextMenu import gui.mainFrame import gui.globalEvents as GE from service.fit import Fit +from service.settings import ContextMenuSettings class FighterAbility(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('fighterAbilities'): + return False + if self.mainFrame.getActiveFit() is None or srcContext not in ("fighterItem", "projectedFighter"): return False diff --git a/gui/builtinContextMenus/implantSets.py b/gui/builtinContextMenus/implantSets.py index 994c0d607..6a2ee7bfe 100644 --- a/gui/builtinContextMenus/implantSets.py +++ b/gui/builtinContextMenus/implantSets.py @@ -6,13 +6,18 @@ import wx from service.implantSet import ImplantSets as s_ImplantSets from service.character import Character from service.fit import Fit +from service.settings import ContextMenuSettings class ImplantSets(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('implantSets'): + return False + return srcContext in ("implantView", "implantEditor") def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/itemRemove.py b/gui/builtinContextMenus/itemRemove.py index fb8a70679..6ad128220 100644 --- a/gui/builtinContextMenus/itemRemove.py +++ b/gui/builtinContextMenus/itemRemove.py @@ -4,13 +4,18 @@ import gui.mainFrame import wx import gui.globalEvents as GE from service.fit import Fit +from service.settings import ContextMenuSettings class ItemRemove(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('itemRemove'): + return False + return srcContext in ("fittingModule", "fittingCharge", "droneItem", "implantItem", "boosterItem", "projectedModule", diff --git a/gui/builtinContextMenus/itemStats.py b/gui/builtinContextMenus/itemStats.py index 1b923ecf5..4e1b8187e 100644 --- a/gui/builtinContextMenus/itemStats.py +++ b/gui/builtinContextMenus/itemStats.py @@ -4,13 +4,17 @@ import gui.mainFrame # noinspection PyPackageRequirements import wx from service.fit import Fit +from service.settings import ContextMenuSettings class ItemStats(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('itemStats'): + return False return srcContext in ("marketItemGroup", "marketItemMisc", "fittingModule", "fittingCharge", diff --git a/gui/builtinContextMenus/marketJump.py b/gui/builtinContextMenus/marketJump.py index e96292b41..c630312c1 100644 --- a/gui/builtinContextMenus/marketJump.py +++ b/gui/builtinContextMenus/marketJump.py @@ -1,13 +1,18 @@ from gui.contextMenu import ContextMenu import gui.mainFrame from service.market import Market +from service.settings import ContextMenuSettings class MarketJump(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('marketJump'): + return False + validContexts = ("marketItemMisc", "fittingModule", "fittingCharge", "droneItem", "implantItem", "boosterItem", diff --git a/gui/builtinContextMenus/metaSwap.py b/gui/builtinContextMenus/metaSwap.py index 389335f53..ba3934b3f 100644 --- a/gui/builtinContextMenus/metaSwap.py +++ b/gui/builtinContextMenus/metaSwap.py @@ -8,13 +8,17 @@ from service.market import Market import gui.mainFrame import gui.globalEvents as GE from gui.contextMenu import ContextMenu +from service.settings import ContextMenuSettings class MetaSwap(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('metaSwap'): + return False if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule",): return False diff --git a/gui/builtinContextMenus/moduleAmmoPicker.py b/gui/builtinContextMenus/moduleAmmoPicker.py index b6791662d..1af970190 100644 --- a/gui/builtinContextMenus/moduleAmmoPicker.py +++ b/gui/builtinContextMenus/moduleAmmoPicker.py @@ -10,6 +10,7 @@ import gui.mainFrame import gui.globalEvents as GE from gui.contextMenu import ContextMenu from gui.bitmapLoader import BitmapLoader +from service.settings import ContextMenuSettings class ModuleAmmoPicker(ContextMenu): @@ -18,8 +19,12 @@ class ModuleAmmoPicker(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('moduleAmmoPicker'): + return False + if self.mainFrame.getActiveFit() is None or srcContext not in ("fittingModule", "projectedModule"): return False diff --git a/gui/builtinContextMenus/moduleGlobalAmmoPicker.py b/gui/builtinContextMenus/moduleGlobalAmmoPicker.py index 849896111..5e516e68f 100644 --- a/gui/builtinContextMenus/moduleGlobalAmmoPicker.py +++ b/gui/builtinContextMenus/moduleGlobalAmmoPicker.py @@ -6,12 +6,14 @@ 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 class ModuleGlobalAmmoPicker(ModuleAmmoPicker): def __init__(self): super(ModuleGlobalAmmoPicker, self).__init__() self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def getText(self, itmContext, selection): return "Charge (All)" @@ -42,6 +44,9 @@ class ModuleGlobalAmmoPicker(ModuleAmmoPicker): wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) def display(self, srcContext, selection): + if not self.settings.get('moduleGlobalAmmoPicker'): + return False + try: selectionLen = len(selection) except: diff --git a/gui/builtinContextMenus/openFit.py b/gui/builtinContextMenus/openFit.py index 5a0a760f7..d13618132 100644 --- a/gui/builtinContextMenus/openFit.py +++ b/gui/builtinContextMenus/openFit.py @@ -3,13 +3,18 @@ import gui.mainFrame # noinspection PyPackageRequirements import wx from gui.shipBrowser import FitSelected +from service.settings import ContextMenuSettings class OpenFit(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('openFit'): + return False + return srcContext == "projectedFit" def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/priceClear.py b/gui/builtinContextMenus/priceClear.py index 8cb1a5175..44093e662 100644 --- a/gui/builtinContextMenus/priceClear.py +++ b/gui/builtinContextMenus/priceClear.py @@ -4,13 +4,18 @@ import gui.mainFrame import wx import gui.globalEvents as GE from service.market import Market +from service.settings import ContextMenuSettings class PriceClear(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('priceClear'): + return False + return srcContext == "priceViewFull" def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/project.py b/gui/builtinContextMenus/project.py index 838b4e4fc..f06c29152 100644 --- a/gui/builtinContextMenus/project.py +++ b/gui/builtinContextMenus/project.py @@ -4,13 +4,18 @@ import gui.globalEvents as GE # noinspection PyPackageRequirements import wx from service.fit import Fit +from service.settings import ContextMenuSettings class Project(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('project'): + return False + if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None: return False diff --git a/gui/builtinContextMenus/shipJump.py b/gui/builtinContextMenus/shipJump.py index 40dda42c8..8f426ff1a 100644 --- a/gui/builtinContextMenus/shipJump.py +++ b/gui/builtinContextMenus/shipJump.py @@ -4,13 +4,18 @@ from gui.contextMenu import ContextMenu import gui.mainFrame from gui.shipBrowser import Stage3Selected from service.fit import Fit +from service.settings import ContextMenuSettings class ShipJump(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('shipJump'): + return False + return srcContext == "fittingShip" def getText(self, itmContext, selection): diff --git a/gui/builtinContextMenus/tacticalMode.py b/gui/builtinContextMenus/tacticalMode.py index 679be45f3..8b87dd10b 100644 --- a/gui/builtinContextMenus/tacticalMode.py +++ b/gui/builtinContextMenus/tacticalMode.py @@ -5,13 +5,18 @@ import gui.mainFrame import gui.globalEvents as GE from service.fit import Fit +from service.settings import ContextMenuSettings class TacticalMode(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('tacticalMode'): + return False + if self.mainFrame.getActiveFit() is None or srcContext != "fittingShip": return False diff --git a/gui/builtinContextMenus/targetResists.py b/gui/builtinContextMenus/targetResists.py index 8ebd4076d..95468ecd0 100644 --- a/gui/builtinContextMenus/targetResists.py +++ b/gui/builtinContextMenus/targetResists.py @@ -6,6 +6,7 @@ import wx from gui.bitmapLoader import BitmapLoader from service.targetResists import TargetResists as svc_TargetResists from service.fit import Fit +from service.settings import ContextMenuSettings try: from collections import OrderedDict @@ -16,8 +17,12 @@ except ImportError: class TargetResists(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('targetResists'): + return False + if self.mainFrame.getActiveFit() is None or srcContext != "firepowerViewFull": return False diff --git a/gui/builtinContextMenus/whProjector.py b/gui/builtinContextMenus/whProjector.py index d5883541f..a677ceabf 100644 --- a/gui/builtinContextMenus/whProjector.py +++ b/gui/builtinContextMenus/whProjector.py @@ -5,13 +5,18 @@ import gui.globalEvents as GE import wx from service.market import Market from service.fit import Fit +from service.settings import ContextMenuSettings class WhProjector(ContextMenu): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.settings = ContextMenuSettings.getInstance() def display(self, srcContext, selection): + if not self.settings.get('whProjector'): + return False + return srcContext == "projected" def getText(self, itmContext, selection): diff --git a/gui/builtinPreferenceViews/pyfaContextMenuPreferences.py b/gui/builtinPreferenceViews/pyfaContextMenuPreferences.py new file mode 100644 index 000000000..29ce587d3 --- /dev/null +++ b/gui/builtinPreferenceViews/pyfaContextMenuPreferences.py @@ -0,0 +1,118 @@ +import wx + +from gui.preferenceView import PreferenceView +from gui.bitmapLoader import BitmapLoader + +import gui.mainFrame +from service.settings import ContextMenuSettings + + +class PFContextMenuPref(PreferenceView): + title = "Context Menu Panel" + + def populatePanel(self, panel): + self.settings = ContextMenuSettings.getInstance() + self.mainFrame = gui.mainFrame.MainFrame.getInstance() + + self.dirtySettings = False + dlgWidth = panel.GetParent().GetParent().ClientSize.width + mainSizer = wx.BoxSizer(wx.VERTICAL) + + self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) + self.stTitle.Wrap(-1) + self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) + + mainSizer.Add(self.stTitle, 0, wx.ALL, 5) + + self.stInfo = wx.StaticText(panel, wx.ID_ANY, u"Disabling context menus can improve responsiveness.", wx.DefaultPosition, wx.DefaultSize, 0) + self.stInfo.Wrap(dlgWidth - 50) + mainSizer.Add(self.stInfo, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) + + # Row 1 + self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) + mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) + + rbSizerRow1 = wx.BoxSizer(wx.HORIZONTAL) + + self.rbBox1 = wx.RadioBox(panel, -1, "Set as Damage Pattern", wx.DefaultPosition, wx.DefaultSize, ['Disabled', 'Enabled'], 1, wx.RA_SPECIFY_COLS) + self.rbBox1.SetSelection(self.settings.get('ammoPattern')) + rbSizerRow1.Add(self.rbBox1, 1, wx.TOP | wx.RIGHT, 5) + self.rbBox1.Bind(wx.EVT_RADIOBOX, self.OnSetting1Change) + + self.rbBox2 = wx.RadioBox(panel, -1, "Change Skills", wx.DefaultPosition, wx.DefaultSize, ['Disabled', 'Enabled'], 1, wx.RA_SPECIFY_COLS) + self.rbBox2.SetSelection(self.settings.get('changeAffectingSkills')) + rbSizerRow1.Add(self.rbBox2, 1, wx.ALL, 5) + self.rbBox2.Bind(wx.EVT_RADIOBOX, self.OnSetting2Change) + + self.rbBox3 = wx.RadioBox(panel, -1, "Factor in Reload Time", wx.DefaultPosition, wx.DefaultSize, ['Disabled', 'Enabled'], 1, wx.RA_SPECIFY_COLS) + self.rbBox3.SetSelection(self.settings.get('factorReload')) + rbSizerRow1.Add(self.rbBox3, 1, wx.ALL, 5) + self.rbBox3.Bind(wx.EVT_RADIOBOX, self.OnSetting3Change) + + mainSizer.Add(rbSizerRow1, 1, wx.ALL | wx.EXPAND, 0) + + # Row 2 + self.m_staticline2 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) + mainSizer.Add(self.m_staticline2, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) + + rbSizerRow2 = wx.BoxSizer(wx.HORIZONTAL) + + self.rbBox4 = wx.RadioBox(panel, -1, "Variations", wx.DefaultPosition, wx.DefaultSize, ['Disabled', 'Enabled'], 1, wx.RA_SPECIFY_COLS) + self.rbBox4.SetSelection(self.settings.get('metaSwap')) + rbSizerRow2.Add(self.rbBox4, 1, wx.TOP | wx.RIGHT, 5) + self.rbBox4.Bind(wx.EVT_RADIOBOX, self.OnSetting4Change) + + self.rbBox5 = wx.RadioBox(panel, -1, "Charge", wx.DefaultPosition, wx.DefaultSize, ['Disabled', 'Enabled'], 1, wx.RA_SPECIFY_COLS) + self.rbBox5.SetSelection(self.settings.get('moduleAmmoPicker')) + rbSizerRow2.Add(self.rbBox5, 1, wx.ALL, 5) + self.rbBox5.Bind(wx.EVT_RADIOBOX, self.OnSetting5Change) + + self.rbBox6 = wx.RadioBox(panel, -1, "Charge (All)", wx.DefaultPosition, wx.DefaultSize, ['Disabled', 'Enabled'], 1, wx.RA_SPECIFY_COLS) + self.rbBox6.SetSelection(self.settings.get('moduleGlobalAmmoPicker')) + rbSizerRow2.Add(self.rbBox6, 1, wx.ALL, 5) + self.rbBox6.Bind(wx.EVT_RADIOBOX, self.OnSetting6Change) + + mainSizer.Add(rbSizerRow2, 1, wx.ALL | wx.EXPAND, 0) + + # Row 3 + self.m_staticline3 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) + mainSizer.Add(self.m_staticline3, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) + + rbSizerRow3 = wx.BoxSizer(wx.HORIZONTAL) + + self.rbBox7 = wx.RadioBox(panel, -1, "Project onto Fit", wx.DefaultPosition, wx.DefaultSize, ['Disabled', 'Enabled'], 1, wx.RA_SPECIFY_COLS) + self.rbBox7.SetSelection(self.settings.get('project')) + rbSizerRow3.Add(self.rbBox7, 1, wx.TOP | wx.RIGHT, 5) + self.rbBox7.Bind(wx.EVT_RADIOBOX, self.OnSetting7Change) + + mainSizer.Add(rbSizerRow3, 1, wx.ALL | wx.EXPAND, 0) + + panel.SetSizer(mainSizer) + panel.Layout() + + def OnSetting1Change(self, event): + self.settings.set('ammoPattern', event.GetInt()) + + def OnSetting2Change(self, event): + self.settings.set('changeAffectingSkills', event.GetInt()) + + def OnSetting3Change(self, event): + self.settings.set('factorReload', event.GetInt()) + + def OnSetting4Change(self, event): + self.settings.set('metaSwap', event.GetInt()) + + def OnSetting5Change(self, event): + self.settings.set('moduleAmmoPicker', event.GetInt()) + + def OnSetting6Change(self, event): + self.settings.set('moduleGlobalAmmoPicker', event.GetInt()) + + def OnSetting7Change(self, event): + self.settings.set('project', event.GetInt()) + + def getImage(self): + return BitmapLoader.getBitmap("pref-gauges_big", "gui") + + +PFContextMenuPref.register() diff --git a/gui/builtinPreferenceViews/pyfaDatabasePreferences.py b/gui/builtinPreferenceViews/pyfaDatabasePreferences.py index aa95c3f98..1460599a1 100644 --- a/gui/builtinPreferenceViews/pyfaDatabasePreferences.py +++ b/gui/builtinPreferenceViews/pyfaDatabasePreferences.py @@ -3,76 +3,70 @@ import wx from gui.preferenceView import PreferenceView from gui.bitmapLoader import BitmapLoader -import gui.mainFrame -import service +from gui.mainFrame import MainFrame import config import logging logger = logging.getLogger(__name__) -from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues - -class PFGeneralPref ( PreferenceView): +class PFGeneralPref(PreferenceView): title = "Database" - def populatePanel( self, panel ): - self.mainFrame = gui.mainFrame.MainFrame.getInstance() + def populatePanel(self, panel): + self.mainFrame = MainFrame.getInstance() self.dirtySettings = False - #self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) + # self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) - mainSizer = wx.BoxSizer( wx.VERTICAL ) + mainSizer = wx.BoxSizer(wx.VERTICAL) - self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stTitle.Wrap( -1 ) - self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) ) - mainSizer.Add( self.stTitle, 0, wx.ALL, 5 ) + self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) + self.stTitle.Wrap(-1) + self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) + mainSizer.Add(self.stTitle, 0, wx.ALL, 5) - self.stSubTitle = wx.StaticText( panel, wx.ID_ANY, u"(Cannot be changed while Pyfa is running.)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stSubTitle.Wrap( -1 ) - self.stSubTitle.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) - mainSizer.Add( self.stSubTitle, 0, wx.ALL, 5 ) + self.stSubTitle = wx.StaticText(panel, wx.ID_ANY, u"(Cannot be changed while Pyfa is running.)", wx.DefaultPosition, wx.DefaultSize, 0) + self.stSubTitle.Wrap(-1) + self.stSubTitle.SetFont(wx.Font(10, 70, 90, 90, False, wx.EmptyString)) + mainSizer.Add(self.stSubTitle, 0, wx.ALL, 5) - self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) - mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 ) + self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) + mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) - #Save in Root - self.cbsaveInRoot = wx.CheckBox( panel, wx.ID_ANY, u"Using Executable Path for Saved Fit Database and Settings", wx.DefaultPosition, wx.DefaultSize, 0 ) - mainSizer.Add( self.cbsaveInRoot, 0, wx.ALL|wx.EXPAND, 5 ) + # Save in Root + self.cbsaveInRoot = wx.CheckBox(panel, wx.ID_ANY, u"Using Executable Path for Saved Fit Database and Settings", wx.DefaultPosition, wx.DefaultSize, 0) + mainSizer.Add(self.cbsaveInRoot, 0, wx.ALL | wx.EXPAND, 5) - #Database path - self.stSetUserPath = wx.StaticText( panel, wx.ID_ANY, u"Pyfa User Path:", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stSetUserPath.Wrap( -1 ) - mainSizer.Add( self.stSetUserPath, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + # Database path + self.stSetUserPath = wx.StaticText(panel, wx.ID_ANY, u"Pyfa User Path:", wx.DefaultPosition, wx.DefaultSize, 0) + self.stSetUserPath.Wrap(-1) + mainSizer.Add(self.stSetUserPath, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.inputUserPath = wx.TextCtrl(panel, wx.ID_ANY, config.savePath, wx.DefaultPosition, wx.DefaultSize, 0) self.inputUserPath.SetEditable(False) self.inputUserPath.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.inputUserPath, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5) - #Save DB - self.stFitDB = wx.StaticText( panel, wx.ID_ANY, u"Fitting Database:", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stFitDB.Wrap( -1 ) - mainSizer.Add( self.stFitDB, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + # Save DB + self.stFitDB = wx.StaticText(panel, wx.ID_ANY, u"Fitting Database:", wx.DefaultPosition, wx.DefaultSize, 0) + self.stFitDB.Wrap(-1) + mainSizer.Add(self.stFitDB, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.inputFitDB = wx.TextCtrl(panel, wx.ID_ANY, config.saveDB, wx.DefaultPosition, wx.DefaultSize, 0) self.inputFitDB.SetEditable(False) self.inputFitDB.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.inputFitDB, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5) - #Game Data DB - self.stGameDB = wx.StaticText( panel, wx.ID_ANY, u"Game Database:", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stGameDB.Wrap( -1 ) - mainSizer.Add( self.stGameDB, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5 ) + # Game Data DB + self.stGameDB = wx.StaticText(panel, wx.ID_ANY, u"Game Database:", wx.DefaultPosition, wx.DefaultSize, 0) + self.stGameDB.Wrap(-1) + mainSizer.Add(self.stGameDB, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.inputGameDB = wx.TextCtrl(panel, wx.ID_ANY, config.gameDB, wx.DefaultPosition, wx.DefaultSize, 0) self.inputGameDB.SetEditable(False) self.inputGameDB.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.inputGameDB, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5) - - defCharSizer = wx.BoxSizer( wx.HORIZONTAL ) - self.cbsaveInRoot.SetValue(config.saveInRoot) self.cbsaveInRoot.Bind(wx.EVT_CHECKBOX, self.onCBsaveInRoot) @@ -80,10 +74,9 @@ class PFGeneralPref ( PreferenceView): self.inputFitDB.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) self.inputGameDB.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) - panel.SetSizer( mainSizer ) + panel.SetSizer(mainSizer) panel.Layout() - def onCBsaveInRoot(self, event): # We don't want users to be able to actually change this, # so if they try and change it, set it back to the current setting @@ -118,4 +111,5 @@ class PFGeneralPref ( PreferenceView): DefaultDatabaseValues.importResistProfileDefaults() ''' + PFGeneralPref.register() diff --git a/gui/builtinPreferenceViews/pyfaEnginePreferences.py b/gui/builtinPreferenceViews/pyfaEnginePreferences.py index a79f590b9..a7e1c2d5b 100644 --- a/gui/builtinPreferenceViews/pyfaEnginePreferences.py +++ b/gui/builtinPreferenceViews/pyfaEnginePreferences.py @@ -2,80 +2,80 @@ import logging import wx -import gui.globalEvents as GE -import gui.mainFrame -import service +from service.fit import Fit from gui.bitmapLoader import BitmapLoader from gui.preferenceView import PreferenceView logger = logging.getLogger(__name__) -class PFFittingEnginePref ( PreferenceView): +class PFFittingEnginePref(PreferenceView): title = "Fitting Engine" - def populatePanel( self, panel ): - self.mainFrame = gui.mainFrame.MainFrame.getInstance() + def __init__(self): self.dirtySettings = False - #self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) - mainSizer = wx.BoxSizer( wx.VERTICAL ) + def refreshPanel(self, fit): + pass - self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stTitle.Wrap( -1 ) - self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) ) - mainSizer.Add( self.stTitle, 0, wx.ALL, 5 ) + # noinspection PyAttributeOutsideInit + def populatePanel(self, panel): + # self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) - self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) - mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 ) + mainSizer = wx.BoxSizer(wx.VERTICAL) - self.cbGlobalForceReload = wx.CheckBox( panel, wx.ID_ANY, u"Factor in reload time", wx.DefaultPosition, wx.DefaultSize, 0 ) - mainSizer.Add( self.cbGlobalForceReload, 0, wx.ALL|wx.EXPAND, 5 ) + self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) + self.stTitle.Wrap(-1) + self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) + mainSizer.Add(self.stTitle, 0, wx.ALL, 5) - self.cbGlobalForceReloadText = wx.StaticText( panel, wx.ID_ANY, u" Ignores reload when calculating capacitor usage,\n damage, and tank.", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.cbGlobalForceReloadText.Wrap( -1 ) - self.cbGlobalForceReloadText.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) - mainSizer.Add( self.cbGlobalForceReloadText, 0, wx.ALL, 5 ) + self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) + mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) + + self.cbGlobalForceReload = wx.CheckBox(panel, wx.ID_ANY, u"Factor in reload time", wx.DefaultPosition, wx.DefaultSize, 0) + mainSizer.Add(self.cbGlobalForceReload, 0, wx.ALL | wx.EXPAND, 5) + + self.cbGlobalForceReloadText = wx.StaticText(panel, wx.ID_ANY, u" Ignores reload when calculating capacitor usage,\n damage, and tank.", + wx.DefaultPosition, wx.DefaultSize, 0) + self.cbGlobalForceReloadText.Wrap(-1) + self.cbGlobalForceReloadText.SetFont(wx.Font(10, 70, 90, 90, False, wx.EmptyString)) + mainSizer.Add(self.cbGlobalForceReloadText, 0, wx.ALL, 5) # Future code once new cap sim is implemented ''' self.cbGlobalForceReactivationTimer = wx.CheckBox( panel, wx.ID_ANY, u"Factor in reactivation timer", wx.DefaultPosition, wx.DefaultSize, 0 ) mainSizer.Add( self.cbGlobalForceReactivationTimer, 0, wx.ALL|wx.EXPAND, 5 ) - self.cbGlobalForceReactivationTimerText = wx.StaticText( panel, wx.ID_ANY, u" Ignores reactivation timer when calculating capacitor usage,\n damage, and tank.", wx.DefaultPosition, wx.DefaultSize, 0 ) + text = u" Ignores reactivation timer when calculating capacitor usage,\n damage, and tank." + self.cbGlobalForceReactivationTimerText = wx.StaticText( panel, wx.ID_ANY, text, wx.DefaultPosition, wx.DefaultSize, 0 ) self.cbGlobalForceReactivationTimerText.Wrap( -1 ) self.cbGlobalForceReactivationTimerText.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) mainSizer.Add( self.cbGlobalForceReactivationTimerText, 0, wx.ALL, 5 ) ''' - # Future code once for mining laser crystal + # Future code for mining laser crystal ''' self.cbGlobalMiningSpecialtyCrystal = wx.CheckBox( panel, wx.ID_ANY, u"Factor in reactivation timer", wx.DefaultPosition, wx.DefaultSize, 0 ) mainSizer.Add( self.cbGlobalMiningSpecialtyCrystal, 0, wx.ALL|wx.EXPAND, 5 ) - self.cbGlobalMiningSpecialtyCrystalText = wx.StaticText( panel, wx.ID_ANY, u" If enabled, displays the Specialty Crystal mining amount.\n This is the amount mined when using crystals and mining the matching asteroid.", wx.DefaultPosition, wx.DefaultSize, 0 ) + text = u" If enabled, displays the Specialty Crystal mining amount.\n This is the amount mined when using crystals and mining the matching asteroid." + self.cbGlobalMiningSpecialtyCrystalText = wx.StaticText( panel, wx.ID_ANY, text, wx.DefaultPosition, wx.DefaultSize, 0 ) self.cbGlobalMiningSpecialtyCrystalText.Wrap( -1 ) self.cbGlobalMiningSpecialtyCrystalText.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) mainSizer.Add( self.cbGlobalMiningSpecialtyCrystalText, 0, wx.ALL, 5 ) ''' - - self.sFit = service.Fit.getInstance() + self.sFit = Fit.getInstance() self.cbGlobalForceReload.SetValue(self.sFit.serviceFittingOptions["useGlobalForceReload"]) self.cbGlobalForceReload.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalForceReloadStateChange) - panel.SetSizer( mainSizer ) + panel.SetSizer(mainSizer) panel.Layout() - def OnCBGlobalForceReloadStateChange(self, event): self.sFit.serviceFittingOptions["useGlobalForceReload"] = self.cbGlobalForceReload.GetValue() - fitID = self.mainFrame.getActiveFit() - self.sFit.refreshFit(fitID) - wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) - event.Skip() def getImage(self): return BitmapLoader.getBitmap("prefs_settings", "gui") diff --git a/gui/builtinPreferenceViews/pyfaLoggingPreferences.py b/gui/builtinPreferenceViews/pyfaLoggingPreferences.py index 4d574fb93..ecc0a6140 100644 --- a/gui/builtinPreferenceViews/pyfaLoggingPreferences.py +++ b/gui/builtinPreferenceViews/pyfaLoggingPreferences.py @@ -3,48 +3,43 @@ import wx from gui.preferenceView import PreferenceView from gui.bitmapLoader import BitmapLoader -import gui.mainFrame -import service +from gui.mainFrame import MainFrame import config -class PFGeneralPref ( PreferenceView): +class PFGeneralPref(PreferenceView): title = "Logging" - def populatePanel( self, panel ): - self.mainFrame = gui.mainFrame.MainFrame.getInstance() + def populatePanel(self, panel): + self.mainFrame = MainFrame.getInstance() self.dirtySettings = False - #self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) + # self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) - mainSizer = wx.BoxSizer( wx.VERTICAL ) + mainSizer = wx.BoxSizer(wx.VERTICAL) - self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stTitle.Wrap( -1 ) - self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) ) - mainSizer.Add( self.stTitle, 0, wx.ALL, 5 ) + self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) + self.stTitle.Wrap(-1) + self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) + mainSizer.Add(self.stTitle, 0, wx.ALL, 5) - self.stSubTitle = wx.StaticText( panel, wx.ID_ANY, u"(Cannot be changed while Pyfa is running.)", wx.DefaultPosition, wx.DefaultSize, 0 ) - self.stSubTitle.Wrap( -1 ) - self.stSubTitle.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) - mainSizer.Add( self.stSubTitle, 0, wx.ALL, 5 ) + self.stSubTitle = wx.StaticText(panel, wx.ID_ANY, u"(Cannot be changed while Pyfa is running.)", wx.DefaultPosition, wx.DefaultSize, 0) + self.stSubTitle.Wrap(-1) + self.stSubTitle.SetFont(wx.Font(10, 70, 90, 90, False, wx.EmptyString)) + mainSizer.Add(self.stSubTitle, 0, wx.ALL, 5) - self.m_staticline1 = wx.StaticLine( panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) - mainSizer.Add( self.m_staticline1, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5 ) + self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) + mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) - #Debug Logging - self.cbdebugLogging = wx.CheckBox( panel, wx.ID_ANY, u"Debug Logging Enabled", wx.DefaultPosition, wx.DefaultSize, 0 ) - mainSizer.Add( self.cbdebugLogging, 0, wx.ALL|wx.EXPAND, 5 ) - - - defCharSizer = wx.BoxSizer( wx.HORIZONTAL ) + # Debug Logging + self.cbdebugLogging = wx.CheckBox(panel, wx.ID_ANY, u"Debug Logging Enabled", wx.DefaultPosition, wx.DefaultSize, 0) + mainSizer.Add(self.cbdebugLogging, 0, wx.ALL | wx.EXPAND, 5) self.cbdebugLogging.SetValue(config.debug) self.cbdebugLogging.Bind(wx.EVT_CHECKBOX, self.onCBdebugLogging) - panel.SetSizer( mainSizer ) + panel.SetSizer(mainSizer) panel.Layout() - def onCBdebugLogging(self, event): # We don't want users to be able to actually change this, # so if they try and change it, set it back to the current setting diff --git a/gui/builtinPreferenceViews/pyfaStatViewPreferences.py b/gui/builtinPreferenceViews/pyfaStatViewPreferences.py index d2a2a3ccd..05583bc49 100644 --- a/gui/builtinPreferenceViews/pyfaStatViewPreferences.py +++ b/gui/builtinPreferenceViews/pyfaStatViewPreferences.py @@ -1,23 +1,23 @@ +# noinspection PyPackageRequirements import wx from gui.preferenceView import PreferenceView from gui.bitmapLoader import BitmapLoader - -import gui.mainFrame -import service -from service.crest import CrestModes - -from wx.lib.intctrl import IntCtrl +from service.settings import StatViewSettings class PFStatViewPref(PreferenceView): title = "Statistics Panel" - def populatePanel(self, panel): - self.settings = service.settings.statViewSettings.getInstance() - self.mainFrame = gui.mainFrame.MainFrame.getInstance() - + def __init__(self): self.dirtySettings = False + self.settings = StatViewSettings.getInstance() + + def refreshPanel(self, fit): + pass + + # noinspection PyAttributeOutsideInit + def populatePanel(self, panel): dlgWidth = panel.GetParent().GetParent().ClientSize.width mainSizer = wx.BoxSizer(wx.VERTICAL) @@ -27,8 +27,7 @@ class PFStatViewPref(PreferenceView): mainSizer.Add(self.stTitle, 0, wx.ALL, 5) - self.stInfo = wx.StaticText(panel, wx.ID_ANY, u"Changes require restart of Pyfa to take effect.", - wx.DefaultPosition, wx.DefaultSize, 0) + self.stInfo = wx.StaticText(panel, wx.ID_ANY, u"Changes require restart of Pyfa to take effect.", wx.DefaultPosition, wx.DefaultSize, 0) self.stInfo.Wrap(dlgWidth - 50) mainSizer.Add(self.stInfo, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) @@ -38,24 +37,21 @@ class PFStatViewPref(PreferenceView): rbSizerRow1 = wx.BoxSizer(wx.HORIZONTAL) - self.rbResources = wx.RadioBox(panel, -1, "Resources", wx.DefaultPosition, wx.DefaultSize, - ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) + self.rbResources = wx.RadioBox(panel, -1, "Resources", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbResources.EnableItem(1, False) self.rbResources.SetSelection(self.settings.get('resources')) rbSizerRow1.Add(self.rbResources, 1, wx.TOP | wx.RIGHT, 5) self.rbResources.Bind(wx.EVT_RADIOBOX, self.OnResourcesChange) - self.rbResistances = wx.RadioBox(panel, -1, "Resistances", wx.DefaultPosition, wx.DefaultSize, - ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) + self.rbResistances = wx.RadioBox(panel, -1, "Resistances", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbResistances.EnableItem(1, False) self.rbResistances.SetSelection(self.settings.get('resistances')) rbSizerRow1.Add(self.rbResistances, 1, wx.ALL, 5) self.rbResistances.Bind(wx.EVT_RADIOBOX, self.OnResistancesChange) - self.rbRecharge = wx.RadioBox(panel, -1, "Shield/Armor Tank", wx.DefaultPosition, wx.DefaultSize, - ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) + self.rbRecharge = wx.RadioBox(panel, -1, "Shield/Armor Tank", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbRecharge.EnableItem(1, False) self.rbRecharge.SetSelection(self.settings.get('recharge')) @@ -70,24 +66,21 @@ class PFStatViewPref(PreferenceView): rbSizerRow2 = wx.BoxSizer(wx.HORIZONTAL) - self.rbFirepower = wx.RadioBox(panel, -1, "Firepower", wx.DefaultPosition, wx.DefaultSize, - ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) + self.rbFirepower = wx.RadioBox(panel, -1, "Firepower", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbFirepower.EnableItem(1, False) self.rbFirepower.SetSelection(self.settings.get('firepower')) rbSizerRow2.Add(self.rbFirepower, 1, wx.TOP | wx.RIGHT, 5) self.rbFirepower.Bind(wx.EVT_RADIOBOX, self.OnFirepowerChange) - self.rbCapacitor = wx.RadioBox(panel, -1, "Capacitor", wx.DefaultPosition, wx.DefaultSize, - ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) + self.rbCapacitor = wx.RadioBox(panel, -1, "Capacitor", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbCapacitor.EnableItem(1, False) self.rbCapacitor.SetSelection(self.settings.get('capacitor')) rbSizerRow2.Add(self.rbCapacitor, 1, wx.ALL, 5) self.rbCapacitor.Bind(wx.EVT_RADIOBOX, self.OnCapacitorChange) - self.rbMisc = wx.RadioBox(panel, -1, "Misc", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, - wx.RA_SPECIFY_COLS) + self.rbMisc = wx.RadioBox(panel, -1, "Misc", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) # Disable full as we don't have a view for this yet self.rbMisc.EnableItem(2, False) self.rbMisc.SetSelection(self.settings.get('targetingmisc')) @@ -102,8 +95,7 @@ class PFStatViewPref(PreferenceView): rbSizerRow3 = wx.BoxSizer(wx.HORIZONTAL) - self.rbPrice = wx.RadioBox(panel, -1, "Price", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], - 1, wx.RA_SPECIFY_COLS) + self.rbPrice = wx.RadioBox(panel, -1, "Price", wx.DefaultPosition, wx.DefaultSize, ['None', 'Minimal', 'Full'], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbPrice.EnableItem(1, False) self.rbPrice.SetSelection(self.settings.get('price')) @@ -130,9 +122,6 @@ class PFStatViewPref(PreferenceView): panel.SetSizer(mainSizer) panel.Layout() - # serviceStatViewDefaultSettings = {"resources": 2, "resistances": 2, "recharge": 2, "firepower": 2, "capacitor": 1, - # "targetingmisc": 2, "price": 2, "miningyield": 0} - def OnResourcesChange(self, event): self.settings.set('resources', event.GetInt()) @@ -164,4 +153,4 @@ class PFStatViewPref(PreferenceView): return BitmapLoader.getBitmap("pref-gauges_big", "gui") -PFStatViewPref.register() \ No newline at end of file +PFStatViewPref.register() diff --git a/gui/builtinPreferenceViews/pyfaUpdatePreferences.py b/gui/builtinPreferenceViews/pyfaUpdatePreferences.py index 4e3519e2f..cfc1bef11 100644 --- a/gui/builtinPreferenceViews/pyfaUpdatePreferences.py +++ b/gui/builtinPreferenceViews/pyfaUpdatePreferences.py @@ -44,7 +44,7 @@ class PFUpdatePref(PreferenceView): self.versionSizer = wx.BoxSizer(wx.VERTICAL) self.versionTitle = wx.StaticText(panel, wx.ID_ANY, "Suppressing {0} Notifications".format( - self.UpdateSettings.get('version')), wx.DefaultPosition, wx.DefaultSize, 0) + self.UpdateSettings.get('version')), wx.DefaultPosition, wx.DefaultSize, 0) self.versionTitle.Wrap(-1) self.versionTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) diff --git a/gui/builtinStatsViews/targetingMiscViewMinimal.py b/gui/builtinStatsViews/targetingMiscViewMinimal.py index e0564aaac..0c9ae5004 100644 --- a/gui/builtinStatsViews/targetingMiscViewMinimal.py +++ b/gui/builtinStatsViews/targetingMiscViewMinimal.py @@ -197,7 +197,7 @@ class TargetingMiscViewMinimal(StatsView): label.SetToolTip(wx.ToolTip("Max Warp Distance: %.1f AU" % fit.maxWarpDistance)) elif labelName == "labelSensorStr": if fit.jamChance > 0: - label.SetToolTip(wx.ToolTip("Type: %s\n%.1f%% Chance of Jam" % (fit.scanType, fit.jamChance))) + label.SetToolTip(wx.ToolTip("Type: %s\n%.1f%% Chance of Jam" % (fit.scanType, fit.jamChance))) else: label.SetToolTip(wx.ToolTip("Type: %s" % fit.scanType)) elif labelName == "labelFullAlignTime": diff --git a/gui/preferenceView.py b/gui/preferenceView.py index 662a2ff20..edd370542 100644 --- a/gui/preferenceView.py +++ b/gui/preferenceView.py @@ -41,8 +41,13 @@ class PreferenceView(object): # noinspection PyUnresolvedReferences from gui.builtinPreferenceViews import ( # noqa: E402, F401 pyfaGeneralPreferences, + pyfaContextMenuPreferences, + pyfaStatViewPreferences, pyfaNetworkPreferences, pyfaHTMLExportPreferences, pyfaCrestPreferences, - pyfaUpdatePreferences + pyfaDatabasePreferences, + pyfaLoggingPreferences, + pyfaEnginePreferences, + pyfaUpdatePreferences, ) diff --git a/gui/statsPane.py b/gui/statsPane.py index 9c3e9c698..c7d92bea3 100644 --- a/gui/statsPane.py +++ b/gui/statsPane.py @@ -21,7 +21,7 @@ import wx from service.fit import Fit -from service.settings import Settings +from service.settings import StatViewSettings import gui.mainFrame import gui.builtinStatsViews import gui.globalEvents as GE @@ -50,7 +50,7 @@ class StatsPane(wx.Panel): DEFAULT_VIEWS = [] - settings = Settings.statViewSettings.getInstance() + settings = StatViewSettings.getInstance() for aView in AVAILIBLE_VIEWS: if settings.get(aView) == 2: diff --git a/service/settings.py b/service/settings.py index 9a5dcee9e..be14f13e5 100644 --- a/service/settings.py +++ b/service/settings.py @@ -133,17 +133,17 @@ class NetworkSettings(object): def __init__(self): serviceNetworkDefaultSettings = { - "mode": self.PROXY_MODE_AUTODETECT, - "type": "https", - "address": "", - "port": "", - "access": 15, - "login": None, + "mode" : self.PROXY_MODE_AUTODETECT, + "type" : "https", + "address" : "", + "port" : "", + "access" : 15, + "login" : None, "password": None } self.serviceNetworkSettings = SettingsProvider.getInstance().getSettings( - "pyfaServiceNetworkSettings", serviceNetworkDefaultSettings) + "pyfaServiceNetworkSettings", serviceNetworkDefaultSettings) def isEnabled(self, type): if type & self.serviceNetworkSettings["access"]: @@ -256,12 +256,12 @@ class HTMLExportSettings(object): def __init__(self): serviceHTMLExportDefaultSettings = { "enabled": False, - "path": config.pyfaPath + os.sep + 'pyfaFits.html', + "path" : config.pyfaPath + os.sep + 'pyfaFits.html', "minimal": False } self.serviceHTMLExportSettings = SettingsProvider.getInstance().getSettings( - "pyfaServiceHTMLExportSettings", - serviceHTMLExportDefaultSettings + "pyfaServiceHTMLExportSettings", + serviceHTMLExportDefaultSettings ) def getEnabled(self): @@ -303,8 +303,8 @@ class UpdateSettings(object): # version - Set to release tag that user does not want notifications for serviceUpdateDefaultSettings = {"prerelease": True, 'version': None} self.serviceUpdateSettings = SettingsProvider.getInstance().getSettings( - "pyfaServiceUpdateSettings", - serviceUpdateDefaultSettings + "pyfaServiceUpdateSettings", + serviceUpdateDefaultSettings ) def get(self, type): @@ -331,8 +331,8 @@ class CRESTSettings(object): serviceCRESTDefaultSettings = {"mode": 0, "server": 0, "clientID": "", "clientSecret": "", "timeout": 60} self.serviceCRESTSettings = SettingsProvider.getInstance().getSettings( - "pyfaServiceCRESTSettings", - serviceCRESTDefaultSettings + "pyfaServiceCRESTSettings", + serviceCRESTDefaultSettings ) def get(self, type): @@ -341,13 +341,14 @@ class CRESTSettings(object): def set(self, type, value): self.serviceCRESTSettings[type] = value -class statViewSettings(object): + +class StatViewSettings(object): _instance = None @classmethod def getInstance(cls): if cls._instance is None: - cls._instance = statViewSettings() + cls._instance = StatViewSettings() return cls._instance @@ -357,15 +358,15 @@ class statViewSettings(object): # 1 - Minimal/Text Only View # 2 - Full View serviceStatViewDefaultSettings = { - "resources": 2, - "resistances": 2, - "recharge": 2, - "firepower": 2, - "capacitor": 2, + "resources" : 2, + "resistances" : 2, + "recharge" : 2, + "firepower" : 2, + "capacitor" : 2, "targetingmisc": 1, - "price": 2, - "miningyield": 2, - "drones": 2 + "price" : 2, + "miningyield" : 2, + "drones" : 2 } # We don't have these....yet @@ -382,4 +383,52 @@ class statViewSettings(object): def set(self, type, value): self.serviceStatViewDefaultSettings[type] = value + +class ContextMenuSettings(object): + _instance = None + + @classmethod + def getInstance(cls): + if cls._instance is None: + cls._instance = ContextMenuSettings() + + return cls._instance + + def __init__(self): + # mode + # 0 - Do not show + # 1 - Show + ContextMenuDefaultSettings = { + "ammoPattern" : 1, + "amount" : 1, + "cargo" : 1, + "changeAffectingSkills" : 1, + "damagePattern" : 1, + "droneRemoveStack" : 1, + "droneSplit" : 1, + "factorReload" : 1, + "fighterAbilities" : 1, + "implantSet" : 1, + "itemStats" : 1, + "marketJump" : 1, + "metaSwap" : 1, + "moduleAmmoPicker" : 1, + "moduleGlobalAmmoPicker": 1, + "openFit" : 1, + "priceClear" : 1, + "project" : 1, + "shipJump" : 1, + "tacticalMode" : 1, + "targetResists" : 1, + "whProjector" : 1, + } + + self.ContextMenuDefaultSettings = SettingsProvider.getInstance().getSettings("pyfaContextMenuSettings", ContextMenuDefaultSettings) + + def get(self, type): + return self.ContextMenuDefaultSettings[type] + + def set(self, type, value): + self.ContextMenuDefaultSettings[type] = value + # @todo: migrate fit settings (from fit service) here?