Esempio n. 1
0
def main():
    app = QApplication(sys.argv)

    cache_size_in_kb = 700 * 10**3
    QPixmapCache.setCacheLimit(cache_size_in_kb)

    app.setWindowIcon(QIcon(":/icons/app.svg"))

    f = QFile(":/style.qss")
    f.open(QFile.ReadOnly | QFile.Text)
    app.setStyleSheet(QTextStream(f).readAll())
    f.close()

    mw = MainWindow()
    mw.show()

    sys.exit(app.exec_())
Esempio n. 2
0
    def loadFile(self, fileName):
        file = QFile(fileName)
        if not file.open(QFile.ReadOnly | QFile.Text):
            QMessageBox.warning(self, "MDI",
                    "Cannot read file %s:\n%s." % (fileName, file.errorString()))
            return False

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

        self.setCurrentFile(fileName)

        self.document().contentsChanged.connect(self.documentWasModified)

        return True
Esempio n. 3
0
 def setDarkTheme(boolean):
     if boolean:
         qss = ''
         ColorTheme.SELECTED = ColorTheme.DARK
         Settings.setValue(Settings.COLORTHEME, 'darkorange')
         # noinspection PyBroadException
         try:
             qfile = QFile(':qss/darkorange.qss')
             if qfile.open(QIODevice.ReadOnly | QIODevice.Text):
                 qss = str(qfile.readAll())
                 qfile.close()
         except:
             qss = ''
             pass
         QtWidgets.QApplication.setStyle(ColorTheme.originalStyle)
         QtWidgets.QApplication.setPalette(ColorTheme.originalPalette)
         QtWidgets.QApplication.instance().setStyleSheet(qss)
Esempio n. 4
0
def get_style(style_sheet):
    try:
        mod = importlib.import_module("." + style_sheet, __name__)
        hasattr(mod, "qt_resource_name")
        f = QFile(":/%s/style.qss" % style_sheet)                                
        f.open(QFile.ReadOnly | QFile.Text)
        ts = QTextStream(f)
        stylesheet = ts.readAll()    
    except ImportError as e:
        print ("Style sheet not available. Use available_styles() to check for valid styles")
        return u""
    except Exception as e:
        print ("Style sheet available, but an error occured...")
        traceback.print_exc()
        return u""
        
    return stylesheet
Esempio n. 5
0
    def open_map_image(self, filename = None):
        """
        Taken from PyQt5 svgviewer.py example (see license.txt)
        """
        if not filename:
            filename, _ = QFileDialog.getOpenFileName(self, "Open SVG File",
                                                      self.currentPath,
                                                      "SVG files (*.svg *.svgz *.svg.gz)")
        if filename:
            svg_file = QFile(filename)
            if not svg_file.exists():
                QMessageBox.critical(self, "Open SVG File",
                                     "Could not open file '{}'".format(filename))
            else:
                self.view.openFile(svg_file)

                self.resize(self.view.sizeHint() + QSize(80, 80 + self.menuBar().height()))
Esempio n. 6
0
    def showFiles(self, files):
        for fn in files:
            file = QFile(self.currentDir.absoluteFilePath(fn))
            size = QFileInfo(file).size()

            fileNameItem = QTableWidgetItem(fn)
            fileNameItem.setFlags(fileNameItem.flags() ^ Qt.ItemIsEditable)
            sizeItem = QTableWidgetItem("%d KB" % (int((size + 1023) / 1024)))
            sizeItem.setTextAlignment(Qt.AlignVCenter | Qt.AlignRight)
            sizeItem.setFlags(sizeItem.flags() ^ Qt.ItemIsEditable)

            row = self.filesTable.rowCount()
            self.filesTable.insertRow(row)
            self.filesTable.setItem(row, 0, fileNameItem)
            self.filesTable.setItem(row, 1, sizeItem)

        self.filesFoundLabel.setText("%d file(s) found (Double click on a file to open it)" % len(files))
Esempio n. 7
0
    def read_xml_file(self, xml, tag):

        try:
            xml_file = QFile(os.path.join(os.curdir, 'in', xml))
            xml_file.open(xml_file.ReadOnly | xml_file.Text)
            doc = QXmlStreamReader(xml_file)
            text_list = []
            while not doc.atEnd():
                doc.readNextStartElement()
                if doc.name() == tag:
                    temp = doc.namespaceUri()
                    text_list.append(
                        '{0}, {1}, {2}'.format(doc.namespaceUri(), doc.qualifiedName(), doc.readElementText()))
            xml_file.close()
            return text_list
        finally:
            xml_file.close()
