def mouseDoubleClickEvent(self, event): index = self.selectedIndexes()[0] finfo = QFileInfo(self._model.filePath(index)) if finfo.isDir(): self.baseDir = finfo.absoluteFilePath() self.PathChangedEvent(self.baseDir) self.pathChanged.emit(self.baseDir)
def on_btnInfo_isDir_clicked(self): self.__showBtnInfo(self.sender()) fileInfo = QFileInfo(self.ui.editDir.text()) if fileInfo.isDir(): self.ui.textEdit.appendPlainText("True \n") else: self.ui.textEdit.appendPlainText("False \n")
def readDir(self, dir, readSubs, tiefe, feedback): #fileList = [ QFileInfo ] #Schleife für alle Einträge des Verzeichnises listOfFiles = os.listdir(dir) total = 100 if len(listOfFiles) > 0: total = 100.0 / len(listOfFiles) #for n,file in enumerate( os.listdir( dir ) ): for n, file in enumerate(listOfFiles): filePath = (os.path.join(dir, file)) info = QFileInfo(filePath) #print( dir, info.isFile(), info.isDir( )) if info.exists() and info.isFile(): self.fileList.append(info) #print (info.fileName(), info.size(), info.birthTime(), info.lastModified()) elif info.exists() and info.isDir() and readSubs == True: # rekursive if Sub Dir self.readDir(filePath, True, tiefe + 1, feedback) else: pass #next if tiefe == 1: # Update the progress bar in level 1 feedback.setProgress(int(n + 1 * total)) else: feedback.setProgress(int(100)) feedback.pushInfo("No files in directory! " + dir) return #fileList
def dropEvent(self, event): if event.mimeData().hasUrls(): event.setDropAction(Qt.CopyAction) event.accept() icon = QIcon("loaded.png") for url in event.mimeData().urls(): if url.isLocalFile(): fi = QFileInfo(url.toLocalFile()) if fi.isDir(): it = QDirIterator( fi.fileName(), QDir.Files, QDirIterator.Subdirectories, ) while it.hasNext(): item = QListWidgetItem() item.setData(PathRole, it.next()) self.addItem(item) elif fi.isFile(): item = QListWidgetItem() item.setData(PathRole, url.toLocalFile()) self.addItem(item) else: event.ignore()
async def dropEventLocalFile(self, ipfsop, url): """ Handle a drop event with a file:// URL """ maxFileSize = megabytes(64) try: path = url.toLocalFile() fileInfo = QFileInfo(path) if fileInfo.isFile(): file = QFile(path) if file.open(QIODevice.ReadOnly): size = file.size() if size and size < maxFileSize: logUser.info('Importing file: {0}'.format(path)) entry = await ipfsop.addPath(path) if entry: self.tracker.clipboardProcess(entry['Hash']) file.close() if fileInfo.isDir(): # Don't check for directory size async def entryAdded(entry): logUser.info('{path}: imported'.format( path=entry.get('Name'))) entry = await ipfsop.addPath(path, callback=entryAdded) if entry: self.tracker.clipboardProcess(entry['Hash']) except Exception: pass
def on_item_double_clicked(self, item): iteminfo = QFileInfo(item.text()) if iteminfo.isDir(): self.currentDir.cd(item.text()) self.on_execute_clicked() self.Path.setText(self.currentDir.absolutePath()) else: QtGui.QDesktopServices.openUrl(QUrl.fromLocalFile(item.text()))
def onActivated(self, index): path = self.model().filePath(index) fileInfo = QFileInfo(path) if (fileInfo.isDir()): prefs = preferences.Preferences.instance() prefs.setMapsDirectory(fileInfo.canonicalFilePath()) return self.mMainWindow.openFile(path)
def dropEvent(self, event): event.ignore() return if event.source(): QTreeView.dropEvent(self, event) else: ix = self.indexAt(event.pos()) if not self.model().isDir(ix): ix = ix.parent() pathDir = self.model().filePath(ix) if not pathDir: pathDir = self.model().filePath(self.rootIndex()) m = event.mimeData() if m.hasUrls(): urlLocals = [url for url in m.urls() if url.isLocalFile()] accepted = False for urlLocal in urlLocals: path = urlLocal.toLocalFile() info = QFileInfo(path) n_path = QDir(pathDir).filePath(info.fileName()) o_path = info.absoluteFilePath() if n_path == o_path: continue if info.isDir(): if QDir(n_path).exists(): reply = QMessageBox.question( self, '提示', '所选的分组中存在同名文件夹,是否全部覆盖?', QMessageBox.Yes | QMessageBox.No) if reply == QMessageBox.Yes: shutil.rmtree(n_path) shutil.copytree(o_path, n_path) else: print(o_path) for file in os.walk(o_path): print(file) shutil.copytree(o_path, n_path) self.strategy_filters.append( os.path.split(n_path)[1]) self._model.setNameFilters(self.strategy_filters) else: qfile = QFile(o_path) fname = qfile.fileName() if not fname.endswith('.py'): QMessageBox.warning(self, "提示", "暂不支持该类型文件", QMessageBox.Yes) if QFile(n_path).exists(): reply = QMessageBox.question( self, '提示', '所选的分组中存在同名文件,是否覆盖?', QMessageBox.Yes | QMessageBox.No) if reply == QMessageBox.Yes: shutil.copy(o_path, n_path) # qfile.rename(n_path) accepted = True if accepted: event.acceptProposedAction()
def changeRoot(self, index): path = self.model.filePath(self.rootIndex()) new_path = self.model.filePath(index) absolute_path = os.path.join(path, new_path) file_info = QFileInfo(absolute_path) if file_info.isDir(): self.model.setRootPath(absolute_path) self.setRootIndex(self.model.index(absolute_path)) self.rootChanged.emit(absolute_path)
def get_path_datasize(path): file_info = QFileInfo(path) data_size = 0 if file_info.isDir(): data_size, files_count = get_directory_size( file_info.absoluteFilePath()) # logger.info("path (folder) %s %u elements size now=%u (%s)", # file_info.absoluteFilePath(), files_count, data_size, pretty_bytes(data_size)) else: # logger.info("path (file) %s size=%u", file_info.path(), file_info.size()) data_size = file_info.size() files_count = 1 return data_size, files_count
def ValidateSave(self) -> bool: """Checks if a valid footprint name and folder are selected Returns: bool: true if the selected folder exists """ name = self.ui.le_Name.text() folder = QDir(self.ui.le_Path.text()) folderInfo = QFileInfo(folder.absolutePath()) if (folderInfo.isDir() and folderInfo.isWritable()): return folder.exists() and name != "" else: return False
def _ensure_writable_location(self, dstDir): while True: dstDirInfo = QFileInfo(dstDir) if ( dstDirInfo.isDir() and dstDirInfo.isWritable() ): return dstDir else: # Display error messagebox msgBox = QtWidgets.QMessageBox(self) msgBox.setWindowTitle(_translate("MessageBox", "PyCirkuit - Error", "Message Box title")) msgBox.setIcon(QtWidgets.QMessageBox.Critical) msgBox.setText(_translate("MessageBox", "The exporting destination directory is not writable.", "Message box text." )) msgBox.setInformativeText(_translate("MessageBox", "Please enter a suitable directory to write into.", "Message Box text")) msgBox.setStandardButtons(QtWidgets.QMessageBox.Ok) msgBox.exec() # Ask user to choose another directory dstDir = self._ask_writable_dir(dstDirInfo.canonicalPath())[0]
def deleteFile(self): index = self.selectionModel().currentIndex() path = self.model.filePath(index) if path: fileInfo = QFileInfo(path) if fileInfo.isFile(): if not self.ask_dialog( "Do you wan't to delete the selected file?"): return file = QFile(path) file.remove() elif fileInfo.isDir(): if not self.ask_dialog( "Do you wan't to delete the selected directory?"): return directory = QDir(path) directory.removeRecursively()
def getMetadataForFileList(filenames): '''Takes a list of filenames, returns a list of metadata associated with all files in that list that are readable tracks''' metadata = [] for filename in filenames: info = QFileInfo(filename) if info.isDir() and info.isExecutable(): print(filename) dir = QDir(filename) print(dir.entryList(QDir.AllEntries | QDir.NoDotAndDotDot)) metadata.extend( getMetadataForFileList([ i.filePath() for i in dir.entryInfoList(QDir.AllEntries | QDir.NoDotAndDotDot) ])) elif info.isFile() and info.isReadable(): print(filename) metadata.extend(processFile(filename)) return metadata
def choose_mountpoint(self): while True: path = QFileDialog.getExistingDirectory( self, QCoreApplication.translate("GlobalSettingsWidget", "Choose a mountpoint"), str(pathlib.Path.home()), ) if not path: return path_info = QFileInfo(path) if not path_info.isDir() or not path_info.isWritable(): show_error( self, QCoreApplication.translate( "GlobalSettingsWidget", "The choosen folder is not writable."), ) else: self.line_edit_mountpoint.setText(path_info.absoluteFilePath()) return
def set_data(self, _file): ff = QFileInfo(_file) self.short_title(ff.fileName()) self.ui.lsize.setText(naturalsize(ff.size(), format="%.1f ")) if ff.isDir(): self.ui.litems.show() self.ui.label_3.show() self.ui.litems.setText(str(len(glob(_file + "/*")))) else: self.ui.label_3.hide() self.ui.litems.hide() self.ui.lcreated.setText(ff.created().toString()) self.ui.lmodified.setText(ff.lastModified().toString()) self.ui.laccessed.setText(ff.lastRead().toString()) self.ui.luser.setText(ff.owner()) self.ui.luid.setText(str(ff.ownerId())) self.ui.lgroup.setText(str(ff.group())) self.ui.lgid.setText(str(ff.groupId())) self.ui.lpath.setText(ff.path())
def createRequest(self, op, request, outgoingData=None): """ Public method to create a request. @param op the operation to be performed (QNetworkAccessManager.Operation) @param request reference to the request object (QNetworkRequest) @param outgoingData reference to an IODevice containing data to be sent (QIODevice) @return reference to the created reply object (QNetworkReply) """ if op == QNetworkAccessManager.GetOperation: fileInfo = QFileInfo(request.url().toLocalFile()) if not fileInfo.isDir() or \ not fileInfo.isReadable() or \ not fileInfo.exists(): return None from .FileReply import FileReply return FileReply(request.url(), self.parent()) else: return None
def __loadFlashCookiesFromPath(self, path): """ Private slot to load the Flash cookies from a path. @param path Flash cookies path @type str """ if path.endswith("#AppContainer"): # specific to IE and Windows return path = path.replace("\\", "/") solDir = QDir(path) entryList = solDir.entryList() for entry in entryList: if entry == "." or entry == "..": continue entryInfo = QFileInfo(path + "/" + entry) if entryInfo.isDir(): self.__loadFlashCookiesFromPath(entryInfo.filePath()) else: self.__insertFlashCookie(entryInfo.filePath())