Commit 26370a907c387121bbaa4b9f0d76ae458d6d5621

Authored by tatiana
1 parent 8057fbed

ADD: Last projects (fix #57)

invesalius/control.py
... ... @@ -70,6 +70,7 @@ class Controller():
70 70 ps.Publisher().subscribe(self.OnCancelImport, 'Cancel DICOM load')
71 71 ps.Publisher().subscribe(self.OnShowDialogCloseProject, 'Close Project')
72 72 ps.Publisher().subscribe(self.OnOpenProject, 'Open project')
  73 + ps.Publisher().subscribe(self.OnOpenRecentProject, 'Open recent project')
73 74  
74 75 def OnCancelImport(self, pubsub_evt):
75 76 #self.cancel_import = True
... ... @@ -177,6 +178,23 @@ class Controller():
177 178 path = pubsub_evt.data
178 179 self.OpenProject(path)
179 180  
  181 + def OnOpenRecentProject(self, pubsub_evt):
  182 + filepath = pubsub_evt.data
  183 +
  184 + session = ses.Session()
  185 + st = session.project_status
  186 + if (st == const.PROJ_NEW) or (st == const.PROJ_CHANGE):
  187 + filename = session.project_path[1]
  188 + answer = dialog.SaveChangesDialog2(filename)
  189 + if answer:
  190 + self.ShowDialogSaveProject()
  191 + print "1"
  192 + self.CloseProject()
  193 + print "2"
  194 + self.OpenProject(filepath)
  195 + print "3"
  196 +
  197 +
180 198  
181 199 def OpenProject(self, filepath):
182 200 ps.Publisher().sendMessage('Begin busy cursor')
... ...
invesalius/gui/task_importer.py
... ... @@ -131,11 +131,72 @@ class InnerTaskPanel(wx.Panel):
131 131  
132 132 # Update main sizer and panel layout
133 133 self.SetSizer(main_sizer)
134   - self.Fit()
  134 + self.Update()
  135 + self.SetAutoLayout(1)
135 136 self.sizer = main_sizer
136 137  
137 138 # Test load and unload specific projects' links
138   - #self.TestLoadProjects()
  139 + self.TestLoadProjects2()
  140 + #self.__bind_events()
  141 +
  142 + #def __bind_events(self):
  143 + # ps.Publisher().subscribe(self.OnLoadRecentProjects, "Load recent projects")
  144 +
  145 + #def OnLoadRecentProjects(self, pubsub_evt):
  146 + # projects = pubsub_evt.data
  147 + # for tuple in projects:
  148 + # filename = tuple[1]
  149 + # path = tuple[0]
  150 + # self.LoadProject(filename, path)
  151 +
  152 + def TestLoadProjects2(self):
  153 + import session as ses
  154 + session = ses.Session()
  155 + projects = session.recent_projects
  156 + for tuple in projects:
  157 + filename = tuple[1]
  158 + path = tuple[0]
  159 + self.LoadProject(filename, path)
  160 +
  161 +
  162 + def TestLoadProjects(self):
  163 + self.LoadProject("test1.inv3", "/Volumes/file/inv3")
  164 + self.LoadProject("test2.inv3", "/Volumes/file/inv3")
  165 + self.LoadProject("test3.inv3", "/Volumes/file/inv3")
  166 +
  167 + def LoadProject(self, proj_name="Unnamed", proj_dir=""):
  168 + """
  169 + Load into user interface name of project into import task panel.
  170 + Can be called 3 times in sequence.
  171 + Call UnloadProjects to empty it.
  172 + """
  173 + # TODO: What todo when it is called more than 3 times?
  174 + # TODO: Load from config file last 3 recent projects
  175 +
  176 + proj_path = os.path.join(proj_dir, proj_name)
  177 +
  178 + if (self.proj_count < 3):
  179 + self.proj_count += 1
  180 +
  181 + # Create name to be plot on GUI
  182 + label = " "+str(self.proj_count)+". "+proj_name
  183 +
  184 + # Create corresponding hyperlink
  185 + proj_link = hl.HyperLinkCtrl(self, -1, label)
  186 + proj_link.SetUnderlines(False, False, False)
  187 + proj_link.SetColours("BLACK", "BLACK", "BLACK")
  188 + proj_link.AutoBrowse(False)
  189 + proj_link.UpdateLink()
  190 + proj_link.Bind(hl.EVT_HYPERLINK_LEFT,
  191 + lambda e: self.OpenProject(proj_path))
  192 +
  193 + # Add to existing frame
  194 + self.sizer.Add(proj_link, 1, wx.GROW | wx.EXPAND | wx.ALL, 2)
  195 + self.Update()
  196 +
  197 + # Add hyperlink to floating hyperlinks list
  198 + self.float_hyper_list.append(proj_link)
  199 +
139 200  
140 201 def OnLinkImport(self, event):
141 202 self.ImportDicom()
... ... @@ -158,9 +219,9 @@ class InnerTaskPanel(wx.Panel):
158 219 def ImportDicom(self):
159 220 ps.Publisher().sendMessage('Show import directory dialog')
160 221  
161   - def OpenProject(self, filename=None):
162   - if filename:
163   - print "TODO: Send Signal - Open "+filename
  222 + def OpenProject(self, path=None):
  223 + if path:
  224 + ps.Publisher().sendMessage('Open recent project', path)
164 225 else:
165 226 ps.Publisher().sendMessage('Show open project dialog')
166 227  
... ... @@ -184,41 +245,7 @@ class InnerTaskPanel(wx.Panel):
184 245 else: #elif id == BTN_OPEN_PROJECT:
185 246 self.OpenProject()
186 247  
187   - def TestLoadProjects(self):
188   - self.LoadProject("test1.inv3")
189   - self.LoadProject("test2.inv3")
190   - self.LoadProject("test3.inv3")
191   -
192   - def LoadProject(self, proj_name="Unnamed"):
193   - """
194   - Load into user interface name of project into import task panel.
195   - Can be called 3 times in sequence.
196   - Call UnloadProjects to empty it.
197   - """
198   - # TODO: What todo when it is called more than 3 times?
199   - # TODO: Load from config file last 3 recent projects
200   -
201   - if (self.proj_count < 3):
202   - self.proj_count += 1
203   -
204   - # Create name to be plot on GUI
205   - label = " "+str(self.proj_count)+". "+proj_name
206 248  
207   - # Create corresponding hyperlink
208   - proj_link = hl.HyperLinkCtrl(self, -1, label)
209   - proj_link.SetUnderlines(False, False, False)
210   - proj_link.SetColours("BLACK", "BLACK", "BLACK")
211   - proj_link.AutoBrowse(False)
212   - proj_link.UpdateLink()
213   - proj_link.Bind(hl.EVT_HYPERLINK_LEFT,
214   - lambda e: self.LinkOpenProject(proj_name))
215   -
216   - # Add to existing frame
217   - self.sizer.Add(proj_link, 1, wx.GROW | wx.EXPAND | wx.ALL, 2)
218   - self.Update()
219   -
220   - # Add hyperlink to floating hyperlinks list
221   - self.float_hyper_list.append(proj_link)
222 249  
223 250 def UnloadProjects(self):
224 251 """
... ...