Project/ProjectFormsBrowser.py

branch
Py2 comp.
changeset 2791
a9577f248f04
parent 2677
3d4277929fb3
parent 2776
43b8060a4b44
child 3057
10516539f238
--- a/Project/ProjectFormsBrowser.py	Mon Jul 08 21:47:26 2013 +0200
+++ b/Project/ProjectFormsBrowser.py	Mon Jul 08 22:36:10 2013 +0200
@@ -123,7 +123,7 @@
         self.menusAboutToBeCreated.emit()
         
         self.menu = QMenu(self)
-        if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"]:
+        if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
             self.menu.addAction(self.trUtf8('Compile form'), self.__compileForm)
             self.menu.addAction(self.trUtf8('Compile all forms'),
                 self.__compileAllForms)
@@ -154,6 +154,10 @@
                self.hooks["compileAllForms"] is not None or \
                self.hooks["generateDialogCode"] is not None:
                 self.menu.addSeparator()
+            if self.hooks["open"] is not None:
+                self.menu.addAction(
+                    self.hooksMenuEntries.get("open", self.trUtf8('Open')),
+                    self.__openFile)
             self.menu.addAction(self.trUtf8('Open'), self.__openFileInEditor)
         self.menu.addSeparator()
         act = self.menu.addAction(self.trUtf8('Rename file'), self._renameFile)
@@ -163,7 +167,7 @@
         act = self.menu.addAction(self.trUtf8('Delete'), self.__deleteFile)
         self.menuActions.append(act)
         self.menu.addSeparator()
-        if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"]:
+        if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
             self.menu.addAction(self.trUtf8('New form...'), self.__newForm)
         else:
             if self.hooks["newForm"] is not None:
@@ -185,7 +189,7 @@
         self.menu.addAction(self.trUtf8('Configure...'), self._configure)
 
         self.backMenu = QMenu(self)
-        if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"] or \
+        if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"] or \
            self.hooks["compileAllForms"] is not None:
             self.backMenu.addAction(self.trUtf8('Compile all forms'),
                 self.__compileAllForms)
@@ -210,7 +214,7 @@
 
         # create the menu for multiple selected files
         self.multiMenu = QMenu(self)
-        if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"]:
+        if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
             act = self.multiMenu.addAction(self.trUtf8('Compile forms'),
                 self.__compileSelectedForms)
             self.multiMenu.addSeparator()
@@ -228,6 +232,10 @@
                         self.trUtf8('Compile forms')),
                     self.__compileSelectedForms)
                 self.multiMenu.addSeparator()
+            if self.hooks["open"] is not None:
+                self.multiMenu.addAction(
+                    self.hooksMenuEntries.get("open", self.trUtf8('Open')),
+                    self.__openFile)
             self.multiMenu.addAction(self.trUtf8('Open'), self.__openFileInEditor)
         self.multiMenu.addSeparator()
         act = self.multiMenu.addAction(self.trUtf8('Remove from project'),
@@ -244,7 +252,7 @@
         self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure)
 
         self.dirMenu = QMenu(self)
-        if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"]:
+        if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
             self.dirMenu.addAction(self.trUtf8('Compile all forms'),
                 self.__compileAllForms)
             self.dirMenu.addSeparator()
@@ -260,7 +268,7 @@
         act = self.dirMenu.addAction(self.trUtf8('Delete'), self._deleteDirectory)
         self.dirMenuActions.append(act)
         self.dirMenu.addSeparator()
-        if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"]:
+        if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
             self.dirMenu.addAction(self.trUtf8('New form...'), self.__newForm)
         else:
             if self.hooks["newForm"] is not None:
@@ -282,7 +290,7 @@
         self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure)
         
         self.dirMultiMenu = QMenu(self)
-        if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"]:
+        if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
             self.dirMultiMenu.addAction(self.trUtf8('Compile all forms'),
                 self.__compileAllForms)
             self.dirMultiMenu.addSeparator()
@@ -429,7 +437,11 @@
         for itm in itmList[:]:
             try:
                 if isinstance(itm, ProjectBrowserFileItem):
-                    self.designerFile.emit(itm.fileName())
+                    # hook support
+                    if self.hooks["open"] is not None:
+                        self.hooks["open"](itm.fileName())
+                    else:
+                        self.designerFile.emit(itm.fileName())
             except:
                 pass
         
@@ -492,7 +504,7 @@
         if self.hooks["newForm"] is not None:
             self.hooks["newForm"](path)
         else:
-            if self.project.getProjectType() in ["Qt4", "E4Plugin", "PySide"]:
+            if self.project.getProjectType() in ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
                 self.__newUiForm(path)
         
     def __newUiForm(self, path):
@@ -594,8 +606,7 @@
         
         while self.compileProc and self.compileProc.canReadLine():
             self.buf += str(self.compileProc.readLine(),
-                            Preferences.getSystem("IOEncoding"),
-                            'replace')
+                            "utf-8", 'replace')
         
     def __readStderr(self):
         """
@@ -691,6 +702,12 @@
                     uic = self.uicompiler + '.bat'
                 else:
                     uic = self.uicompiler
+            elif self.project.getProjectType() == "PyQt5":
+                self.uicompiler = 'pyuic5'
+                if Utilities.isWindowsPlatform():
+                    uic = self.uicompiler + '.bat'
+                else:
+                    uic = self.uicompiler
             elif self.project.getProjectType() == "PySide":
                 self.uicompiler = 'pyside-uic'
                 uic = Utilities.generatePySideToolPath(self.uicompiler)
@@ -726,7 +743,7 @@
         
         self.noDialog = noDialog
         self.compileProc.start(uic, args)
-        procStarted = self.compileProc.waitForStarted()
+        procStarted = self.compileProc.waitForStarted(5000)
         if procStarted:
             self.compileRunning = True
             e5App().getObject("ViewManager").enableEditorsCheckFocusIn(False)
@@ -854,8 +871,8 @@
             self.hooks["compileChangedForms"](self.project.pdata["FORMS"])
         else:
             if self.project.getProjectType() not in \
-               ["Qt4", "Qt4C", "E4Plugin", "PySide"]:
-                # ignore the request for non Qt projects
+               ["Qt4", "PyQt5", "E4Plugin", "PySide"]:
+                # ignore the request for non Qt GUI projects
                 return
             
             progress = QProgressDialog(self.trUtf8("Determining changed forms..."),
@@ -926,6 +943,7 @@
         <li>compileChangedForms: takes list of filenames as parameter</li>
         <li>generateDialogCode: takes filename as parameter</li>
         <li>newForm: takes full directory path of new file as parameter</li>
+        <li>open: takes a filename as parameter</li>
         </ul>
         
         <b>Note</b>: Filenames are relative to the project directory, if not
@@ -938,4 +956,5 @@
             "compileSelectedForms": None,
             "generateDialogCode": None,
             "newForm": None,
+            "open": None,
         }

eric ide

mercurial