Esempio n. 8
0
    def __saveByStream(self, fileName):  ##用 QTextStream 保存文件
        fileDevice = QFile(fileName)
        if not fileDevice.open(QIODevice.WriteOnly | QIODevice.Text):
            return False

        try:
            fileStream = QTextStream(fileDevice)  #用文本流读取文件
            fileStream.setAutoDetectUnicode(True)  #自动检测Unicode
            fileStream.setCodec("utf-8")  #必须设置编码,否则不能正常显示汉字

            text = self.ui.textEdit.toPlainText()  #返回是str类型
            fileStream << text  #使用流操作符

    ##         fileStream<<"\n***************在尾部添加的第1行"
        finally:
            fileDevice.close()
        return True
Esempio n. 9
0
        def inject_js(filepath,
                      ipoint=QWebEngineScript.DocumentCreation,
                      iid=QWebEngineScript.ApplicationWorld,
                      sub_frames=False,
                      script_transform=None):
            f = QFile(filepath)
            assert f.open(QFile.ReadOnly | QFile.Text)
            src = QTextStream(f).readAll()
            if script_transform:
                src = script_transform(src)

            script = QWebEngineScript()
            script.setInjectionPoint(ipoint)
            script.setSourceCode(src)
            script.setWorldId(iid)
            script.setRunsOnSubFrames(sub_frames)
            self.q_profile.scripts().insert(script)
Esempio n. 10
0
def update_project(file_name="test.xml"):
    # 打开文件
    file = QFile(file_name)  # 相对路径、绝对路径、资源路径都可以
    if not file.open(QFile.ReadOnly):
        return

    # 更新一个标签项, 如果知道xml的结构,直接定位到那个标签上定点更新
    # 或者用遍历的方法去匹配tagname或者attribut,value来更新
    doc = QDomDocument()
    if not doc.setContent(file):
        file.close()
        return
    file.close()

    root_item_list = project_item_dict.keys()
    for root_item in root_item_list:
        logging.debug(root_item)  # general,generate_what
        root_element: QDomElement = doc.documentElement()
        dom_list: QDomNodeList = root_element.elementsByTagName(root_item)
        if dom_list.length() != 1:  # 必然存在一个,且只有一个
            logging.debug("解析出错")
        else:
            node: QDomNode = dom_list.item(0)
            root_e = node.toElement()  # general level
            for cmd_key in project_item_dict[root_item].keys():  # dist_path_cmd , one_dir_cmd,level
                logging.debug("tag " + str(project_item_dict[root_item][cmd_key][2]))
                old_node: QDomElement = root_e.firstChildElement(project_item_dict[root_item][cmd_key][2])
                if old_node.isNull():
                    logging.debug("parse error, no tag")
                new_node: QDomElement = root_e.firstChildElement(project_item_dict[root_item][cmd_key][2])
                new_node.setAttribute("cmd", cmd_key)
                new_node.setAttribute("argv", project_item_dict[root_item][cmd_key][0])
                new_node.setAttribute("state", project_item_dict[root_item][cmd_key][1])
                if root_e.replaceChild(new_node, old_node) is None:
                    logging.debug("replace failure")

    if not file.open(QFile.WriteOnly | QFile.Truncate):
        return
    # 输出到文件
    out_stream = QTextStream(file)
    doc.save(out_stream, 4)  # 缩进4格
    file.close()
    logging.debug("configure is updated")

    return doc
Esempio n. 11
0
    def on_openButton_clicked(self):
        if PATH.IS_SCREEN:
            DIR = PATH.SCREENDIR
        else:
            DIR = PATH.PANELDIR

        dialog = QFileDialog(self)
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        dialog.setOptions(options)
        dialog.setDirectory(DIR)
        dialog.setFileMode(QFileDialog.ExistingFile)
        dialog.setNameFilter("style files (*.qss *.style);;All files (*.*)")
        dialog.setWindowTitle('Open StyleSheet')

        # sidebar links
        urls = []
        urls.append(QUrl.fromLocalFile(os.path.expanduser('~')))
        urls.append(QUrl.fromLocalFile(DIR))
        local = os.path.join(os.getcwd(), 'qtvcp/screens', PATH.BASENAME)
        if os.path.exists(local):
            urls.append(
                QUrl.fromLocalFile(
                    os.path.join(os.getcwd(), 'qtvcp/screens', PATH.BASENAME)))
        dialog.setSidebarUrls(urls)

        result = dialog.exec_()
        if result:
            fileName = dialog.selectedFiles()[0]
            file = QFile(fileName)
            file.open(QFile.ReadOnly)
            styleSheet = file.readAll()
            if sys.version_info.major > 2:
                styleSheet = str(styleSheet, encoding='utf8')
            else:
                # Python v2.
                styleSheet = unicode(styleSheet, encoding='utf8')

            self.styleTextView.setPlainText(styleSheet)
            model = self.styleSheetCombo.model()
            item = QtGui.QStandardItem(os.path.basename(fileName))
            item.setData(fileName, role=QtCore.Qt.UserRole + 1)
            model.appendRow(item)
            self.styleSheetCombo.setCurrentIndex(self.styleSheetCombo.count() -
                                                 1)
