def parsing(self): fileName = QFileInfo(self.folder_path) self.PROJECT = fileName.fileName()[:-4] self.TOP_LEVEL_FILE = fileName.fileName() self.FAMILY = self.family_name self.PART = self.part_num self.DIRECTORY = self.folder_path.strip("\\" + fileName.fileName()) print("PROJECT: " + self.PROJECT) print("TOP LEVEL: " + self.TOP_LEVEL_FILE) print("FAMILY: " + self.FAMILY) print("PART: " + self.PART) print("DIRECTORY: " + self.DIRECTORY) os.chdir(self.DIRECTORY) command1 = "C:\\intelFPGA\\17.1\\quartus\\bin64\\quartus_map " + self.PROJECT + " --source=" + self.TOP_LEVEL_FILE + " --family=" + "\"" + self.FAMILY + "\"" command2 = "C:\\intelFPGA\\17.1\\quartus\\bin64\\quartus_fit " + self.PROJECT + " --part=" + self.PART + " --pack_register=minimize_area" command3 = "C:\\intelFPGA\\17.1\\quartus\\bin64\\quartus_asm " + self.PROJECT command4 = "C:\\intelFPGA\\17.1\\quartus\\bin64\\quartus_sta " + self.PROJECT self.dropBoxUpdate.emit("Beginning Analysis and Synthesis") #self.progressBarUpdate.emit(0, 26) self.signalThreadSet.emit(25) os.system(command1) self.dropBoxUpdate.emit("Analysis and Synthesis: SUCCESSFUL") self.dropBoxUpdate.emit("Beginning Fitter") #self.progressBarUpdate.emit(25, 51) self.signalThreadSet.emit(50) os.system(command2) self.dropBoxUpdate.emit("Fitter: SUCCESSFUL") self.dropBoxUpdate.emit("Beginning Assembler") #self.progressBarUpdate.emit(50, 76) self.signalThreadSet.emit(75) os.system(command3) self.dropBoxUpdate.emit("Assembler: SUCCESSFUL") self.dropBoxUpdate.emit("Beginning Timing Analysis") #self.progressBarUpdate.emit(75, 101) self.signalThreadSet.emit(100) os.system(command4) self.dropBoxUpdate.emit("Timing Analysis: SUCCESSFUL") self.signalThreadSet.emit(125) self.dropBoxUpdate.emit("DONE") self.MoveFiles() self.reportSig.emit()
def loadImages(self, fileNames): for fileName in fileNames: row = self.imagesTable.rowCount() self.imagesTable.setRowCount(row + 1) fileInfo = QFileInfo(fileName) imageName = fileInfo.baseName() fileImage2x = fileInfo.absolutePath( ) + '/' + imageName + "@2x." + fileInfo.suffix() fileInfo2x = QFileInfo(fileImage2x) image = QImage(fileName) toolTip = "Directory: {}\nFile: {}\nFile@2x: {}\nSize: {}x{}".format( QDir.toNativeSeparators(fileInfo.absolutePath()), fileInfo.fileName(), fileInfo2x.fileName() if fileInfo2x.exists else "<None>", image.width(), image.height()) fileItem = QTableWidgetItem(imageName) fileItem.setData(Qt.UserRole, fileName) fileItem.setIcon(QIcon(QPixmap.fromImage(image))) fileItem.setFlags((fileItem.flags() | Qt.ItemIsUserCheckable) & ~Qt.ItemIsEditable) fileItem.setToolTip(toolTip) self.imagesTable.setItem(row, 0, fileItem) mode = QIcon.Normal state = QIcon.Off if self.guessModeStateAct.isChecked(): if "_act" in imageName: mode = QIcon.Active elif "_dis" in imageName: mode = QIcon.Disabled elif "_sel" in imageName: mode = QIcon.Selected if "_on" in imageName: mode = QIcon.On modeItem = QTableWidgetItem(IconPreviewArea.iconModeNames()[ IconPreviewArea.iconModes().index(mode)]) modeItem.setToolTip(toolTip) self.imagesTable.setItem(row, 1, modeItem) stateItem = QTableWidgetItem(IconPreviewArea.iconStateNames()[ IconPreviewArea.iconStates().index(state)]) stateItem.setToolTip(toolTip) self.imagesTable.setItem(row, 2, stateItem) self.imagesTable.openPersistentEditor(modeItem) self.imagesTable.openPersistentEditor(stateItem) fileItem.setCheckState(Qt.Checked)
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 openfile(self, MainWindow): self.PredictButton.setText('Push to Predict') self.might_like_label.setText('You might also like...') self.MainPlayButton.setIcon(self.toPlay) if (self.status == 'playing'): self.status = 'stop' self.Thread.terminate() self.playAuthor = 0 print('openfile') fname = QFileDialog.getOpenFileName(MainWindow, '打开文件', './') if fname[0] == '': return filename = fname[0] #带完整路径的文件名 self.TobePredictSong = filename fileinfo = QFileInfo(fname[0]) file_name = fileinfo.fileName() #仅文件名 self.getPicFromMp3(filename) self.addSongInfo(self.mainListWidget, self.solveSongInfo(filename)) audiofile = eyed3.load(filename) self.Type = str(audiofile.tag.genre) font = QFont() font.setPointSize(15) font.setFamily('Comic Sans MS') self.mainListWidget.setFont(font) if (filename[-1] == '3'): # 如果读入的是一个mp3文件 sound = AudioSegment.from_mp3(filename) self.cursong0 = 'cursong0' + '.wav' sound.export('cursong0' + '.wav', format="wav") else: self.cursong0 = filename with open('curpic.jpg', 'rb') as img: pix = QPixmap('curpic.jpg') self.songImage.setPixmap(pix) self.songImage.setScaledContents(True)
def __insertFlashCookie(self, path): """ Private method to insert a Flash cookie into the cache. @param path Flash cookies path @type str """ solFile = QFile(path) if not solFile.open(QFile.ReadOnly): return dataStr = "" data = bytes(solFile.readAll()) if data: try: reader = FlashCookieReader() reader.setBytes(data) reader.parse() dataStr = reader.toString() except FlashCookieReaderError as err: dataStr = err.msg solFileInfo = QFileInfo(solFile) cookie = FlashCookie() cookie.contents = dataStr cookie.name = solFileInfo.fileName() cookie.path = solFileInfo.canonicalPath() cookie.size = int(solFile.size()) cookie.lastModified = solFileInfo.lastModified() cookie.origin = self.__extractOriginFrom(path) self.__flashCookies.append(cookie)
def pBtn_RunClicked(self): fi = QFileInfo(self.lnEdit_Prog.text()) #runName=fi.baseName() ns3path = os.path.dirname(fi.dir().path()) ns3path = os.path.dirname(ns3path) self.exepath = os.path.dirname(ns3path) routingName = self.cmBox_RoutingName.currentText() simSpan = self.cmBox_SimulationSpan.currentText() pool = Pool(processes=self.spinBox_processes.value()) cmds = {} for traffic in range(string.atoi(self.lnEdit_loadStart.text()), string.atoi(self.lnEdit_loadEnd.text()), string.atoi(self.lnEdit_loadStep.text())): if fi.suffix() == "cpp": cmds[ traffic] = "./waf --run='{1} --routingName={3} --simulationSpan={2} --InterestsPerSec={0}'".format( traffic, fi.baseName(), simSpan, routingName) else: cmds[ traffic] = "./waf --pyrun='{1} --routingName={3} --simulationSpan={2} --InterestsPerSec={0}'".format( traffic, 'src/ndnSIM/examples/' + fi.fileName(), simSpan, routingName) res = pool.apply_async(runJob, args=(cmds[traffic], self.exepath), callback=self.invokeRefresh) self.listWidget_activeProg.addItem(cmds[traffic]) #res.wait() #print(res.get()) pool.close() #关闭线程池,不再接收新任务 #proc=Process(target=ajob.runJob, args=("./waf --run='ndn-zhangyu-multipath --simulationSpan=50 --InterestsPerSec=50'", os.environ['HOME']+"/ndnSIM20170130/ns-3/")) #proc.start() #proc.join() self.refreshGUI("")
def seek(self): fileName = "" dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) dialog.setNameFilter("Images (*.png *.gif *.jpg)All (*)") dialog.setWindowTitle("Load Image") dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec(): fileName = dialog.selectedFiles()[0] if not fileName: return # copy file to assets dir info = QFileInfo(fileName) name = info.fileName().replace(" ", "_") path = os.path.join(self.site.source_path, "assets", "images", name) self.source.setText(path) try: shutil.copy2(fileName, path) except shutil.SameFileError: pass # just ignore # also copy file to deploy dir for previews dpath = os.path.join(self.site.source_path, self.site.output, "docs", "assets", "images", name) shutil.copy2(fileName, dpath) self.image.setImage(QImage(path)) self.contentChanged()
def windowIndicator(self): filename = "" if self.fileHandler != None: filename = self.fileHandler.fileName statusbarText = "" pluginname = self.completeModel.headerData(1, Qt.Horizontal, Qt.DisplayRole).pluginname if pluginname != "": statusbarText += "Plugin: " + pluginname + " " if self.fileHandler != None: if filename != "": statusbarText += "File: " + filename self.statusBar.setText(statusbarText) if filename != "": info = QFileInfo(filename) fn = info.fileName() else: fn = "" if fn != "": if self.unsavedContent: self.setWindowTitle("* " + fn + " - APE") else: self.setWindowTitle(fn + " - APE") else: if self.unsavedContent: self.setWindowTitle("* APE") else: self.setWindowTitle("APE")
def generate_pj_info(self): """ triggered by button add 1. create new project info dict every time 2. extract project name and address from LineEdit; check if exist and if it is cas and msh file 3. when second step done, get journal path from get_journal function :return: signal_add_pj(dict) """ self.pj_dict = { "project_name": '', "project_address": '', "journal": '' } if self.checkbox_journal.isChecked(): case_path = QFileInfo(self.edit_journal_address.text()) else: case_path = QFileInfo(self.edit_project_address.text() ) # QFileInfo can deeply analyze path info accepted_file_type = ['cas', 'msh', 'h5', 'jou'] if (case_path.exists()) and (case_path.suffix() in accepted_file_type): self.pj_dict["project_name"] = case_path.baseName() self.pj_dict["project_address"] = case_path.absolutePath() self.pj_dict['journal'] = self.get_journal(case_path, case_path.fileName()) self.signal_add_pj.emit(self.pj_dict) self.close() print('generate new project:', self.pj_dict) else: QMessageBox.warning(self, self.make_trans('warning'), self.make_trans('no_case_mesh'), QMessageBox.Yes, QMessageBox.Yes) print('file not exists')
def downloadV2raycore(self, url=False): if (url): self.downloadURL = url fileInfo = QFileInfo(self.downloadURL.path()) self.fileName = fileName = fileInfo.fileName() if not fileName: fileName = "v2ray.zip" if QFile.exists(fileName): QFile.remove(fileName) self.outFile = QFile(fileName) if not self.outFile.open(QIODevice.WriteOnly): if (self.silentInstall == False): self.msgBox.information( QDialog().move(self.fly), self.translate("updateV2ray", "Download {}").format(fileName), self.translate("updateV2ray", "Unable to save the file {}: {}.").format( fileName, self.outFile.errorString())) self.outFile = None return self.httpRequestAborted = False if (self.silentInstall == False): self.progressDialog = QProgressDialog() self.progressDialog.setLabelText( self.translate("updateV2ray", "v2ray-core is downloading...")) self.progressDialog.canceled.connect(self.cancelDownload) self.startRequest(self.downloadURL)
def msg(self): directory1 = QFileDialog.getExistingDirectory(self, "选择文件夹", "/") print(directory1) # 打印文件夹路径 fileName, filetype = QFileDialog.getOpenFileName( self, "选择文件", "/", "All Files (*);;Text Files (*.txt)") print(fileName, filetype) # 打印文件全部路径(包括文件名和后缀名)和文件类型 print(fileName) # 打印文件全部路径(包括文件名和后缀名) fileinfo = QFileInfo(fileName) print(fileinfo) # 打印与系统相关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等。 file_name = fileinfo.fileName() print(file_name) # 打印文件名和后缀名 file_suffix = fileinfo.suffix() print(file_suffix) # 打印文件后缀名 file_path = fileinfo.absolutePath() print(file_path) # 打印文件绝对路径(不包括文件名和后缀名) files, ok1 = QFileDialog.getOpenFileNames(self, "多文件选择", "/", "所有文件 (*);;文本文件 (*.txt)") print(files, ok1) # 打印所选文件全部路径(包括文件名和后缀名)和文件类型 fileName2, ok2 = QFileDialog.getSaveFileName(self, "文件保存", "/", "图片文件 (*.png);;(*.jpeg)") print(fileName2) # 打印保存文件的全部路径(包括文件名和后缀名)
class FileBasedTextStream(QTextStream): def __init__(self, qfile): super().__init__(qfile) self.saved_file = qfile self.qfi = None # may never need this def rewind(self): self.flush() self.seek(0) def writeLine(self, str): self << str self << '\n' def open_mode(self): return self.saved_file.openMode() def fullpath(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.canonicalFilePath() def folderpath(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.canonicalPath() def filename(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.fileName() def basename(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.completeBaseName() def suffix(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.suffix()
def on_actTree_AddFiles_triggered(self): fileList, flt = QFileDialog.getOpenFileNames(self, "选择一个或多个文件", "", "Images(*.jpg)") #多选文件,返回两个结果,fileList是一个列表类型,存储了所有文件名; flt是设置的文件filter,即"Images(*.jpg)" if (len(fileList) < 1): #fileList是list[str] return item = self.ui.treeFiles.currentItem() #当前节点 if (item.type() == TreeItemType.itImageItem.value ): #若当前节点是图片节点,取其父节点作为父节点 parItem = item.parent() else: #否则取当前节点为父节点 parItem = item icon = QIcon(":/images/icons/31.ico") for i in range(len(fileList)): fullFileName = fileList[i] #带路径文件名 fileinfo = QFileInfo(fullFileName) nodeText = fileinfo.fileName() #不带路径文件名 item = QTreeWidgetItem(TreeItemType.itImageItem.value) #节点类型 item.setIcon(TreeColNum.colItem.value, icon) #第1列的图标 item.setText(TreeColNum.colItem.value, nodeText) #第1列的文字 item.setText(TreeColNum.colItemType.value, "Image") #第2列的文字 item.setFlags(self.itemFlags) item.setCheckState(TreeColNum.colItem.value, Qt.Checked) item.setData(TreeColNum.colItem.value, Qt.UserRole, fullFileName) #关联数据为文件全名 parItem.addChild(item) parItem.setExpanded(True) #展开节点
def openNet(self): filename, filter = QFileDialog.getOpenFileName(self, "Abrir arquivo...", self._lastPath, "XML files (*.xml *.pnml)") if filename is None or filename == "": return if not (filename.endswith(".xml") or filename.endswith(".pnml")): filename = filename + ".xml" file = QFile(filename) if not file.open(QIODevice.ReadOnly): return doc = QDomDocument("PetriNetDoc") ans, errMsg, errLine, errColl = doc.setContent(file) if not ans: return nets = PFSNet.createFromXml(doc, self) if len(nets) == 0: return self.nonempty.emit() for net in nets: f = QFileInfo(filename) net._filename = f.fileName() net._filepath = f.absolutePath() file.close() self._lastPath = net._filepath net.undoStack.cleanChanged.connect(self.changeCurrentTabName) self._idNet = self._idNet + 1 i = self._tab.addTab(net, net.getTabName()) self._tab.setCurrentIndex(i) if self._tab.count() == 1: self.updateUndoRedoAction() self._sm.fixTransitions(net._pages[0]._scene) self.nonempty.emit() if self._tab.count() == 1: self.updateUndoRedoAction()
def dropEvent(self, event): if event.mimeData().hasUrls(): event.setDropAction(Qt.CopyAction) event.accept() icon = QIcon("loaded.png") for url in event.mimeData().urls(): if url.isLocalFile(): fi = QFileInfo(url.toLocalFile()) if fi.isDir(): it = QDirIterator( fi.fileName(), QDir.Files, QDirIterator.Subdirectories, ) while it.hasNext(): item = QListWidgetItem() item.setData(PathRole, it.next()) self.addItem(item) elif fi.isFile(): item = QListWidgetItem() item.setData(PathRole, url.toLocalFile()) self.addItem(item) else: event.ignore()
def __insertFlashCookie(self, path): """ Private method to insert a Flash cookie into the cache. @param path Flash cookies path @type str """ solFile = QFile(path) if not solFile.open(QFile.ReadOnly): return dataStr = "" data = bytes(solFile.readAll()) if data: try: reader = FlashCookieReader() reader.setBytes(data) reader.parse() dataStr = reader.toString() except FlashCookieReaderError as err: dataStr = err.msg solFileInfo = QFileInfo(solFile) cookie = FlashCookie() cookie.contents = dataStr cookie.name = solFileInfo.fileName() cookie.path = solFileInfo.canonicalPath() cookie.size = int(solFile.size()) cookie.lastModified = solFileInfo.lastModified() cookie.origin = self.__extractOriginFrom(path) self.__flashCookies.append(cookie)
def startSearch(self, query): print("search started..", query) filters = QDir.Files nameFilters = ["*.cpp"] iterator = QDirIterator("/home/alexanderb", nameFilters, filters, QDirIterator.Subdirectories) while (iterator.hasNext()): filePath = iterator.next() fileInfo = QFileInfo(filePath) currentFile = QFile(filePath) currentFile.open(QFile.ReadOnly | QFile.Text) fileContents = currentFile.readAll().data().decode('utf8', errors='ignore') if (fileContents.find(query) != -1): qtwItem = QTreeWidgetItem() qtwItem.setText(0, fileInfo.fileName()) qtwItem.setText(1, fileInfo.suffix()) qtwItem.setText(2, str(fileInfo.size() / 1024)) qtwItem.setText(3, fileInfo.lastModified().toString("MM/dd/yyyy")) qtwItem.setText(4, fileInfo.created().toString("MM/dd/yyyy")) qtwItem.setText(5, str("...here is the content...")) qtwItem.setText(6, filePath) self.qtwItems.append(qtwItem) self.match_found.emit(qtwItem) self.finished.emit()
def on_action_OpenFile_triggered(self): fileList, flt = QFileDialog.getOpenFileNames(self, '选择一个或多个文件', '', 'Images(*.jpg)') if len(fileList) < 1: return item = self._ui.treeWidget.currentItem() if item.type() == TreeItemType.ItImageItem.value: parItem = item.parent() else: parItem = item icon = QIcon(':/icons/icons/31.ico') for fullFileName in fileList: fileinfo = QFileInfo(fullFileName) nodeText = fileinfo.fileName() item = QTreeWidgetItem(TreeColNum.ColItem.value) item.setIcon(TreeColNum.ColItem.value, icon) item.setText(TreeColNum.ColItem.value, nodeText) item.setText(TreeColNum.ColItemType.value, 'Image') item.setFlags(self.itemFlags) item.setCheckState(TreeColNum.ColItem.value, Qt.Checked) item.setData(TreeColNum.ColItem.value, Qt.UserRole, fullFileName) parItem.addChild(item) parItem.setExpanded(True)
def saveTextdata(self, filePath, data): outFile = QFileInfo(filePath) fileName = outFile.fileName() if QFile.exists(fileName): QFile.remove(fileName) outFile = QFile(outFile.absoluteFilePath()) outFile.open(QIODevice.WriteOnly | QIODevice.Text) if outFile.error() != outFile.NoError: self.msgBox.information( QDialog().move(self.fly), "{}".format(fileName), self.translate("openV2rayJSONFile", "Unable to open the file {}: {}.").format( fileName, outFile.errorString())) outFile = None return False outFile.write(codecs.encode(data, "utf-8")) if outFile.error() != outFile.NoError: self.msgBox.information( QDialog().move(self.fly), "{}".format(fileName), self.translate("openV2rayJSONFile", "Unable to save the file {}: {}.").format( fileName, outFile.errorString())) outFile = None return False outFile.close()
def __setFileName(self, fileName): """ Private method to set the file name to save the download into. @param fileName name of the file to save into @type str """ fileInfo = QFileInfo(fileName) WebBrowserWindow.downloadManager().setDownloadDirectory( fileInfo.absoluteDir().absolutePath()) self.filenameLabel.setText(fileInfo.fileName()) self.__fileName = fileName # check file path for saving saveDirPath = QFileInfo(self.__fileName).dir() if not saveDirPath.exists(): if not saveDirPath.mkpath(saveDirPath.absolutePath()): self.progressBar.setVisible(False) self.on_stopButton_clicked() self.infoLabel.setText( self.tr("Download directory ({0}) couldn't be created."). format(saveDirPath.absolutePath())) self.__setDateTime() return self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
def on_actOpen_triggered(self): curPath=QDir.currentPath() #获取当前路径 filename,flt=QFileDialog.getOpenFileName(self,"打开一个文件",curPath, "地震数据文件(*.txt);;所有文件(*.*)") if (filename==""): return aFile=open(filename,'r') allLines=aFile.readlines() #读取所有行,list类型,每行末尾带有 \n aFile.close() fileInfo=QFileInfo(filename) QDir.setCurrent(fileInfo.absolutePath()) self.__labFileName.setText("数据文件:"+fileInfo.fileName()) rowCnt=len(allLines) #行数,即数据点数 self.__vectData=[0]*rowCnt #列表 for i in range(rowCnt): lineText=allLines[i].strip() #字符串表示的数字 self.__vectData[i]=float(lineText) minV=min(self.__vectData) #最小值 self.ui.spinY_Min.setValue(minV) maxV=max(self.__vectData) #最大值 self.ui.spinY_Max.setValue(maxV) if self.ui.radioFill_None.isChecked(): self.do_redrawWave() #绘制波形曲线 else: self.do_redrawFill() #绘制有填充的波形 self.ui.frameSetup.setEnabled(True)
def saveV2raycoreJSONFile(self): JSONData = {} JSONData["preferences"] = copy.deepcopy(self.preferences) JSONData["update"] = copy.deepcopy(self.update) JSONData["configFiles"] = copy.deepcopy(self.configFiles) outFile = QFileInfo(self.v2rayshellConfigFileName) fileName = outFile.fileName() if QFile.exists(fileName): QFile.remove(fileName) outFile = QFile(fileName) outFile.open(QIODevice.WriteOnly | QIODevice.Text) if outFile.error() != outFile.NoError: self.msgBox.information(QDialog().move(self.fly), "{}".format(fileName), self.translate("bridgetreasureChest", "Unable to open the file {}: {}.").format(fileName, outFile.errorString())) outFile = None return False outFile.write(codecs.encode(json.dumps(JSONData, indent = 4, sort_keys = False), "utf-8")) if outFile.error() != outFile.NoError: self.msgBox.information(QDialog().move(self.fly), "{}".format(fileName), self.translate("bridgetreasureChest", "Unable to save the file {}: {}.").format(fileName, outFile.errorString())) outFile = None return False outFile.close()
def saveMusic(self, _file): fileinfo = QFileInfo(_file) filename = fileinfo.fileName() # 缓存二进制数据 f = open(_file, 'rb') self.status.music = f.read() f.close()
def saveAccompaniment(self, _file): fileinfo = QFileInfo(_file) filename = fileinfo.fileName() # 缓存二进制数据 f = open(_file, 'rb') self.status.accompaniment = f.read() f.close()
def downloadFile(self): self.url = QUrl(self.urlLineEdit.text()) fileInfo = QFileInfo(self.url.path()) fileName = fileInfo.fileName() if not fileName: fileName = 'index.html' if QFile.exists(fileName): ret = QMessageBox.question(self, "HTTP", "There already exists a file called %s in the current " "directory. Overwrite?" % fileName, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if ret == QMessageBox.No: return QFile.remove(fileName) self.outFile = QFile(fileName) if not self.outFile.open(QIODevice.WriteOnly): QMessageBox.information(self, "HTTP", "Unable to save the file %s: %s." % (fileName, self.outFile.errorString())) self.outFile = None return self.progressDialog.setWindowTitle("HTTP") self.progressDialog.setLabelText("Downloading %s." % fileName) self.downloadButton.setEnabled(False) self.httpRequestAborted = False self.startRequest(self.url)
def __init__(self, pluginManager, pluginFileNames, parent=None): """ Constructor @param pluginManager reference to the plugin manager object @param pluginFileNames list of plugin files suggested for installation (list of strings) @param parent parent of this dialog (QWidget) """ super(PluginInstallWidget, self).__init__(parent) self.setupUi(self) if pluginManager is None: # started as external plugin installer from .PluginManager import PluginManager self.__pluginManager = PluginManager(doLoadPlugins=False) self.__external = True else: self.__pluginManager = pluginManager self.__external = False self.__backButton = self.buttonBox.addButton( self.tr("< Back"), QDialogButtonBox.ActionRole) self.__nextButton = self.buttonBox.addButton( self.tr("Next >"), QDialogButtonBox.ActionRole) self.__finishButton = self.buttonBox.addButton( self.tr("Install"), QDialogButtonBox.ActionRole) self.__closeButton = self.buttonBox.button(QDialogButtonBox.Close) self.__cancelButton = self.buttonBox.button(QDialogButtonBox.Cancel) userDir = self.__pluginManager.getPluginDir("user") if userDir is not None: self.destinationCombo.addItem( self.tr("User plugins directory"), userDir) globalDir = self.__pluginManager.getPluginDir("global") if globalDir is not None and os.access(globalDir, os.W_OK): self.destinationCombo.addItem( self.tr("Global plugins directory"), globalDir) self.__installedDirs = [] self.__installedFiles = [] self.__restartNeeded = False downloadDir = QDir(Preferences.getPluginManager("DownloadPath")) for pluginFileName in pluginFileNames: fi = QFileInfo(pluginFileName) if fi.isRelative(): pluginFileName = QFileInfo( downloadDir, fi.fileName()).absoluteFilePath() self.archivesList.addItem(pluginFileName) self.archivesList.sortItems() self.__currentIndex = 0 self.__selectPage()
def checkdownloadFileExists(self, downloadPath): if (not downloadPath or not downloadPath): return False filePath = QUrl(downloadPath) fileInfo = QFileInfo(filePath.path()) fileName = fileInfo.fileName() if QFile.exists(fileName): QFile.remove(fileName) return True
def _getFileName(self) -> str: #Get base file name from a absolute path fileInfo = QFileInfo(self._path) if not fileInfo.exists(): return "" else: return fileInfo.fileName()
def __download(self, item): default_path = QDir(item.downloadDirectory()).filePath( item.downloadFileName()) path, _ = QFileDialog.getSaveFileName(self, "Save as", default_path) if path is None or len(path) == 0: item.cancel() return info = QFileInfo(path) item.setDownloadDirectory(info.dir().path()) item.setDownloadFileName(info.fileName()) item.accept() self.download_windows.append( DownloadProgressWindow(item, info.dir().path() + "/" + info.fileName()))
def GetFile(self, typeOfFile, suff): options = QFileDialog.Options() fileName, _ = QFileDialog.getOpenFileName( self, "Open {} File".format(typeOfFile), "", "{}".format(suff), options=options) if fileName: if typeOfFile == "any": myCipher.fileToBeSigned = fileName f = QFileInfo(fileName) n = f.fileName() file_info = "Informations about the file:\n \n" file_info += "Name: " + n + "\n" p = f.filePath() file_info += "Path: " + p + "\n" suf = f.suffix() file_info += "Suffix: " + suf + "\n" size = f.size() file_info += "Size (in bytes): " + str(size) + "\n" lastModify = f.lastModified().toPyDateTime() file_info += "Date of last change: " + str(lastModify) self.fileInfo.setText(file_info) elif typeOfFile == "Signed": myCipher.userFile = fileName elif typeOfFile == "Private key": myCipher.privPath = fileName with open(fileName, "r") as f: f.seek(4) base64Text = f.readline() decodedBase64D = self.decodeFromBase64(base64Text) myCipher.d = int(decodedBase64D, 10) base64Text2 = f.readline() decodedBase64N = self.decodeFromBase64(base64Text2) myCipher.n = int(decodedBase64N, 10) elif typeOfFile == "Public key": myCipher.pubPath = fileName with open(fileName, "r") as f: f.seek(4) base64Text = f.readline() decodedBase64E = self.decodeFromBase64(base64Text) myCipher.e = int(decodedBase64E, 10) base64Text2 = f.readline() decodedBase64N = self.decodeFromBase64(base64Text2) myCipher.n = int(decodedBase64N, 10) elif typeOfFile == "Zip": myCipher.zipPath = fileName with zipfile.ZipFile(fileName, "r") as z: z.extractall("Extracted_files") elif typeOfFile == "Sign": myCipher.fileToBeVerified = fileName with open(fileName, "r") as f: f.seek(13) base64Text = f.readline() decodedBase64 = self.decodeFromBase64(base64Text) myCipher.toVerifyMessage = list(decodedBase64)
def _qfile_to_stream(a_file, I_or_O, encoding=None): if not a_file.open(I_or_O | QIODevice.Text) : f_info = QFileInfo(a_file) # for the name utilities_logger.error('Error {0} ({1}) opening file {2}'.format( a_file.error(), a_file.errorString(), f_info.fileName() ) ) return None fbts = FileBasedTextStream(a_file) fbts.setCodec(_check_encoding(fbts.filename()) if encoding is None else encoding) return fbts
def saveas_mission(self): """ Save a mission with new name""" if self.mission.num_steps == 0: reply = QMessageBox.question( None, "Save Mission", "You are about to save an empty mission. Do you want to proceed?", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes) if reply == QMessageBox.No: return False, None elif float( self.mission.get_step(self.mission.get_length() - 1). get_maneuver().get_position().get_z()) != 0.0: # vehicle last waypoint is not at zero depth. reply = QMessageBox.question( None, "Save Mission", "You are about to save and the last waypoint is not at zero depth. " "Do you want to proceed?", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes) if reply == QMessageBox.No: return False, None mission_filename, selected_filter = QFileDialog.getSaveFileName( None, 'Save mission', self.mission_filename, 'XML (*.xml)') if mission_filename != '': if selected_filter == "XML (*.xml)": file_info = QFileInfo(mission_filename) self.mission.write_mission(mission_filename) logger.debug(file_info.fileName()) self.set_mission_name(file_info.fileName()) self.set_mission_filename(mission_filename) self.mission_layer.setName(file_info.baseName()) self.mission_layer.setCustomProperty("mission_xml", self.mission_filename) self.saved = True self.modified = False return True, mission_filename else: return False, None
def load_auv_config(self): """Open dialog to load auv config""" configuration_filename, __ = QFileDialog.getOpenFileName( self, 'AUV configuration', QDir.homePath(), "AUV configuration(*.xml) ;; All files (*.*)", QDir.homePath()) if configuration_filename: file_info = QFileInfo(configuration_filename) filename = file_info.fileName() self.auv_config_lineEdit.setText(str(filename))
class QuarkNotebookModel: """Subdirectories located in the Quark notes directory (defined by its path in 'config.json' under "notes_dir") are represented by this class in the Quark note manager.""" def __init__(self, dirPath): """Initialize data for the model.""" self._notebookDir = QFileInfo(dirPath) #store path to the notebook as a 'QFileInfo' for added flexibility q = QFileIconProvider() #objec used to create model display icon self._icon = q.icon(self._notebookDir) #create model display icon self._notes = [] #initialize empty list of notes notebookPath = self._notebookDir.absoluteFilePath() #get the absolute path to the notebook #load all the notes inside this notebook for item in sorted(os.listdir(notebookPath)): #for every item in the notebook itemPath = os.path.join(notebookPath, item) #get absolute path to the item if os.path.isfile(itemPath): #if the item is a file/note self._notes.append( QuarkNoteModel(itemPath, self) ) #append a new note to the notes list def noteAt(self, i): """Returns the note at a given index.""" if i >= 0 and i < len(self._notes): return self._notes[i] else: return None def noteCount(self): """Returns the number notes inside this notebook.""" return len(self._notes) def getName(self): """Returns the name of this notebook/directory.""" return self._notebookDir.fileName() def getFilePath(self): """Returns path to the note.""" return self._notebookDir.absoluteFilePath() def getIcon(self): """Returns the icon to be displayed in the Quark note manager.""" return self._icon
def addFilesClicked(self): newFiles = QFileDialog.getOpenFileNames(self, "Please select the files to add to stack", "", "Images (*.png *.jpg *.bmp)") for file in newFiles[0]: entries = self.fileTreeWidget.findItems(file, Qt.MatchCaseSensitive) for entry in entries: self.fileTreeWidget.takeItem(self.fileTreeWidget.row(entry)) item = QTreeWidgetItem() fileInfo = QFileInfo(file) fileInfo.fileName() exif = getExifInfo(file) item.setText(0, fileInfo.fileName()) item.setText(1, exif.exposureTime) item.setText(2, exif.aperture) item.setText(3, exif.ISO) item.setText(4, fileInfo.absolutePath()) self.fileTreeWidget.insertTopLevelItem(self.fileTreeWidget.topLevelItemCount(), item)
def getDocumentTitle(self, baseName=False): if self.markup and not baseName: text = self.editBox.toPlainText() try: return self.markup.get_document_title(text) except Exception: self.p.printError() if self.fileName: fileinfo = QFileInfo(self.fileName) basename = fileinfo.completeBaseName() return (basename if basename else fileinfo.fileName()) return self.tr("New document")
def read_file(self, path): """Read in a file """ file = QFile(path) fileinfo = QFileInfo(file) file.open(QIODevice.ReadOnly) data = file.readAll() codec = QTextCodec.codecForName("UTF-8") self.contents = codec.toUnicode(data).rstrip("\n") self.filename = fileinfo.fileName()
def open_file(self, filename): if not QFile.exists(filename): return # is file open? idx = self.find_tab_by_filename(filename) if idx is not None: self.main_tabs.setCurrentIndex(idx) return file = QFile(filename) fileinfo = QFileInfo(file) self.create_new_editor(fileinfo.fileName(), filename)
def getDocumentTitle(self, baseName=False): markup = self.markups[self.ind] realTitle = '' if markup and not baseName: text = self.editBoxes[self.ind].toPlainText() try: realTitle = markup.get_document_title(text) except Exception: self.printError() if realTitle: return realTitle elif self.fileNames[self.ind]: fileinfo = QFileInfo(self.fileNames[self.ind]) basename = fileinfo.completeBaseName() return (basename if basename else fileinfo.fileName()) return self.tr("New document")
def save_as(self, tab_index, filename): if not self.is_editor_modified(tab_index): return sci = self.get_editor(tab_index) sci.set_mode_by_filename(filename) out_file = QFile(filename) out_file.open(QFile.WriteOnly) out_file.write(sci.text.encode()) out_file.close() sci.modified = False sci.filename = filename file_info = QFileInfo(out_file) self.main_tabs.setTabText(tab_index, file_info.fileName())
class FileBasedTextStream(QTextStream): def __init__(self, qfile): super().__init__(qfile) self.saved_file = qfile self.qfi = None # may never need this def rewind(self): self.flush() self.seek(0) def writeLine(self, str): self << str self << '\n' def open_mode(self): return self.saved_file.openMode() def fullpath(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.canonicalFilePath() def folderpath(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.canonicalPath() def filename(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.fileName() def basename(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.completeBaseName() def suffix(self): if self.qfi is None: self.qfi = QFileInfo(self.saved_file) return self.qfi.suffix() def flush(self): super().flush() # make sure text buffer goes to device return self.device().flush() # do a real flush def show_error( self, action, parent ): error_number = self.device().error() if error_number : # is not 0, no error error_string = self.device().errorString() msg_string = 'Error {} ({}) on {}'.format( error_number, error_string, action ) warning_msg( msg_string, self.fullpath(), parent )
class QuarkNoteModel: """Files located in the Quark notes directory (defined by its path in 'config.json' under "notes_dir") are represented by this class in the Quark note manager.""" def __init__(self, fileInfo, _parent = None): """Initializes data for the model.""" self._noteFile = QFileInfo(fileInfo) q = QFileIconProvider() self._icon = q.icon(self._noteFile) self._parent = _parent def getIcon(self): """Returns the icon to be displayed in the Quark note manager.""" return self._icon def getName(self): """Returns the file name of the note.""" return self._noteFile.fileName() def getFilePath(self): """Returns path to the note.""" return self._noteFile.absoluteFilePath() def getParent(self): """Returns the parent notebook.""" return self._parent def setNewParent(self, newParent): """Set a new parent for the note.""" self._parent = newParent
def open(self, t_filename=None): settings = QSettings(QSettings.IniFormat, QSettings.UserScope, "pySPM", "pySPM") if t_filename is None: home = QDir.cleanPath(os.getenv("HOMEPATH")) path = settings.value("lastPath", home) self.filename = QFileDialog.getOpenFileName(None, "Choose measurement file", path, "*.ita") else: self.filename = t_filename check_file = QFileInfo(self.filename) self.setWindowTitle(check_file.fileName()) if not check_file.exists() or not check_file.isFile(): return settings.setValue("lastPath", check_file.path()) self.ita = pySPM.ITA(self.filename) self.t, self.S = self.ita.getSpectrum(time=True) self.sf, self.k0 = self.ita.get_mass_cal() self.mass = pySPM.utils.time2mass(self.t, self.sf, self.k0) self.spec = self.ax.plot(self.mass, self.S)[0] SatLevel = self.ita.size['pixels']['x']*self.ita.size['pixels']['y']*self.ita.Nscan self.sat_level = self.ax.axhline(SatLevel, color='r') if 'pySPM' in self.ita.root.goto("MassScale"): self.MassCal = [] N = self.ita.root.goto("MassScale/pySPM/N").get_ulong() for i in range(N): elt = self.ita.root.goto("MassScale/pySPM/"+str(i)+"/elt").value.decode('utf8') mass = self.ita.root.goto("MassScale/pySPM/"+str(i)+"/mass").get_double() time = self.ita.root.goto("MassScale/pySPM/"+str(i)+"/time").get_double() self.MassCal.append(dict(elt=elt, mass=mass, time=time)) else: self.MassCal = [] for x in self.ita.root.goto("MassScale/calib"): if x.name == 'assign': self.MassCal.append({'elt':x.get_string()}) if x.name == 'mcp': mcp = struct.unpack("<10d", x.value) self.MassCal[-1]['time'] = mcp[0] self.MassCal[-1]['mass'] = mcp[1] self.DoMassCal()
def getBaseName(self): if self._fileName: fileinfo = QFileInfo(self._fileName) basename = fileinfo.completeBaseName() return basename if basename else fileinfo.fileName() return self.tr("New document")
def __getFileName(self): """ Private method to get the file name to save to from the user. """ if self.__gettingFileName: return import Helpviewer.HelpWindow downloadDirectory = Helpviewer.HelpWindow.HelpWindow\ .downloadManager().downloadDirectory() if self.__fileName: fileName = self.__fileName originalFileName = self.__originalFileName self.__toDownload = True ask = False else: defaultFileName, originalFileName = \ self.__saveFileName(downloadDirectory) fileName = defaultFileName self.__originalFileName = originalFileName ask = True self.__autoOpen = False if not self.__toDownload: from .DownloadAskActionDialog import DownloadAskActionDialog url = self.__reply.url() dlg = DownloadAskActionDialog( QFileInfo(originalFileName).fileName(), self.__reply.header(QNetworkRequest.ContentTypeHeader), "{0}://{1}".format(url.scheme(), url.authority()), self) if dlg.exec_() == QDialog.Rejected or dlg.getAction() == "cancel": self.progressBar.setVisible(False) self.__reply.close() self.on_stopButton_clicked() self.filenameLabel.setText( self.tr("Download canceled: {0}").format( QFileInfo(defaultFileName).fileName())) self.__canceledFileSelect = True return if dlg.getAction() == "scan": self.__mainWindow.requestVirusTotalScan(url) self.progressBar.setVisible(False) self.__reply.close() self.on_stopButton_clicked() self.filenameLabel.setText( self.tr("VirusTotal scan scheduled: {0}").format( QFileInfo(defaultFileName).fileName())) self.__canceledFileSelect = True return self.__autoOpen = dlg.getAction() == "open" if PYQT_VERSION_STR >= "5.0.0": from PyQt5.QtCore import QStandardPaths tempLocation = QStandardPaths.standardLocations( QStandardPaths.TempLocation)[0] else: from PyQt5.QtGui import QDesktopServices tempLocation = QDesktopServices.storageLocation( QDesktopServices.TempLocation) fileName = tempLocation + '/' + \ QFileInfo(fileName).completeBaseName() if ask and not self.__autoOpen and self.__requestFilename: self.__gettingFileName = True fileName = E5FileDialog.getSaveFileName( None, self.tr("Save File"), defaultFileName, "") self.__gettingFileName = False if not fileName: self.progressBar.setVisible(False) self.__reply.close() self.on_stopButton_clicked() self.filenameLabel.setText( self.tr("Download canceled: {0}") .format(QFileInfo(defaultFileName).fileName())) self.__canceledFileSelect = True return fileInfo = QFileInfo(fileName) Helpviewer.HelpWindow.HelpWindow.downloadManager()\ .setDownloadDirectory(fileInfo.absoluteDir().absolutePath()) self.filenameLabel.setText(fileInfo.fileName()) self.__output.setFileName(fileName + ".part") self.__fileName = fileName # check file path for saving saveDirPath = QFileInfo(self.__fileName).dir() if not saveDirPath.exists(): if not saveDirPath.mkpath(saveDirPath.absolutePath()): self.progressBar.setVisible(False) self.on_stopButton_clicked() self.infoLabel.setText(self.tr( "Download directory ({0}) couldn't be created.") .format(saveDirPath.absolutePath())) return self.filenameLabel.setText(QFileInfo(self.__fileName).fileName()) if self.__requestFilename: self.__readyRead()