def getAllInstalled(self, testLoad=True): """ Build the localCache """ self.localCache = {} # reversed list of the plugin paths: first system plugins -> then user plugins -> finally custom path(s) pluginPaths = list(plugin_paths) pluginPaths.reverse() for pluginsPath in pluginPaths: isTheSystemDir = (pluginPaths.index(pluginsPath)==0) # The curent dir is the system plugins dir if isTheSystemDir: # temporarily add the system path as the first element to force loading the readonly plugins, even if masked by user ones. sys.path = [pluginsPath] + sys.path try: pluginDir = QDir(pluginsPath) pluginDir.setFilter(QDir.AllDirs) for key in pluginDir.entryList(): if key not in [".",".."]: path = QDir.convertSeparators( pluginsPath + "/" + key ) # readOnly = not QFileInfo(pluginsPath).isWritable() # On windows testing the writable status isn't reliable. readOnly = isTheSystemDir # Assume only the system plugins are not writable. # only test those not yet loaded. Loaded plugins already proved they're o.k. testLoadThis = testLoad and key not in qgis.utils.plugins plugin = self.getInstalledPlugin(key, path=path, readOnly=readOnly, testLoad=testLoadThis) self.localCache[key] = plugin if key in self.localCache.keys() and compareVersions(self.localCache[key]["version_installed"],plugin["version_installed"]) == 1: # An obsolete plugin in the "user" location is masking a newer one in the "system" location! self.obsoletePlugins += [key] except: # it's not necessary to stop if one of the dirs is inaccessible pass if isTheSystemDir: # remove the temporarily added path sys.path.remove(pluginsPath)
def readAllApps(self): self.allapps.clear() directoryLocal = QDir(self.folderlist.DirpathLocal) directoryLocal.setFilter(QDir.Files | QDir.Hidden); directoryLocal.setNameFilters(QStringList("*.desktop")) directoryGlobal = QDir(self.folderlist.DirpathGlobal) directoryGlobal.setFilter(QDir.Files | QDir.Hidden); directoryGlobal.setNameFilters(QStringList("*.desktop")) for file in directoryGlobal.entryList(): if not self.getAppIsNoDisplay(self.folderlist.DirpathGlobal + file): part = self.folderlist.getNameFromDirFile(self.folderlist.DirpathGlobal + file) icon = self.folderlist.getIconFromDirFile(self.folderlist.DirpathGlobal + file) self.allapps[part] = {} self.allapps[part]["path"] = self.folderlist.DirpathGlobal + file self.allapps[part]["icon"] = icon for file in directoryLocal.entryList(): if not self.getAppIsNoDisplay(self.folderlist.DirpathLocal + file): part = self.folderlist.getNameFromDirFile(self.folderlist.DirpathLocal + file) icon = self.folderlist.getIconFromDirFile(self.folderlist.DirpathLocal + file) self.allapps[part] = {} self.allapps[part]["path"] = self.folderlist.DirpathLocal + file self.allapps[part]["icon"] = icon
def inputDir(self): settings = QSettings() lastDir = settings.value("/fTools/lastShapeDir", ".") inDir = QFileDialog.getExistingDirectory( self, self.tr("Select directory with shapefiles to merge"), lastDir ) if not inDir: return workDir = QDir(inDir) workDir.setFilter(QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot) nameFilter = ["*.shp", "*.SHP"] workDir.setNameFilters(nameFilter) self.inputFiles = workDir.entryList() if len(self.inputFiles) == 0: QMessageBox.warning( self, self.tr("No shapefiles found"), self.tr("There are no shapefiles in this directory. Please select another one.")) self.inputFiles = None return settings.setValue("/fTools/lastShapeDir", inDir) self.progressFiles.setRange(0, len(self.inputFiles)) self.leInputDir.setText(inDir)
def getRasterFiles(path, recursive=False): rasters = [] if not QFileInfo(path).exists(): return rasters # TODO remove *.aux.xml _filter = getRasterExtensions() workDir = QDir( path ) workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot ) workDir.setNameFilters( _filter ) files = workDir.entryList() for f in files: rasters.append( path + "/" + f ) if recursive: for myRoot, myDirs, myFiles in os.walk( unicode(path) ): for dir in myDirs: workDir = QDir( myRoot + "/" + dir ) workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot ) workDir.setNameFilters( _filter ) workFiles = workDir.entryList() for f in workFiles: rasters.append( myRoot + "/" + dir + "/" + f ) return rasters
def batchRun(self): exts = re.sub('\).*$', '', re.sub('^.*\(', '', self.formatCombo.currentText())).split(" ") if len(exts) > 0 and exts[0] != "*" and exts[0] != "*.*": outExt = exts[0].replace( "*", "" ) else: outExt = ".tif" self.base.enableRun( False ) self.base.setCursor( Qt.WaitCursor ) inDir = self.getInputFileName() outDir = self.getOutputFileName() filter = Utils.getRasterExtensions() workDir = QDir( inDir ) workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot ) workDir.setNameFilters( filter ) files = workDir.entryList() self.inFiles = [] self.outFiles = [] for f in files: self.inFiles.append( inDir + "/" + f ) if outDir is not None: outFile = re.sub( "\.[a-zA-Z0-9]{2,4}", outExt, f ) self.outFiles.append( outDir + "/" + outFile ) self.errors = [] self.batchIndex = 0 self.batchTotal = len( self.inFiles ) self.setProgressRange( self.batchTotal ) self.runItem( self.batchIndex, self.batchTotal )
def batchRun(self): exts = re.sub('\).*$', '', re.sub('^.*\(', '', self.formatCombo.currentText())).split(" ") if len(exts) > 0 and exts[0] != "*" and exts[0] != "*.*": outExt = exts[0].replace( "*", "" ) else: outExt = ".tif" self.base.enableRun( False ) self.base.setCursor( Qt.WaitCursor ) inDir = self.getInputFileName() outDir = self.getOutputFileName() extensions = Utils.getRasterExtensions() workDir = QDir( inDir ) workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot ) workDir.setNameFilters( extensions ) files = workDir.entryList() self.inFiles = [] self.outFiles = [] for f in files: self.inFiles.append( inDir + "/" + f ) if outDir is not None: outFile = re.sub( "\.[a-zA-Z0-9]{2,4}", outExt, f ) self.outFiles.append( outDir + "/" + outFile ) self.errors = [] self.batchIndex = 0 self.batchTotal = len( self.inFiles ) self.setProgressRange( self.batchTotal ) self.runItem( self.batchIndex, self.batchTotal )
def accept(self): if self.inputFiles is None: workDir = QDir(self.leInputDir.text()) workDir.setFilter(QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot) nameFilter = ["*.shp", "*.SHP"] workDir.setNameFilters(nameFilter) self.inputFiles = workDir.entryList() if len(self.inputFiles) == 0: QMessageBox.warning( self, self.tr("No shapefiles found"), self.tr("There are no shapefiles in this directory. Please select another one.")) self.inputFiles = None return if self.outFileName is None: QMessageBox.warning( self, self.tr("No output file"), self.tr("Please specify output file.")) return if self.chkListMode.isChecked(): files = self.leInputDir.text().split(";") baseDir = QFileInfo(files[0]).absolutePath() else: baseDir = self.leInputDir.text() # look for shapes with specified geometry type self.inputFiles = ftools_utils.getShapesByGeometryType(baseDir, self.inputFiles, self.cmbGeometry.currentIndex()) if self.inputFiles is None: QMessageBox.warning( self, self.tr("No shapefiles found"), self.tr("There are no shapefiles with the given geometry type. Please select an available geometry type.")) return self.progressFiles.setRange(0, len(self.inputFiles)) outFile = QFile(self.outFileName) if outFile.exists(): if not QgsVectorFileWriter.deleteShapeFile(self.outFileName): QMessageBox.warning(self, self.tr("Delete error"), self.tr("Can't delete file %s") % (self.outFileName)) return if self.inEncoding is None: self.inEncoding = "System" self.btnOk.setEnabled(False) self.mergeThread = ShapeMergeThread(baseDir, self.inputFiles, self.inEncoding, self.outFileName, self.encoding) QObject.connect(self.mergeThread, SIGNAL("rangeChanged( PyQt_PyObject )"), self.setFeatureProgressRange) QObject.connect(self.mergeThread, SIGNAL("checkStarted()"), self.setFeatureProgressFormat) QObject.connect(self.mergeThread, SIGNAL("checkFinished()"), self.resetFeatureProgressFormat) QObject.connect(self.mergeThread, SIGNAL("fileNameChanged( PyQt_PyObject )"), self.setShapeProgressFormat) QObject.connect(self.mergeThread, SIGNAL("featureProcessed()"), self.featureProcessed) QObject.connect(self.mergeThread, SIGNAL("shapeProcessed()"), self.shapeProcessed) QObject.connect(self.mergeThread, SIGNAL("processingFinished()"), self.processingFinished) QObject.connect(self.mergeThread, SIGNAL("processingInterrupted()"), self.processingInterrupted) self.btnClose.setText(self.tr("Cancel")) QObject.disconnect(self.buttonBox, SIGNAL("rejected()"), self.reject) QObject.connect(self.btnClose, SIGNAL("clicked()"), self.stopProcessing) self.mergeThread.start()
def getThemeList(self): dir = QDir("/usr/share/enlightenment/data/themes") dir.setFilter( QDir.NoSymLinks | QDir.Files ) a = QStringList() a.append("*.edj") dir.setNameFilters(a) return dir.entryList()
def tearDown(self): del self.settings del self.metadata['dir'] del self.app outputDir = QDir(self.outputPath) outputDir.setFilter(QDir.Files) for file in outputDir.entryList(): filePath = unicode(self.outputPath + '/' + file) os.unlink(filePath)
def getFilesDirectory(self, globalPath, localPath): directoryLocal = QDir(localPath) directoryLocal.setFilter(QDir.Files | QDir.Hidden | QDir.NoSymLinks); directoryLocal.setNameFilters(QStringList("*.directory")) directoryGlobal = QDir(globalPath) directoryGlobal.setFilter(QDir.Files | QDir.Hidden | QDir.NoSymLinks); directoryGlobal.setNameFilters(QStringList("*.directory")) return directoryGlobal.entryList() + directoryLocal.entryList()
def importFromDirectory(self, path): d = QDir(path) d.setFilter(QDir.Files | QDir.Hidden) #d.setSorting(QDir.Size | QDir.Reversed) for fileInfo in d.entryInfoList(): if debug_mode == 0 and fileInfo.fileName() == "debug.tsv": continue if fileInfo.suffix().lower() == "tsv": self.importFromTsv(fileInfo.filePath())
def clearTempFiles(self): """ Clear the directories created for each recording added to the queue and the files they contain. """ settingsQDir = QDir(self.settingsDir) settingsQDir.setFilter(QDir.Dirs | QDir.NoDotAndDotDot) for dir in settingsQDir.entryList(): tempQDir = QDir(self.settingsDir + '/' + dir) tempQDir.setFilter(QDir.Files) for tempFile in tempQDir.entryList(): tempQDir.remove(tempFile) settingsQDir.rmdir(self.settingsDir + '/' + dir)
def fillInputDir(self): inputDir = Utils.FileDialog.getExistingDirectory(self, self.tr("Select the input directory with files to Warp")) if not inputDir: return self.inSelector.setFilename(inputDir) filter = Utils.getRasterExtensions() workDir = QDir(inputDir) workDir.setFilter(QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot) workDir.setNameFilters(filter) if len(workDir.entryList()) > 0: fl = inputDir + "/" + workDir.entryList()[0] self.sourceSRSEdit.setText(Utils.getRasterSRS(self, fl))
def fillInputDir(self): inputDir = Utils.FileDialog.getExistingDirectory( self, self.tr("Select the input directory with files to Warp")) if not inputDir: return self.inSelector.setFilename(inputDir) filter = Utils.getRasterExtensions() workDir = QDir(inputDir) workDir.setFilter(QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot) workDir.setNameFilters(filter) if len(workDir.entryList()) > 0: fl = inputDir + "/" + workDir.entryList()[0] self.sourceSRSEdit.setText(Utils.getRasterSRS(self, fl))
def selectIcon(self, parent = None): dialog = DialogSelectFile(self) dialog.setWindowTitle("Select Icon") progress = QtGui.QProgressDialog("Please wait while loading icons", "Hide", 0, 100, parent) progress.setWindowModality(QtCore.Qt.WindowModal) progress.setAutoReset(True) progress.setAutoClose(True) progress.setMinimum(0) progress.setMaximum(100) progress.setWindowTitle("Loading...") progress.show() progress.setValue(0) directoryLocal = QDir(self.IconpathLocal) directoryLocal.setFilter(QDir.Files | QDir.Hidden | QDir.NoSymLinks); directoryLocal.setNameFilters(QStringList("*.png")) directoryGlobal = QDir(self.IconpathGlobal) directoryGlobal.setFilter(QDir.Files | QDir.Hidden | QDir.NoSymLinks); directoryGlobal.setNameFilters(QStringList("*.png")) for file in directoryLocal.entryList(): icon = QIcon(self.IconpathLocal + file) part = string.split(file, '.png')[0] listItem = QListWidgetItem(icon, part, dialog.listFile, QListWidgetItem.UserType) progress.setValue(50) for file in directoryGlobal.entryList(): icon = QIcon(self.IconpathGlobal + file) part = string.split(file, '.png')[0] listItem = QListWidgetItem(icon, part, dialog.listFile, QListWidgetItem.UserType) dialog.listFile.sortItems() progress.setValue(100) # progress.hide() dialog.show() dialog.exec_() selected = self.selFile self.selFile = "" return selected
def readFilenames(self): self.nameref.clear() directoryLocal = QDir(self.DirpathLocal) directoryLocal.setFilter(QDir.Files | QDir.Hidden | QDir.NoSymLinks); directoryLocal.setNameFilters(QStringList("*.directory")) directoryGlobal = QDir(self.DirpathGlobal) directoryGlobal.setFilter(QDir.Files | QDir.Hidden | QDir.NoSymLinks); directoryGlobal.setNameFilters(QStringList("*.directory")) for file in directoryGlobal.entryList(): part = self.getNameFromDirFile(self.DirpathGlobal + file) self.nameref[part] = self.DirpathGlobal + file for file in directoryLocal.entryList(): part = self.getNameFromDirFile(self.DirpathLocal + file) self.nameref[part] = self.DirpathLocal + file
def scan_for_scripts(): """ Find python files (*.py) inside the scripts directory. """ addons = [] scripts = [] qdir = QDir(scripts_dirpath) qdir.setFilter(QDir.Files) qdir.setNameFilters(['*.py']) for py_filename in qdir.entryList(): py_filepath = path.join(str(scripts_dirpath), str(py_filename)) # or unicode? what = _is_script(py_filepath) if what == IS_SCRIPT: scripts.append(py_filepath) if what == IS_ADDON: addons.append(py_filepath) return scripts, addons
def fillInputDir( self ): inputDir = Utils.FileDialog.getExistingDirectory( self, self.tr( "Select the input directory with files to Translate" )) if not inputDir: return self.inSelector.setFilename( inputDir ) filter = Utils.getRasterExtensions() workDir = QDir( inputDir ) workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot ) workDir.setNameFilters( filter ) # search for a valid SRS, then use it as default target SRS srs = '' for fname in workDir.entryList(): fl = inputDir + "/" + fname srs = Utils.getRasterSRS( self, fl ) if srs: break self.targetSRSEdit.setText( srs )
def fillInputDir(self): inputDir = Utils.FileDialog.getExistingDirectory( self, self.tr("Select the input directory with files to Translate")) if not inputDir: return self.inSelector.setFilename(inputDir) filter = Utils.getRasterExtensions() workDir = QDir(inputDir) workDir.setFilter(QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot) workDir.setNameFilters(filter) # search for a valid SRS, then use it as default target SRS srs = '' for fname in workDir.entryList(): fl = inputDir + "/" + fname srs = Utils.getRasterSRS(self, fl) if srs: break self.targetSRSEdit.setText(srs)
def getWallpaperSettings(self): dir = QDir("/usr/share/wallpapers/Pardus_Mood/contents") dir.setFilter( QDir.NoSymLinks | QDir.Files ) a = QStringList() a.append ("*.jpeg") a.append("*.jpg") a.append("*.png") dir.setNameFilters(a) lst = dir.entryList() items = [] for desktopFile in lst: wallpaper = {} try: wallpaper["wallpaperTitle"] = "picture" except: wallpaper["wallpaperTitle"] = "picture1" try: wallpaper["wallpaperDesc"] = "description" except: wallpaper["wallpaperDesc"] = "description1" # Get all files in the wallpaper's directory thumbFolder = desktopFile # """ # Appearantly the thumbnail names doesn't have a standart. # So we get the file list from the contents folder and # choose the file which has a name that starts with "scre". # File names I've seen so far; # screenshot.jpg, screnshot.jpg, screenshot.png, screnshot.png # """ wallpaper["wallpaperThumb"] = "/usr/share/wallpapers/Pardus_Mood/contents/%s"%desktopFile wallpaper["wallpaperFile"] = desktopFile items.append(wallpaper) CONFIG_KAPTANRC.setValue("Wallpaper/Source","/usr/share/wallpapers/Pardus_Mood/contents/%s" %desktopFile) self.getWallpaper(desktopFile) return items
def getFilesMenu(self, localPath): directoryLocal = QDir(localPath) directoryLocal.setFilter(QDir.Files | QDir.Hidden | QDir.NoSymLinks); directoryLocal.setNameFilters(QStringList("*.menu")) return directoryLocal.entryList()
import sys from PyQt4.QtCore import (Qt,QSettings,QFileInfo,QDir,QStringList) from PyQt4.QtGui import (QApplication,QFileDialog,QPlainTextEdit,QTextCursor) app = QApplication(sys.argv) # create an app import pqIMC IMC = pqIMC.tricorder() # set up a fake IMC for unit test IMC.settings = QSettings() IMC.editWidget = QPlainTextEdit() import pqPages pqPages.IMC = IMC IMC.pageTable=pqPages.pagedb() widj = pngDisplay() widj.pngPath = QFileDialog.getExistingDirectory(widj,"Pick a Folder of Pngs",".") widj.pngPath.append(u'/') png_dir = QDir(widj.pngPath) png_dir.setFilter(QDir.Files | QDir.NoSymLinks) png_dir.setSorting(QDir.Name) png_dir.setNameFilters(QStringList(QString(u'*.png'))) fnumber = 1 for finf in png_dir.entryInfoList(): # Read all the pngs and for each cobble up a "page" just to get # some data into the page table fname = finf.baseName() IMC.editWidget.textCursor().insertText(fname) fakemd = "{0} {1} {2} {3} {4} {5}\n".format( IMC.editWidget.textCursor().position(), fname, QString(u'\\foo\\foo'), IMC.FolioRuleAdd1, IMC.FolioFormatArabic, fnumber ) IMC.pageTable.metaStringIn(fakemd) fnumber +=1 widj.lastIndex = -1