Esempio n. 12
0
    def __saveImage(self):
        """
        Private slot to save the selected image to disk.
        """
        act = self.sender()
        index = act.data()
        itm = self.imagesTree.topLevelItem(index)
        if itm is None:
            return

        imageUrl = QUrl(itm.text(1))
        if not imageUrl.host():
            imageUrl.setHost(QUrl(self.siteAddressLabel.text()).host())
            imageUrl.setScheme(QUrl(self.siteAddressLabel.text()).scheme())

        import Helpviewer.HelpWindow
        cache = Helpviewer.HelpWindow.HelpWindow.networkAccessManager().cache()
        if cache:
            cacheData = cache.data(imageUrl)
        else:
            cacheData = None
        if not cacheData:
            E5MessageBox.critical(self, self.tr("Save Image"),
                                  self.tr("""This image is not available."""))
            return

        downloadDirectory = Helpviewer.HelpWindow.HelpWindow\
            .downloadManager().downloadDirectory()
        fn = os.path.join(downloadDirectory, os.path.basename(itm.text(1)))
        filename = E5FileDialog.getSaveFileName(
            self, self.tr("Save Image"), fn, self.tr("All Files (*)"),
            E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))

        if not filename:
            return

        f = QFile(filename)
        if not f.open(QFile.WriteOnly):
            E5MessageBox.critical(
                self, self.tr("Save Image"),
                self.tr("""<p>Cannot write to file <b>{0}</b>.</p>""").format(
                    filename))
            return
        f.write(cacheData.readAll())
        f.close()
    def __populateList(self):
        """
        Private method to populate the list of available plugins.
        """
        self.repositoryList.clear()
        self.__stableItem = None
        self.__unstableItem = None
        self.__unknownItem = None

        self.downloadProgress.setValue(0)
        self.__doneMethod = None

        if os.path.exists(self.pluginRepositoryFile):
            self.__repositoryMissing = False
            f = QFile(self.pluginRepositoryFile)
            if f.open(QIODevice.ReadOnly):
                from E5XML.PluginRepositoryReader import PluginRepositoryReader
                reader = PluginRepositoryReader(f, self.addEntry)
                reader.readXML()
                self.repositoryList.resizeColumnToContents(0)
                self.repositoryList.resizeColumnToContents(1)
                self.repositoryList.resizeColumnToContents(2)
                self.__resortRepositoryList()
                url = Preferences.getUI("PluginRepositoryUrl6")
                if url != self.repositoryUrlEdit.text():
                    self.repositoryUrlEdit.setText(url)
                    E5MessageBox.warning(
                        self, self.tr("Plugins Repository URL Changed"),
                        self.tr(
                            """The URL of the Plugins Repository has"""
                            """ changed. Select the "Update" button to get"""
                            """ the new repository file."""))
            else:
                E5MessageBox.critical(
                    self, self.tr("Read plugins repository file"),
                    self.tr("<p>The plugins repository file <b>{0}</b> "
                            "could not be read. Select Update</p>").format(
                                self.pluginRepositoryFile))
        else:
            self.__repositoryMissing = True
            QTreeWidgetItem(self.repositoryList, [
                "",
                self.tr("No plugin repository file available.\nSelect Update.")
            ])
            self.repositoryList.resizeColumnToContents(1)
Esempio n. 14
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. 15
0
    def save(self):
        filename, _ = QFileDialog.getSaveFileName(self,
                "Choose a file name", '.', "HTML (*.html *.htm)")
        if not filename:
            return

        file = QFile(filename)
        if not file.open(QFile.WriteOnly | QFile.Text):
            QMessageBox.warning(self, "Dock Widgets",
                    "Cannot write file %s:\n%s." % (filename, file.errorString()))
            return

        out = QTextStream(file)
        QApplication.setOverrideCursor(Qt.WaitCursor)
        out << self.textEdit.toHtml()
        QApplication.restoreOverrideCursor()

        self.statusBar().showMessage("Saved '%s'" % filename, 2000)
