def on_addButton_clicked(self):
        """
        Private slot to add documents to the help database.
        """
        fileNames = E5FileDialog.getOpenFileNames(
            self, self.tr("Add Documentation"), "",
            self.tr("Qt Compressed Help Files (*.qch)"))
        if not fileNames:
            return

        for fileName in fileNames:
            ns = QHelpEngineCore.namespaceName(fileName)
            if not ns:
                E5MessageBox.warning(
                    self, self.tr("Add Documentation"),
                    self.tr("""The file <b>{0}</b> is not a valid"""
                            """ Qt Help File.""").format(fileName))
                continue

            if len(self.documentsList.findItems(ns, Qt.MatchFixedString)):
                E5MessageBox.warning(
                    self, self.tr("Add Documentation"),
                    self.tr(
                        """The namespace <b>{0}</b> is already registered.""").
                    format(ns))
                continue

            self.__engine.registerDocumentation(fileName)
            self.documentsList.addItem(ns)
            self.__registeredDocs.append(ns)
            if ns in self.__unregisteredDocs:
                self.__unregisteredDocs.remove(ns)
    def __installLibraryFiles(self):
        """
        Private slot to install Python files into the onboard library.
        """
        if not self.__deviceVolumeMounted():
            E5MessageBox.critical(
                self.microPython, self.tr("Install Library Files"),
                self.tr("""The device volume "<b>{0}</b>" is not available."""
                        """ Ensure it is mounted properly and try again."""))
            return

        target = os.path.join(self.getWorkspace(), "lib")
        # ensure that the library directory exists on the device
        if not os.path.isdir(target):
            os.makedirs(target)

        libraryFiles = E5FileDialog.getOpenFileNames(
            self.microPython, self.tr("Install Library Files"),
            os.path.expanduser("~"),
            self.tr("Compiled Python Files (*.mpy);;"
                    "Python Files (*.py);;"
                    "All Files (*)"))

        for libraryFile in libraryFiles:
            if os.path.exists(libraryFile):
                shutil.copy2(libraryFile, target)
    def on_addDocumentsButton_clicked(self):
        """
        Private slot to add QtHelp documents to the help database.
        """
        fileNames = E5FileDialog.getOpenFileNames(
            self, self.tr("Add Documentation"), "",
            self.tr("Qt Compressed Help Files (*.qch)"))
        if not fileNames:
            return

        self.__registerDocumentations(fileNames)
Esempio n. 4
0
    def __openWidget(self):
        """
        Private slot to handle the Open Dialog action.
        """
        fileNameList = E5FileDialog.getOpenFileNames(
            None, self.tr("Select UI files"), "",
            self.tr("Qt User-Interface Files (*.ui)"))

        for fileName in fileNameList:
            self.preview.loadWidget(fileName)

        self.__updateActions()
Esempio n. 5
0
    def __openTranslation(self):
        """
        Private slot to handle the Open Translation action.
        """
        fileNameList = E5FileDialog.getOpenFileNames(
            None, self.tr("Select translation files"), "",
            self.tr("Qt Translation Files (*.qm)"))

        first = True
        for fileName in fileNameList:
            self.translations.add(fileName, first)
            first = False

        self.__updateActions()
Esempio n. 6
0
 def __openWidget(self):
     """
     Private slot to handle the Open Dialog action.
     """
     fileNameList = E5FileDialog.getOpenFileNames(
         None,
         self.tr("Select UI files"),
         "",
         self.tr("Qt User-Interface Files (*.ui)"))
     
     for fileName in fileNameList:
         self.preview.loadWidget(fileName)
     
     self.__updateActions()
Esempio n. 7
0
 def on_addScriptButton_clicked(self):
     """
     Private slot to add scripts to the list.
     """
     startDir = self.packageRootEdit.text() or self.__getStartDir()
     scriptsList = E5FileDialog.getOpenFileNames(
         self, self.tr("Add Scripts"), startDir,
         self.tr("Python Files (*.py);;All Files(*)"))
     for script in scriptsList:
         script = script.replace(Utilities.toNativeSeparators(startDir), "")
         if script.startswith(("\\", "/")):
             script = script[1:]
         if script:
             QListWidgetItem(Utilities.fromNativeSeparators(script),
                             self.scriptsList)
