class MainWindow(QMainWindow):
    """ drag and drop graphics viewer """
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_mainWindow()
        self.ui.setupUi(self)
        self.setAcceptDrops(True)

        # set up variables
        self.f = QFileInfo()
        self.scene = QGraphicsScene()
        self.ui.graphicsView.setAcceptDrops(False)
        self.ui.graphicsView.setScene(self.scene)
        self.ui.graphicsView.setInteractive(True)
        self.ui.graphicsView.setDragMode(QGraphicsView.RubberBandDrag)
        self.ui.graphicsView.setRubberBandSelectionMode(Qt.ContainsItemShape)



    # --------------------------------
    # Drag / Drop code
    # --------------------------------
    def dragEnterEvent(self, event):
        acceptedFileTypes = []
        acceptedFileTypes.append("jpg")
        acceptedFileTypes.append("png")
        acceptedFileTypes.append("bmp")
        print(acceptedFileTypes)

        if (event.mimeData().hasUrls()) and \
                (len(event.mimeData().urls()) == 1):
            self.f = QFileInfo(event.mimeData().urls()[0].toLocalFile())
            print(self.f.suffix().lower())
            if self.f.suffix().lower() in acceptedFileTypes:
                event.acceptProposedAction()

    def dropEvent(self, event):
        print('Drop Event happened')
 #       print(f.absoluteFilePath())
        file = QFileInfo(event.mimeData().urls()[0].toLocalFile())
        pixmap = QPixmap()
        if pixmap.load(self.f.absoluteFilePath()):
            item = QGraphicsPixmapItem(pixmap)
            self.scene.addItem(item)
        else:
            QMessageBox.critical(self,
                                 'Error',
                                 'The image file cannot be read!')
        print(self.scene.items().count(item))
        print(self.scene.items().count(item))

        print(self.scene.items().count(item))
        print(self.scene)
예제 #2
0
class MainWindow(QMainWindow):
    """ drag and drop image viewer """
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # set up variables
        self.pixmap = QPixmap()
        self.f = QFileInfo()

        self.setAcceptDrops(True)


# ---------------------------------------
# Drag / Drop code
# ---------------------------------------

    def dragEnterEvent(self, event):
        acceptedFileTypes = []
        acceptedFileTypes.append("jpg")
        acceptedFileTypes.append("png")
        acceptedFileTypes.append("bmp")
        print(acceptedFileTypes)

        if (event.mimeData().hasUrls())and \
                (len(event.mimeData().urls()) == 1):
            self.f = QFileInfo(event.mimeData().urls()[0].toLocalFile())
            print(self.f.suffix().lower())
            if self.f.suffix().lower() in acceptedFileTypes:
                event.acceptProposedAction()

    def dropEvent(self, event):
        print('Drop Event happening')
        print(self.f.absoluteFilePath())
        if (self.pixmap.load(self.f.absoluteFilePath())):
            self.ui.label.setPixmap(
                self.pixmap.scaled(self.ui.label.size(), Qt.KeepAspectRatio,
                                   Qt.SmoothTransformation))
        else:
            QMessageBox.critical(self, "Error",
                                 "The image file cannot be read!")

    def resizeEvent(self, event):
        if not (self.pixmap.isNull()):
            self.ui.label.setPixmap(
                self.pixmap.scaled(self.ui.label.width() - 5,
                                   self.ui.label.height() - 5,
                                   Qt.KeepAspectRatio,
                                   Qt.SmoothTransformation))
예제 #3
0
    def generate_pj_info(self):
        """
        triggered by button add
        1. create new project info dict every time
        2. extract project name and address from LineEdit; check if exist and if it is cas and msh file
        3. when second step done, get journal path from get_journal function
        :return: signal_add_pj(dict)
        """
        self.pj_dict = {
            "project_name": '',
            "project_address": '',
            "journal": ''
        }
        if self.checkbox_journal.isChecked():
            case_path = QFileInfo(self.edit_journal_address.text())
        else:
            case_path = QFileInfo(self.edit_project_address.text()
                                  )  # QFileInfo can deeply analyze path info
        accepted_file_type = ['cas', 'msh', 'h5', 'jou']

        if (case_path.exists()) and (case_path.suffix() in accepted_file_type):
            self.pj_dict["project_name"] = case_path.baseName()
            self.pj_dict["project_address"] = case_path.absolutePath()
            self.pj_dict['journal'] = self.get_journal(case_path,
                                                       case_path.fileName())
            self.signal_add_pj.emit(self.pj_dict)
            self.close()
            print('generate new project:', self.pj_dict)
        else:
            QMessageBox.warning(self, self.make_trans('warning'),
                                self.make_trans('no_case_mesh'),
                                QMessageBox.Yes, QMessageBox.Yes)
            print('file not exists')
예제 #4
0
    def exportToPDF(self, document):
        """
        this will download the formatted document to the file of the users choice
        :param document: reference to the document
        :param to_print: if the caller intends to print the document
        :return: returns the qprinter object that is created
        """
        logging.debug("")
        # get the file name if exporting
        file_name = QFileDialog.getSaveFileName(self.app, 'Save To PDF')

        if file_name is not None:
            file_name = file_name[0]

        # if the file name is not given return none
        if file_name == '':
            return None

        # if there is no pdf extension then add it
        file_info = QFileInfo(file_name)
        if file_info.suffix() != "pdf":
            if file_name.find('.') != -1:
                file_name = file_name[:file_name.rindex('.')] + ".pdf"
            else:
                file_name = file_name + ".pdf"

        # create the qprinter object
        printer = QPrinter(QPrinter.HighResolution)
        printer.setPageSize(QPrinter.A4)
        printer.setColorMode(QPrinter.Color)
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName(file_name)
        document.print_(printer)
        return printer
    def replaceImage(self, filepath, title):
        self.title = title
        self.filepath = filepath

        # set custom properties
        self.setCustomProperty("title", title)
        self.setCustomProperty("filepath", self.filepath)
        self.setName(title)

        fileInfo = QFileInfo(filepath)
        ext = fileInfo.suffix()
        if ext == "pdf":
            s = QSettings()
            oldValidation = s.value("/Projections/defaultBehavior")
            s.setValue(
                "/Projections/defaultBehavior", "useGlobal"
            )  # for not asking about crs
            path = fileInfo.filePath()
            baseName = fileInfo.baseName()
            layer = QgsRasterLayer(path, baseName)
            self.image = layer.previewAsImage(QSize(layer.width(), layer.height()))
            s.setValue("/Projections/defaultBehavior", oldValidation)
        else:
            reader = QImageReader(filepath)
            self.image = reader.read()
        self.repaint()
