diff --git a/gui/mainFrame.py b/gui/mainFrame.py index b4b6fc60f..152654d1a 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -253,14 +253,17 @@ class MainFrame(wx.Frame): wildcard = "EFT text fitting files (*.cfg)|*.cfg|EvE XML fitting files (*.xml)|*.xml|All Files (*)|*", style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE) if (dlg.ShowModal() == wx.ID_OK): -# try: - for importPath in dlg.GetPaths(): - fits += sFit.importFit(importPath) - IDs = sFit.saveImportedFits(fits) - self._openAfterImport(len(fits), IDs) -# except: -# wx.MessageBox("Error importing from file.", "Error", wx.OK | wx.ICON_ERROR, self) - dlg.Destroy() + self.waitDialog = animUtils.WaitDialog(self, title = "Importing") + sFit.importFitsThreaded(dlg.GetPaths(), self.importCallback) + dlg.Destroy() + self.waitDialog.ShowModal() + + + def importCallback(self, fits): + self.waitDialog.Destroy() + sFit = service.Fit.getInstance() + IDs = sFit.saveImportedFits(fits) + self._openAfterImport(len(fits), IDs) def _openAfterImport(self, importCount, fitIDs): if importCount == 1: diff --git a/service/fit.py b/service/fit.py index 43afb201a..b1ddc6eb3 100644 --- a/service/fit.py +++ b/service/fit.py @@ -48,6 +48,20 @@ class FitBackupThread(threading.Thread): backupFile.close() wx.CallAfter(self.callback) +class FitImportThread(threading.Thread): + def __init__(self, paths, callback): + threading.Thread.__init__(self) + self.paths = paths + self.callback = callback + + def run(self): + importedFits = [] + paths = self.paths + sFit = Fit.getInstance() + for path in paths: + importedFits += sFit.importFit(path) + wx.CallAfter(self.callback, importedFits) + class Fit(object): instance = None @classmethod @@ -513,6 +527,10 @@ class Fit(object): thread = FitBackupThread(path, callback) thread.start() + def importFitsThreaded(self, paths, callback): + thread = FitImportThread(paths, callback) + thread.start() + def importFit(self, path): filename = os.path.split(path)[1]