def main(args=[]): """ Default main program which starts Qt based on the command line arguments `args`, sets the stylesheet if present, then creates the window object and shows it. The `args` command line arguments list is used to load given directories or zip files. Returns the value of QApplication.exec_() for the created QApplication object. """ app = QtWidgets.QApplication(args) app.setAttribute( Qt.AA_DontUseNativeMenuBar) # in macOS, forces menubar to be in window app.setStyle("Plastique") # load the stylesheet included as a Qt resource with closing(QtCore.QFile(":/css/DefaultUIStyle.css")) as f: if f.open(QtCore.QFile.ReadOnly): app.setStyleSheet(bytes(f.readAll()).decode("UTF-8")) else: print("Failed to read %r" % f.fileName(), file=sys.stderr) browser = DicomBrowser() # add the directories passed as arguments to the directory queue to start loading for i in args[1:]: if os.path.exists(i): browser.add_source(i) browser.show() return app.exec()
def pop_help(self): d = QtWidgets.QDialog() d.setMinimumWidth(600) l = QtWidgets.QVBoxLayout() t = QtWidgets.QTextEdit() t.setReadOnly(False) l.addWidget(t) bBox = QtWidgets.QDialogButtonBox() bBox.addButton('Ok', QtWidgets.QDialogButtonBox.AcceptRole) bBox.accepted.connect(d.accept) l.addWidget(bBox) d.setLayout(l) try: file = QtCore.QFile(HELP) file.open(QtCore.QFile.ReadOnly) html = file.readAll() html = unicode(html, encoding='utf8') html = html.replace("../images/probe_icons/", "{}/probe_icons/".format(INFO.IMAGE_PATH)) t.setHtml(html) except Exception as e: t.setText('Versa Probe Help file Unavailable:\n\n{}'.format(e)) d.show() d.exec_()
def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "My Shop")) self.GoodPriceLabel.setText(_translate("Dialog", "Product Price:")) self.GoodNameLabel.setText(_translate("Dialog", "Product Name:")) self.GoodNumLabel.setText(_translate("Dialog", "Number:")) self.GoodEnsureButton.setText(_translate("Dialog", "OK")) self.GoodClearButton.setText(_translate("Dialog", "Clear")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Dialog", "New Product")) self.GetCustomerButton.setText(_translate("Dialog", "Get")) self.CustomerClearbutton.setText(_translate("Dialog", "Clear")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Dialog", "Customer Now")) self.GetGoodButton.setText(_translate("Dialog", "Get")) self.GoodClearbutton.setText(_translate("Dialog", "Clear")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Dialog", "Products")) self.QuitButton.setText(_translate("Dialog", "Quit")) file = QtCore.QFile('black_flat.qss') file.open(QtCore.QFile.ReadOnly) styleSheet = file.readAll() styleSheet = unicode(styleSheet, encoding='utf8') self.setStyleSheet(styleSheet) file.close()
def onBtnSaveStrategyClicked(self): """保存""" # 打开一个文件保存对话框,获取用户希望保存的文件的路径与文件名 filename, fileType = QtWidgets.QFileDialog.getSaveFileName(self, u"保存策略", '', "Python files (*.py *.pyw)") # 如果用户点击取消,退出保存 if 0 == len(filename): return # 防御式编程 try: # 依据用户指定的路径和文件名,创建一个Qt文件对象 fh = QtCore.QFile(filename) # 尝试只读的方式打开文件,如果失败,抛出异常 if not fh.open(QtCore.QIODevice.WriteOnly): raise IOError(str(fh.errorString())) # 将文件打开,放入输入流中 stream = QtCore.QTextStream(fh) # 设置文件流的编码 stream.setCodec("UTF-8") # 将界面上的文本放入文本流中(即保存) stream << self.textEdit.toPlainText() # 将文件属性设置为无修改 self.textEdit.document().setModified(False) except EnvironmentError as e: # 异常警告 QtWidgets.QMessageBox.warning(self, "Python Editor -- Save Error", "Failed to save {0}: {1}".format(filename, e)) return False
def file_save(self): if (self.file): if self.file.open(QtCore.QIODevice.WriteOnly): data = self.scene.items_to_data() print(data) self.file.write(json.dumps(data).encode("utf-8")) self.file.close() print("File saved !") self.statusBar().showMessage("File Saved") else: print("Can't save this file !") self.statusBar().showMessage("Can't save this file !") else: filename = QtWidgets.QFileDialog.getSaveFileName( self, 'Save File', os.getcwd()) if len(filename[0]) > 0: if (filename[0][len(filename[0]) - 5:] == ".json"): file = filename[0] else: file = filename[0] + ".json" filesave = QtCore.QFile(file) if filesave.open(QtCore.QIODevice.WriteOnly): data = self.scene.items_to_data() print(data) filesave.write(json.dumps(data).encode("utf-8")) filesave.close() self.file = filesave print("File saved !") self.statusBar().showMessage("File Saved") else: print("Can't save this file !") self.statusBar().showMessage("Can't save this file !")
def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "百万富翁问题 测试系统")) self.label.setText(_translate("Dialog", "百万富翁问题 测试系统")) self.label_2.setText(_translate("Dialog", "请输入您的姓名:")) self.label_8.setText(_translate("Dialog", "请输入您要对比的人的姓名:")) self.label_3.setText(_translate("Dialog", "请输入您的财产(1至10之间):")) self.Show_Hide_Button.setText(_translate("Dialog", "显示/隐藏")) self.Ensurebutton.setText(_translate("Dialog", "确认")) self.PartClearButton.setText(_translate("Dialog", "清空")) self.label_4.setText(_translate("Dialog", "您选择的随机大整数是:")) self.label_6.setText(_translate("Dialog", "您收到的10个整数为:")) self.label_7.setText(_translate("Dialog", "其中,第j个数为:")) self.label_9.setText(_translate("Dialog", "最终结果是:")) self.AllClearButton.setText(_translate("Dialog", "清空")) self.ExitButton.setText(_translate("Dialog", "退出")) file = QtCore.QFile('decorate/black_flat.qss') file.open(QtCore.QFile.ReadOnly) styleSheet = file.readAll() styleSheet = QTextStream(styleSheet).readAll() self.setStyleSheet(styleSheet) file.close() self.BigIntergerLine.setReadOnly(True) self.Ten_Interger_Line.setReadOnly(True) self.The_j_th_num_Line.setReadOnly(True) self.ResultLine.setReadOnly(True) self.error_win = Error_Dialog() self.action_fail.connect(self.error_deal) self.setWindowOpacity(0.97) #半透明
def file_open(filename): fileopen=QtCore.QFile(filename) if fileopen.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text)==None : print("fileopen.open(QtCore.QIODevice.WriteOnly)==None") return -1 xmlReader=QtCore.QXmlStreamReader(fileopen) xmlReader.setDevice(fileopen) while not xmlReader.atEnd() : if xmlReader.name() != "" : print("name",xmlReader.name() ) if xmlReader.isStartElement() : if xmlReader.name()== "GraphicsItem" : print("GraphicsItem start") if xmlReader.attributes().value("type") == "rect" : rect=None print("rect") while xmlReader.readNextStartElement() : print("xmlReader.readNextStartElement()") if xmlReader.name()== "shape" : x=float(xmlReader.attributes().value("x")) y=float(xmlReader.attributes().value("y")) w=float(xmlReader.attributes().value("w")) h=float(xmlReader.attributes().value("h")) print("shape",x,y,w,h) # rect=QtWidgets.QGraphicsRectItem(x,y,w,h) xmlReader.readNext() print("GraphicsItem end") xmlReader.readNext()
def __init__(self, ui_file): # # TODO: CAMPid 980567566238416124867857834291346779 # ico_file = os.path.join(QtCore.QFileInfo.absolutePath(QtCore.QFileInfo(__file__)), 'icon.ico') # ico = QtGui.QIcon(ico_file) # self.setWindowIcon(ico) logging.debug('Loading UI from: {}'.format(ui_file)) ui = ui_file # TODO: CAMPid 9549757292917394095482739548437597676742 if not QtCore.QFileInfo(ui).isAbsolute(): ui_file = os.path.join( QtCore.QFileInfo.absolutePath(QtCore.QFileInfo(__file__)), ui) else: ui_file = ui ui_file = QtCore.QFile(ui_file) ui_file.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text) ts = QtCore.QTextStream(ui_file) sio = io.StringIO(ts.readAll()) self.ui = PyQt5.uic.loadUi(sio) self.ui.action_open.triggered.connect(lambda _: self.open()) self.ui.action_save.triggered.connect(lambda _: self.save()) self.ui.action_save_as.triggered.connect(self.save_as) self.filters = [('JSON', ['json']), ('All Files', ['*'])] self.view_models = {} self.filename = None
def load_stylesheet(): """ Loads the stylesheet for use in a pyqt5 application. :return the stylesheet string """ # Smart import of the rc file f = QtCore.QFile(':qdarkgraystyle/style.qss') if not f.exists(): _logger().error('Unable to load stylesheet, file not found in ' 'resources') return '' else: f.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text) ts = QtCore.QTextStream(f) stylesheet = ts.readAll() if platform.system().lower() == 'darwin': # see issue #12 on github mac_fix = ''' QDockWidget::title { background-color: #31363b; text-align: center; height: 12px; } ''' stylesheet += mac_fix return stylesheet
def chooseFiles(self): files = QtWidgets.QFileDialog.getOpenFileName(self.window, "Choose Your Files") if self.count != 10: name = files[0].split('/')[-1] type = Util.checkFileType(name) fileSize = QtCore.QFile(files[0]).size() if fileSize > Util.gb: QtWidgets.QMessageBox.information(self.window, "", "Can't choose this file ") self.chooseFiles() return for i in self.list: if i[1] == name: QtWidgets.QMessageBox.information( self.window, "", "This File already exists ") self.chooseFiles() return item = QtWidgets.QTableWidgetItem() item.setText(name) self.tableWidget.setItem(self.count, 0, item) item = QtWidgets.QTableWidgetItem() item.setText(Util.getSize(fileSize)) self.tableWidget.setItem(self.count, 1, item) item = QtWidgets.QTableWidgetItem() item.setText(type) self.tableWidget.setItem(self.count, 2, item) self.files.append(files[0]) self.count += 1 if self.count > 0: self.pushButton_2.setEnabled(True)
def elseIfUi(elseIfItem, type): elseIfFile = QtCore.QFile(filePath + '\elseIf.ui') elseIfFile.open(QtCore.QFile.ReadOnly) elseIfUi = uic.loadUi(elseIfFile) childIndex = conditionalItem.indexOfChild(elseIfItem) if type == 'elseIf' and childIndex == 0: elseIfUi.label.setText('If') elif type == 'elseIf': elseIfUi.label.setText('Else If') else: elseIfUi.label.setText('Else') elseIfUi.elseIfEdit.hide() elseIfUi.elseIfEdit.editingFinished.connect(updateConditional) try: elseIfUi.elseIfEdit.setText( conditionalItem.data['conditions'][childIndex]) except Exception as e: print('error' + str(e)) return elseIfUi
def __init__(self, parent=None, in_designer=False): super().__init__(parent=parent) self.in_designer = in_designer ui = 'faultlogview.ui' # TODO: CAMPid 9549757292917394095482739548437597676742 if not QtCore.QFileInfo(ui).isAbsolute(): ui_file = os.path.join( QtCore.QFileInfo.absolutePath(QtCore.QFileInfo(__file__)), ui, ) else: ui_file = ui ui_file = QtCore.QFile(ui_file) ui_file.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text) ts = QtCore.QTextStream(ui_file) sio = io.StringIO(ts.readAll()) self.ui = PyQt5.uic.loadUi(sio, self) view = self.ui.tree_view view.setSelectionBehavior(view.SelectRows) view.setSelectionMode(view.ExtendedSelection) self.model = None self.ui.clear_button.clicked.connect(self.clear)
def saveFilter(self, f): outputFile = QtCore.QFile("Monitor/filter/" + f.name + ".xml") if not outputFile.open(QtCore.QIODevice.WriteOnly): print('could not write', f.name + ".xml") return outputFile.write(f.serialize()) outputFile.close()
def start_encryption(self): self.open_log() mode = 0 # if the user chose to enter a message manually if self.radioButton_3.isChecked(): send_text(self.lineEdit.text() + '\n', self.soc) ### self.pushButton_5.setVisible(False) #self.soc.close_connection() # the user chose to encrypt a file else: # displaying file contents on gui file = QtCore.QFile(file_path) if not file.open(QtCore.QIODevice.ReadOnly): msg = QMessageBox() msg.setIcon(QMessageBox.Critical) msg.setText(file.errorString()) x = msg.exec_() mode = 1 self.soc.sender.send_file(file_path) ### self.soc.close_connection() self.pushButton_2.setEnabled(False) self.pushButton_3.setEnabled(False) self.pushButton_5.setVisible(True) if mode == 0: self.pushButton_4.setVisible(True) self.close_log() self.read_log()
def openReturn(self, path): qssname = path # os.path.join(DIR, BNAME, sheetName) file = QtCore.QFile(qssname) file.open(QtCore.QFile.ReadOnly) num = 0 name = str(self.stack.currentWidget().objectName()) while not file.atEnd(): dataSheet = file.readLine() try: # Python v2. dataSheet = unicode(dataSheet, encoding='utf8') except NameError: # Python v3. dataSheet = str(dataSheet, encoding='utf8') h, g = dataSheet.split(',') # set widgets to data: # Look for a radio button instance so we can convert to integers # other wise we assume text if isinstance(self['%s%d' % (name, num)], QtWidgets.QRadioButton): #print self['%s%d' % (name, num)], h self['%s%d' % (name, num)].setChecked(bool(h)) else: #print self['%s%d' % (name, num)], h self['%s%d' % (name, num)].setText(str(h)) num = +1
def dump(file_name, param): start_param = yaml.dump(param) train_read = QtCore.QFile(file_name) train_read.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text) load = QtCore.QTextStream(train_read) load << start_param train_read.close()
def saveAs(self): """opens Save File dialogue and saves current tab as a File""" tr = QtCore.QCoreApplication.translate fileName = QtWidgets.QFileDialog.getSaveFileName( self, tr("SaveDialog:", "Berechnung speichern"), "", tr("SaveDialog:", "Bauphysikberechnung (*.baup);;Alle Dateien (*)")) if (all(fileName)): file = QtCore.QFile(fileName[0]) if (not file.open(QtCore.QIODevice.WriteOnly)): QtWidgets.QMessageBox.Information( self, tr("SaveDialog:", "Datei kann nicht geöffnet werden"), file.errorString()) return fileNameStringWithEnding = fileName[0].split("/") fileNameStringWithEnding = fileNameStringWithEnding[ len(fileNameStringWithEnding) - 1] fileNameStringWithEnding = fileNameStringWithEnding.split(".") fileNameString = "" for x in range(len(fileNameStringWithEnding) - 1): if x == 0: fileNameString += fileNameStringWithEnding[x] else: fileNameString += "." + fileNameStringWithEnding[x] self.tabWidget.currentWidget().data.name = fileNameString self.tabWidget.currentWidget( ).data.currentFileLocation = fileName[0] exp = Exporter(self.tabWidget.currentWidget().data) exp.export(fileName[0]) self.updateName() else: return
def __init__(self, parent=None): super().__init__(parent) self.m_qin = QtCore.QFile() self.m_qin.open( sys.stdin.fileno(), QtCore.QIODevice.ReadOnly | QtCore.QIODevice.Unbuffered ) if platform.system() == "Windows": import win32api if sys.platform == "win32": import os import msvcrt if platform.python_implementation() == "PyPy": os.fdopen(fh.fileno(), "wb", 0) else: msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) self.m_notifier = QtCore.QWinEventNotifier( win32api.GetStdHandle(win32api.STD_INPUT_HANDLE) ) else: self.m_notifier = QtCore.QSocketNotifier( sys.stdin.fileno(), QtCore.QSocketNotifier.Read, self ) self.m_notifier.activated.connect(self.readyRead)
def file_save(filename): filesave=QtCore.QFile(filename) if filesave.open(QtCore.QIODevice.WriteOnly)==None : print("filesave.open(QtCore.QIODevice.WriteOnly)==None") return -1 xmlWriter=QtCore.QXmlStreamWriter(filesave) xmlWriter.setAutoFormatting(True) xmlWriter.writeStartDocument() xmlWriter.writeStartElement("Scene") # Start Scene Root Element xmlWriter.writeAttribute("version", "v1.0") xmlWriter.writeStartElement("GraphicsItemList") # Star GraphicsItemList Element ## items=self.scene.items() ## for i in range(len(items)) : ## xmlWriter.writeStartElement("GraphicsItem") ## num=items[i].type() ## if num==3 : ## xmlWriter.writeAttribute("type","rect") ## ... xmlWriter.writeStartElement("GraphicsItem") # Star GraphicsItem Element xmlWriter.writeAttribute("type","rect") xmlWriter.writeStartElement("shape") # Star GraphicsItem Element xmlWriter.writeAttribute("x", str(10)) xmlWriter.writeAttribute("y", str(40)) xmlWriter.writeAttribute("w", str(200)) xmlWriter.writeAttribute("h", str(300)) xmlWriter.writeEndElement() # End shape Element xmlWriter.writeEndElement() # End GraphicsItem Element xmlWriter.writeEndElement() # End GraphicsItemList Element xmlWriter.writeEndElement() # End Scene Root Element filesave.close()
def load(self, filename, initial_page=0): logger.info('Loading %s at %i', filename, initial_page) loader = ComicLoaderFactory.create_loader(filename) loader.progress.connect(self.load_progressbar_value) try: loader.load(filename) except NoDataFindException as exc: from pynocchio.comic import Page logger.exception('Error in load comic! %s', exc) q_file = QtCore.QFile(":/icons/not_cover.png") q_file.open(QtCore.QIODevice.ReadOnly) loader.data.append(Page(q_file.readAll(), 'exit_red_1.png', 0)) # Memorize last page on comic if self.comic: if not self.is_first_page() and not self.is_last_page(): self.add_bookmark(table=TemporaryBookmark) else: self.remove_bookmark(table=TemporaryBookmark) self.comic = Comic(get_base_name(filename), get_dir_name(filename)) self.comic.pages = loader.data self.comic_page_handler = ComicPageHandlerFactory.create_handler( False, self.comic, index=initial_page) self.current_directory = get_dir_name(filename) if is_file(filename): self.comic_file_filter.parse(self.current_directory)
def __init__(self): super(MainWindow, self).__init__() # interface e splitter uiFile = QtCore.QFile(":/Ui_MainWindow.ui") uiFile.open(QtCore.QFile.ReadOnly) uic.loadUi(uiFile, self) uiFile.close() self.loadSplitter() self.setWindowTitle("Todopad") self.setWindowIcon(QIcon(':/app.ico')) # connects self.connects() # current path do app self.path = QDir.currentPath() # desativando html no text edit self.textEdit.setAcceptRichText(False) # font size do text edit self.textEdit.setFontPointSize(10) # ativando drag and drop interno da lista self.listWidget.setDragDropMode(QAbstractItemView.InternalMove) # inicializando objeto do calendario self.calendar = QCalendarWidget() self.calendar.setWindowTitle('Calendar') self.calendar.setWindowIcon(QIcon(':/app.ico')) self.calendar.setGridVisible(True) # controle de versao da aplicacao para escrita no json self.version = "1.1"
def __init__(self, parent): super().__init__(parent) self.setWindowTitle( _('{appname} v{appversion}').format(appname=Meta.appName(), appversion=str( Meta.appVersion()))) iodev = QtCore.QFile(':/about.html') iodev.open(iodev.ReadOnly) try: about = bytes(iodev.readAll()).decode('utf-8') finally: iodev.close() about = about.format(author=Meta.appAuthor()) text = QtWidgets.QTextBrowser(self) text.setHtml(about) text.setOpenExternalLinks(True) btn = QtWidgets.QPushButton(_('Done'), self) bld = LayoutBuilder(self) with bld.vbox() as vbox: vbox.addWidget(text) with bld.hbox() as buttons: buttons.addStretch(1) buttons.addWidget(btn) btn.clicked.connect(self.accept) self.resize(800, 600)
def _set_js_api(self): def _register_window_object(): frame.addToJavaScriptWindowObject('external', self.js_bridge) script = parse_api_js(self.js_bridge.api) if _qt_version >= [5, 5]: qwebchannel_js = QtCore.QFile('://qtwebchannel/qwebchannel.js') if qwebchannel_js.open(QtCore.QFile.ReadOnly): source = bytes(qwebchannel_js.readAll()).decode('utf-8') self.view.page().runJavaScript(source) self.channel.registerObject('external', self.js_bridge) qwebchannel_js.close() elif _qt_version >= [5, 0]: frame = self.view.page().mainFrame() _register_window_object() else: frame = self.view.page().mainFrame() _register_window_object() try: # PyQt4 self.view.page().mainFrame().evaluateJavaScript(script) except AttributeError: # PyQt5 self.view.page().runJavaScript(script) self.load_event.set()
def getStyleSheet(self, path): f = QtCore.QFile(path) f.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text) stylesheet = QtCore.QTextStream(f).readAll() f.close() return stylesheet
def writeReplayFile(self): # Update info block if possible. if fa.instance._info and fa.instance._info['uid'] == self.replayInfo[ 'uid']: if fa.instance._info.setdefault('complete', False): self.__logger.info("Found Complete Replay Info") else: self.__logger.warning("Replay Info not Complete") self.replayInfo = fa.instance._info self.replayInfo['game_end'] = time.time() filename = os.path.join( util.REPLAY_DIR, str(self.replayInfo['uid']) + "-" + self.replayInfo['recorder'] + ".fafreplay") self.__logger.info("Writing local replay as " + filename + ", containing " + str(self.replayData.size()) + " bytes of replay data.") replay = QtCore.QFile(filename) replay.open(QtCore.QIODevice.WriteOnly | QtCore.QIODevice.Text) replay.write(json.dumps(self.replayInfo).encode('utf-8')) replay.write(b'\n') replay.write(QtCore.qCompress(self.replayData).toBase64()) replay.close()
def __init__(self, parent=None): super(DragWidget, self).__init__(parent) dictionaryFile = QtCore.QFile(":/dictionary/words.txt") dictionaryFile.open(QtCore.QFile.ReadOnly) inputStream = QtCore.QTextStream(dictionaryFile) x, y = 5, 5 while not inputStream.atEnd(): word = inputStream.readLine() if word: wordLabel = DragLabel(word, self) wordLabel.move(x, y) wordLabel.show() wordLabel.setAttribute(QtCore.Qt.WA_DeleteOnClose) x += wordLabel.width() + 2 if x >= 245: x = 5 y += wordLabel.height() + 2 newPalette = self.palette() newPalette.setColor(QtGui.QPalette.Window, QtCore.Qt.white) self.setPalette(newPalette) self.setMinimumSize(400, max(200, y)) self.setWindowTitle(self.tr("Fridge Magnets")) self.setAcceptDrops(True)
def add_avatar(self): options = QtWidgets.QFileDialog.Options() options |= QtWidgets.QFileDialog.DontUseNativeDialog fileName = QtWidgets.QFileDialog.getOpenFileName( self, "Select the PNG file", "", "png Files (*.png)", options) if fileName: # check the properties of that file pixmap = QtGui.QPixmap(fileName) if pixmap.height() == 20 and pixmap.width() == 40: text, ok = QtWidgets.QInputDialog.getText( self, "Avatar description", "Please enter the tooltip :", QtWidgets.QLineEdit.Normal, "") if ok and text != '': file = QtCore.QFile(fileName) file.open(QtCore.QIODevice.ReadOnly) fileDatas = base64.b64encode(zlib.compress(file.readAll())) file.close() self.parent.lobby_connection.send( dict(command="avatar", action="upload_avatar", name=os.path.basename(fileName), description=text, file=fileDatas)) else: QtWidgets.QMessageBox.warning( self, "Bad image", "The image must be in png, format is 40x20 !")
def save(self): exception = None fh = None try: if not self.filename: raise IOError("no filename specified for saving") fh = QtCore.QFile(self.filename) if not fh.open(QtCore.QIODevice.WriteOnly): raise IOError(fh.errorString()) stream = QtCore.QDataStream(fh) stream.writeInt32(MAGIC_NUMBER) stream.writeInt16(FILE_VERSION) stream.setVersion(QtCore.QDataStream.Qt_4_5) for ship in self.ships: 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
def store_file_content(fileName, content, addExtension=True, newFile=False): """Save content on disk with the given file name.""" if fileName == '': raise Exception() ext = (os.path.splitext(fileName)[-1])[1:] if ext == '' and addExtension: fileName += '.py' if newFile and file_exists(fileName): raise NinjaFileExistsException(fileName) try: flags = QtCore.QIODevice.WriteOnly | QtCore.QIODevice.Truncate f = QtCore.QFile(fileName) if settings.use_platform_specific_eol(): flags |= QtCore.QIODevice.Text if not f.open(flags): raise NinjaIOException(f.errorString()) stream = QtCore.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() except Exception: raise return os.path.abspath(fileName)
def save(self): if not self.filename: path = "." fname = QtWidgets.QFileDialog.getSaveFileName( self, "Page Designer - Save As", path, "Page Designer Files (*.pgd)")[0] #print "save: fname, type: \n", fname, ",", type(fname) if not fname: return if not fname.lower().endswith(".pgd"): fname += ".pgd" self.filename = fname fh = None try: fh = QtCore.QFile(self.filename) if not fh.open(QtCore.QIODevice.WriteOnly): raise IOError(fh.errorString()) self.scene.clearSelection() stream = QtCore.QDataStream(fh) stream.setVersion(QtCore.QDataStream.Qt_4_2) stream.writeInt32(MagicNumber) stream.writeInt16(FileVersion) for item in self.scene.items(): self.writeItemToStream(stream, item) except IOError as e: QtGui.QMessageBox.warning( self, "Page Designer -- Save Error", "Failed to save {}: {}".format(self.filename, e)) finally: if fh is not None: fh.close() global Dirty Dirty = False