Esempio n. 1
0
def copy_embedded_file(src_name, dst_name, macros={}):
    """ Copy an embedded source file to a destination file.  src_name is the
    name of the source file.  dst_name is the name of the destination file.
    macros is an optional dictionary of key/value string macros and instances
    of each key are replaced by the corresponding value.  A UserException is
    raised if there was an error.
    """

    contents = read_embedded_file(src_name)

    for key, value in macros.items():
        contents.replace(bytes(key, encoding='ascii'),
                         bytes(value, encoding='ascii'))

    dst_file = QFile(dst_name)

    if not dst_file.open(QIODevice.WriteOnly | QIODevice.Text):
        raise UserException(
            "Unable to create file {0}.".format(dst_file.fileName()),
            dst_file.errorString())

    if dst_file.write(contents) < 0:
        raise UserException(
            "Unable to write to file {0}.".format(dst_file.fileName()),
            dst_file.errorString())

    dst_file.close()
Esempio n. 2
0
    def __saveImage(self, fileName):
        """
        Private method to save the snapshot.
        
        @param fileName name of the file to save to (string)
        @return flag indicating success (boolean)
        """
        if QFileInfo(fileName).exists():
            res = E5MessageBox.yesNo(
                self,
                self.tr("Save Snapshot"),
                self.tr("<p>The file <b>{0}</b> already exists."
                        " Overwrite it?</p>").format(fileName),
                icon=E5MessageBox.Warning)
            if not res:
                return False

        file = QFile(fileName)
        if not file.open(QFile.WriteOnly):
            E5MessageBox.warning(
                self, self.tr("Save Snapshot"),
                self.tr("Cannot write file '{0}:\n{1}.").format(
                    fileName, file.errorString()))
            return False

        ok = self.__snapshot.save(file)
        file.close()

        if not ok:
            E5MessageBox.warning(
                self, self.tr("Save Snapshot"),
                self.tr("Cannot write file '{0}:\n{1}.").format(
                    fileName, file.errorString()))

        return ok
def copy_embedded_file(src_name, dst_name, macros={}):
    """ Copy an embedded source file to a destination file.  src_name is the
    name of the source file.  dst_name is the name of the destination file.
    macros is an optional dictionary of key/value string macros and instances
    of each key are replaced by the corresponding value.  A UserException is
    raised if there was an error.
    """

    contents = read_embedded_file(src_name)

    for key, value in macros.items():
        contents.replace(bytes(key, encoding='ascii'),
                bytes(value, encoding='ascii'))

    dst_file = QFile(dst_name)

    if not dst_file.open(QIODevice.WriteOnly|QIODevice.Text):
        raise UserException(
                "Unable to create file {0}.".format(dst_file.fileName()),
                dst_file.errorString())

    if dst_file.write(contents) < 0:
        raise UserException(
                "Unable to write to file {0}.".format(dst_file.fileName()),
                dst_file.errorString())

    dst_file.close()
Esempio n. 4
0
 def __saveImage(self, fileName):
     """
     Private method to save the snapshot.
     
     @param fileName name of the file to save to (string)
     @return flag indicating success (boolean)
     """
     if QFileInfo(fileName).exists():
         res = E5MessageBox.yesNo(
             self,
             self.tr("Save Snapshot"),
             self.tr("<p>The file <b>{0}</b> already exists."
                     " Overwrite it?</p>").format(fileName),
             icon=E5MessageBox.Warning)
         if not res:
             return False
     
     file = QFile(fileName)
     if not file.open(QFile.WriteOnly):
         E5MessageBox.warning(
             self, self.tr("Save Snapshot"),
             self.tr("Cannot write file '{0}:\n{1}.")
             .format(fileName, file.errorString()))
         return False
     
     ok = self.__snapshot.save(file)
     file.close()
     
     if not ok:
         E5MessageBox.warning(
             self, self.tr("Save Snapshot"),
             self.tr("Cannot write file '{0}:\n{1}.")
             .format(fileName, file.errorString()))
     
     return ok
Esempio n. 5
0
 def loadFile(self, fileName):
     """
     Open an existing project file
     """
     file = QFile(fileName)
     if not file.open(QFile.ReadOnly | QFile.Text):
         flag = True
     QApplication.setOverrideCursor(Qt.WaitCursor)
     # read a project and create scenario
     if self.project.read(fileName):
         #self.outputs_refresh()
         self.table_list_refresh('scenario')
         self.table_list_refresh('event')
         self.project_display()
         self.protocol_display()
         QApplication.restoreOverrideCursor()
         self.setCurrentFile(fileName)
         flag = False
     else:
         flag = True
     if flag:
         QMessageBox.warning(self, "Lekture Error 123",
                             "Cannot read file %s:\n%s." % (fileName, file.errorString()))
         return False
     #self.document().commandsChanged.connect(self.documentWasModified)
     return True
Esempio n. 6
0
    def __importCertificate(self):
        """
        Private method to read a certificate.
        
        @return certificates read (list of QSslCertificate)
        """
        fname = E5FileDialog.getOpenFileName(
            self,
            self.tr("Import Certificate"),
            "",
            self.tr("Certificate Files (*.pem *.crt *.der *.cer *.ca);;" "All Files (*)"),
        )

        if fname:
            f = QFile(fname)
            if not f.open(QIODevice.ReadOnly):
                E5MessageBox.critical(
                    self,
                    self.tr("Export Certificate"),
                    self.tr(
                        """<p>The certificate could not be read from file""" """ <b>{0}</b></p><p>Error: {1}</p>"""
                    ).format(fname, f.errorString()),
                )
                return []

            crt = f.readAll()
            f.close()
            cert = QSslCertificate.fromData(crt, QSsl.Pem)
            if not cert:
                cert = QSslCertificate.fromData(crt, QSsl.Der)

            return cert

        return []
Esempio n. 7
0
    def save(self, content, path=None):
        """
        Write a temporary file with .tnj extension and copy it over the
        original one.
        .nsf = Ninja Swap File
        # FIXME: Where to locate addExtension, does not fit here
        """
        new_path = False
        if path:
            self.attach_to_path(path)
            new_path = True

        save_path = self._file_path

        if not save_path:
            raise NinjaNoFileNameException("I am asked to write a "
                                           "file but no one told me where")
        swap_save_path = "%s.nsp" % save_path

        # If we have a file system watcher, remove the file path
        # from its watch list until we are done making changes.
        if self.__watcher is not None:
            self.__watcher.removePath(save_path)

        flags = QIODevice.WriteOnly | QIODevice.Truncate
        f = QFile(swap_save_path)
        if settings.use_platform_specific_eol():
            flags |= QIODevice.Text

        if not f.open(flags):
            raise NinjaIOException(f.errorString())

        stream = QTextStream(f)
        encoding = get_file_encoding(content)
        if encoding:
            stream.setCodec(encoding)

        encoded_stream = stream.codec().fromUnicode(content)
        f.write(encoded_stream)
        f.flush()
        f.close()
        # SIGNAL: Will save (temp, definitive) to warn folder to do something
        self.willSave.emit(swap_save_path, save_path)
        self.__mtime = os.path.getmtime(swap_save_path)
        shutil.move(swap_save_path, save_path)
        self.reset_state()

        # If we have a file system watcher, add the saved path back
        # to its watch list, otherwise create a watcher and start
        # watching
        if self.__watcher is not None:
            if new_path:
                # FIXME: what?
                # self.__watcher.removePath(self.__watcher.files()[0])
                self.__watcher.addPath(self._file_path)
            else:
                self.__watcher.addPath(save_path)
        else:
            self.start_watching()
        return self
