eric6/Project/ProjectFormsBrowser.py

changeset 7911
4621c9082a43
parent 7907
7991ea245c20
child 7923
91e843545d9a
equal deleted inserted replaced
7910:2eeec6bc49e6 7911:4621c9082a43
125 self.menusAboutToBeCreated.emit() 125 self.menusAboutToBeCreated.emit()
126 126
127 projectType = self.project.getProjectType() 127 projectType = self.project.getProjectType()
128 128
129 self.menu = QMenu(self) 129 self.menu = QMenu(self)
130 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]: 130 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"]:
131 self.menu.addAction( 131 self.menu.addAction(
132 self.tr('Compile form'), self.__compileForm) 132 self.tr('Compile form'), self.__compileForm)
133 self.menu.addAction( 133 self.menu.addAction(
134 self.tr('Compile all forms'), 134 self.tr('Compile all forms'),
135 self.__compileAllForms) 135 self.__compileAllForms)
185 self.tr('Remove from project'), self._removeFile) 185 self.tr('Remove from project'), self._removeFile)
186 self.menuActions.append(act) 186 self.menuActions.append(act)
187 act = self.menu.addAction(self.tr('Delete'), self.__deleteFile) 187 act = self.menu.addAction(self.tr('Delete'), self.__deleteFile)
188 self.menuActions.append(act) 188 self.menuActions.append(act)
189 self.menu.addSeparator() 189 self.menu.addSeparator()
190 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]: 190 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"]:
191 self.menu.addAction(self.tr('New form...'), self.__newForm) 191 self.menu.addAction(self.tr('New form...'), self.__newForm)
192 else: 192 else:
193 if self.hooks["newForm"] is not None: 193 if self.hooks["newForm"] is not None:
194 self.menu.addAction( 194 self.menu.addAction(
195 self.hooksMenuEntries.get( 195 self.hooksMenuEntries.get(
208 self.menu.addSeparator() 208 self.menu.addSeparator()
209 self.menu.addAction(self.tr('Configure...'), self._configure) 209 self.menu.addAction(self.tr('Configure...'), self._configure)
210 210
211 self.backMenu = QMenu(self) 211 self.backMenu = QMenu(self)
212 if ( 212 if (
213 projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"] or 213 projectType in [
214 self.hooks["compileAllForms"] is not None 214 "PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"
215 ] or self.hooks["compileAllForms"] is not None
215 ): 216 ):
216 self.backMenu.addAction( 217 self.backMenu.addAction(
217 self.tr('Compile all forms'), self.__compileAllForms) 218 self.tr('Compile all forms'), self.__compileAllForms)
218 self.backMenu.addSeparator() 219 self.backMenu.addSeparator()
219 self.__pyuicBackConfigAct = self.backMenu.addAction( 220 self.__pyuicBackConfigAct = self.backMenu.addAction(
239 self.backMenu.addAction(self.tr('Configure...'), self._configure) 240 self.backMenu.addAction(self.tr('Configure...'), self._configure)
240 self.backMenu.setEnabled(False) 241 self.backMenu.setEnabled(False)
241 242
242 # create the menu for multiple selected files 243 # create the menu for multiple selected files
243 self.multiMenu = QMenu(self) 244 self.multiMenu = QMenu(self)
244 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]: 245 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"]:
245 self.multiMenu.addAction( 246 self.multiMenu.addAction(
246 self.tr('Compile forms'), self.__compileSelectedForms) 247 self.tr('Compile forms'), self.__compileSelectedForms)
247 self.multiMenu.addSeparator() 248 self.multiMenu.addSeparator()
248 self.__pyuicMultiConfigAct = self.multiMenu.addAction( 249 self.__pyuicMultiConfigAct = self.multiMenu.addAction(
249 self.tr('Configure uic Compiler'), 250 self.tr('Configure uic Compiler'),
284 self.tr('Collapse all directories'), self._collapseAllDirs) 285 self.tr('Collapse all directories'), self._collapseAllDirs)
285 self.multiMenu.addSeparator() 286 self.multiMenu.addSeparator()
286 self.multiMenu.addAction(self.tr('Configure...'), self._configure) 287 self.multiMenu.addAction(self.tr('Configure...'), self._configure)
287 288
288 self.dirMenu = QMenu(self) 289 self.dirMenu = QMenu(self)
289 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]: 290 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"]:
290 self.dirMenu.addAction( 291 self.dirMenu.addAction(
291 self.tr('Compile all forms'), self.__compileAllForms) 292 self.tr('Compile all forms'), self.__compileAllForms)
292 self.dirMenu.addSeparator() 293 self.dirMenu.addSeparator()
293 self.__pyuicDirConfigAct = self.dirMenu.addAction( 294 self.__pyuicDirConfigAct = self.dirMenu.addAction(
294 self.tr('Configure uic Compiler'), 295 self.tr('Configure uic Compiler'),
307 self.dirMenuActions.append(act) 308 self.dirMenuActions.append(act)
308 act = self.dirMenu.addAction( 309 act = self.dirMenu.addAction(
309 self.tr('Delete'), self._deleteDirectory) 310 self.tr('Delete'), self._deleteDirectory)
310 self.dirMenuActions.append(act) 311 self.dirMenuActions.append(act)
311 self.dirMenu.addSeparator() 312 self.dirMenu.addSeparator()
312 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]: 313 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"]:
313 self.dirMenu.addAction(self.tr('New form...'), self.__newForm) 314 self.dirMenu.addAction(self.tr('New form...'), self.__newForm)
314 else: 315 else:
315 if self.hooks["newForm"] is not None: 316 if self.hooks["newForm"] is not None:
316 self.dirMenu.addAction( 317 self.dirMenu.addAction(
317 self.hooksMenuEntries.get( 318 self.hooksMenuEntries.get(
331 self.tr('Collapse all directories'), self._collapseAllDirs) 332 self.tr('Collapse all directories'), self._collapseAllDirs)
332 self.dirMenu.addSeparator() 333 self.dirMenu.addSeparator()
333 self.dirMenu.addAction(self.tr('Configure...'), self._configure) 334 self.dirMenu.addAction(self.tr('Configure...'), self._configure)
334 335
335 self.dirMultiMenu = QMenu(self) 336 self.dirMultiMenu = QMenu(self)
336 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2"]: 337 if projectType in ["PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"]:
337 self.dirMultiMenu.addAction( 338 self.dirMultiMenu.addAction(
338 self.tr('Compile all forms'), self.__compileAllForms) 339 self.tr('Compile all forms'), self.__compileAllForms)
339 self.dirMultiMenu.addSeparator() 340 self.dirMultiMenu.addSeparator()
340 self.__pyuicDirMultiConfigAct = self.dirMultiMenu.addAction( 341 self.__pyuicDirMultiConfigAct = self.dirMultiMenu.addAction(
341 self.tr('Configure uic Compiler'), 342 self.tr('Configure uic Compiler'),
566 567
567 if self.hooks["newForm"] is not None: 568 if self.hooks["newForm"] is not None:
568 self.hooks["newForm"](path) 569 self.hooks["newForm"](path)
569 else: 570 else:
570 if self.project.getProjectType() in [ 571 if self.project.getProjectType() in [
571 "PyQt5", "PyQt6", "E6Plugin", "PySide2" 572 "PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"
572 ]: 573 ]:
573 self.__newUiForm(path) 574 self.__newUiForm(path)
574 575
575 def __newUiForm(self, path): 576 def __newUiForm(self, path):
576 """ 577 """
690 elif self.project.getProjectType() in ["E6Plugin"]: 691 elif self.project.getProjectType() in ["E6Plugin"]:
691 self.__uicompiler = Utilities.generatePyQtToolPath( 692 self.__uicompiler = Utilities.generatePyQtToolPath(
692 'pyuic5', ["py3uic5"]) 693 'pyuic5', ["py3uic5"])
693 elif self.project.getProjectType() == "PySide2": 694 elif self.project.getProjectType() == "PySide2":
694 self.__uicompiler = Utilities.generatePySideToolPath( 695 self.__uicompiler = Utilities.generatePySideToolPath(
695 'pyside2-uic') 696 'pyside2-uic', variant=2)
697 elif self.project.getProjectType() == "PySide6":
698 self.__uicompiler = Utilities.generatePySideToolPath(
699 'pyside6-uic', variant=6)
696 700
697 def getUiCompiler(self): 701 def getUiCompiler(self):
698 """ 702 """
699 Public method to get the UI compiler executable of the project. 703 Public method to get the UI compiler executable of the project.
700 704
707 return self.__uicompiler 711 return self.__uicompiler
708 712
709 def __readStdout(self): 713 def __readStdout(self):
710 """ 714 """
711 Private slot to handle the readyReadStandardOutput signal of the 715 Private slot to handle the readyReadStandardOutput signal of the
712 pyuic5/pyuic6/pyside2-uic process. 716 pyuic5/pyuic6/pyside2-uic/pyside6-uic process.
713 """ 717 """
714 if self.compileProc is None: 718 if self.compileProc is None:
715 return 719 return
716 self.compileProc.setReadChannel(QProcess.StandardOutput) 720 self.compileProc.setReadChannel(QProcess.StandardOutput)
717 721
720 "utf-8", 'replace') 724 "utf-8", 'replace')
721 725
722 def __readStderr(self): 726 def __readStderr(self):
723 """ 727 """
724 Private slot to handle the readyReadStandardError signal of the 728 Private slot to handle the readyReadStandardError signal of the
725 pyuic5/pyuic6/pyside2-uic process. 729 pyuic5/pyuic6/pyside2-uic/pyside6-uic process.
726 """ 730 """
727 if self.compileProc is None: 731 if self.compileProc is None:
728 return 732 return
729 733
730 ioEncoding = Preferences.getSystem("IOEncoding") 734 ioEncoding = Preferences.getSystem("IOEncoding")
826 830
827 if self.project.getProjectType() == "PySide2": 831 if self.project.getProjectType() == "PySide2":
828 # PySide2 832 # PySide2
829 if Preferences.getQt("PySide2FromImports"): 833 if Preferences.getQt("PySide2FromImports"):
830 args.append("--from-imports") 834 args.append("--from-imports")
835 elif self.project.getProjectType() == "PySide6":
836 # PySide6
837 if Preferences.getQt("PySide6FromImports"):
838 args.append("--from-imports")
831 elif self.project.getProjectType() == "PyQt6": 839 elif self.project.getProjectType() == "PyQt6":
832 # PyQt6 840 # PyQt6
833 if Preferences.getQt("Pyuic6Execute"): 841 if Preferences.getQt("Pyuic6Execute"):
834 args.append("-x") 842 args.append("-x")
835 indentWidth = Preferences.getQt("Pyuic6Indent") 843 indentWidth = Preferences.getQt("Pyuic6Indent")
998 """ 1006 """
999 if self.hooks["compileChangedForms"] is not None: 1007 if self.hooks["compileChangedForms"] is not None:
1000 self.hooks["compileChangedForms"](self.project.pdata["FORMS"]) 1008 self.hooks["compileChangedForms"](self.project.pdata["FORMS"])
1001 else: 1009 else:
1002 if self.project.getProjectType() not in [ 1010 if self.project.getProjectType() not in [
1003 "PyQt5", "PyQt6", "E6Plugin", "PySide2" 1011 "PyQt5", "PyQt6", "E6Plugin", "PySide2", "PySide6"
1004 ]: 1012 ]:
1005 # ignore the request for non Qt GUI projects 1013 # ignore the request for non Qt GUI projects
1006 return 1014 return
1007 1015
1008 progress = E5ProgressDialog( 1016 progress = E5ProgressDialog(

eric ide

mercurial