Fix recent projects list not updated when creating new project
authorlaurent
Tue, 07 Feb 2012 19:14:10 +0100
changeset 679 d72f3a42f440
parent 678 92a1ec3c6fdd
child 680 61746934df41
child 682 9d20df7c144a
Fix recent projects list not updated when creating new project
Beremiz.py
--- a/Beremiz.py	Fri Feb 03 16:12:49 2012 +0100
+++ b/Beremiz.py	Tue Feb 07 19:14:10 2012 +0100
@@ -478,7 +478,6 @@
         self.LastPanelSelected = None
         
         self.PluginInfos = {}
-        self.PluginRoot = None
         
         # Define Tree item icon list
         self.LocationImageList = wx.ImageList(16, 16)
@@ -498,19 +497,28 @@
         self.SetIcon(wx.Icon(Bpath( "images", "brz.ico"), wx.BITMAP_TYPE_ICO))
         
         if projectOpen is not None and os.path.isdir(projectOpen):
-            self.OpenProject(os.path.abspath(projectOpen))
+            self.PluginRoot = PluginsRoot(self, self.Log)
+            self.Controler = self.PluginRoot
+            result = self.PluginRoot.LoadProject(projectOpen, buildpath)
+            if not result:
+                self.RefreshConfigRecentProjects(os.path.abspath(projectOpen))
+                self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)
+                self.RefreshAll()
+            else:
+                self.ResetView()
+                self.ShowErrorMessage(result)
         else:
             self.PluginRoot = plugin_root
             self.Controler = plugin_root
             if plugin_root is not None:
                 self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)
                 self.RefreshAll()
-            self._Refresh(TITLE, TOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
         if self.EnableDebug:
             self.DebugVariablePanel.SetDataProducer(self.PluginRoot)
         
         self.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
         
+        self._Refresh(TITLE, TOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU)
         self.RefreshPluginMenu()
         self.LogConsole.SetFocus()
 
@@ -1504,6 +1512,14 @@
         if self.EnableDebug:
             self.DebugVariablePanel.SetDataProducer(None)
     
+    def RefreshConfigRecentProjects(self, projectpath):
+        recent_projects = cPickle.loads(str(self.Config.Read("RecentProjects", cPickle.dumps([]))))
+        if projectpath in recent_projects:
+            recent_projects.remove(projectpath)
+        recent_projects.insert(0, projectpath)
+        self.Config.Write("RecentProjects", cPickle.dumps(recent_projects[:MAX_RECENT_PROJECTS]))
+        self.Config.Flush()
+    
     def OnNewProjectMenu(self, event):
         if self.PluginRoot is not None and not self.CheckSaveBeforeClosing():
             return
@@ -1516,7 +1532,6 @@
         dialog = wx.DirDialog(self , _("Choose a project"), defaultpath, wx.DD_NEW_DIR_BUTTON)
         if dialog.ShowModal() == wx.ID_OK:
             projectpath = dialog.GetPath()
-            dialog.Destroy()
             self.Config.Write("lastopenedfolder", os.path.dirname(projectpath))
             self.Config.Flush()
             self.ResetView()
@@ -1524,6 +1539,7 @@
             self.Controler = self.PluginRoot
             result = self.PluginRoot.NewProject(projectpath)
             if not result:
+                self.RefreshConfigRecentProjects(projectpath)
                 if self.EnableDebug:
                     self.DebugVariablePanel.SetDataProducer(self.PluginRoot)
                 self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)
@@ -1532,6 +1548,7 @@
                 self.ResetView()
                 self.ShowErrorMessage(result)
             self._Refresh(TITLE, TOOLBAR, FILEMENU, EDITMENU)
+        dialog.Destroy()
     
     def OnOpenProjectMenu(self, event):
         if self.PluginRoot is not None and not self.CheckSaveBeforeClosing():
@@ -1550,17 +1567,13 @@
     def OpenProject(self, projectpath):
         if os.path.isdir(projectpath):
             self.Config.Write("lastopenedfolder", os.path.dirname(projectpath))
-            recent_projects = cPickle.loads(str(self.Config.Read("RecentProjects", cPickle.dumps([]))))
-            if projectpath in recent_projects:
-                recent_projects.remove(projectpath)
-            recent_projects.insert(0, projectpath)
-            self.Config.Write("RecentProjects", cPickle.dumps(recent_projects[:MAX_RECENT_PROJECTS]))
             self.Config.Flush()
             self.ResetView()
             self.PluginRoot = PluginsRoot(self, self.Log)
             self.Controler = self.PluginRoot
             result = self.PluginRoot.LoadProject(projectpath)
             if not result:
+                self.RefreshConfigRecentProjects(projectpath)
                 if self.EnableDebug:
                     self.DebugVariablePanel.SetDataProducer(self.PluginRoot)
                 self._Refresh(TYPESTREE, INSTANCESTREE, LIBRARYTREE)