Project/Project.py

changeset 4211
c6e175462586
parent 4079
a3319822d303
child 4303
57b5de82ce05
--- a/Project/Project.py	Fri Apr 10 19:16:57 2015 +0200
+++ b/Project/Project.py	Sat Apr 11 14:03:40 2015 +0200
@@ -1856,6 +1856,45 @@
                     filelist.append(os.path.join(self.ppath, entry))
         return filelist
         
+    def __reorganizeFiles(self):
+        """
+        Private method to reorganize files stored in the project.
+        """
+        reorganized = False
+        
+        # init data store for the reorganization
+        newPdata = {}
+        for key in ["SOURCES", "FORMS", "INTERFACES", "RESOURCES", "OTHERS",
+                    "TRANSLATIONS"]:
+            newPdata[key] = []
+        
+        # iterate over all files checking for a reassignment
+        for key in ["SOURCES", "FORMS", "INTERFACES", "RESOURCES", "OTHERS",
+                    "TRANSLATIONS"]:
+            for fn in self.pdata[key][:]:
+                filetype = key
+                bfn = os.path.basename(fn)
+                for pattern in reversed(
+                        sorted(self.pdata["FILETYPES"].keys())):
+                    if fnmatch.fnmatch(bfn, pattern):
+                        filetype = self.pdata["FILETYPES"][pattern]
+                        break
+        
+                if filetype != "__IGNORE__":
+                    newPdata[filetype].append(fn)
+                    if filetype != key:
+                        reorganized = True
+        
+        if reorganized:
+            # copy the reorganized files back to the project
+            for key in ["SOURCES", "FORMS", "INTERFACES", "RESOURCES",
+                        "OTHERS", "TRANSLATIONS"]:
+                self.pdata[key] = newPdata[key][:]
+            
+            # repopulate the model
+            self.__model.projectClosed()
+            self.__model.projectOpened()
+        
     def copyDirectory(self, olddn, newdn):
         """
         Public slot to copy a directory.
@@ -2471,6 +2510,9 @@
             
             self.__model.projectPropertiesChanged()
             self.projectPropertiesChanged.emit()
+            
+            if self.pdata["PROJECTTYPE"][0] != projectType:
+                self.__reorganizeFiles()
         
     def __showUserProperties(self):
         """
@@ -2526,6 +2568,7 @@
         if dlg.exec_() == QDialog.Accepted:
             dlg.transferData()
             self.setDirty(True)
+            self.__reorganizeFiles()
         
     def __showLexerAssociations(self):
         """

eric ide

mercurial