def searchBtnClicked(self): dir = QtCore.QDir(self.ui.searchInLE.text()) dir.setNameFilters(self.filters) if not dir.exists(): QtWidgets.QMessageBox.warning(None,"Cannot search!","Directory "+self.ui.searchInLE.text()+"doesn't exist") else: self.tablemodel.clear() self.tablemodel.setHorizontalHeaderLabels(self.tableheader) it = QtCore.QDirIterator(dir) if self.ui.recurseCB.isChecked(): it = QtCore.QDirIterator(dir, QtCore.QDirIterator.Subdirectories) i = 0 while it.hasNext(): it.next() addtoresults = True foundText = '' if self.ui.searchTextLE.text(): text = str(textract.process(it.filePath())) print(text) searchText = self.ui.searchTextLE.text().lower() found = False for line in text.split(sep='\\n'): if searchText in line.lower(): print(line) found = True foundText = line break if not found: print('NoMatch!') addtoresults = False if addtoresults: fileInfo = it.fileInfo() #self.ui.resultsWidget.insertRow(i) item1 = QtGui.QStandardItem() item1.setData(fileInfo.fileName(), QtCore.Qt.DisplayRole) item2 = QtGui.QStandardItem() item2.setData(fileInfo.size(), QtCore.Qt.DisplayRole) item3 = QtGui.QStandardItem() item3.setData(fileInfo.lastModified(), QtCore.Qt.DisplayRole) item4 = QtGui.QStandardItem() item4.setData(fileInfo.path(), QtCore.Qt.DisplayRole) item5 = QtGui.QStandardItem() item5.setData(foundText, QtCore.Qt.DisplayRole) newrow = [item1, item2, item3, item4, item5] self.tablemodel.appendRow(newrow) i += 1 print(i)
def __init__(self, dirList, *args, **kwargs): self.dirList = dirList iteratorList = [] for dir in dirList: iteratorList.append(QtCore.QDirIterator(dir, *args, **kwargs)) self.iterators = iter(iteratorList) self.currentIterator = self.iterators.next()
def load_images(self, directory): it = QtCore.QDirIterator( directory, ["*.jpg", "*.png"], QtCore.QDir.Files, QtCore.QDirIterator.Subdirectories, ) while it.hasNext(): filename = it.next() yield filename
def search_global(self, filename, match_type): #全局搜索 default_path = 'D:\\' count = 0 size_type = self.set_table_size() self.progressBar.setValue(0) self.searchBut.setDisabled(True) self.confirmBut.setDisabled(True) self.progressBar.setMinimum(0) self.progressBar.setMaximum(0) file_found = False iter = QtCore.QDirIterator(default_path, QtCore.QDir.Files | QtCore.QDir.CaseSensitive | QtCore.QDir.NoDotAndDotDot, QtCore.QDirIterator.Subdirectories) while(iter.hasNext()): iter.next() if( ((match_type == 0) and (filename == iter.fileInfo().fileName())) or ( (match_type == 1) and (fuzz.partial_ratio(filename, iter.fileInfo().fileName()) >= 90) ) ): self.tableWidget.insertRow(count) file_found = True self.tableWidget.setItem(count, 0, QtWidgets.QTableWidgetItem(iter.fileInfo().fileName())) self.tableWidget.setItem(count, 1, QtWidgets.QTableWidgetItem(iter.fileInfo().absoluteFilePath())) self.tableWidget.setItem(count, 2, QtWidgets.QTableWidgetItem(self.formatsize(iter.fileInfo().size()))) self.tableWidget.setItem(count, 3, QtWidgets.QTableWidgetItem(iter.fileInfo().suffix())) if(size_type == 2): absolu_path = iter.fileInfo().absoluteFilePath() self.tableWidget.setItem(count, 4, QtWidgets.QTableWidgetItem(self.getFileMd5(absolu_path))) elif(size_type == 3): self.tableWidget.setItem(count, 4, QtWidgets.QTableWidgetItem(iter.fileInfo().created().toString("yyyy-MM-dd hh:mm:ss"))) elif(size_type == 4): absolu_path = iter.fileInfo().absoluteFilePath() self.tableWidget.setItem(count, 4, QtWidgets.QTableWidgetItem(iter.fileInfo().created().toString("yyyy-MM-dd hh:mm:ss"))) self.tableWidget.setItem(count, 5, QtWidgets.QTableWidgetItem(self.getFileMd5(absolu_path))) elif(size_type == 1): pass else: QtWidgets.QMessageBox.warning(self, 'Error', 'Error in size type') count = count + 1 QtWidgets.QApplication.processEvents() if(not file_found): QtWidgets.QMessageBox.warning(self, 'Warning', 'can\'t find file') self.progressBar.setMaximum(100) self.progressBar.setValue(100) self.searchBut.setDisabled(False) self.confirmBut.setDisabled(False)
def browse_callback(self): # 选择文件夹后将文件夹中所有的" .txt" 文件列出来 directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Find Folder", QtCore.QDir.currentPath()) self.tableWidget.clearContents() self.tableWidget.setRowCount(0) self.line_Directory.setText(directory) dirIterator = QtCore.QDirIterator(directory, ['*.txt']) while(dirIterator.hasNext()): dirIterator.next() dataname = dirIterator.filePath() name = QtWidgets.QTableWidgetItem(dataname) analysis = QtWidgets.QTableWidgetItem('Not Yet') row = self.tableWidget.rowCount() self.tableWidget.insertRow(row) self.tableWidget.setItem(row, 0, name)
def saveas_callback(self): self.textEdit.append('文件另存为') directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Find Folder", QtCore.QDir.currentPath()) # self.tableWidget.clearContents() # self.tableWidget.setRowCount(0) # self.line_Directory.setText(directory) dataname = "" dirIterator = QtCore.QDirIterator(directory, ['*.txt']) # while(dirIterator.hasNext()): # dirIterator.next() # dataname = dirIterator.filePath() # name = QtWidgets.QTableWidgetItem(dataname) # analysis = QtWidgets.QTableWidgetItem('Not Yet') # row = self.tableWidget.rowCount() # self.tableWidget.insertRow(row) # self.tableWidget.setItem(row, 0, name) ddaattaa = image_draw.image_flag.parsed print(ddaattaa) collect_data.save_file(ddaattaa, datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d_%H-%M-%S') + ".xml")
flags=re.DOTALL) # matches the resource tags in the ui files def loadUI(xmlstr): '''Load the given XML ui file data and store the created type as a member of this module.''' s = str(xmlstr) s = re.sub(restag, '', s) # get rid of the resources section in the XML uiclass, _ = uic.loadUiType(StringIO(s)) # create a local type definition setattr(module, uiclass.__name__, uiclass) # store as module member # list all .ui files, if there are none then attempt to load from a resource script file uifiles = glob.glob(os.path.join(os.path.dirname(__file__), '*.ui')) if len(uifiles) != 0: # load the class from each ui file and store it as a member of this module for ui in uifiles: loadUI(open(ui).read()) else: # load the resource module containing the .ui files appropriate to which version of PyQt is being used if QtVersion == 5: from . import UI_rc5 else: from . import UI_rc4 # iterate over every file in the layout section of the resources and load them into this module it = QtCore.QDirIterator(':/layout') while it.hasNext(): with contextlib.closing(QtCore.QFile(it.next())) as layout: if layout.open(QtCore.QFile.ReadOnly): loadUI(layout.readAll())
def configure(self): """ Perform initial configuration tasks for Eddy to work properly. """ ############################################# # CONFIGURE FONTS ################################# fontDB = QtGui.QFontDatabase() fonts = QtCore.QDirIterator(':/fonts/') while fonts.hasNext(): fontDB.addApplicationFont(fonts.next()) # FONT SUBSTITUTIONS QtGui.QFont.insertSubstitution('Sans Serif', 'Roboto') QtGui.QFont.insertSubstitution('Monospace', 'Roboto Mono') # APPLICATION DEFAULT FONT self.setFont(Font('Roboto', pixelSize=12)) ############################################# # CONFIGURE LAYOUT ################################# style = EddyProxyStyle('Fusion') self.setStyle(style) self.setStyleSheet(style.stylesheet) ############################################# # DRAW THE SPLASH SCREEN ################################# splash = None if not self.options.isSet(CommandLineParser.NO_SPLASH): splash = Splash(mtime=2) splash.show() ############################################# # CONFIGURE RECENT PROJECTS ################################# settings = QtCore.QSettings() if not settings.contains('project/recent'): # From PyQt5 documentation: if the value of the setting is a container (corresponding # to either QVariantList, QVariantMap or QVariantHash) then the type is applied to the # contents of the container. So we can't use an empty list as default value because # PyQt5 needs to know the type of the contents added to the collection: we avoid # this problem by placing the list of example projects as recent project list. examples = list(filter(lambda path: fexists(path) and faccess(path), [ expandPath('@examples/Animals{}'.format(File.Graphol.extension)), expandPath('@examples/Diet{}'.format(File.Graphol.extension)), expandPath('@examples/Family{}'.format(File.Graphol.extension)), expandPath('@examples/LUBM{}'.format(File.Graphol.extension)), expandPath('@examples/Pizza{}'.format(File.Graphol.extension)), ])) settings.setValue('project/recent', examples) else: # If we have some projects in our recent list, check whether they exists on the # filesystem. If they do not exists we remove them from our recent list. projects = [] for path in map(expandPath, settings.value('project/recent', None, str) or []): if fexists(path) and path not in projects: projects.append(path) settings.setValue('project/recent', projects) settings.sync() ############################################# # LOOKUP PLUGINS ################################# PluginManager.scan('@plugins/', '@home/plugins/') ############################################# # CLOSE THE SPLASH SCREEN ################################# if splash and not self.options.isSet(CommandLineParser.NO_SPLASH): splash.sleep() splash.close()
def __new__(self, dirList, *args, **kwargs): if isinstance(dirList, str): return QtCore.QDirIterator(dirList, *args, **kwargs) if len(dirList) == 1: return QtCore.QDirIterator(dirList[0], *args, **kwargs) return MultiDirIterator(self, dirList, *args, **kwargs)
def slot_confirmBut(self): #确认按钮的槽函数 self.confirmBut.setDisabled(True) self.searchBut.setDisabled(True) path = self.PathText.text() #获得框中的路径 if(not path): QtWidgets.QMessageBox.warning(self, 'Error', '请输入或选择路径') self.confirmBut.setDisabled(False) self.searchBut.setDisabled(False) return if not os.path.exists(path): QtWidgets.QMessageBox.critical(self, 'Error', '路径不存在') self.confirmBut.setDisabled(False) self.searchBut.setDisabled(False) return count = 0 self.progressBar.setValue(0) size_type = self.set_table_size() self.progressBar.setMinimum(0) #让进度条滚动 self.progressBar.setMaximum(0) iter = QtCore.QDirIterator(path, QtCore.QDir.Files | QtCore.QDir.CaseSensitive | QtCore.QDir.NoDotAndDotDot, QtCore.QDirIterator.Subdirectories) #starttime = QtCore.QTime.currentTime() while(iter.hasNext()): iter.next() self.tableWidget.insertRow(count) self.tableWidget.setItem(count, 0, QtWidgets.QTableWidgetItem(iter.fileInfo().fileName())) self.tableWidget.setItem(count, 1, QtWidgets.QTableWidgetItem(iter.fileInfo().absoluteFilePath())) self.tableWidget.setItem(count, 2, QtWidgets.QTableWidgetItem(self.formatsize(iter.fileInfo().size()))) self.tableWidget.setItem(count, 3, QtWidgets.QTableWidgetItem(iter.fileInfo().suffix())) if(size_type == 2): absolu_path = iter.fileInfo().absoluteFilePath() self.tableWidget.setItem(count, 4, QtWidgets.QTableWidgetItem(self.getFileMd5(absolu_path))) elif(size_type == 3): self.tableWidget.setItem(count, 4, QtWidgets.QTableWidgetItem(iter.fileInfo().created().toString("yyyy-MM-dd hh:mm:ss"))) elif(size_type == 4): absolu_path = iter.fileInfo().absoluteFilePath() self.tableWidget.setItem(count, 4, QtWidgets.QTableWidgetItem(iter.fileInfo().created().toString("yyyy-MM-dd hh:mm:ss"))) self.tableWidget.setItem(count, 5, QtWidgets.QTableWidgetItem(self.getFileMd5(absolu_path))) elif(size_type == 1): pass else: QtWidgets.QMessageBox.warning(self, 'Error', '选择的类型错误') count = count + 1 QtWidgets.QApplication.processEvents() #TODO: #endtime = QtCore.QTime.currentTime() #diff = starttime.msecsTo(endtime) self.progressBar.setMaximum(100) #停止滚动 self.progressBar.setValue(100) self.confirmBut.setDisabled(False) self.searchBut.setDisabled(False)
def crawlFolder(self): # print(self.songsFolder) if self.songsFolder is not None: self.filePathList = [] if self.songsFolder is not None: iterator = QtCore.QDirIterator( self.songsFolder, QtCore.QDirIterator.Subdirectories) # print(dir(iterator)) # print(dir(iterator.IteratorFlags)) # print(iterator) while iterator.hasNext(): iterator.next() fInfo = iterator.fileInfo() if fInfo.isDir() is False and iterator.filePath( ) is not '.' and iterator.filePath() is not '..': # print(iterator.fileInfo()) if fInfo.suffix() in ('mp3'): # print(fInfo.absoluteFilePath()) self.filePathList.append(fInfo.absoluteFilePath()) # print(len(self.filePathList)) # add stuff into LocalStorage lsStatus = self.manageLocalStorage.build() self.manageCache = ManageCache(const.LS_connectionName) # print(lsStatus) if lsStatus: print("built LS/Already there") else: print("Failed to Build LS, Exit") self.buildMessageBox("Building LocalStorage Storage Failed") self.localStorage = AccessLocalStorage(const.LS_connectionName) for path in self.filePathList: self.localStorage.write(path) # build playlist with all the songs # remove files from localStorage that are deleted self.manageLocalStorage.invalidate(self.localStorage) # model = self.manageLocalStorage.query() # set header title model.setHeaderData(2, QtCore.Qt.Horizontal, 'Track Title') model.setHeaderData(3, QtCore.Qt.Horizontal, 'Artist') self.playlistView.setSelectionBehavior( QtWidgets.QTableView.SelectRows) # self.playlistView.setColumnWidth(1000, 2000) # Query db and hide all the not required fields self.playlistView.setModel(model) # hide column 0 (SID) and 1 (SPath), which we will use to other purposes self.playlistView.setColumnHidden(0, True) self.playlistView.setColumnHidden(1, True) self.playlistView.setColumnWidth(2, 200) self.playlistView.setColumnWidth(3, 100) self.playlistView.setTabKeyNavigation(False) self.playlistView.setCornerButtonEnabled(False) self.playlistView.selectRow(0) self.playlistView.doubleClicked.connect( self.playlistViewDoubleClickHandler) self.buildMediaPlaylistPathList() self.buildPlayList() else: # throw an error saying to add music folder print("load a folder for music, from settings it is None") self.buildMessageBox( "No Music Folder Found, Select a Music Folder")