Esempio n. 16
0
 def load(self):
     exception = None
     fh = None
     try:
         fh = QFile(self.filename)
         if not fh.open(QIODevice.ReadOnly):
             raise IOError(str(fh.errorString()))
         stream = QTextStream(fh)
         stream.setCodec("UTF-8")
         self.setPlainText(stream.readAll())
         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. 17
0
 def restoreLayout(self):
     if os.path.isfile(get_config_path("UILayout.dat")):
         try:
             f = open(get_config_path("UILayout.dat"), 'rb')
             geometry, state = pickle.load(f)
             self.restoreGeometry(geometry)
             self.restoreState(state)
         except Exception as e:
             print("Exception on restoreLayout, {}".format(e))
     else:
         try:
             f = QFile(':/default_layout_qt5.dat')
             f.open(QIODevice.ReadOnly)
             geometry, state = pickle.loads(f.readAll())
             self.restoreGeometry(geometry)
             self.restoreState(state)
         except Exception as e:
             print("Exception on restoreLayout, {}".format(e))
Esempio n. 18
0
    def deleteFile(self):
        index = self.selectionModel().currentIndex()
        path = self.model.filePath(index)
        if path:
            fileInfo = QFileInfo(path)
            if fileInfo.isFile():
                if not self.ask_dialog(
                        "Do you wan't to delete the selected file?"):
                    return
                file = QFile(path)
                file.remove()

            elif fileInfo.isDir():
                if not self.ask_dialog(
                        "Do you wan't to delete the selected directory?"):
                    return
                directory = QDir(path)
                directory.removeRecursively()
Esempio n. 19
0
    def __initWidget(self):
        """ 初始化小部件 """
        # 设置布局
        self.hBox.addWidget(self.indicator)
        self.hBox.addWidget(self.label)
        self.hBox.setSpacing(self.__spacing)
        self.hBox.setAlignment(Qt.AlignLeft)
        self.setAttribute(Qt.WA_StyledBackground)
        self.hBox.setContentsMargins(0, 0, 0, 0)

        # 设置默认样式
        f = QFile(':/qss/switch_button.qss')
        f.open(QFile.ReadOnly)
        self.setStyleSheet(str(f.readAll(), encoding='utf-8'))
        f.close()

        # 信号连接到槽
        self.indicator.checkedChanged.connect(self.checkedChanged)
Esempio n. 20
0
    async def onQrImageEncoded(self, ipfsop, encrypt: bool, imgPath: str):
        basename = os.path.basename(imgPath)
        file = QFile(imgPath)

        if encrypt:
            if not file.open(QIODevice.ReadOnly):
                return
            data = file.readAll().data()
            entry = await self.rsaEncryptSelf(data)
        else:
            entry = await ipfsop.addPath(imgPath, offline=True)

        if entry:
            # Link it, open it
            dst = self.pathQrCodesEncrypted if encrypt is True else \
                self.pathQrCodes
            await ipfsop.filesLink(entry, dst, name=basename)
            await self.ctx.app.resourceOpener.open(entry['Hash'])
Esempio n. 21
0
def main():
    app = QApplication(sys.argv)
    client = Window()
    handler = QtHandler(client.ui.logTextEdit)
    logging.getLogger().addHandler(handler)
    logging.getLogger("uaclient").setLevel(logging.INFO)
    logging.getLogger("uawidgets").setLevel(logging.INFO)
    #logging.getLogger("opcua").setLevel(logging.INFO)  # to enable logging of ua client library

    # set stylesheet
    if (QSettings().value("dark_mode", "false") == "true"):
        file = QFile(":/dark.qss")
        file.open(QFile.ReadOnly | QFile.Text)
        stream = QTextStream(file)
        app.setStyleSheet(stream.readAll())

    client.show()
    sys.exit(app.exec_())
Esempio n. 22
0
    def download(self, url):
        """
        download something
        """
        if None == self.__http:
            self.__http = QHttp()
            QObject.connect(self.__http, SIGNAL("done(bool)"),
                            self.__downloadFileDone)
            QObject.connect(self.__http, SIGNAL("dataReadProgress(int, int)"),
                            self.__dataReadProgress)

        if QUrl(url).scheme() == 'https':
            connectionMode = QHttp.ConnectionModeHttps
        else:
            connectionMode = QHttp.ConnectionModeHttp
        self.__http.setHost(url.host(), connectionMode, url.port(80))
        self.__downloadFile = QFile(tempfile.NamedTemporaryFile().name)
        self.__http.get(url.path(), self.__downloadFile)