Esempio n. 8
0
    def on_addButton_clicked(self):
        """
        Private slot to add a new search engine.
        """
        fileNames = E5FileDialog.getOpenFileNames(
            self, self.tr("Add search engine"), "",
            self.tr("OpenSearch (*.xml);;All Files (*)"))

        osm = self.__mw.openSearchManager()
        for fileName in fileNames:
            if not osm.addEngine(fileName):
                E5MessageBox.critical(
                    self, self.tr("Add search engine"),
                    self.tr(
                        """{0} is not a valid OpenSearch 1.1 description or"""
                        """ is already on your list.""").format(fileName))
Esempio n. 9
0
 def __openTranslation(self):
     """
     Private slot to handle the Open Translation action.
     """
     fileNameList = E5FileDialog.getOpenFileNames(
         None,
         self.tr("Select translation files"),
         "",
         self.tr("Qt Translation Files (*.qm)"))
     
     first = True
     for fileName in fileNameList:
         self.translations.add(fileName, first)
         first = False
     
     self.__updateActions()
Esempio n. 10
0
    def on_addButton_clicked(self):
        """
        Private slot to add patch files to the list.
        """
        patchFiles = E5FileDialog.getOpenFileNames(
            self, self.tr("Patch Files"), self.__rootDir,
            self.tr("Patch Files (*.diff *.patch);;All Files (*)"))
        if patchFiles:
            currentPatchFiles = self.__getPatchFilesList()
            for patchFile in patchFiles:
                patchFile = Utilities.toNativeSeparators(patchFile)
                if patchFile not in currentPatchFiles:
                    self.patchFilesList.addItem(patchFile)

        self.__okButton.setEnabled(len(self.__getPatchFilesList()) > 0)
        self.on_patchFilesList_itemSelectionChanged()
Esempio n. 11
0
 def on_addModuleButton_clicked(self):
     """
     Private slot to add Python modules to the list.
     """
     startDir = self.packageRootEdit.text() or self.__getStartDir()
     modulesList = E5FileDialog.getOpenFileNames(
         self, self.tr("Add Python Modules"), startDir,
         self.tr("Python Files (*.py)"))
     for module in modulesList:
         module = module.replace(Utilities.toNativeSeparators(startDir), "")
         if module.startswith(("\\", "/")):
             module = module[1:]
         if module:
             QListWidgetItem(
                 os.path.splitext(module)[0].replace("\\",
                                                     ".").replace("/", "."),
                 self.modulesList)
Esempio n. 12
0
 def __installRequirements(self):
     """
     Private slot to install packages from requirements files.
     """
     prefix = self.environmentsComboBox.itemData(
         self.environmentsComboBox.currentIndex())
     if prefix:
         requirements = E5FileDialog.getOpenFileNames(
             self,
             self.tr("Install Packages"),
             "",
             self.tr("Text Files (*.txt);;All Files (*)"))
         if requirements:
             args = []
             for requirement in requirements:
                 args.extend(["--file", requirement])
             ok = self.__conda.installPackages(args, prefix=prefix)
             if ok:
                 self.on_refreshButton_clicked()
Esempio n. 13
0
 def on_addButton_clicked(self):
     """
     Private slot to add a new search engine.
     """
     fileNames = E5FileDialog.getOpenFileNames(
         self,
         self.tr("Add search engine"),
         "",
         self.tr("OpenSearch (*.xml);;All Files (*)"))
     
     osm = self.__mw.openSearchManager()
     for fileName in fileNames:
         if not osm.addEngine(fileName):
             E5MessageBox.critical(
                 self,
                 self.tr("Add search engine"),
                 self.tr(
                     """{0} is not a valid OpenSearch 1.1 description or"""
                     """ is already on your list.""").format(fileName))
Esempio n. 14
0
    def on_addArchivesButton_clicked(self):
        """
        Private slot to select plugin ZIP-archives via a file selection dialog.
        """
        dn = Preferences.getPluginManager("DownloadPath")
        archives = E5FileDialog.getOpenFileNames(
            self, self.tr("Select plugin ZIP-archives"), dn,
            self.tr("Plugin archive (*.zip)"))

        if archives:
            matchflags = Qt.MatchFixedString
            if not Utilities.isWindowsPlatform():
                matchflags |= Qt.MatchCaseSensitive
            for archive in archives:
                if len(self.archivesList.findItems(archive, matchflags)) == 0:
                    # entry not in list already
                    self.archivesList.addItem(archive)
            self.archivesList.sortItems()

        self.__nextButton.setEnabled(self.archivesList.count() > 0)