예제 #6
0
파일: simMain.py 프로젝트: yuuzhang/simMain
 def pBtn_RunClicked(self):
     self.pBtn_Run.setEnabled(False)
     global pool,parent_pid
     parent_pid = os.getpid()
   
     fi=QFileInfo(self.lnEdit_Prog.text())
     #runName=fi.baseName()
     ns3path=os.path.dirname(fi.dir().path())
     ns3path=os.path.dirname(ns3path)
     self.exepath=os.path.dirname(ns3path)
     routingName=self.cmBox_RoutingName.currentText()
     simSpan=self.cmBox_SimulationSpan.currentText()
     #global pool
     #jobs=[]
     Thread.daemon=True
     pool = Pool(processes=self.spinBox_processes.value())
     cmds={}
     for traffic in range(string.atoi(self.lnEdit_loadStart.text()),string.atoi(self.lnEdit_loadEnd.text()),
                          string.atoi(self.lnEdit_loadStep.text())):
         if fi.suffix()=="cpp":
             cmds[traffic]="./waf --run='{1} --routingName={3} --simulationSpan={2} --InterestsPerSec={0}'".format(traffic,fi.baseName(),simSpan,routingName)
         else:
             cmds[traffic]="./waf --pyrun='{1} --routingName={3} --simulationSpan={2} --InterestsPerSec={0}'".format(traffic,'src/ndnSIM/examples/'+fi.fileName(),simSpan,routingName)
         res=pool.apply_async(runJob,args=(cmds[traffic],traffic,self.exepath),callback=self.invokeRefresh)
          
         jobs.append(res)
         self.listWidget_activeProg.addItem(cmds[traffic])
         #res.wait()
         #print(res.get())       
     pool.close()    #关闭线程池,不再接收新任务