Esempio n. 8
0
 def saveQTextStream(self):
     error = None
     fh = None
     try:
         fh = QFile(self.__fname)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(unicode(fh.errorString()))
         stream = QTextStream(fh)
         stream.setCodec(CODEC)
         for key, movie in self.__movies:
             stream << "{{MOVIE}} " << movie.title << "\n" \
                    << movie.year << " " << movie.minutes << " " \
                    << movie.acquired.toString(Qt.ISODate) \
                    << "\n{NOTES}"
             if not movie.notes.isEmpty():
                 stream << "\n" << movie.notes
             stream << "\n{{ENDMOVIE}}\n"
     except (IOError, OSError) as e:
         error = "Failed to save: {0}".format(e)
     finally:
         if fh is not None:
             fh.close()
         if error is not None:
             return False, error
         self.__dirty = False
         return True, "Saved {0} movie records to {1}".format(
             len(self.__movies),
             QFileInfo(self.__fname).fileName())
Esempio n. 9
0
def client_script():
    """ Reads qtwebchannel.js from disk and creates QWebEngineScript to inject to QT window.
        This allows for JavaScript code to call python methods marked by pyqtSlot in registered objects.

    Args:
        None.

    Returns:
        None.

    Raises:
    """
    qwebchannel_js = QFile(':/qtwebchannel/qwebchannel.js')
    if not qwebchannel_js.open(QIODevice.ReadOnly):
        raise SystemExit(
            'Failed to load qwebchannel.js with error: %s' %
            qwebchannel_js.errorString())
    qwebchannel_js = bytes(qwebchannel_js.readAll()).decode('utf-8')
    script = QWebEngineScript()
    script.setSourceCode(qwebchannel_js)
    script.setName('qWebChannelJS')
    script.setWorldId(QWebEngineScript.MainWorld)
    script.setInjectionPoint(QWebEngineScript.DocumentReady)
    script.setRunsOnSubFrames(True)
    return script
Esempio n. 10
0
 def exportXml(self, fname):
     error = None
     fh = None
     try:
         fh = QFile(fname)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(unicode(fh.errorString()))
         stream = QTextStream(fh)
         stream.setCodec(CODEC)
         stream << ("<?xml version='1.0' encoding='{0}'?>\n"
                    "<!DOCTYPE MOVIES>\n"
                    "<MOVIES VERSION='1.0'>\n".format(CODEC))
         for key, movie in self.__movies:
             stream << ("<MOVIE YEAR='{0}' MINUTES='{1}' "
                        "ACQUIRED='{2}'>\n".format(movie.year,
                                                   movie.minutes,
                                                   movie.acquired.toString(Qt.ISODate))) \
                    << "<TITLE>" << Qt.escape(movie.title) \
                    << "</TITLE>\n<NOTES>"
             if not movie.notes.isEmpty():
                 stream << "\n" << Qt.escape(encodedNewlines(movie.notes))
             stream << "\n</NOTES>\n</MOVIE>\n"
         stream << "</MOVIES>\n"
     except (IOError, OSError) as e:
         error = "Failed to export: {0}".format(e)
     finally:
         if fh is not None:
             fh.close()
         if error is not None:
             return False, error
         self.__dirty = False
         return True, "Exported {0} movie records to {1}".format(
             len(self.__movies),
             QFileInfo(fname).fileName())
Esempio n. 11
0
    def load_datastream(self, fname):
        error = None
        fh = None

        try:
            fh = QFile(fname)
            if not fh.open(QIODevice.ReadOnly):
                raise IOError(str(fh.errorString()))

            stream = QDataStream(fh)
            while not stream.atEnd():
                self.label = stream.readQString()
                self.diameter = stream.readInt32()
                self.top_elev = stream.readDouble()
                self.design_load = stream.readDouble()
        except EnvironmentError as e:
            error = "Failed to load:{0}".format(e)

        finally:
            if fh is not None:
                fh.close()
            if error is not None:
                print(error)
            self.__dirty = False
            print("load data from{0}".format(QFileInfo(fname).fileName()))


# 缺少计算参数的类
Esempio n. 12
0
 def save(self):
     if "Unnamed" in self.filename:
         filename = QFileDialog.getSaveFileName(
             self, "G.R.O.M. Editor -- Save File As", self.filename,
             "MD files (*.mdp *.itp *.top *.*)")
         print('filename is ', filename)
         if len(filename[0]) == 0:
             return
         self.filename = filename[0]
     self.setWindowTitle(QFileInfo(self.filename).fileName())
     exception = None
     fh = None
     try:
         fh = QFile(self.filename)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(str(fh.errorString()))
         stream = QTextStream(fh)
         stream.setCodec("UTF-8")
         stream << self.toPlainText()
         self.document().setModified(False)
     except EnvironmentError as e:
         exception = e
     finally:
         if fh is not None:
             fh.close()
         if exception is not None:
             raise exception
Esempio n. 13
0
    def load_file(self, fname, check_for_changes=True):
        """
        load a file's content into the application.

        Parameters
        ----------
        fname : str
                full file path and name of the file to load
        check_for_changes : bool
                flag to check for save prompt if file has unsaved changes
        Returns
        -------
        None
        """

        if check_for_changes:
            changed = self.check_for_changes()
            if changed == "Cancel":
                return changed

        self.file_watcher = QFileSystemWatcher([fname])
        self.file_watcher.fileChanged.connect(self.file_updated)
        self.last_updated = time.time()

        self.clear_validation()

        # check that we have read write access to the file
        file = QFile(fname)
        if not file.open(QFile.ReadOnly | QFile.Text):
            msg = "Cannot read file %s:\n%s." % (fname, file.errorString())
            QMessageBox.warning(self, "Recent Files", msg)
            return
        file.close()

        self.load_file_content(fname)
Esempio n. 14
0
    def openFile(self, checked=True, path=None):
        """
        Open a new file.
        If current editor is associated with a file or its content is not null,
        Then create a new editor tab
        :return:
        """
        path = QFileDialog.getOpenFileName()[0] if not path else path
        if len(path) != 0:
            qfile = QFile(path)
            if not qfile.open(QFile.ReadOnly or QFile.Text):
                QMessageBox.warning(self, 'Application',
                                    'Cannot read file %s:\n%s.' % (path, qfile.errorString()))
                return
            with open(path, 'r') as _file:
                content = _file.read()

            if self.currentEditor.file or len(self.currentEditor.document().toPlainText()) > 0:
                self.createEditorTab()

            # associate file on disk with editor
            self.currentEditor.file = path

            # update tab name
            index = self.ui.tabWidgetEditor.indexOf(self.currentEditorTab)
            _translate = QCoreApplication.translate
            self.ui.tabWidgetEditor.setTabText(
                    index, _translate("MainWindow", ntpath.basename(path)))
            self.ui.tabWidgetEditor.setCurrentIndex(index)
            self.currentEditor.setPlainText(content)
