Improves on fit loading on startup by only calculating the last fit that is opened.
Issue with FittingView.MakeSnapshot() need an exception catch.
This commit is contained in:
@@ -44,8 +44,6 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
|
||||
|
||||
def fitSelected(self, event):
|
||||
count = -1
|
||||
if self.multiSwitch.GetPageCount() == 0:
|
||||
self.multiSwitch.AddPage()
|
||||
for index, page in enumerate(self.multiSwitch.pages):
|
||||
try:
|
||||
if page.activeFitID == event.fitID:
|
||||
@@ -56,9 +54,10 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
|
||||
except:
|
||||
pass
|
||||
if count < 0:
|
||||
mstate = getattr(event, "mstate", wx.GetMouseState())
|
||||
startup = getattr(event, "startup", False) # see OpenFitsThread in gui.mainFrame
|
||||
mstate = wx.GetMouseState()
|
||||
|
||||
if mstate.CmdDown() or mstate.MiddleDown():
|
||||
if mstate.CmdDown() or mstate.MiddleDown() or startup:
|
||||
self.multiSwitch.AddPage()
|
||||
|
||||
view = FittingView(self.multiSwitch)
|
||||
@@ -281,13 +280,15 @@ class FittingView(d.Display):
|
||||
def fitSelected(self, event):
|
||||
if self.parent.IsActive(self):
|
||||
fitID = event.fitID
|
||||
startup = getattr(event, "startup", False)
|
||||
self.activeFitID = fitID
|
||||
self.Show(fitID is not None)
|
||||
self.slotsChanged()
|
||||
sFit = service.Fit.getInstance()
|
||||
sFit.switchFit(fitID)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
self.updateTab()
|
||||
if not startup or startup == 2: # see OpenFitsThread in gui.mainFrame
|
||||
self.Show(fitID is not None)
|
||||
self.slotsChanged()
|
||||
sFit.switchFit(fitID)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
|
||||
event.Skip()
|
||||
|
||||
@@ -562,11 +563,17 @@ class FittingView(d.Display):
|
||||
self.itemRect = self.GetItemRect(0)
|
||||
|
||||
if 'wxMac' in wx.PlatformInfo:
|
||||
self.MakeSnapshot()
|
||||
try:
|
||||
self.MakeSnapshot()
|
||||
except:
|
||||
pass
|
||||
|
||||
def OnShow(self, event):
|
||||
if not event.GetShow():
|
||||
self.MakeSnapshot()
|
||||
try:
|
||||
self.MakeSnapshot()
|
||||
except:
|
||||
pass
|
||||
event.Skip()
|
||||
|
||||
def Snapshot(self):
|
||||
|
||||
@@ -77,17 +77,17 @@ class OpenFitsThread(threading.Thread):
|
||||
def run(self):
|
||||
time.sleep(0.5) # Give GUI some time to finish drawing
|
||||
|
||||
# open first fit in same tab (which should be empty)
|
||||
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.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 self.fits[1:]:
|
||||
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID, mstate=mstate))
|
||||
# `startup` tells FitSpawner that we are loading fits are startup, and
|
||||
# has 3 values:
|
||||
# False = Set as default in FitSpawner itself, never set here
|
||||
# 1 = Create new fit page, but do not calculate page
|
||||
# 2 = Create new page and calculate
|
||||
# We use 1 for all fits except the last one where we use 2 so that we
|
||||
# have correct calculations displayed at startup
|
||||
for fitID in self.fits[:-1]:
|
||||
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID, startup=1))
|
||||
|
||||
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fits[-1], startup=2))
|
||||
wx.CallAfter(self.callback)
|
||||
|
||||
class MainFrame(wx.Frame):
|
||||
@@ -185,9 +185,7 @@ class MainFrame(wx.Frame):
|
||||
#Show ourselves
|
||||
self.Show()
|
||||
|
||||
self.prevOpenFits = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False,"pyfaOpenFits": []})
|
||||
if self.prevOpenFits['enabled']:
|
||||
self.LoadPreviousOpenFits()
|
||||
self.LoadPreviousOpenFits()
|
||||
|
||||
#Check for updates
|
||||
self.sUpdate = service.Update.getInstance()
|
||||
@@ -199,11 +197,18 @@ class MainFrame(wx.Frame):
|
||||
dlg.Destroy()
|
||||
|
||||
def LoadPreviousOpenFits(self):
|
||||
self.prevOpenFits = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []})
|
||||
fits = self.prevOpenFits['pyfaOpenFits']
|
||||
if len(fits) > 0:
|
||||
self.waitDialog = animUtils.WaitDialog(self, title = "Opening previous fits")
|
||||
thread = OpenFitsThread(fits, self.closeWaitDialog)
|
||||
self.waitDialog.ShowModal()
|
||||
|
||||
if not self.prevOpenFits['enabled'] or len(fits) is 0:
|
||||
# add blank page if there are no fits to be loaded
|
||||
self.fitMultiSwitch.AddPage()
|
||||
return
|
||||
|
||||
self.waitDialog = animUtils.WaitDialog(self, title="Opening previous fits")
|
||||
OpenFitsThread(fits, self.closeWaitDialog)
|
||||
self.waitDialog.ShowModal()
|
||||
|
||||
|
||||
def LoadMainFrameAttribs(self):
|
||||
mainFrameDefaultAttribs = {"wnd_width":1000, "wnd_height": 700, "wnd_maximized": False}
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
|
||||
import wx
|
||||
import gui.chromeTabs
|
||||
import gui.builtinViews.emptyView
|
||||
|
||||
|
||||
class MultiSwitch(gui.chromeTabs.PFNotebook):
|
||||
def __init__(self, parent):
|
||||
gui.chromeTabs.PFNotebook.__init__(self, parent)
|
||||
self.AddPage()
|
||||
#self.AddPage() # now handled by mainFrame
|
||||
self.handlers = handlers = []
|
||||
for type in TabSpawner.tabTypes:
|
||||
handlers.append(type(self))
|
||||
@@ -35,21 +35,22 @@ class MultiSwitch(gui.chromeTabs.PFNotebook):
|
||||
if h:
|
||||
h(type, info)
|
||||
|
||||
def AddPage(self, tabWnd=None, tabTitle="Empty Tab", tabImage=None):
|
||||
def AddPage(self, tabWnd=None, tabTitle="Empty Tab", tabImage=None):
|
||||
if tabWnd is None:
|
||||
tabWnd = gui.builtinViews.emptyView.BlankPage(self)
|
||||
tabWnd.handleDrag = lambda type, info: self.handleDrag(type, info)
|
||||
|
||||
gui.chromeTabs.PFNotebook.AddPage(self, tabWnd, tabTitle, tabImage, True)
|
||||
|
||||
|
||||
def DeletePage(self, n, *args, **kwargs):
|
||||
gui.chromeTabs.PFNotebook.DeletePage(self, n, *args, **kwargs)
|
||||
if self.GetPageCount() == 0:
|
||||
self.AddPage()
|
||||
|
||||
|
||||
class TabSpawner(object):
|
||||
tabTypes = []
|
||||
|
||||
@classmethod
|
||||
def register(cls):
|
||||
TabSpawner.tabTypes.append(cls)
|
||||
|
||||
Reference in New Issue
Block a user