예제 #7
0
파일: utilities.py 프로젝트: B-Rich/PPQT2
class FileBasedTextStream(QTextStream):
    def __init__(self, qfile):
        super().__init__(qfile)
        self.saved_file = qfile
        self.qfi = None # may never need this
    def rewind(self):
        self.flush()
        self.seek(0)
    def writeLine(self, str):
        self << str
        self << '\n'
    def open_mode(self):
        return self.saved_file.openMode()
    def fullpath(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.canonicalFilePath()
    def folderpath(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.canonicalPath()
    def filename(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.fileName()
    def basename(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.completeBaseName()
    def suffix(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.suffix()
예제 #8
0
 def __saveFileName(self, directory):
     """
     Private method to calculate a name for the file to download.
     
     @param directory name of the directory to store the file into (string)
     @return proposed filename and original filename (string, string)
     """
     path = parseContentDisposition(self.__reply)
     info = QFileInfo(path)
     baseName = info.completeBaseName()
     endName = info.suffix()
     
     origName = baseName
     if endName:
         origName += '.' + endName
     
     name = directory + baseName
     if endName:
         name += '.' + endName
         if not self.__requestFilename:
             # do not overwrite, if the user is not being asked
             i = 1
             while QFile.exists(name):
                 # file exists already, don't overwrite
                 name = directory + baseName + ('-{0:d}'.format(i))
                 if endName:
                     name += '.' + endName
                 i += 1
     return name, origName
예제 #9
0
    def pBtn_RunClicked(self):
        fi = QFileInfo(self.lnEdit_Prog.text())
        #runName=fi.baseName()
        ns3path = os.path.dirname(fi.dir().path())
        ns3path = os.path.dirname(ns3path)
        self.exepath = os.path.dirname(ns3path)
        routingName = self.cmBox_RoutingName.currentText()
        simSpan = self.cmBox_SimulationSpan.currentText()
        pool = Pool(processes=self.spinBox_processes.value())
        cmds = {}
        for traffic in range(string.atoi(self.lnEdit_loadStart.text()),
                             string.atoi(self.lnEdit_loadEnd.text()),
                             string.atoi(self.lnEdit_loadStep.text())):
            if fi.suffix() == "cpp":
                cmds[
                    traffic] = "./waf --run='{1} --routingName={3} --simulationSpan={2} --InterestsPerSec={0}'".format(
                        traffic, fi.baseName(), simSpan, routingName)
            else:
                cmds[
                    traffic] = "./waf --pyrun='{1} --routingName={3} --simulationSpan={2} --InterestsPerSec={0}'".format(
                        traffic, 'src/ndnSIM/examples/' + fi.fileName(),
                        simSpan, routingName)
            res = pool.apply_async(runJob,
                                   args=(cmds[traffic], self.exepath),
                                   callback=self.invokeRefresh)
            self.listWidget_activeProg.addItem(cmds[traffic])
            #res.wait()
            #print(res.get())
        pool.close()  #关闭线程池,不再接收新任务

        #proc=Process(target=ajob.runJob, args=("./waf --run='ndn-zhangyu-multipath --simulationSpan=50 --InterestsPerSec=50'", os.environ['HOME']+"/ndnSIM20170130/ns-3/"))
        #proc.start()
        #proc.join()
        self.refreshGUI("")
 def loadMap(self, fullpath):
     print(fullpath)
     info = QFileInfo(fullpath)
     basename = info.baseName()
     suffix = info.suffix()
     print(basename)
     print(suffix)
     if suffix == 'shp':
         print('vector')
         # 打开矢量图层
         self.layer = QgsVectorLayer(fullpath, basename, "ogr")
         if not self.layer:
             print("failed")
     else:
         print('raster')
         #打开栅格图层
         self.layer = QgsRasterLayer(fullpath, basename, "gdal")
         if not self.layer:
             print("failed")
     # 注册图层
     QgsProject.instance().addMapLayer(self.layer)
     self.mapCanvas.setLayers([self.layer])
     #设置图层范围
     self.mapCanvas.setExtent(self.layer.extent())
     self.mapCanvas.refresh()
예제 #11
0
    def startSearch(self, query):
        print("search started..", query)
        filters = QDir.Files
        nameFilters = ["*.cpp"]
        iterator = QDirIterator("/home/alexanderb", nameFilters, filters,
                                QDirIterator.Subdirectories)
        while (iterator.hasNext()):
            filePath = iterator.next()
            fileInfo = QFileInfo(filePath)
            currentFile = QFile(filePath)
            currentFile.open(QFile.ReadOnly | QFile.Text)
            fileContents = currentFile.readAll().data().decode('utf8',
                                                               errors='ignore')
            if (fileContents.find(query) != -1):
                qtwItem = QTreeWidgetItem()
                qtwItem.setText(0, fileInfo.fileName())
                qtwItem.setText(1, fileInfo.suffix())
                qtwItem.setText(2, str(fileInfo.size() / 1024))
                qtwItem.setText(3,
                                fileInfo.lastModified().toString("MM/dd/yyyy"))
                qtwItem.setText(4, fileInfo.created().toString("MM/dd/yyyy"))
                qtwItem.setText(5, str("...here is the content..."))
                qtwItem.setText(6, filePath)
                self.qtwItems.append(qtwItem)

                self.match_found.emit(qtwItem)

        self.finished.emit()
예제 #12
0
    def msg(self):

        directory1 = QFileDialog.getExistingDirectory(self, "选择文件夹", "/")
        print(directory1)  # 打印文件夹路径

        fileName, filetype = QFileDialog.getOpenFileName(
            self, "选择文件", "/", "All Files (*);;Text Files (*.txt)")
        print(fileName, filetype)  # 打印文件全部路径(包括文件名和后缀名)和文件类型
        print(fileName)  # 打印文件全部路径(包括文件名和后缀名)
        fileinfo = QFileInfo(fileName)
        print(fileinfo)  # 打印与系统相关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等。
        file_name = fileinfo.fileName()
        print(file_name)  # 打印文件名和后缀名
        file_suffix = fileinfo.suffix()
        print(file_suffix)  # 打印文件后缀名
        file_path = fileinfo.absolutePath()
        print(file_path)  # 打印文件绝对路径(不包括文件名和后缀名)

        files, ok1 = QFileDialog.getOpenFileNames(self, "多文件选择", "/",
                                                  "所有文件 (*);;文本文件 (*.txt)")
        print(files, ok1)  # 打印所选文件全部路径(包括文件名和后缀名)和文件类型

        fileName2, ok2 = QFileDialog.getSaveFileName(self, "文件保存", "/",
                                                     "图片文件 (*.png);;(*.jpeg)")
        print(fileName2)  # 打印保存文件的全部路径(包括文件名和后缀名)
예제 #13
0
    def set_mode_by_filename(self, filename):
        file = QFile(filename)
        fileinfo = QFileInfo(file)

        suffix = fileinfo.suffix()
        self.page().mainFrame().evaluateJavaScript("editor.getSession().setMode('%s');" % (
            self.SUFIX_2_MODE[suffix] if suffix in self.SUFIX_2_MODE else self.SUFIX_2_MODE[None]
        ))
예제 #14
0
 def GetFile(self, typeOfFile, suff):
     options = QFileDialog.Options()
     fileName, _ = QFileDialog.getOpenFileName(
         self,
         "Open {} File".format(typeOfFile),
         "",
         "{}".format(suff),
         options=options)
     if fileName:
         if typeOfFile == "any":
             myCipher.fileToBeSigned = fileName
             f = QFileInfo(fileName)
             n = f.fileName()
             file_info = "Informations about the file:\n \n"
             file_info += "Name: " + n + "\n"
             p = f.filePath()
             file_info += "Path: " + p + "\n"
             suf = f.suffix()
             file_info += "Suffix: " + suf + "\n"
             size = f.size()
             file_info += "Size (in bytes): " + str(size) + "\n"
             lastModify = f.lastModified().toPyDateTime()
             file_info += "Date of last change: " + str(lastModify)
             self.fileInfo.setText(file_info)
         elif typeOfFile == "Signed":
             myCipher.userFile = fileName
         elif typeOfFile == "Private key":
             myCipher.privPath = fileName
             with open(fileName, "r") as f:
                 f.seek(4)
                 base64Text = f.readline()
                 decodedBase64D = self.decodeFromBase64(base64Text)
                 myCipher.d = int(decodedBase64D, 10)
                 base64Text2 = f.readline()
                 decodedBase64N = self.decodeFromBase64(base64Text2)
                 myCipher.n = int(decodedBase64N, 10)
         elif typeOfFile == "Public key":
             myCipher.pubPath = fileName
             with open(fileName, "r") as f:
                 f.seek(4)
                 base64Text = f.readline()
                 decodedBase64E = self.decodeFromBase64(base64Text)
                 myCipher.e = int(decodedBase64E, 10)
                 base64Text2 = f.readline()
                 decodedBase64N = self.decodeFromBase64(base64Text2)
                 myCipher.n = int(decodedBase64N, 10)
         elif typeOfFile == "Zip":
             myCipher.zipPath = fileName
             with zipfile.ZipFile(fileName, "r") as z:
                 z.extractall("Extracted_files")
         elif typeOfFile == "Sign":
             myCipher.fileToBeVerified = fileName
             with open(fileName, "r") as f:
                 f.seek(13)
                 base64Text = f.readline()
                 decodedBase64 = self.decodeFromBase64(base64Text)
                 myCipher.toVerifyMessage = list(decodedBase64)
예제 #15
0
 def vector_load_file(self):
     """ Open dialog to load vector layer."""
     self.vector_filename, __ = QFileDialog.getOpenFileName(self, 'Vector Layer from File', QDir.homePath(),
                                                            "Vector Layer(*.shp *.kml *.osm *.gpx) ;; All files (*.*)")
     if self.vector_filename:
         file_info = QFileInfo(self.vector_filename)
         self.vector_base_name = file_info.baseName()
         self.vector_file_extension = file_info.suffix()
         self.vector_file_lineEdit.setText(str(self.vector_filename))
         self.vector_name_lineEdit.setText(str(self.vector_base_name))
예제 #16
0
    def ClickedEvent(self, event):
        validSuffix = ['jpg', 'png']
        index = self.selectedIndexes()[0]
        finfo = QFileInfo(self._model.filePath(index))

        if finfo.suffix().lower() not in validSuffix:
            return

        if finfo.isFile() and finfo.isReadable():
            self.fileSelected.emit(finfo.absoluteFilePath())
예제 #17
0
 def add_song(self, song_path):
     if song_path.split(".")[-1] not in ["mp3", "flac", "ogg"]:
         raise AssertionError
     song = self.path_to_song(song_path)
     filepath = song.path
     fileInfo = QFileInfo(filepath)
     if fileInfo.exists():
         url = QUrl.fromLocalFile(fileInfo.absoluteFilePath())
         if fileInfo.suffix().lower() == "mp3" or "flac" or "ogg":
             self.playlist.addMedia(QMediaContent(url))
             self.songs.append(song)
예제 #18
0
 def dragEnterEvent(self, e):
     """Qt event override for drag enter event"""
     if len(e.mimeData().urls()) > 0 and e.mimeData().urls()[0].isLocalFile():
         qi = QFileInfo(e.mimeData().urls()[0].toLocalFile())
         ext = qi.suffix()
         if ext == "jpg" or ext == "jpeg" or ext == "png" or ext == "JPG" or ext == "PNG":
             e.accept()
         else:
             e.ignore()
     else:
         e.ignore()
예제 #19
0
    def checkFiles(self, lst):
        f = QFileInfo()
        newLst = []
        for url in lst:
            _file = url.toLocalFile()
            print("FILE::", url, _file)
            f.setFile(_file)
            if f.suffix() not in ("tar", "exe", "mp3", "mp4", "flv", "zip", "rar", "iso"):
                newLst.append(_file)

        if newLst:
            self.openFiles.emit(newLst)
예제 #20
0
class FileBasedTextStream(QTextStream):
    def __init__(self, qfile):
        super().__init__(qfile)
        self.saved_file = qfile
        self.qfi = None  # may never need this

    def rewind(self):
        self.flush()
        self.seek(0)

    def writeLine(self, str):
        self << str
        self << '\n'

    def open_mode(self):
        return self.saved_file.openMode()

    def fullpath(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.canonicalFilePath()

    def folderpath(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.canonicalPath()

    def filename(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.fileName()

    def basename(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.completeBaseName()

    def suffix(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.suffix()

    def flush(self):
        super().flush()  # make sure text buffer goes to device
        return self.device().flush()  # do a real flush

    def show_error(self, action, parent):
        error_number = self.device().error()
        if error_number:  # is not 0, no error
            error_string = self.device().errorString()
            msg_string = 'Error {} ({}) on {}'.format(error_number,
                                                      error_string, action)
            warning_msg(msg_string, self.fullpath(), parent)
예제 #21
0
 def dragEnterEvent(self, e):
     """Drag files directly onto the widget"""
     if len(e.mimeData().urls()) > 0 and e.mimeData().urls()[0].isLocalFile(
     ):
         qi = QFileInfo(e.mimeData().urls()[0].toLocalFile())
         ext = qi.suffix()
         if ext == 'jpg' or ext == 'jpeg' or ext == 'png' or ext == 'JPG' or ext == 'PNG':
             e.accept()
         else:
             e.ignore()
     else:
         e.ignore()
예제 #22
0
    def show(self):
        """
        Public slot to show this dialog.
        
        This overloaded slot loads a UI file to be previewed after
        the main window has been shown. This way, previewing a dialog
        doesn't interfere with showing the main window.
        """
        super(TRPreviewer, self).show()
        if self.filesToLoad:
            filenames, self.filesToLoad = (self.filesToLoad[:], [])
            first = True
            for fn in filenames:
                fi = QFileInfo(fn)
                if fi.suffix().lower() == 'ui':
                    self.preview.loadWidget(fn)
                elif fi.suffix().lower() == 'qm':
                    self.translations.add(fn, first)
                    first = False

            self.__updateActions()
예제 #23
0
 def show(self):
     """
     Public slot to show this dialog.
     
     This overloaded slot loads a UI file to be previewed after
     the main window has been shown. This way, previewing a dialog
     doesn't interfere with showing the main window.
     """
     super(TRPreviewer, self).show()
     if self.filesToLoad:
         filenames, self.filesToLoad = (self.filesToLoad[:], [])
         first = True
         for fn in filenames:
             fi = QFileInfo(fn)
             if fi.suffix().lower() == 'ui':
                 self.preview.loadWidget(fn)
             elif fi.suffix().lower() == 'qm':
                 self.translations.add(fn, first)
                 first = False
         
         self.__updateActions()
예제 #24
0
    def saveAsDocument(self, document):
        """
        prompts the user for a new filename or path and saves the document as that
        :param document: Reference to the document
        :return: Returns if the save as succeeded or not
        """
        new_path = \
            QFileDialog.getSaveFileName(self.app, 'Save File', self.app.left_menu.model.rootPath())[
                0]

        # if the new path is an empty string do nothing
        if new_path == '':
            logging.warning("No New File Path Given")
            return False

        # check if the document is formatted
        if self.app.btn_mode_switch.isChecked():
            f_info = QFileInfo(new_path)
            if f_info.suffix() != "lef":
                new_path = os.path.join(f_info.path(), f_info.baseName()) + '.lef'
            data = document.toHtml()
        else:
            f_info = QFileInfo(new_path)
            if f_info.suffix() == "lef":
                new_path = os.path.join(f_info.path(), f_info.baseName()) + '.txt'
            data = document.toPlainText()

        # now write to the new_path
        self.writeFileData(new_path, data)

        # add the document to the dict of documents
        self.open_documents[new_path] = QFileInfo(new_path)
        self.current_document = self.open_documents[new_path]
        self.file_opened_time = os.path.getatime(self.current_document.absoluteFilePath())

        # open the document with its new text
        self.openDocument(document, new_path)

        logging.info("Saved File As - %s", new_path)
        return True
    def start_search(self, query, search_directory):
        self.keep_searching = True
        print("search started..", query)
        filters = QDir.Files

        nameFilters = [
            "*.cpp", "*.txt", "*.pdf", "*.doc", "*.docx", "*.xlsx", "*.xls",
            "*.ppt", "*.pptx"
        ]

        iterator = QDirIterator(search_directory, nameFilters, filters,
                                QDirIterator.Subdirectories)
        while (iterator.hasNext()):
            QApplication.processEvents()
            if (self.keep_searching):
                file_path = iterator.next()
                if (os.access(file_path, os.R_OK)):
                    try:
                        file_info = QFileInfo(file_path)
                        file_contents = parser.from_file(file_path)
                    except:
                        continue

                    if (file_contents['status'] == 200
                            and 'content' in file_contents.keys()
                            and file_contents['content'] is not None):
                        found_index = file_contents['content'].find(query)
                        if (found_index != -1):
                            snippet = file_contents['content'].strip().replace(
                                '\n', ' ').replace('\r', '')
                            snippet_index = snippet.find(query)

                            qtw_item = QTreeWidgetItem()
                            qtw_item.setText(0, file_info.fileName())
                            qtw_item.setText(1, file_info.suffix())
                            qtw_item.setText(2, str(file_info.size() / 1024))
                            qtw_item.setText(
                                3,
                                file_info.lastModified().toString(
                                    "MM/dd/yyyy"))
                            qtw_item.setText(
                                4,
                                file_info.created().toString("MM/dd/yyyy"))
                            qtw_item.setText(
                                5,
                                str(snippet)[snippet_index - 5:snippet_index +
                                             10])
                            qtw_item.setText(6, file_path)
                            self.qtw_items.append(qtw_item)

                            self.match_found.emit(qtw_item)
        self.finished.emit()
예제 #26
0
 def openOnStart(self, name):
     fileInfo = QFileInfo(name)
     if fileInfo.exists():
         url = QUrl.fromLocalFile(fileInfo.absoluteFilePath())
         if fileInfo.suffix().lower() == 'm3u':
             self.playlist.load(url)
         else:
             self.playlist.addMedia(QMediaContent(url))
     else:
         url = QUrl(name)
         if url.isValid():
             self.playlist.addMedia(QMediaContent(url))
     print("added Files to playlist")
예제 #27
0
 def addToPlaylist(self, fileNames):
     for name in fileNames:
         fileInfo = QFileInfo(name)
         if fileInfo.exists():
             url = QUrl.fromLocalFile(fileInfo.absoluteFilePath())
             if fileInfo.suffix().lower() == 'm3u':
                 self.playlist.load(url)
             else:
                 self.playlist.addMedia(QMediaContent(url))
         else:
             url = QUrl(name)
             if url.isValid():
                 self.playlist.addMedia(QMediaContent(url))
예제 #28
0
    def _load_audio(self):
        filename = os.path.join(self.audio_path, "{:03}.mp3".format(self._song_number))
        self.playlist.clear()
        fileInfo = QFileInfo(filename)
        if fileInfo.exists():
            url = QUrl.fromLocalFile(fileInfo.absoluteFilePath())
            if fileInfo.suffix().lower() == 'm3u':
                self.playlist.load(url)
            else:
                self.playlist.addMedia(QMediaContent(url))
                self._loading_audio = True

            self.player.play()
예제 #29
0
    def checkFiles(self, lst):
        f = QFileInfo()
        newLst = []
        for url in lst:
            _file = url.toLocalFile()
            print("FILE::", url, _file)
            f.setFile(_file)
            if f.suffix() not in ("tar", "exe", "mp3", "mp4", "flv", "zip",
                                  "rar", "iso"):
                newLst.append(_file)

        if newLst:
            self.openFiles.emit(newLst)
예제 #30
0
파일: player.py 프로젝트: heylenz/python27
 def addToPlaylist(self, fileNames):
     for name in fileNames:
         fileInfo = QFileInfo(name)
         if fileInfo.exists():
             url = QUrl.fromLocalFile(fileInfo.absoluteFilePath())
             if fileInfo.suffix().lower() == 'm3u':
                 self.playlist.load(url)
             else:
                 self.playlist.addMedia(QMediaContent(url))
         else:
             url = QUrl(name)
             if url.isValid():
                 self.playlist.addMedia(QMediaContent(url))
예제 #31
0
 def on_btnFile_copy_clicked(self):
    self.__showBtnInfo(self.sender())
    sous=self.ui.editFile.text().strip()   #源文件
    if sous=="":
       self.ui.textEdit.appendPlainText("请先选择一个文件")
       return
    
    fileInfo=QFileInfo(sous)
    newFile=fileInfo.path()+"/"+fileInfo.baseName()+"--副本."+fileInfo.suffix()
    if QFile.copy(sous,newFile):  
       self.ui.textEdit.appendPlainText("源文件:"+sous)
       self.ui.textEdit.appendPlainText("复制为文件:"+newFile+"\n")
    else:
       self.ui.textEdit.appendPlainText("复制文件失败")
예제 #32
0
 def selectOutputFile(self):
     settings = QSettings()
     outputFilePath = QFileDialog.getSaveFileName(
         None,
         QCoreApplication.translate("ProfileExportDialog",
                                    "Select profile output file"),
         settings.value("/profileexport/outputdir", ""),
         "XML files (*.xml *.XML)")[0]
     if outputFilePath:
         outputFileInfo = QFileInfo(outputFilePath)
         if not outputFileInfo.suffix():
             outputFilePath.append(".xml")
         self.mOutputFileLineEdit.setText(outputFilePath)
         settings.setValue("/profileexport/outputdir",
                           outputFileInfo.absolutePath())
예제 #33
0
    def loadImages(self, fileNames):
        for fileName in fileNames:
            row = self.imagesTable.rowCount()
            self.imagesTable.setRowCount(row + 1)
            fileInfo = QFileInfo(fileName)
            imageName = fileInfo.baseName()
            fileImage2x = fileInfo.absolutePath(
            ) + '/' + imageName + "@2x." + fileInfo.suffix()
            fileInfo2x = QFileInfo(fileImage2x)
            image = QImage(fileName)
            toolTip = "Directory: {}\nFile: {}\nFile@2x: {}\nSize: {}x{}".format(
                QDir.toNativeSeparators(fileInfo.absolutePath()),
                fileInfo.fileName(),
                fileInfo2x.fileName() if fileInfo2x.exists else "<None>",
                image.width(), image.height())
            fileItem = QTableWidgetItem(imageName)
            fileItem.setData(Qt.UserRole, fileName)
            fileItem.setIcon(QIcon(QPixmap.fromImage(image)))
            fileItem.setFlags((fileItem.flags() | Qt.ItemIsUserCheckable)
                              & ~Qt.ItemIsEditable)
            fileItem.setToolTip(toolTip)
            self.imagesTable.setItem(row, 0, fileItem)

            mode = QIcon.Normal
            state = QIcon.Off

            if self.guessModeStateAct.isChecked():
                if "_act" in imageName:
                    mode = QIcon.Active
                elif "_dis" in imageName:
                    mode = QIcon.Disabled
                elif "_sel" in imageName:
                    mode = QIcon.Selected

                if "_on" in imageName:
                    mode = QIcon.On

            modeItem = QTableWidgetItem(IconPreviewArea.iconModeNames()[
                IconPreviewArea.iconModes().index(mode)])
            modeItem.setToolTip(toolTip)
            self.imagesTable.setItem(row, 1, modeItem)
            stateItem = QTableWidgetItem(IconPreviewArea.iconStateNames()[
                IconPreviewArea.iconStates().index(state)])
            stateItem.setToolTip(toolTip)
            self.imagesTable.setItem(row, 2, stateItem)
            self.imagesTable.openPersistentEditor(modeItem)
            self.imagesTable.openPersistentEditor(stateItem)
            fileItem.setCheckState(Qt.Checked)
예제 #34
0
            def on_load():
                file = QFile(filename)
                fileinfo = QFileInfo(file)

                file.open(QFile.ReadOnly)
                data = file.readAll()
                codec = QTextCodec.codecForUtfText(data)
                unistr = codec.toUnicode(data)

                self.page().mainFrame().findFirstElement("#editor").setInnerXml(unistr)
                self.page().mainFrame().evaluateJavaScript("init()")

                suffix = fileinfo.suffix()
                self.page().mainFrame().evaluateJavaScript("editor.getSession().setMode('%s');" % (
                    self.SUFIX_2_MODE[suffix] if suffix in self.SUFIX_2_MODE else self.SUFIX_2_MODE[None]
                ))
예제 #35
0
 def get_journal(self, case_path, file_type):
     """
     if checbox checked, it will use own journal which fill in the LineEdit_journal
     if not checked, it will use default_journal func to get default journal
     :param case_path:
     :return: journal file path
     """
     if self.checkbox_journal.isChecked():
         jou_path = QFileInfo(self.edit_journal_address.text())
         if (jou_path.exists()) and (jou_path.suffix() == "jou"):
             return jou_path.filePath()
         else:
             QMessageBox.warning(self, self.make_trans('warning'),
                                 self.make_trans('no_journal'),
                                 QMessageBox.Yes, QMessageBox.Yes)
     else:
         jou_file = self.default_journal(case_path, file_type)
         return jou_file
예제 #36
0
    def insertFromMimeData(self, mime):

        if mime.hasImage():
            tag = datetime.datetime.now().time().strftime("%H%M%S")
            url = QUrl("dropped_image_" + str(tag))
            self.dropImage(url, mime.imageData())
            mime.imageData().save("/tmp/" + url.toString(), "png") 
        elif mime.hasUrls():
            for url in mime.urls():
                info = QFileInfo(url.toLocalFile()) 
                ext = info.suffix().lower().encode('latin-1')
                if ext in QImageReader.supportedImageFormats():
                    print(str(info.filePath()))
                    self.dropImage(url, info.filePath())
                else:
                    self.dropTextFile(url)
        else:
            super().insertFromMimeData(mime)
예제 #37
0
    def __saveFileName(self, directory):
        """
        Private method to calculate a name for the file to download.
        
        @param directory name of the directory to store the file into (string)
        @return proposed filename and original filename (string, string)
        """
        path = ""
        if self.__reply.hasRawHeader("Content-Disposition"):
            header = bytes(self.__reply.rawHeader("Content-Disposition"))\
                .decode()
            if header:
                pos = header.find("filename=")
                if pos != -1:
                    path = header[pos + 9:]
                    if path.startswith('"') and path.endswith('"'):
                        path = path[1:-1]
        if not path:
            path = self.__url.path()

        info = QFileInfo(path)
        baseName = info.completeBaseName()
        endName = info.suffix()

        if not baseName:
            baseName = "unnamed_download"

        origName = baseName
        if endName:
            origName += '.' + endName

        name = directory + baseName
        if endName:
            name += '.' + endName
            if not self.__requestFilename:
                # do not overwrite, if the user is not being asked
                i = 1
                while QFile.exists(name):
                    # file exists already, don't overwrite
                    name = directory + baseName + ('-{0:d}'.format(i))
                    if endName:
                        name += '.' + endName
                    i += 1
        return name, origName
예제 #38
0
 def __saveFileName(self, directory):
     """
     Private method to calculate a name for the file to download.
     
     @param directory name of the directory to store the file into (string)
     @return proposed filename and original filename (string, string)
     """
     path = ""
     if self.__reply.hasRawHeader("Content-Disposition"):
         header = bytes(self.__reply.rawHeader("Content-Disposition"))\
             .decode()
         if header:
             pos = header.find("filename=")
             if pos != -1:
                 path = header[pos + 9:]
                 if path.startswith('"') and path.endswith('"'):
                     path = path[1:-1]
     if not path:
         path = self.__url.path()
     
     info = QFileInfo(path)
     baseName = info.completeBaseName()
     endName = info.suffix()
     
     if not baseName:
         baseName = "unnamed_download"
     
     origName = baseName
     if endName:
         origName += '.' + endName
     
     name = directory + baseName
     if endName:
         name += '.' + endName
         if not self.__requestFilename:
             # do not overwrite, if the user is not being asked
             i = 1
             while QFile.exists(name):
                 # file exists already, don't overwrite
                 name = directory + baseName + ('-{0:d}'.format(i))
                 if endName:
                     name += '.' + endName
                 i += 1
     return name, origName
예제 #39
0
class FileBasedTextStream(QTextStream):
    def __init__(self, qfile):
        super().__init__(qfile)
        self.saved_file = qfile
        self.qfi = None # may never need this
    def rewind(self):
        self.flush()
        self.seek(0)
    def writeLine(self, str):
        self << str
        self << '\n'
    def open_mode(self):
        return self.saved_file.openMode()
    def fullpath(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.canonicalFilePath()
    def folderpath(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.canonicalPath()
    def filename(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.fileName()
    def basename(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.completeBaseName()
    def suffix(self):
        if self.qfi is None:
            self.qfi = QFileInfo(self.saved_file)
        return self.qfi.suffix()
    def flush(self):
        super().flush() # make sure text buffer goes to device
        return self.device().flush() # do a real flush
    def show_error( self, action, parent ):
        error_number = self.device().error()
        if error_number : # is not 0, no error
            error_string = self.device().errorString()
            msg_string = 'Error {} ({}) on {}'.format(
                error_number, error_string, action )
            warning_msg( msg_string, self.fullpath(), parent )
예제 #40
0
 def getOneSongInfo(self, songPath: str):
     """ 获取一首歌的信息 """
     tag = TinyTag.get(songPath)
     fileInfo = QFileInfo(songPath)
     # 获取标签信息
     suffix = "." + fileInfo.suffix()
     songName = tag.title if tag.title and tag.title.strip(
     ) else fileInfo.baseName()
     songer = tag.artist if tag.artist and tag.artist.strip() else "未知艺术家"
     album = tag.album if tag.album and tag.album.strip() else "未知专辑"
     tracknumber = str(tag.track) if tag.track else "0"
     tcon = tag.genre if tag.genre else "未知流派"
     duration = f"{int(tag.duration//60)}:{int(tag.duration%60):02}"
     album_list = adjustAlbumName(album)
     # 调整曲目序号
     tracknumber = self.__adjustTrackNumber(tracknumber)
     # 获取年份
     if tag.year and tag.year[0] != "0":
         year = tag.year[:4] + "年"
     else:
         tag = File(songPath)
         key_dict = {".m4a": "©day", ".mp3": "TDRC", ".flac": "year"}
         year = (str(tag.get(key_dict[suffix])[0])[:4] +
                 "年" if tag.get(key_dict[suffix]) else "未知年份")
     # 获取时间戳
     createTime = fileInfo.birthTime().toString(Qt.ISODate)
     modifiedTime = fileInfo.lastModified().toString(Qt.ISODate)
     songInfo = {
         "songPath": songPath,
         "songer": songer,
         "songName": songName,
         "album": album_list[0],  # album为原专辑名
         "modifiedAlbum": album_list[-1],  # modifiedAlbum为修改后的专辑名
         "tcon": tcon,
         "year": year,
         "tracknumber": tracknumber,
         "duration": duration,
         "suffix": suffix,
         "createTime": createTime,
         "modifiedTime": modifiedTime,
     }
     return songInfo
예제 #41
0
    def __saveFileName(self, directory):
        """
        Private method to calculate a name for the file to download.
        
        @param directory name of the directory to store the file into (string)
        @return proposed filename and original filename (string, string)
        """
        path = self.__downloadItem.path()
        info = QFileInfo(path)
        baseName = info.completeBaseName()
        endName = info.suffix()

        origName = baseName
        if endName:
            origName += '.' + endName

        name = os.path.join(directory, baseName)
        if endName:
            name += '.' + endName
        return name, origName
    def replaceImage(self, filepath, title):
        self.title = title
        self.filepath = filepath

         # set custom properties
        self.setCustomProperty("title", title)
        self.setCustomProperty("filepath", self.filepath)
        self.setName(title)

        fileInfo = QFileInfo(filepath)
        ext = fileInfo.suffix()
        if ext == "pdf":
            s = QSettings()
            oldValidation = s.value("/Projections/defaultBehavior")
            s.setValue("/Projections/defaultBehavior", "useGlobal")  # for not asking about crs
            path = fileInfo.filePath()
            baseName = fileInfo.baseName()
            layer = QgsRasterLayer(path, baseName)
            self.image = layer.previewAsImage(QSize(layer.width(), layer.height()))
            s.setValue("/Projections/defaultBehavior", oldValidation)
        else:
            reader = QImageReader(filepath)
            self.image = reader.read()
        self.repaint()
예제 #43
0
def main():
    # Initialise.

    defaultContext = "@default"
    fetchedTor = MetaTranslator()
    codecForTr = ''
    codecForSource = ''
    tsFileNames = []
    uiFileNames = []

    verbose = False
    noObsolete = False
    metSomething = False
    numFiles = 0
    standardSyntax = True
    metTsFlag = False
    tr_func = None
    translate_func = None

    # Parse the command line.

    for arg in sys.argv[1:]:
        if arg == "-ts":
            standardSyntax = False

    argc = len(sys.argv)
    i = 1

    while i < argc:
        arg = sys.argv[i]
        i += 1

        if arg == "-help":
            printUsage()
            sys.exit(0)

        if arg == "-version":
            sys.stderr.write("pylupdate5 v%s\n" % PYQT_VERSION_STR)
            sys.exit(0)

        if arg == "-noobsolete":
            noObsolete = True
            continue

        if arg == "-verbose":
            verbose = True
            continue

        if arg == "-ts":
            metTsFlag = True
            continue

        if arg == "-tr-function":
            if i >= argc:
                sys.stderr.write(
                        "pylupdate5 error: missing -tr-function name\n")
                sys.exit(2)

            tr_func = sys.argv[i]
            i += 1
            continue

        if arg == "-translate-function":
            if i >= argc:
                sys.stderr.write(
                        "pylupdate5 error: missing -translate-function name\n")
                sys.exit(2)

            translate_func = sys.argv[i]
            i += 1
            continue

        numFiles += 1

        fullText = ""

        if not metTsFlag:
            f = QFile(arg)

            if not f.open(QIODevice.ReadOnly):
                sys.stderr.write(
                        "pylupdate5 error: Cannot open file '%s'\n" % arg)
                sys.exit(1)

            t = QTextStream(f)
            fullText = t.readAll()
            f.close()

        if standardSyntax:
            oldDir = QDir.currentPath()
            QDir.setCurrent(QFileInfo(arg).path())

            fetchedTor = MetaTranslator()
            codecForTr = ''
            codecForSource = ''
            tsFileNames = []
            uiFileNames = []

            for key, value in proFileTagMap(fullText).items():
                for t in value.split(' '):
                    if key == "SOURCES":
                        fetchtr_py(QDir.current().absoluteFilePath(t),
                                fetchedTor, defaultContext, True,
                                codecForSource, tr_func, translate_func)
                        metSomething = True

                    elif key == "TRANSLATIONS":
                        tsFileNames.append(QDir.current().absoluteFilePath(t))
                        metSomething = True

                    elif key in ("CODEC", "DEFAULTCODEC", "CODECFORTR"):
                        codecForTr = t
                        fetchedTor.setCodec(codecForTr)

                    elif key == "CODECFORSRC":
                        codecForSource = t

                    elif key == "FORMS":
                        fetchtr_ui(QDir.current().absoluteFilePath(t),
                                fetchedTor, defaultContext, True)

            updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete,
                    verbose)

            if not metSomething:
                sys.stderr.write(
                        "pylupdate5 warning: File '%s' does not look like a "
                        "project file\n" % arg)
            elif len(tsFileNames) == 0:
                sys.stderr.write(
                        "pylupdate5 warning: Met no 'TRANSLATIONS' entry in "
                        "project file '%s'\n" % arg)

            QDir.setCurrent(oldDir)
        else:
            if metTsFlag:
                if arg.lower().endswith(".ts"):
                    fi = QFileInfo(arg)

                    if not fi.exists() or fi.isWritable():
                        tsFileNames.append(arg)
                    else:
                        sys.stderr.write(
                                "pylupdate5 warning: For some reason, I "
                                "cannot save '%s'\n" % arg)
                else:
                    sys.stderr.write(
                            "pylupdate5 error: File '%s' lacks .ts extension\n" % arg)
            else:
                fi = QFileInfo(arg)

                if fi.suffix() in ("py", "pyw"):
                    fetchtr_py(fi.absoluteFilePath(), fetchedTor,
                            defaultContext, True, codecForSource, tr_func,
                            translate_func)
                else:
                    fetchtr_ui(fi.absoluteFilePath(), fetchedTor,
                            defaultContext, True)

    if not standardSyntax:
        updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete, verbose)

    if numFiles == 0:
        printUsage()
        sys.exit(1)
    def initializeLayer(self, screenExtent=None):
        if self.error or self.initialized or self.initializing:
            return

        if self.filepath is not None:
            # not safe...
            self.initializing = True
            filepath = self.getAbsoluteFilepath()

            if not os.path.exists(filepath):
                # TODO integrate with BadLayerHandler ?
                loadErrorDialog = LoadErrorDialog(filepath)
                result = loadErrorDialog.exec_()
                if result == 1:
                    # absolute
                    filepath = loadErrorDialog.lineEditImagePath.text()
                    # to relative if needed
                    self.filepath = utils.toRelativeToQGS(filepath)
                    self.setCustomProperty("filepath", self.filepath)
                    QgsProject.instance().setDirty(True)
                else:
                    self.error = True

                del loadErrorDialog

            fileInfo = QFileInfo(filepath)
            ext = fileInfo.suffix()
            if ext == "pdf":
                s = QSettings()
                oldValidation = s.value("/Projections/defaultBehavior")
                s.setValue("/Projections/defaultBehavior", "useGlobal") # for not asking about crs
                path = fileInfo.filePath()
                baseName = fileInfo.baseName()
                layer = QgsRasterLayer(path, baseName)
                self.image = layer.previewAsImage(QSize(layer.width(),layer.height()))
                s.setValue("/Projections/defaultBehavior", oldValidation)
            else:
                reader = QImageReader(filepath)
                self.image = reader.read()

            self.initialized = True
            self.initializing = False

            self.setupCrs()

            if screenExtent:
                # constructor called from AddLayer action
                # if not, layer loaded from QGS project file

                # check if image already has georef info
                # use GDAL
                dataset = gdal.Open(filepath, gdal.GA_ReadOnly)
                georef = None
                if dataset:
                    georef = dataset.GetGeoTransform()

                if georef and not self.is_default_geotransform(georef):
                    self.initializeExistingGeoreferencing(dataset, georef)
                else:
                    # init to default params
                    self.setCenter(screenExtent.center())
                    self.setRotation(0.0)

                    sw = screenExtent.width()
                    sh = screenExtent.height()

                    self.resetScale(sw, sh)

                    self.commitTransformParameters()