Esempio n. 15
0
    def writeTileset(self, *args):
        l = len(args)
        if l==3:
            tileset, device, path = args
            self.d.writeTileset(tileset, device, path)
        elif l==2:
            tp = type(args[1])
            if tp==QIODevice:
                tileset, device, path = args, QString()
                self.d.writeTileset(tileset, device, path)
            elif tp in [QString, str]:
                ##
                # Writes a TSX tileset to the given \a fileName.
                #
                # Returns False and sets errorString() when reading failed.
                # \overload
                ##
                tileset, fileName = args
                file = QFile(fileName)
                if (not self.d.openFile(file)):
                    return False
                self.writeTileset(tileset, file, QFileInfo(fileName).absolutePath())
                if (file.error() != QFile.NoError):
                    self.d.mError = file.errorString()
                    return False

                return True
Esempio n. 16
0
 def save(self):
     if not self.filename:
         path = "."
         fname,filetype = QFileDialog.getSaveFileName(self,
                 "Page Designer - Save As", path,
                 "Page Designer Files (*.pgd)")
         if not fname:
             return
         self.filename = fname
     fh = None
     try:
         fh = QFile(self.filename)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(str(fh.errorString()))
         self.scene.clearSelection()
         stream = QDataStream(fh)
         stream.setVersion(QDataStream.Qt_5_7)
         stream.writeInt32(MagicNumber)
         stream.writeInt16(FileVersion)
         for item in self.scene.items():
             self.writeItemToStream(stream, item)
     except IOError as e:
         QMessageBox.warning(self, "Page Designer -- Save Error",
                 "Failed to save {0}: {1}".format(self.filename, e))
     finally:
         if fh is not None:
             fh.close()
     global Dirty
     Dirty = False
Esempio n. 17
0
    def writeObjectTypes(self, fileName, objectTypes):
        self.mError = ''
        file = QFile(fileName)
        if (not file.open(QIODevice.WriteOnly | QIODevice.Text)):
            self.mError = QCoreApplication.translate(
                "ObjectTypes", "Could not open file for writing.")
            return False

        writer = QXmlStreamWriter(file)
        writer.setAutoFormatting(True)
        writer.setAutoFormattingIndent(1)
        writer.writeStartDocument()
        writer.writeStartElement("objecttypes")
        for objectType in objectTypes:
            writer.writeStartElement("objecttype")
            writer.writeAttribute("name", objectType.name)
            writer.writeAttribute("color", objectType.color.name())
            writer.writeEndElement()

        writer.writeEndElement()
        writer.writeEndDocument()
        if (file.error() != QFile.NoError):
            self.mError = file.errorString()
            return False

        return True
Esempio n. 18
0
    def openJSONData(self, filePath):
        self.msgBox = QMessageBox()
        self.fly = QApplication.desktop().screen().rect().center(
        ) - self.msgBox.rect().center()
        fileInfo = QFileInfo(filePath)
        fileName = fileInfo.fileName()
        openFile = QFile(filePath)

        openFile.open(QIODevice.ReadOnly | QIODevice.Text)
        if openFile.error() != openFile.NoError:
            self.msgBox.information(
                QDialog().move(self.fly), "{}".format(fileName),
                self.translate("openV2rayJSONFile",
                               "Unable to open the file {}:  {}.").format(
                                   fileName, openFile.errorString()))
            openFile = None
            return

        JSONData = str(openFile.readAll(), "utf-8")
        try:
            JSONData = json.loads(JSONData)
        except ValueError as e:
            self.msgBox.information(
                QDialog().move(self.fly),
                self.translate("openV2rayJSONFile", "Parse JSON Data Error"),
                self.translate("openV2rayJSONFile",
                               "Unable to parse {}:  error:{}.").format(
                                   fileName, e))
            openFile = None
            JSONData = None
            return
        else:
            return JSONData
        openFile.close()
 def __importCertificate(self):
     """
     Private method to read a certificate.
     
     @return certificates read (list of QSslCertificate)
     """
     fname = E5FileDialog.getOpenFileName(
         self,
         self.tr("Import Certificate"),
         "",
         self.tr("Certificate Files (*.pem *.crt *.der *.cer *.ca);;"
                 "All Files (*)"))
     
     if fname:
         f = QFile(fname)
         if not f.open(QIODevice.ReadOnly):
             E5MessageBox.critical(
                 self,
                 self.tr("Export Certificate"),
                 self.tr(
                     """<p>The certificate could not be read from file"""
                     """ <b>{0}</b></p><p>Error: {1}</p>""")
                 .format(fname, f.errorString()))
             return []
         
         crt = f.readAll()
         f.close()
         cert = QSslCertificate.fromData(crt, QSsl.Pem)
         if not cert:
             cert = QSslCertificate.fromData(crt, QSsl.Der)
         
         return cert
     
     return []
Esempio n. 20
0
    def _initPreviewToTextSync(self):
        """Initialize the system per items 1, 2, and 4 above."""
        # When a web page finishes loading, reinsert our JavaScript.
        page = self._dock._widget.webEngineView.page()

        # Insert our scripts into every loaded page.
        qwebchannel_js = QFile(':/qtwebchannel/qwebchannel.js')
        if not qwebchannel_js.open(QIODevice.ReadOnly):
            raise SystemExit('Failed to load qwebchannel.js with error: %s' %
                             qwebchannel_js.errorString())
        qwebchannel_js = bytes(qwebchannel_js.readAll()).decode('utf-8')

        # Set up the QWebChannel. See http://doc.qt.io/qt-5/qtwebchannel-javascript.html.
        # Run the script containing QWebChannel.js first.
        beforeScript = QWebEngineScript()
        beforeScript.setSourceCode(qwebchannel_js + self._jsPreviewSync +
                                   self._qtJsInit)
        beforeScript.setName('qwebchannel.js, previewSync')
        # Run this JavaScript separated from any JavaScript present in the loaded web page. This provides better security (rogue pages can't access the QWebChannel) and better isolation (handlers, etc. won't conflict, I hope).
        beforeScript.setWorldId(QWebEngineScript.ApplicationWorld)
        beforeScript.setInjectionPoint(QWebEngineScript.DocumentCreation)
        # Per `setWebChannel <http://doc.qt.io/qt-5/qwebenginepage.html#setWebChannel>`_, only one channel is allowed per page. So, don't run this on sub-frames, since it will attempt the creation of more channels for each subframe.
        beforeScript.setRunsOnSubFrames(False)
        page.scripts().insert(beforeScript)

        # Set up the web channel. See https://riverbankcomputing.com/pipermail/pyqt/2015-August/036346.html
        # and http://stackoverflow.com/questions/28565254/how-to-use-qt-webengine-and-qwebchannel.
        # For debug, ``set QTWEBENGINE_REMOTE_DEBUGGING=port`` then browse to
        # http://127.0.0.1:port, where port=60000 works for me. See https://riverbankcomputing.com/pipermail/pyqt/2015-August/036346.html.
        self.channel = QWebChannel(page)
        self.channel.registerObject("previewSync", self)
        # Expose the ``qt.webChannelTransport`` object in the world where these scripts live.
        page.setWebChannel(self.channel, QWebEngineScript.ApplicationWorld)
