示例#1
0
    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)
示例#2
0
 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()
示例#3
0
 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
示例#4
0
    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) 
示例#5
0
    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")
示例#7
0
    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())
示例#8
0
    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()
示例#9
0
 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)
示例#10
0
    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)
示例#11
0
    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")