Feature: reopen previous fits on startup

This commit is contained in:
blitzmann
2014-05-23 21:31:36 -04:00
parent 9dea4a26bf
commit 9a2408741e
4 changed files with 63 additions and 31 deletions

View File

@@ -16,6 +16,7 @@ class PFGeneralPref ( PreferenceView):
def populatePanel( self, panel ):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.dirtySettings = False
self.openFitsSettings = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []})
mainSizer = wx.BoxSizer( wx.VERTICAL )
@@ -39,10 +40,13 @@ class PFGeneralPref ( PreferenceView):
self.cbCompactSkills = wx.CheckBox( panel, wx.ID_ANY, u"Compact skills needed tooltip", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.cbCompactSkills, 0, wx.ALL|wx.EXPAND, 5 )
self.cbFitColorSlots = wx.CheckBox( panel, wx.ID_ANY, u"Color fitting view by slot", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.cbFitColorSlots, 0, wx.ALL|wx.EXPAND, 5 )
self.cbReopenFits = wx.CheckBox( panel, wx.ID_ANY, u"Reopen previous fits on startup", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.cbReopenFits, 0, wx.ALL|wx.EXPAND, 5 )
self.cbRackSlots = wx.CheckBox( panel, wx.ID_ANY, u"Separate Racks", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.cbRackSlots, 0, wx.ALL|wx.EXPAND, 5 )
@@ -51,10 +55,6 @@ class PFGeneralPref ( PreferenceView):
labelSizer.Add( self.cbRackLabels, 0, wx.ALL|wx.EXPAND, 5 )
mainSizer.Add( labelSizer, 0, wx.LEFT|wx.EXPAND, 30 )
# Needs to be implemented - save active fittings and reapply when starting pyfa
#self.cbReopenFits = wx.CheckBox( panel, wx.ID_ANY, u"Reopen Fits", wx.DefaultPosition, wx.DefaultSize, 0 )
#mainSizer.Add( self.cbReopenFits, 0, wx.ALL|wx.EXPAND, 5 )
defCharSizer = wx.BoxSizer( wx.HORIZONTAL )
self.sFit = service.Fit.getInstance()
@@ -66,6 +66,7 @@ class PFGeneralPref ( PreferenceView):
self.cbRackSlots.SetValue(self.sFit.serviceFittingOptions["rackSlots"] or False)
self.cbRackLabels.SetValue(self.sFit.serviceFittingOptions["rackLabels"] or False)
self.cbCompactSkills.SetValue(self.sFit.serviceFittingOptions["compactSkills"] or False)
self.cbReopenFits.SetValue(self.openFitsSettings["enabled"])
self.cbGlobalChar.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalCharStateChange)
self.cbGlobalDmgPattern.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalDmgPatternStateChange)
@@ -74,7 +75,8 @@ class PFGeneralPref ( PreferenceView):
self.cbRackSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalRackSlots)
self.cbRackLabels.Bind(wx.EVT_CHECKBOX, self.onCBGlobalRackLabels)
self.cbCompactSkills.Bind(wx.EVT_CHECKBOX, self.onCBCompactSkills)
self.cbReopenFits.Bind(wx.EVT_CHECKBOX, self.onCBReopenFits)
self.cbRackLabels.Enable(self.sFit.serviceFittingOptions["rackSlots"] or False)
panel.SetSizer( mainSizer )
@@ -116,12 +118,15 @@ class PFGeneralPref ( PreferenceView):
def OnCBGlobalDmgPatternStateChange(self, event):
self.sFit.serviceFittingOptions["useGlobalDamagePattern"] = self.cbGlobalDmgPattern.GetValue()
event.Skip()
def onCBCompactSkills(self, event):
self.sFit.serviceFittingOptions["compactSkills"] = self.cbCompactSkills.GetValue()
event.Skip()
def onCBReopenFits(self, event):
self.openFitsSettings["enabled"] = self.cbReopenFits.GetValue()
def getImage(self):
return bitmapLoader.getBitmap("prefs_settings", "icons")
PFGeneralPref.register()
PFGeneralPref.register()

View File

@@ -56,7 +56,7 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
except:
pass
if count <0:
mstate = wx.GetMouseState()
mstate = getattr(event, "mstate", wx.GetMouseState())
if mstate.CmdDown() or mstate.MiddleDown():
self.multiSwitch.AddPage()