Esempio n. 15
0
 def on_fixtureFileButton_clicked(self):
     """
     Private slot to select a fixture file via a file selection dialog.
     """
     fileFilters = self.tr("JSON Files (*.json);;XML Files (*.xml);;")
     try:
         import yaml     # __IGNORE_WARNING__
         fileFilters += self.tr("YAML Files (*.yaml);;")
     except ImportError:
         pass
     fileFilters += self.tr("All Files (*)")
     
     fixtureFiles = E5FileDialog.getOpenFileNames(
         self,
         self.tr("Select fixture file"),
         self.__project.getProjectPath(),
         fileFilters)
     
     if fixtureFiles:
         self.fixturesEdit.setText(" ".join(
             [Utilities.toNativeSeparators(f) for f in fixtureFiles]))
Esempio n. 16
0
 def on_addButton_clicked(self):
     """
     Private slot to add documents to the help database.
     """
     fileNames = E5FileDialog.getOpenFileNames(
         self,
         self.tr("Add Documentation"),
         "",
         self.tr("Qt Compressed Help Files (*.qch)"))
     if not fileNames:
         return
     
     for fileName in fileNames:
         ns = QHelpEngineCore.namespaceName(fileName)
         if not ns:
             E5MessageBox.warning(
                 self,
                 self.tr("Add Documentation"),
                 self.tr(
                     """The file <b>{0}</b> is not a valid"""
                     """ Qt Help File.""").format(fileName)
             )
             continue
         
         if len(self.documentsList.findItems(ns, Qt.MatchFixedString)):
             E5MessageBox.warning(
                 self,
                 self.tr("Add Documentation"),
                 self.tr(
                     """The namespace <b>{0}</b> is already registered.""")
                 .format(ns)
             )
             continue
         
         self.__engine.registerDocumentation(fileName)
         self.documentsList.addItem(ns)
         self.__registeredDocs.append(ns)
         if ns in self.__unregisteredDocs:
             self.__unregisteredDocs.remove(ns)
Esempio n. 17
0
 def on_addArchivesButton_clicked(self):
     """
     Private slot to select plugin ZIP-archives via a file selection dialog.
     """
     dn = Preferences.getPluginManager("DownloadPath")
     archives = E5FileDialog.getOpenFileNames(
         self,
         self.tr("Select plugin ZIP-archives"),
         dn,
         self.tr("Plugin archive (*.zip)"))
     
     if archives:
         matchflags = Qt.MatchFixedString
         if not Utilities.isWindowsPlatform():
             matchflags |= Qt.MatchCaseSensitive
         for archive in archives:
             if len(self.archivesList.findItems(archive, matchflags)) == 0:
                 # entry not in list already
                 self.archivesList.addItem(archive)
         self.archivesList.sortItems()
     
     self.__nextButton.setEnabled(self.archivesList.count() > 0)
Esempio n. 18
0
    def on_sourceFileButton_clicked(self):
        """
        Private slot to display a file selection dialog.
        """
        dir = self.sourceFileEdit.text().split(os.pathsep, 1)[0]
        if not dir:
            if self.startdir is not None:
                dir = self.startdir
            else:
                dir = self.targetDirEdit.text()
        if self.filter is None:
            patterns = {
                "SOURCES": [],
                "FORMS": [],
                "RESOURCES": [],
                "INTERFACES": [],
                "TRANSLATIONS": [],
            }
            for pattern, filetype in list(self.filetypes.items()):
                if filetype in patterns:
                    patterns[filetype].append(pattern)
            dfilter = self.tr(
                "Source Files ({0});;"
                "Forms Files ({1});;"
                "Resource Files ({2});;"
                "Interface Files ({3});;"
                "Translation Files ({4});;"
                "All Files (*)")\
                .format(
                    " ".join(patterns["SOURCES"]),
                    " ".join(patterns["FORMS"]),
                    " ".join(patterns["RESOURCES"]),
                    " ".join(patterns["INTERFACES"]),
                    " ".join(patterns["TRANSLATIONS"]))
            caption = self.tr("Select Files")
        elif self.filter == 'form':
            patterns = []
            for pattern, filetype in list(self.filetypes.items()):
                if filetype == "FORMS":
                    patterns.append(pattern)
            dfilter = self.tr("Forms Files ({0})")\
                .format(" ".join(patterns))
            caption = self.tr("Select user-interface files")
        elif self.filter == "resource":
            patterns = []
            for pattern, filetype in list(self.filetypes.items()):
                if filetype == "RESOURCES":
                    patterns.append(pattern)
            dfilter = self.tr("Resource Files ({0})")\
                .format(" ".join(patterns))
            caption = self.tr("Select resource files")
        elif self.filter == 'source':
            patterns = []
            for pattern, filetype in list(self.filetypes.items()):
                if filetype == "SOURCES":
                    patterns.append(pattern)
            dfilter = self.tr("Source Files ({0});;All Files (*)")\
                .format(" ".join(patterns))
            caption = self.tr("Select source files")
        elif self.filter == 'interface':
            patterns = []
            for pattern, filetype in list(self.filetypes.items()):
                if filetype == "INTERFACES":
                    patterns.append(pattern)
            dfilter = self.tr("Interface Files ({0})")\
                .format(" ".join(patterns))
            caption = self.tr("Select interface files")
        elif self.filter == 'translation':
            patterns = []
            for pattern, filetype in list(self.filetypes.items()):
                if filetype == "TRANSLATIONS":
                    patterns.append(pattern)
            dfilter = self.tr("Translation Files ({0})")\
                .format(" ".join(patterns))
            caption = self.tr("Select translation files")
        elif self.filter == 'others':
            dfilter = self.tr("All Files (*)")
            caption = self.tr("Select files")
        else:
            return

        fnames = E5FileDialog.getOpenFileNames(self, caption, dir, dfilter)

        if len(fnames):
            self.sourceFileEdit.setText(
                Utilities.toNativeSeparators(os.pathsep.join(fnames)))