Esempio n. 23
0
    def oncreatePIDFile(self):
        if self.v2rayProcess.state() == QProcess.NotRunning:
            return

        outFile = QFileInfo(self.pidFile)
        fileName = outFile.fileName()
        if QFile.exists(fileName):
            QFile.remove(fileName)
        outFile = QFile(fileName)

        v2rayPID = str(self.v2rayProcess.processId())
        qDebug("process ID is: {}".format(v2rayPID))
        try:
            outFile.open(QIODevice.WriteOnly | QIODevice.Text)
            outFile.write(codecs.encode(v2rayPID, "utf-8"))
        except Exception:
            pass
        outFile.close()
Esempio n. 24
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. 25
0
	def saveHtml(self, fileName):
		if not QFileInfo(fileName).suffix():
			fileName += ".html"
		try:
			_, htmltext, _ = self.currentTab.getDocumentForExport(webenv=True)
		except Exception:
			return self.printError()
		htmlFile = QFile(fileName)
		result = htmlFile.open(QIODevice.WriteOnly)
		if not result:
			QMessageBox.warning(self, '',
				self.tr("Cannot save to file because it is read-only!"))
			return
		html = QTextStream(htmlFile)
		if globalSettings.defaultCodec:
			html.setCodec(globalSettings.defaultCodec)
		html << htmltext
		htmlFile.close()
Esempio n. 26
0
    def write(self, fileNameOrDevice, root):
        """
        Public method to write an Netscape HTML bookmark file.
        
        @param fileNameOrDevice name of the file to write (string)
            or device to write to (QIODevice)
        @param root root node of the bookmark tree (BookmarkNode)
        @return flag indicating success (boolean)
        """
        if isinstance(fileNameOrDevice, QIODevice):
            f = fileNameOrDevice
        else:
            f = QFile(fileNameOrDevice)
            if root is None or not f.open(QFile.WriteOnly):
                return False

        self.__dev = f
        return self.__write(root)
Esempio n. 27
0
 def loadFile(self):
     fh = None
     try:
         fh = QFile(self.filename)
         if not fh.open(QIODevice.ReadOnly):
             raise IOError(str(fh.errorString()))
         stream = QTextStream(fh)
         stream.setCodec("UTF-8")
         self.editor.setPlainText(stream.readAll())
         self.editor.document().setModified(False)
     except EnvironmentError as e:
         QMessageBox.warning(self, "Python 编辑器 -- 加载错误",
                 "加载 {0} 文件失败,错误: {1}".format(self.filename, e))
     finally:
         if fh is not None:
             fh.close()
     self.setWindowTitle("Python 编辑器 - {0}".format(
             QFileInfo(self.filename).fileName()))
Esempio n. 28
0
    def __init__(self, args):
        QApplication.__init__(self, args)
        self.setStyle('Fusion')
        self.setOrganizationName("UZH Zurich")
        self.setOrganizationDomain("http://www.bodenmillerlab.org")
        self.setApplicationName("HistoSlider")
        self.setWindowIcon(QIcon(":/icons/icons8-eukaryotic-cells-96.png"))

        cache_size_in_kb = 700 * 10 ** 3
        QPixmapCache.setCacheLimit(cache_size_in_kb)

        f = QFile(":/style.qss")
        f.open(QFile.ReadOnly | QFile.Text)
        self.setStyleSheet(QTextStream(f).readAll())
        f.close()

        # DataManager singleton initialization
        Manager()
Esempio n. 29
0
    def openFile(self, path=None):
        if not path:
            path, _ = QFileDialog.getOpenFileName(self, "Open File", '',
                                                  "C++ Files (*.cpp *.h)")

        if path:
            inFile = QFile(path)
            if inFile.open(QFile.ReadOnly | QFile.Text):
                text = inFile.readAll()

                try:
                    # Python v3.
                    text = str(text, encoding='ascii')
                except TypeError:
                    # Python v2.
                    text = str(text)

                self.editor.setPlainText(text)
Esempio n. 30
0
 def init_resources(self):
     strfile = QFile(':/string/strings')
     strfile.open(QIODevice.ReadOnly | QIODevice.Text)
     ts = QTextStream(strfile)
     key, value = "", ""
     while ts.atEnd() == False:
         line = ts.readLine()
         if len(line) < 1:
             continue
         elif line[0] == '@':
             if key != "":
                 self.strings[key] = value
                 key, value = "", ""
             key = line[1:]
         else:
             value += line
     self.strings[key] = value
     strfile.close()