Add thread for opening fits on startup, which allows us of wait dialog
Wait dialog doesn't actually move as the GUI thread is locked when opening the fits, but at least it shows that -something- is happening.
This commit is contained in:
@@ -49,13 +49,13 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
|
||||
for index, page in enumerate(self.multiSwitch.pages):
|
||||
try:
|
||||
if page.activeFitID == event.fitID:
|
||||
count +=1
|
||||
count += 1
|
||||
self.multiSwitch.SetSelection(index)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=event.fitID))
|
||||
break
|
||||
except:
|
||||
pass
|
||||
if count <0:
|
||||
if count < 0:
|
||||
mstate = getattr(event, "mstate", wx.GetMouseState())
|
||||
|
||||
if mstate.CmdDown() or mstate.MiddleDown():
|
||||
|
||||
@@ -22,12 +22,14 @@ import os.path
|
||||
|
||||
import sqlalchemy
|
||||
import wx
|
||||
import time
|
||||
|
||||
from wx._core import PyDeadObjectError
|
||||
from wx.lib.wordwrap import wordwrap
|
||||
|
||||
import service
|
||||
import config
|
||||
import threading
|
||||
|
||||
import gui.aboutData
|
||||
import gui.chromeTabs
|
||||
@@ -64,6 +66,30 @@ class PFPanel(wx.Panel):
|
||||
def OnBkErase(self, event):
|
||||
pass
|
||||
|
||||
class OpenFitsThread(threading.Thread):
|
||||
def __init__(self, fits, callback):
|
||||
threading.Thread.__init__(self)
|
||||
self.mainFrame = MainFrame.getInstance()
|
||||
self.callback = callback
|
||||
self.fits = fits
|
||||
self.start()
|
||||
|
||||
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))
|
||||
|
||||
wx.CallAfter(self.callback)
|
||||
|
||||
class MainFrame(wx.Frame):
|
||||
__instance = None
|
||||
@classmethod
|
||||
@@ -154,16 +180,15 @@ class MainFrame(wx.Frame):
|
||||
self.statsWnds = []
|
||||
self.activeStatsWnd = None
|
||||
|
||||
|
||||
self.Bind(wx.EVT_CLOSE, self.OnClose)
|
||||
|
||||
#Show ourselves
|
||||
self.Show()
|
||||
|
||||
self.prevOpenFits = service.SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False,"pyfaOpenFits": []})
|
||||
if self.prevOpenFits['enabled']:
|
||||
self.LoadPreviousOpenFits()
|
||||
|
||||
#Show ourselves
|
||||
self.Show()
|
||||
|
||||
#Check for updates
|
||||
self.sUpdate = service.Update.getInstance()
|
||||
self.sUpdate.CheckUpdate(self.ShowUpdateBox)
|
||||
@@ -175,18 +200,10 @@ class MainFrame(wx.Frame):
|
||||
|
||||
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))
|
||||
self.waitDialog = animUtils.WaitDialog(self, title = "Opening previous fits")
|
||||
thread = OpenFitsThread(fits, self.closeWaitDialog)
|
||||
self.waitDialog.ShowModal()
|
||||
|
||||
def LoadMainFrameAttribs(self):
|
||||
mainFrameDefaultAttribs = {"wnd_width":1000, "wnd_height": 700, "wnd_maximized": False}
|
||||
|
||||
Reference in New Issue
Block a user