Esempio n. 21
0
 def importDOM(self, fname):
     dom = QDomDocument()
     error = None
     fh = None
     try:
         fh = QFile(fname)
         if not fh.open(QIODevice.ReadOnly):
             raise IOError(unicode(fh.errorString()))
         if not dom.setContent(fh):
             raise ValueError("could not parse XML")
     except (IOError, OSError, ValueError) as e:
         error = "Failed to import: {0}".format(e)
     finally:
         if fh is not None:
             fh.close()
         if error is not None:
             return False, error
     try:
         self.populateFromDOM(dom)
     except ValueError as e:
         return False, "Failed to import: {0}".format(e)
     self.__fname = QString()
     self.__dirty = True
     return True, "Imported {0} movie records from {1}".format(
         len(self.__movies),
         QFileInfo(fname).fileName())
Esempio n. 22
0
 def exportToTxt(self, fname):
     error = None
     fh = None
     try:
         fh = QFile(fname)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(fh.errorString())
         htmlTags = re.compile(r"<[^>]+?>")
         nonDigits = re.compile("[., ]")
         stream = QTextStream(fh)
         stream.setCodec(CODEC)
         for row in range(self.rowCount()):
             name = self.data(self.index(row, NAME))
             owner = self.data(self.index(row, OWNER))
             country = self.data(self.index(row, COUNTRY))
             teu = self.data(self.index(row, TEU))
             teu = int(nonDigits.sub("", teu))
             description = self.data(self.index(row, DESCRIPTION))
             description = htmlTags.sub("", description)
             stream << name << "|" << owner << "|" << country \
                    << "|" << teu << "|" << description << '\r\n'
     except Exception as e:
         error = "Failed to save: {}".format(e)
     finally:
         if fh is not None:
             fh.close()
         if error is not None:
             return False, error
         return True, "Saved {} ship records to {}".format(
             len(self.ships),
             QFileInfo(fname).fileName())
Esempio n. 23
0
    def _initPreviewToTextSync(self):
        """Initialize the system per items 1, 2, and 4 above."""
        # When a web page finishes loading, reinsert our JavaScript.
        page = self._dock._widget.webEngineView.page()

        # Insert our scripts into every loaded page.
        qwebchannel_js = QFile(':/qtwebchannel/qwebchannel.js')
        if not qwebchannel_js.open(QIODevice.ReadOnly):
            raise SystemExit(
                'Failed to load qwebchannel.js with error: %s' %
                qwebchannel_js.errorString())
        qwebchannel_js = bytes(qwebchannel_js.readAll()).decode('utf-8')

        # Set up the QWebChannel. See http://doc.qt.io/qt-5/qtwebchannel-javascript.html.
        # Run the script containing QWebChannel.js first.
        beforeScript = QWebEngineScript()
        beforeScript.setSourceCode(qwebchannel_js + self._jsPreviewSync + self._qtJsInit)
        beforeScript.setName('qwebchannel.js, previewSync')
        # Run this JavaScript separated from any JavaScript present in the loaded web page. This provides better security (rogue pages can't access the QWebChannel) and better isolation (handlers, etc. won't conflict, I hope).
        beforeScript.setWorldId(QWebEngineScript.ApplicationWorld)
        beforeScript.setInjectionPoint(QWebEngineScript.DocumentCreation)
        # Per `setWebChannel <http://doc.qt.io/qt-5/qwebenginepage.html#setWebChannel>`_, only one channel is allowed per page. So, don't run this on sub-frames, since it will attempt the creation of more channels for each subframe.
        beforeScript.setRunsOnSubFrames(False)
        page.scripts().insert(beforeScript)

        # Set up the web channel. See https://riverbankcomputing.com/pipermail/pyqt/2015-August/036346.html
        # and http://stackoverflow.com/questions/28565254/how-to-use-qt-webengine-and-qwebchannel.
        # For debug, ``set QTWEBENGINE_REMOTE_DEBUGGING=port`` then browse to
        # http://127.0.0.1:port, where port=60000 works for me. See https://riverbankcomputing.com/pipermail/pyqt/2015-August/036346.html.
        self.channel = QWebChannel(page)
        self.channel.registerObject("previewSync", self)
        # Expose the ``qt.webChannelTransport`` object in the world where these scripts live.
        page.setWebChannel(self.channel, QWebEngineScript.ApplicationWorld)
Esempio n. 24
0
 def load(self):
     exception = None
     fh = None
     try:
         if not self.filename:
             raise IOError("no filename specified for loading")
         fh = QFile(self.filename)
         if not fh.open(QIODevice.ReadOnly):
             raise IOError(fh.errorString())
         stream = QDataStream(fh)
         magic = stream.readInt32()
         if magic != MAGIC_NUMBER:
             raise IOError("unrecognized file type")
         fileVersion = stream.readInt16()
         if fileVersion != FILE_VERSION:
             raise IOError("unrecognized file type version")
         self.ships = {}
         while not stream.atEnd():
             name = stream.readQString()
             owner = stream.readQString()
             country = stream.readQString()
             description = stream.readQString()
             teu = stream.readInt32()
             ship = Ship(name, owner, country, teu, description)
             self.ships[id(ship)] = ship
             self.owners.add(owner)
             self.countries.add(country)
         self.dirty = False
     except IOError as e:
         exception = e
     finally:
         if fh is not None:
             fh.close()
         if exception is not None:
             raise exception
Esempio n. 25
0
 def on_btnExportTrace_clicked(self):
     """
     Export the contents of the trace tab to .txt file
     """
     # get filename to save as
     dlg = QFileDialog()
     dlg.setAcceptMode(QFileDialog.AcceptSave)
     dlg.setDefaultSuffix("txt")
     dlg.setNameFilters(["Trace File (*.txt)", "all files (*.*)"])
     dlg.setDirectory(self.parent.settings.value("Default/ProjPath"))
     if dlg.exec_():
         fileNames = dlg.selectedFiles()
         if fileNames:
             self.fileName = fileNames[0]
             # save the file
             file = QFile(self.fileName)
             if not file.open(QFile.WriteOnly | QFile.Text):
                 self.helper.displayErrMsg(
                     "Export Trace Error", "Cannot write file {} {}".format(
                         self.fileName, file.errorString()))
                 return
             outstr = QTextStream(file)
             QApplication.setOverrideCursor(Qt.WaitCursor)
             outstr << self.textTrace.toPlainText()
             QApplication.restoreOverrideCursor()
Esempio n. 26
0
 def save(self):
     if self.filename.startswith("Unnamed"):
         filename, filetype = QFileDialog.getSaveFileName(
             self, "Text Editor -- Save File As", self.filename,
             "Text files (*.txt *.*)")
         if not filename:
             return
         self.filename = filename
     self.setWindowTitle(QFileInfo(self.filename).fileName())
     exception = None
     fh = None
     try:
         fh = QFile(self.filename)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(str(fh.errorString()))
         stream = QTextStream(fh)
         stream.setCodec("UTF-8")
         stream << self.toPlainText()
         self.document().setModified(False)
     except EnvironmentError as e:
         exception = e
     finally:
         if fh is not None:
             fh.close()
         if exception is not None:
             raise exception