View File

@@ -149,8 +149,6 @@ class MainFrame(wx.Frame):
self.SetMenuBar(MainMenuBar())
self.registerMenu()
#Internal vars to keep track of other windows (graphing/stats)
self.graphFrame = None
self.statsWnds = []
@@ -159,6 +157,10 @@ class MainFrame(wx.Frame):
self.Bind(wx.EVT_CLOSE, self.OnClose)
self.prevOpenFits = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False,"pyfaOpenFits": []})
if self.prevOpenFits['enabled']:
self.LoadPreviousOpenFits()
#Show ourselves
self.Show()
@@ -171,8 +173,22 @@ class MainFrame(wx.Frame):
dlg.ShowModal()
dlg.Destroy()
def LoadMainFrameAttribs(self):
def LoadPreviousOpenFits(self):
fits = self.prevOpenFits['pyfaOpenFits']
if len(fits) > 0:
# open first fit in same tab (which should be empty)
wx.PostEvent(self, FitSelected(fitID=fits[0]))
# set mouse state to pass to FitSpawner via event
mstate = wx.GetMouseState()
mstate.SetMiddleDown(True)
# open the rest of the fits with an mstate override (to open in new tabs)
for fitID in fits[1:]:
wx.PostEvent(self, FitSelected(fitID=fitID, mstate=mstate))
def LoadMainFrameAttribs(self):
mainFrameDefaultAttribs = {"wnd_width":1000, "wnd_height": 700, "wnd_maximized": False}
self.mainFrameAttribs = service.SettingsProvider.getInstance().getSettings("pyfaMainWindowAttribs", mainFrameDefaultAttribs)
@@ -200,7 +216,6 @@ class MainFrame(wx.Frame):
self.activeStatsWnd = wnd
def GetActiveStatsWindow(self):
if self.activeStatsWnd in self.statsWnds:
return self.activeStatsWnd
@@ -232,6 +247,15 @@ class MainFrame(wx.Frame):
def OnClose(self, event):
self.UpdateMainFrameAttribs()
# save open fits
self.prevOpenFits['pyfaOpenFits'] = [] # clear old list
for page in self.fitMultiSwitch.pages:
m = getattr(page, "getActiveFit", None)
if m is not None:
self.prevOpenFits['pyfaOpenFits'].append(m())
# save all teh settingz
service.SettingsProvider.getInstance().saveAll()
event.Skip()

View File

@@ -186,50 +186,50 @@ class ProxySettings():
return self.autodetect()
if self.getMode() == 2:
return (self.getAddress(), int(self.getPort()))
"""
Settings used by the HTML export feature.
"""
"""
class HTMLExportSettings():
_instance = None
@classmethod
def getInstance(cls):
if cls._instance == None:
cls._instance = HTMLExportSettings()
return cls._instance
return cls._instance
def __init__(self):
serviceHTMLExportDefaultSettings = {"enabled": False, "path": config.pyfaPath + os.sep + 'pyfaFits.html' }
self.serviceHTMLExportSettings = SettingsProvider.getInstance().getSettings("pyfaServiceHTMLExportSettings", serviceHTMLExportDefaultSettings)
def getEnabled(self):
return self.serviceHTMLExportSettings["enabled"]
def setEnabled(self, enabled):
self.serviceHTMLExportSettings["enabled"] = enabled
def getPath(self):
return self.serviceHTMLExportSettings["path"]
def setPath(self, path):
self.serviceHTMLExportSettings["path"] = path
"""
Settings used by update notification
"""
"""
class UpdateSettings():
_instance = None
@classmethod
def getInstance(cls):
if cls._instance == None:
cls._instance = UpdateSettings()
return cls._instance
return cls._instance
def __init__(self):
# Settings
@@ -238,9 +238,12 @@ class UpdateSettings():
# version - Set to release tag that user does not want notifications for
serviceUpdateDefaultSettings = { "all": False, "prerelease": True, 'version': None }
self.serviceUpdateSettings = SettingsProvider.getInstance().getSettings("pyfaServiceUpdateSettings", serviceUpdateDefaultSettings)
def get(self, type):
return self.serviceUpdateSettings[type]
def set(self, type, value):
self.serviceUpdateSettings[type] = value
self.serviceUpdateSettings[type] = value
# @todo: "reopen fits" setting class
# @todo: migrate fit settings (from fit service) here?