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( |