Esempio n. 27
0
 def saveStyleSheet(self, fileName):
     styleSheet = self.ui.styleTextEdit.toPlainText()
     file = QFile(fileName)
     if file.open(QFile.WriteOnly):
         QTextStream(file) << styleSheet
     else:
         QMessageBox.information(self, "Unable to open file", file.errorString())
Esempio n. 28
0
    def load(self):
        """Load ?"""
        exception = None
        filehandle = None
        try:
            filehandle =  QFile(self.filename)
            if not filehandle.open( QIODevice.ReadOnly):
                raise IOError(unicode(filehandle.errorString()))
            stream =  QTextStream(filehandle)
            stream.setCodec("UTF-8")
            QApplication.processEvents()
            self.setPlainText(stream.readAll())
            self.document().setModified(False)
            self.setWindowTitle( QFileInfo(self.filename).fileName())
            self.loadHighlighter(self.filename)
            for plugin in filter_plugins_by_capability('afterFileOpen',self.enabled_plugins):
                plugin.do_afterFileOpen(self)

        except (IOError, OSError) as error:
            exception = error
        finally:
            if filehandle is not None:
                filehandle.close()
            if exception is not None:
                raise exception
Esempio n. 29
0
    def __exportStyles(self, lexers):
        """
        Private method to export the styles of the given lexers.
        
        @param lexers list of lexer objects for which to export the styles
        """
        fn, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
            self, self.tr("Export Highlighting Styles"), "",
            self.tr("Highlighting styles file (*.e4h)"), "",
            E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))

        if not fn:
            return

        ext = QFileInfo(fn).suffix()
        if not ext:
            ex = selectedFilter.split("(*")[1].split(")")[0]
            if ex:
                fn += ex

        f = QFile(fn)
        if f.open(QIODevice.WriteOnly):
            from E5XML.HighlightingStylesWriter import HighlightingStylesWriter
            HighlightingStylesWriter(f, lexers).writeXML()
            f.close()
        else:
            E5MessageBox.critical(
                self, self.tr("Export Highlighting Styles"),
                self.tr(
                    """<p>The highlighting styles could not be exported"""
                    """ to file <b>{0}</b>.</p><p>Reason: {1}</p>""").format(
                        fn, f.errorString()))
Esempio n. 30
0
 def save(self):
     exception = None
     fh = None
     try:
         if not self.filename:
             raise IOError("no filename specified for saving")
         fh = QFile(self.filename)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(str(fh.errorString()))
         stream = QDataStream(fh)
         stream.writeInt32(MAGIC_NUMBER)
         stream.writeInt16(FILE_VERSION)
         stream.setVersion(QDataStream.Qt_5_7)
         for ship in self.ships.values():
             stream.writeQString(ship.name)
             stream.writeQString(ship.owner)
             stream.writeQString(ship.country)
             stream.writeQString(ship.description)
             stream.writeInt32(ship.teu)
         self.dirty = False
     except IOError as e:
         exception = e
     finally:
         if fh is not None:
             fh.close()
         if exception is not None:
             raise exception
Esempio n. 31
0
    def save(self):
        """Hum ... just save ..."""
        if self.filename.startswith("Unnamed"):
            filename = self.parent().parent().parent().saveAsFile()
            if not (filename == ''):
                return
            self.filename = filename
        self.setWindowTitle( QFileInfo(self.filename).fileName())
        exception = None
        filehandle = None
        try:
            #Before FileSave plugin hook
            for plugin in filter_plugins_by_capability('beforeFileSave',self.enabled_plugins):
                plugin.do_beforeFileSave(self)

            filehandle =  QFile(self.filename)
            if not filehandle.open( QIODevice.WriteOnly):
                raise IOError(unicode(filehandle.errorString()))
            stream =  QTextStream(filehandle)
            stream.setCodec("UTF-8")
            stream << self.toPlainText()
            self.document().setModified(False)
            RecentFiles().append(self.filename)
        except (IOError, OSError) as ioError:
            exception = ioError
        finally:
            if filehandle is not None:
                filehandle.close()
                for plugin in filter_plugins_by_capability('afterFileSave',self.enabled_plugins):
                    plugin.do_afterFileSave(self)

            if exception is not None:
                raise exception
Esempio n. 32
0
    def writeObjectTypes(self, fileName, objectTypes):
        self.mError = ''
        file = QFile(fileName)
        if (not file.open(QIODevice.WriteOnly | QIODevice.Text)):
            self.mError = QCoreApplication.translate(
                        "ObjectTypes", "Could not open file for writing.")
            return False

        writer = QXmlStreamWriter(file)
        writer.setAutoFormatting(True)
        writer.setAutoFormattingIndent(1)
        writer.writeStartDocument()
        writer.writeStartElement("objecttypes")
        for objectType in objectTypes:
            writer.writeStartElement("objecttype")
            writer.writeAttribute("name", objectType.name)
            writer.writeAttribute("color", objectType.color.name())
            writer.writeEndElement()

        writer.writeEndElement()
        writer.writeEndDocument()
        if (file.error() != QFile.NoError):
            self.mError = file.errorString()
            return False

        return True
Esempio n. 33
0
 def save(self):
     if "Unnamed" in self.filename:
         filename = QFileDialog.getSaveFileName(self,
                                                "G.R.O.M. Editor -- Save File As", self.filename,
                                                "MD files (*.mdp *.itp *.top *.*)")
         print('filename is ', filename)
         if len(filename[0]) == 0:
             return
         self.filename = filename[0]
     self.setWindowTitle(QFileInfo(self.filename).fileName())
     exception = None
     fh = None
     try:
         fh = QFile(self.filename)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(str(fh.errorString()))
         stream = QTextStream(fh)
         stream.setCodec("UTF-8")
         stream << self.toPlainText()
         self.document().setModified(False)
     except EnvironmentError as e:
         exception = e
     finally:
         if fh is not None:
             fh.close()
         if exception is not None:
             raise exception
Esempio n. 34
0
 def saveQDataStream(self):
     error = None
     fh = None
     try:
         fh = QFile(self.__fname)
         if not fh.open(QIODevice.WriteOnly):
             raise IOError(unicode(fh.errorString()))
         stream = QDataStream(fh)
         stream.writeInt32(MovieContainer.MAGIC_NUMBER)
         stream.writeInt32(MovieContainer.FILE_VERSION)
         stream.setVersion(QDataStream.Qt_4_2)
         for key, movie in self.__movies:
             stream << movie.title
             stream.writeInt16(movie.year)
             stream.writeInt16(movie.minutes)
             stream << movie.acquired << movie.notes
     except (IOError, OSError) as e:
         error = "Failed to save: {0}".format(e)
     finally:
         if fh is not None:
             fh.close()
         if error is not None:
             return False, error
         self.__dirty = False
         return True, "Saved {0} movie records to {1}".format(
             len(self.__movies),
             QFileInfo(self.__fname).fileName())
