fix bug with empty directories in recent projects menu
authorSergey Surkov <surkovsv93@gmail.com>
Tue, 13 Dec 2016 17:40:03 +0300
changeset 1601 37271c24ce45
parent 1600 481a71c864d4
child 1602 95ecb26fdc4e
fix bug with empty directories in recent projects menu
remove path to a project from recent projects menu, if project directory is empty
Beremiz.py
--- a/Beremiz.py	Mon Dec 12 14:29:40 2016 +0300
+++ b/Beremiz.py	Tue Dec 13 17:40:03 2016 +0300
@@ -757,6 +757,11 @@
                                   self.GetConfigEntry("RecentProjects", []))
         except:
             recent_projects = []
+
+        while self.RecentProjectsMenu.GetMenuItemCount() > len(recent_projects):
+            item = self.RecentProjectsMenu.FindItemByPosition(0)
+            self.RecentProjectsMenu.RemoveItem(item)
+
         self.FileMenu.Enable(ID_FILEMENURECENTPROJECTS, len(recent_projects) > 0)
         for idx, projectpath in enumerate(recent_projects):
             text = u'%d: %s' % (idx + 1, projectpath)
@@ -896,7 +901,7 @@
             self.DebugVariablePanel.SetDataProducer(None)
             self.ResetConnectionStatusBar()
 
-    def RefreshConfigRecentProjects(self, projectpath):
+    def RefreshConfigRecentProjects(self, projectpath, err=False):
         try:
             recent_projects = map(DecodeFileSystemPath,
                                   self.GetConfigEntry("RecentProjects", []))
@@ -904,7 +909,8 @@
             recent_projects = []
         if projectpath in recent_projects:
             recent_projects.remove(projectpath)
-        recent_projects.insert(0, projectpath)
+        if not err:
+            recent_projects.insert(0, projectpath)
         self.Config.Write("RecentProjects", cPickle.dumps(
             map(EncodeFileSystemPath, recent_projects[:MAX_RECENT_PROJECTS])))
         self.Config.Flush()
@@ -967,6 +973,7 @@
         if os.path.isdir(projectpath):
             self.Config.Write("lastopenedfolder",
                               EncodeFileSystemPath(os.path.dirname(projectpath)))
+            err = False
             self.Config.Flush()
             self.ResetView()
             self.CTR = ProjectController(self, self.Log)
@@ -976,7 +983,6 @@
                 self.LibraryPanel.SetController(self.Controler)
                 self.ProjectTree.Enable(True)
                 self.PouInstanceVariablesPanel.SetController(self.Controler)
-                self.RefreshConfigRecentProjects(projectpath)
                 if self.EnableDebug:
                     self.DebugVariablePanel.SetDataProducer(self.CTR)
                 self._Refresh(PROJECTTREE, POUINSTANCEVARIABLESPANEL, LIBRARYTREE)
@@ -986,6 +992,8 @@
             self.RefreshAll()
         else:
             self.ShowErrorMessage(_("\"%s\" folder is not a valid Beremiz project\n") % projectpath)
+            err = True
+        self.RefreshConfigRecentProjects(projectpath, err)
         self._Refresh(TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU)
 
     def OnCloseProjectMenu(self, event):