Esempio n. 19
0
 def on_sourceFileButton_clicked(self):
     """
     Private slot to display a file selection dialog.
     """
     dir = self.sourceFileEdit.text().split(os.pathsep, 1)[0]
     if not dir:
         if self.startdir is not None:
             dir = self.startdir
         else:
             dir = self.targetDirEdit.text()
     if self.filter is None:
         patterns = {
             "SOURCES": [],
             "FORMS": [],
             "RESOURCES": [],
             "INTERFACES": [],
             "TRANSLATIONS": [],
         }
         for pattern, filetype in list(self.filetypes.items()):
             if filetype in patterns:
                 patterns[filetype].append(pattern)
         dfilter = self.tr(
             "Source Files ({0});;"
             "Forms Files ({1});;"
             "Resource Files ({2});;"
             "Interface Files ({3});;"
             "Translation Files ({4});;"
             "All Files (*)")\
             .format(
                 " ".join(patterns["SOURCES"]),
                 " ".join(patterns["FORMS"]),
                 " ".join(patterns["RESOURCES"]),
                 " ".join(patterns["INTERFACES"]),
                 " ".join(patterns["TRANSLATIONS"]))
         caption = self.tr("Select Files")
     elif self.filter == 'form':
         patterns = []
         for pattern, filetype in list(self.filetypes.items()):
             if filetype == "FORMS":
                 patterns.append(pattern)
         dfilter = self.tr("Forms Files ({0})")\
             .format(" ".join(patterns))
         caption = self.tr("Select user-interface files")
     elif self.filter == "resource":
         patterns = []
         for pattern, filetype in list(self.filetypes.items()):
             if filetype == "RESOURCES":
                 patterns.append(pattern)
         dfilter = self.tr("Resource Files ({0})")\
             .format(" ".join(patterns))
         caption = self.tr("Select resource files")
     elif self.filter == 'source':
         patterns = []
         for pattern, filetype in list(self.filetypes.items()):
             if filetype == "SOURCES":
                 patterns.append(pattern)
         dfilter = self.tr("Source Files ({0});;All Files (*)")\
             .format(" ".join(patterns))
         caption = self.tr("Select source files")
     elif self.filter == 'interface':
         patterns = []
         for pattern, filetype in list(self.filetypes.items()):
             if filetype == "INTERFACES":
                 patterns.append(pattern)
         dfilter = self.tr("Interface Files ({0})")\
             .format(" ".join(patterns))
         caption = self.tr("Select interface files")
     elif self.filter == 'translation':
         patterns = []
         for pattern, filetype in list(self.filetypes.items()):
             if filetype == "TRANSLATIONS":
                 patterns.append(pattern)
         dfilter = self.tr("Translation Files ({0})")\
             .format(" ".join(patterns))
         caption = self.tr("Select translation files")
     elif self.filter == 'others':
         dfilter = self.tr("All Files (*)")
         caption = self.tr("Select files")
     else:
         return
     
     fnames = E5FileDialog.getOpenFileNames(self, caption, dir, dfilter)
     
     if len(fnames):
         self.sourceFileEdit.setText(Utilities.toNativeSeparators(
             os.pathsep.join(fnames)))