Esempio n. 35
0
    def _copy_file(self, uid: str = "", source_path: str = "", dest_path: str = ""):
        self._current_uid = uid

        source_file = QFile(source_path)
        dest_file = QFile(dest_path)

        if not source_file.open(QFile.ReadOnly):
            self.copy_error.emit(uid, FileCopier.CannotOpenSourceFile)
            return

        dest_file_info = QFileInfo(dest_file)
        dest_dir = dest_file_info.absoluteDir()
        if not dest_dir.exists():
            if not dest_dir.mkpath(dest_dir.absolutePath()):
                self.copy_error.emit(uid, FileCopier.CannotCreateDestinationDirectory)
                return

        if not dest_file.open(QFile.WriteOnly):
            ic(dest_path, dest_file.errorString())
            self.copy_error.emit(uid, FileCopier.CannotOpenDestinationFile)
            return

        progress: int = 0
        total: int = source_file.size()
        error: int = FileCopier.NoError
        while True:
            if self._cancel_current:
                self._cancel_current = False
                self.copy_cancelled.emit(uid)
                break

            data: Union[bytes, int] = source_file.read(_COPY_BLOCK_SIZE)
            if isinstance(data, int):
                assert data == -1
                error = FileCopier.CannotReadSourceFile
                break

            data_len = len(data)
            if data_len == 0:
                self.copy_progress.emit(uid, progress, total)
                break

            if data_len != dest_file.write(data):
                error = FileCopier.CannotWriteDestinationFile
                break

            progress += data_len
            self.copy_progress.emit(uid, progress, total)

            qApp.processEvents()

        source_file.close()
        dest_file.close()
        if error != FileCopier.NoError:
            dest_file.remove()
            self.copy_error.emit(uid, error)
        else:
            dest_file.setPermissions(source_file.permissions())
            self.copy_complete.emit(uid)
Esempio n. 36
0
    def save(self, content, path=None):
        """
        Write a temporary file with .tnj extension and copy it over the
        original one.
        .nsf = Ninja Swap File
        # FIXME: Where to locate addExtension, does not fit here
        """
        new_path = False
        if path:
            self.attach_to_path(path)
            new_path = True

        save_path = self._file_path

        if not save_path:
            raise NinjaNoFileNameException("I am asked to write a "
                                           "file but no one told me where")
        swap_save_path = "%s.nsp" % save_path

        # If we have a file system watcher, remove the file path
        # from its watch list until we are done making changes.
        if self.__watcher is not None:
            self.__watcher.removePath(save_path)

        flags = QIODevice.WriteOnly | QIODevice.Truncate
        f = QFile(swap_save_path)
        if settings.use_platform_specific_eol():
            flags |= QIODevice.Text

        if not f.open(flags):
            raise NinjaIOException(f.errorString())

        stream = QTextStream(f)
        encoding = get_file_encoding(content)
        if encoding:
            stream.setCodec(encoding)

        encoded_stream = stream.codec().fromUnicode(content)
        f.write(encoded_stream)
        f.flush()
        f.close()
        # SIGNAL: Will save (temp, definitive) to warn folder to do something
        self.willSave.emit(swap_save_path, save_path)
        self.__mtime = os.path.getmtime(swap_save_path)
        shutil.move(swap_save_path, save_path)
        self.reset_state()

        # If we have a file system watcher, add the saved path back
        # to its watch list, otherwise create a watcher and start
        # watching
        if self.__watcher is not None:
            if new_path:
                # self.__watcher.removePath(self.__watcher.files()[0])
                self.__watcher.addPath(self._file_path)
            else:
                self.__watcher.addPath(save_path)
        else:
            self.start_watching()
        return self
Esempio n. 37
0
    def openDatabase(self):
        filename, _ = QFileDialog.getOpenFileName(self, "Choose a filename",
                                                  ".", "PGN (*.pgn)")
        if not filename:
            return

        file = QFile(filename)
        if not file.open(QFile.ReadOnly | QFile.Text):
            QMessageBox.warning(
                self, "Chess Fighter Error",
                "Can't open the file {}:\n{}.".format(filename,
                                                      file.errorString()))
            return

        self.statusBar().showMessage("Opened: {}".format(filename), 2000)

        # Check to see if indexes are already build for DB:

        fname, ext = os.path.splitext(filename)

        if not os.path.exists(fname + '.scout') or not os.path.exists(
                fname + '.bin') or not os.path.exists(fname + '.headers.json'):
            # Add the UI components (here we use a QTextEdit to display the stdout from the process)
            self.dialog = QTextEdit()
            self.dialog.setWindowTitle("Opening Database...")
            self.dialog.progress = QTextEdit()

            self.dialog.show()

        if not os.path.exists(fname + '.scout'):
            print("Creating Scout DB")
            command = "{0}/external/scoutfish".format(os.getcwd())
            args = ["make", "{}".format(filename)]

            # Add the process and start it
            self.setupProcess(command, args, filename)

        if not os.path.exists(fname + '.bin'):
            print("Creating .bin DB")
            command = "{0}/external/parser".format(os.getcwd())
            args = ["book", "{}".format(filename), "full"]

            self.setupProcess(command, args, filename)
        else:
            # Switch to this databse
            for l in self.bidirectionalListeners:
                event = {"DB_File": filename, "Origin": self.__class__}
                # self.parent(event)
                l()(event)
                event = {"Book_File": filename, "Origin": self.__class__}
                # self.parent(event)
                l()(event)

        if not os.path.exists(fname + '.headers.json'):
            print("Creating JSON headers")
            command = "{0}/external/pgnextractor".format(os.getcwd())
            args = ["headers", "{}".format(filename), "full"]

            self.setupProcess(command, args, filename)
