diff --git a/invesalius/control.py b/invesalius/control.py index ec916f3..6db06fe 100755 --- a/invesalius/control.py +++ b/invesalius/control.py @@ -95,26 +95,35 @@ class Controller(): ########################### def ShowDialogImportDirectory(self): + # Offer to save current project if necessary + session = ses.Session() + st = session.project_status + if (st == const.PROJ_NEW) or (st == const.PROJ_CHANGE): + filename = session.project_path[1] + answer = dialog.SaveChangesDialog2(filename) + if answer: + self.ShowDialogSaveProject() + + # Import project dirpath = dialog.ShowImportDirDialog() if dirpath: - # Close project if necessary - session = ses.Session() - st = session.project_status - if st != const.PROJ_CLOSE: - self.ShowDialogCloseProject() - # Import project self.StartImportPanel(dirpath) ps.Publisher().sendMessage("Load data to import panel", dirpath) def ShowDialogOpenProject(self): + # Offer to save current project if necessary + session = ses.Session() + st = session.project_status + if (st == const.PROJ_NEW) or (st == const.PROJ_CHANGE): + filename = session.project_path[1] + answer = dialog.SaveChangesDialog2(filename) + if answer: + self.ShowDialogSaveProject() + + # Open project filepath = dialog.ShowOpenProjectDialog() if filepath: - # Close project if necessary - session = ses.Session() - st = session.project_status - if st != const.PROJ_CLOSE: - self.ShowDialogCloseProject() - # Open project + self.CloseProject() self.OpenProject(filepath) def ShowDialogSaveProject(self, saveas=False): @@ -147,8 +156,8 @@ class Controller(): self.ShowDialogSaveProject() print "Save changes and close" self.CloseProject() - #elif answer == -1: - # print "Cancel" + elif answer == -1: + print "Cancel" else: self.CloseProject() diff --git a/invesalius/gui/dialogs.py b/invesalius/gui/dialogs.py index 4d82580..4a11df1 100644 --- a/invesalius/gui/dialogs.py +++ b/invesalius/gui/dialogs.py @@ -270,4 +270,21 @@ def SaveChangesDialog(filename): else: return -1 +def SaveChangesDialog2(filename): + if sys.platform == 'darwin': + dlg = wx.MessageDialog(None, "", + "Save changes to "+filename+"?", + wx.ICON_QUESTION | wx.YES_NO) + else: + dlg = wx.MessageDialog(None, "Save changes to "+filename+"?", + "InVesalius 3", + wx.ICON_QUESTION | wx.YES_NO) + + answer = dlg.ShowModal() + dlg.Destroy() + + if answer == wx.ID_YES: + return 1 + else:# answer == wx.ID_NO: + return 0 -- libgit2 0.21.2