Commit 157fb2f741fa071e77eedb1d8a553e47a0708dc2
1 parent
b1d4e29d
Exists in
master
and in
68 other branches
ENH: Open project while a modified project is open
Showing
2 changed files
with
40 additions
and
14 deletions
Show diff stats
invesalius/control.py
| ... | ... | @@ -95,26 +95,35 @@ class Controller(): |
| 95 | 95 | ########################### |
| 96 | 96 | |
| 97 | 97 | def ShowDialogImportDirectory(self): |
| 98 | + # Offer to save current project if necessary | |
| 99 | + session = ses.Session() | |
| 100 | + st = session.project_status | |
| 101 | + if (st == const.PROJ_NEW) or (st == const.PROJ_CHANGE): | |
| 102 | + filename = session.project_path[1] | |
| 103 | + answer = dialog.SaveChangesDialog2(filename) | |
| 104 | + if answer: | |
| 105 | + self.ShowDialogSaveProject() | |
| 106 | + | |
| 107 | + # Import project | |
| 98 | 108 | dirpath = dialog.ShowImportDirDialog() |
| 99 | 109 | if dirpath: |
| 100 | - # Close project if necessary | |
| 101 | - session = ses.Session() | |
| 102 | - st = session.project_status | |
| 103 | - if st != const.PROJ_CLOSE: | |
| 104 | - self.ShowDialogCloseProject() | |
| 105 | - # Import project | |
| 106 | 110 | self.StartImportPanel(dirpath) |
| 107 | 111 | ps.Publisher().sendMessage("Load data to import panel", dirpath) |
| 108 | 112 | |
| 109 | 113 | def ShowDialogOpenProject(self): |
| 114 | + # Offer to save current project if necessary | |
| 115 | + session = ses.Session() | |
| 116 | + st = session.project_status | |
| 117 | + if (st == const.PROJ_NEW) or (st == const.PROJ_CHANGE): | |
| 118 | + filename = session.project_path[1] | |
| 119 | + answer = dialog.SaveChangesDialog2(filename) | |
| 120 | + if answer: | |
| 121 | + self.ShowDialogSaveProject() | |
| 122 | + | |
| 123 | + # Open project | |
| 110 | 124 | filepath = dialog.ShowOpenProjectDialog() |
| 111 | 125 | if filepath: |
| 112 | - # Close project if necessary | |
| 113 | - session = ses.Session() | |
| 114 | - st = session.project_status | |
| 115 | - if st != const.PROJ_CLOSE: | |
| 116 | - self.ShowDialogCloseProject() | |
| 117 | - # Open project | |
| 126 | + self.CloseProject() | |
| 118 | 127 | self.OpenProject(filepath) |
| 119 | 128 | |
| 120 | 129 | def ShowDialogSaveProject(self, saveas=False): |
| ... | ... | @@ -147,8 +156,8 @@ class Controller(): |
| 147 | 156 | self.ShowDialogSaveProject() |
| 148 | 157 | print "Save changes and close" |
| 149 | 158 | self.CloseProject() |
| 150 | - #elif answer == -1: | |
| 151 | - # print "Cancel" | |
| 159 | + elif answer == -1: | |
| 160 | + print "Cancel" | |
| 152 | 161 | else: |
| 153 | 162 | self.CloseProject() |
| 154 | 163 | ... | ... |
invesalius/gui/dialogs.py
| ... | ... | @@ -270,4 +270,21 @@ def SaveChangesDialog(filename): |
| 270 | 270 | else: |
| 271 | 271 | return -1 |
| 272 | 272 | |
| 273 | +def SaveChangesDialog2(filename): | |
| 273 | 274 | |
| 275 | + if sys.platform == 'darwin': | |
| 276 | + dlg = wx.MessageDialog(None, "", | |
| 277 | + "Save changes to "+filename+"?", | |
| 278 | + wx.ICON_QUESTION | wx.YES_NO) | |
| 279 | + else: | |
| 280 | + dlg = wx.MessageDialog(None, "Save changes to "+filename+"?", | |
| 281 | + "InVesalius 3", | |
| 282 | + wx.ICON_QUESTION | wx.YES_NO) | |
| 283 | + | |
| 284 | + answer = dlg.ShowModal() | |
| 285 | + dlg.Destroy() | |
| 286 | + | |
| 287 | + if answer == wx.ID_YES: | |
| 288 | + return 1 | |
| 289 | + else:# answer == wx.ID_NO: | |
| 290 | + return 0 | ... | ... |