Esempio n. 38
0
 def __savePageScreen(self):
     """
     Private slot to save the page screen.
     
     @return flag indicating success (boolean)
     """
     fileName = E5FileDialog.getSaveFileName(
         self,
         self.tr("Save Page Screen"),
         self.tr("screen.png"),
         self.tr("Portable Network Graphics File (*.png)"),
         E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
     if not fileName:
         return False
     
     if QFileInfo(fileName).exists():
         res = E5MessageBox.yesNo(
             self,
             self.tr("Save Page Screen"),
             self.tr("<p>The file <b>{0}</b> already exists."
                     " Overwrite it?</p>").format(fileName),
             icon=E5MessageBox.Warning)
         if not res:
             return False
     
     file = QFile(fileName)
     if not file.open(QFile.WriteOnly):
         E5MessageBox.warning(
             self,
             self.tr("Save Page Screen"),
             self.tr("Cannot write file '{0}:\n{1}.")
             .format(fileName, file.errorString()))
         return False
     
     res = self.__pagePixmap.save(file)
     file.close()
     
     if not res:
         E5MessageBox.warning(
             self,
             self.tr("Save Page Screen"),
             self.tr("Cannot write file '{0}:\n{1}.")
             .format(fileName, file.errorString()))
         return False
     
     return True
Esempio n. 39
0
 def saveStyleSheet(self, fileName):
     styleSheet = self.ui.styleTextEdit.toPlainText()
     file = QFile(fileName)
     if file.open(QFile.WriteOnly):
         QTextStream(file) << styleSheet
     else:
         QMessageBox.information(self, "Unable to open file",
                 file.errorString())
Esempio n. 40
0
 def __savePageScreen(self):
     """
     Private slot to save the page screen.
     
     @return flag indicating success (boolean)
     """
     fileName = E5FileDialog.getSaveFileName(
         self,
         self.tr("Save Page Screen"),
         self.tr("screen.png"),
         self.tr("Portable Network Graphics File (*.png)"),
         E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
     if not fileName:
         return False
     
     if QFileInfo(fileName).exists():
         res = E5MessageBox.yesNo(
             self,
             self.tr("Save Page Screen"),
             self.tr("<p>The file <b>{0}</b> already exists."
                     " Overwrite it?</p>").format(fileName),
             icon=E5MessageBox.Warning)
         if not res:
             return False
     
     file = QFile(fileName)
     if not file.open(QFile.WriteOnly):
         E5MessageBox.warning(
             self,
             self.tr("Save Page Screen"),
             self.tr("Cannot write file '{0}:\n{1}.")
             .format(fileName, file.errorString()))
         return False
     
     res = self.__pagePixmap.save(file)
     file.close()
     
     if not res:
         E5MessageBox.warning(
             self,
             self.tr("Save Page Screen"),
             self.tr("Cannot write file '{0}:\n{1}.")
             .format(fileName, file.errorString()))
         return False
     
     return True
Esempio n. 41
0
 def __load(self):
     """
     Private method to load the saved history entries from disk.
     """
     historyFile = QFile(self.getFileName())
     if not historyFile.exists():
         return
     if not historyFile.open(QIODevice.ReadOnly):
         E5MessageBox.warning(
             None,
             self.tr("Loading History"),
             self.tr(
                 """<p>Unable to open history file <b>{0}</b>.<br/>"""
                 """Reason: {1}</p>""")
             .format(historyFile.fileName, historyFile.errorString()))
         return
     
     history = []
     
     # double check, that the history file is sorted as it is read
     needToSort = False
     lastInsertedItem = HistoryEntry()
     data = QByteArray(historyFile.readAll())
     stream = QDataStream(data, QIODevice.ReadOnly)
     stream.setVersion(QDataStream.Qt_4_6)
     while not stream.atEnd():
         ver = stream.readUInt32()
         if ver != HISTORY_VERSION:
             continue
         itm = HistoryEntry()
         itm.url = Utilities.readStringFromStream(stream)
         stream >> itm.dateTime
         itm.title = Utilities.readStringFromStream(stream)
         
         if not itm.dateTime.isValid():
             continue
         
         if itm == lastInsertedItem:
             if not lastInsertedItem.title and len(history) > 0:
                 history[0].title = itm.title
             continue
         
         if not needToSort and history and lastInsertedItem < itm:
             needToSort = True
         
         history.insert(0, itm)
         lastInsertedItem = itm
     historyFile.close()
     
     if needToSort:
         history.sort()
     
     self.setHistory(history, True)
     
     # if the history had to be sorted, rewrite the history sorted
     if needToSort:
         self.__lastSavedUrl = ""
         self.__saveTimer.changeOccurred()
Esempio n. 42
0
    def __load(self):
        """
        Private method to load the saved history entries from disk.
        """
        historyFile = QFile(self.getFileName())
        if not historyFile.exists():
            return
        if not historyFile.open(QIODevice.ReadOnly):
            E5MessageBox.warning(
                None,
                self.tr("Loading History"),
                self.tr("""<p>Unable to open history file <b>{0}</b>.<br/>""" """Reason: {1}</p>""").format(
                    historyFile.fileName, historyFile.errorString()
                ),
            )
            return

        history = []

        # double check, that the history file is sorted as it is read
        needToSort = False
        lastInsertedItem = HistoryEntry()
        data = QByteArray(historyFile.readAll())
        stream = QDataStream(data, QIODevice.ReadOnly)
        stream.setVersion(QDataStream.Qt_4_6)
        while not stream.atEnd():
            ver = stream.readUInt32()
            if ver != HISTORY_VERSION:
                continue
            itm = HistoryEntry()
            itm.url = Utilities.readStringFromStream(stream)
            stream >> itm.dateTime
            itm.title = Utilities.readStringFromStream(stream)

            if not itm.dateTime.isValid():
                continue

            if itm == lastInsertedItem:
                if not lastInsertedItem.title and len(history) > 0:
                    history[0].title = itm.title
                continue

            if not needToSort and history and lastInsertedItem < itm:
                needToSort = True

            history.insert(0, itm)
            lastInsertedItem = itm
        historyFile.close()

        if needToSort:
            history.sort()

        self.setHistory(history, True)

        # if the history had to be sorted, rewrite the history sorted
        if needToSort:
            self.__lastSavedUrl = ""
            self.__saveTimer.changeOccurred()
Esempio n. 43
0
 def ouvrirtexte(self):
     filename, _ = QFileDialog.getOpenFileName(self)
     if filename:
         file = QFile(filename)
         if not file.open(QFile.ReadOnly | QFile.Text):
             QMessageBox.critical(self, appname + version + "Open File",
                                  "Reading Error %s:\n%s." % (filename, file.errorString()))
             return
         instr = QTextStream(file)
         self.ui.plainTextEdit.setPlainText(instr.readAll())
Esempio n. 44
0
    def save(self):
        content = self.centralWidget.plainTextEdit.toPlainText()
        fileName, _ = QFileDialog.getSaveFileName(self)
        if fileName:
            fd = QFile(fileName)
            if not fd.open(QIODevice.WriteOnly):
                QMessageBox.information(self, "Unable to open file", fd.errorString())
                return

            QTextStream(fd) << content
Esempio n. 45
0
def read_js(js_path):
    js = None
    stream = QFile(js_path)
    if stream.open(QFile.ReadOnly):
        js = QByteArray((stream.readAll()))
        stream.close()
    else:
        print(stream.errorString())

    return js
Esempio n. 46
0
 def loadFile(self):
     fh = QFile(self.filename)
     print("fh is ", fh)
     if not fh.open(QIODevice.ReadOnly):
         raise IOError(str(fh.errorString()))
     stream = QTextStream(fh)
     stream.setCodec("UTF-8")
     # self.setPlainText("Hello World")
     self.preParse = (stream.readAll())  # Here lies the problem how to fix it? PyQt 3.4.2 Works Fine
     print(self.preParse)
     self.parseOutputData(self.preParse)
Esempio n. 47
0
 def sauvertexte(self):
     filename, _ = QFileDialog.getSaveFileName(self)
     if filename:
         file = QFile(filename)
         if not file.open(QFile.WriteOnly | QFile.Text):
             QMessageBox.critical(self, appname + version + "Save",
                                  "Writing Error %s:\n%s." % (filename, file.errorString()))
             return
         outstr = QTextStream(file)
         outstr << self.ui.plainTextEdit.toPlainText()
         QMessageBox.information(self, appname + version + "Save file",
                                 "The file is saved. \n%s" % (file.fileName()))
Esempio n. 48
0
 def _autosave(self):
     if self._neditable.editor.is_modified:
         flags = QIODevice.WriteOnly
         f = QFile(self.filename())
         if not f.open(flags):
             raise IOError(f.errorString())
         content = self._neditable.editor.text
         stream = QTextStream(f)
         encoded_stream = stream.codec().fromUnicode(content)
         f.write(encoded_stream)
         f.flush()
         f.close()
Esempio n. 49
0
    def read(self):
        """ Reads the file and returns the content """

        _file = QFile(self.filename)
        if not _file.open(QIODevice.ReadOnly | QIODevice.Text):
            raise Exception(_file.errorString())

        # Codec
        codec = QTextCodec.codecForLocale()
        stream = QTextStream(_file)
        stream.setCodec(codec)
        return stream.readAll()
Esempio n. 50
0
    def open(self):
        fileName, _ = QFileDialog.getOpenFileName(self)
        if fileName:
            fd = QFile(fileName)
            if not fd.open(QIODevice.ReadOnly):
                QMessageBox.information(self, "Unable to open file", fd.errorString())
                return

            output = QTextStream(fd).readAll()

            # Display contents.
            self.centralWidget.plainTextEdit.setPlainText(output)
            self.centralWidget.setBaseUrl(QUrl.fromLocalFile(fileName))
Esempio n. 51
0
    def saveFile(self, fileName):
        file = QFile(fileName)
        if not file.open( QFile.WriteOnly | QFile.Text):
            QMessageBox.warning(self, "Recent Files",
                    "Cannot write file %s:\n%s." % (fileName, file.errorString()))
            return

        outstr = QTextStream(file)
        QApplication.setOverrideCursor(Qt.WaitCursor)
        outstr << self.textEdit.toPlainText()
        QApplication.restoreOverrideCursor()

        self.setCurrentFile(fileName)
        self.statusBar().showMessage("File saved", 2000)
Esempio n. 52
0
    def __exportCertificate(self, name, cert):
        """
        Private slot to export a certificate.
        
        @param name default file name without extension (string)
        @param cert certificate to be exported (QSslCertificate)
        """
        if cert is not None:
            fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
                self,
                self.tr("Export Certificate"),
                name,
                self.tr("Certificate File (PEM) (*.pem);;" "Certificate File (DER) (*.der)"),
                None,
                E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite),
            )

            if fname:
                ext = QFileInfo(fname).suffix()
                if not ext or ext not in ["pem", "der"]:
                    ex = selectedFilter.split("(*")[1].split(")")[0]
                    if ex:
                        fname += ex
                if QFileInfo(fname).exists():
                    res = E5MessageBox.yesNo(
                        self,
                        self.tr("Export Certificate"),
                        self.tr("<p>The file <b>{0}</b> already exists." " Overwrite it?</p>").format(fname),
                        icon=E5MessageBox.Warning,
                    )
                    if not res:
                        return

                f = QFile(fname)
                if not f.open(QIODevice.WriteOnly):
                    E5MessageBox.critical(
                        self,
                        self.tr("Export Certificate"),
                        self.tr(
                            """<p>The certificate could not be written""" """ to file <b>{0}</b></p><p>Error: {1}</p>"""
                        ).format(fname, f.errorString()),
                    )
                    return

                if fname.endswith(".pem"):
                    crt = cert.toPem()
                else:
                    crt = cert.toDer()
                f.write(crt)
                f.close()
Esempio n. 53
0
    def open(self):
        fileName, _ = QFileDialog.getOpenFileName(self)
        if fileName:
            inFile = QFile(fileName)
            if not inFile.open(QFile.ReadOnly):
                QMessageBox.warning(self, "Codecs",
                        "Cannot read file %s:\n%s" % (fileName, inFile.errorString()))
                return

            data = inFile.readAll()

            self.previewForm.setEncodedData(data)
            if self.previewForm.exec_():
                self.textEdit.setPlainText(self.previewForm.decodedString())
Esempio n. 54
0
    def loadFile(self, fileName):
        file = QFile(fileName)
        if not file.open(QFile.ReadOnly | QFile.Text):
            QMessageBox.warning(self, "Application",
                    "Cannot read file %s:\n%s." % (fileName, file.errorString()))
            return

        inf = QTextStream(file)
        QApplication.setOverrideCursor(Qt.WaitCursor)
        self.textEdit.setPlainText(inf.readAll())
        QApplication.restoreOverrideCursor()

        self.setCurrentFile(fileName)
        self.statusBar().showMessage("File loaded", 2000)
Esempio n. 55
0
def read_embedded_file(src_name):
    """ Return the contents of an embedded source file as a QByteArray.
    src_name is the name of the source file.  A UserException is raised if
    there was an error.
    """

    src_file = QFile(src_name)

    if not src_file.open(QIODevice.ReadOnly | QIODevice.Text):
        raise UserException("Unable to open file {0}.".format(src_file.fileName()), src_file.errorString())

    contents = src_file.readAll()
    src_file.close()

    return contents
Esempio n. 56
0
    def save(self):
        fileName, _ = QFileDialog.getSaveFileName(self)
        if fileName:
            outFile = QFile(fileName)
            if not outFile.open(QFile.WriteOnly|QFile.Text):
                QMessageBox.warning(self, "Codecs",
                        "Cannot write file %s:\n%s" % (fileName, outFile.errorString()))
                return

            action = self.sender()
            codecName = action.data()

            out = QTextStream(outFile)
            out.setCodec(codecName)
            out << self.textEdit.toPlainText()
Esempio n. 57
0
    def saveFile(self, fileName):
        file = QFile(fileName)

        if not file.open(QFile.WriteOnly | QFile.Text):
            QMessageBox.warning(self, "MDI",
                    "Cannot write file %s:\n%s." % (fileName, file.errorString()))
            return False

        outstr = QTextStream(file)
        QApplication.setOverrideCursor(Qt.WaitCursor)
        outstr << self.toPlainText()
        QApplication.restoreOverrideCursor()

        self.setCurrentFile(fileName)
        return True
 def __importStyles(self, lexers):
     """
     Private method to import the styles of the given lexers.
     
     @param lexers dictionary of lexer objects for which to import the
         styles
     """
     fn = E5FileDialog.getOpenFileName(
         self,
         self.tr("Import Highlighting Styles"),
         "",
         self.tr("Highlighting styles file (*.e4h)"))
     
     if not fn:
         return
     
     f = QFile(fn)
     if f.open(QIODevice.ReadOnly):
         from E5XML.HighlightingStylesReader import HighlightingStylesReader
         reader = HighlightingStylesReader(f, lexers)
         reader.readXML()
         f.close()
     else:
         E5MessageBox.critical(
             self,
             self.tr("Import Highlighting Styles"),
             self.tr(
                 """<p>The highlighting styles could not be read"""
                 """ from file <b>{0}</b>.</p><p>Reason: {1}</p>""")
             .format(fn, f.errorString())
         )
         return
     
     if self.lexer:
         colour = self.lexer.color(self.style)
         paper = self.lexer.paper(self.style)
         eolfill = self.lexer.eolFill(self.style)
         font = self.lexer.font(self.style)
         
         self.sampleText.setFont(font)
         pl = self.sampleText.palette()
         pl.setColor(QPalette.Text, colour)
         pl.setColor(QPalette.Base, paper)
         self.sampleText.setPalette(pl)
         self.sampleText.repaint()
         self.eolfillCheckBox.setChecked(eolfill)
         
         self.__styleAllItems()
Esempio n. 59
0
    def save(self, data, path=None):
        if path:
            self.filename = path
            self.is_new = False

        _file = QFile(self.filename)
        if not _file.open(QIODevice.WriteOnly | QIODevice.Truncate):
            raise Exception(_file.errorString())

        stream = QTextStream(_file)
        stream.setCodec(QTextCodec.codecForLocale())
        stream << data
        stream.flush()
        _file.close()
        # Emit the signal
        self.fileSaved.emit(self.filename)