def isRunnableFile(self, fileName): result = False if (fileName is not None) and (fileName != ""): fInfo = QFileInfo(fileName) if (fInfo.exists()) and (fInfo.isExecutable()): result = True return result
def selectFile(self, new, old): if (self.resetting): self.resetting = False return if len(new.indexes()) == 0: self.clearSelection() self.currentFile = "" self.readOnly(True) return newSelection = self.files.filePath(new.indexes()[0]) self.settings.setValue("ui/snippeteditor/selected", newSelection) if QFileInfo(newSelection).isDir(): self.readOnly(True) self.clearSelection() self.currentFile = "" return if old and old.length() > 0: oldSelection = self.files.filePath(old.indexes()[0]) if not QFileInfo(oldSelection).isDir() and self.snippetChanged(): question = QMessageBox.question(self, self.tr("Discard"), self.tr("Snippet changed. Discard changes?")) if question != QMessageBox.StandardButton.Yes: self.resetting = True self.tree.selectionModel().select(old, QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Rows) return False self.currentFile = newSelection self.loadSnippet()
def __init__(self): super(ManualWindow, self).__init__() self.setWindowTitle('QAX Manual') icon_info = QFileInfo(app_info.app_icon_path) self.setWindowIcon(QIcon(icon_info.absoluteFilePath())) self.toolbar = QToolBar() self.addToolBar(self.toolbar) self.back_button = QPushButton() self.back_button.setIcon(qta.icon('fa.arrow-left')) self.back_button.clicked.connect(self.back) self.toolbar.addWidget(self.back_button) self.forward_button = QPushButton() self.forward_button.setIcon(qta.icon('fa.arrow-right')) self.forward_button.clicked.connect(self.forward) self.toolbar.addWidget(self.forward_button) self.address_line_edit = QLineEdit() self.address_line_edit.returnPressed.connect(self.load) self.address_line_edit.setVisible(False) self.toolbar.addWidget(self.address_line_edit) self.web_engine_view = QWebEngineView() self.web_engine_view.setZoomFactor(2.0) self.setCentralWidget(self.web_engine_view) initialUrl = self.docs_url() self.address_line_edit.setText(str(initialUrl)) self.web_engine_view.load(QUrl(initialUrl)) self.web_engine_view.page().urlChanged.connect(self.urlChanged)
def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning( self, "Pablo", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return inFile = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) if (QFileInfo(fileName).suffix() in ("pbl")): self.paged_text_edit.setHtml(inFile.readAll()) elif (QFileInfo(fileName).suffix() in ("html")): # FIXME: Prevent double setting of the paged_text_edit where necessary # FIXME: Double setting may cause bad UX with large files self.paged_text_edit.setHtml(inFile.readAll()) cleanHtml = HTMLCleaner.clean( self.paged_text_edit.toHtml()).decode("utf-8") self.paged_text_edit.setHtml(cleanHtml) else: self.paged_text_edit.setPlainText(inFile.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar.writeMessageOnStatus("File loaded", 2000)
def select_file(self): self.file_name = QFileDialog.getOpenFileName(self, "Select file", self.directory, "Images (*.png *.jpg)")[0] self.ui.lineEdit.setText(self.file_name) f = QFileInfo(self.file_name) self.directory = f.absolutePath()
def collectSelectedFolderFiles(self): folders, files, suffixes = [], [], [] for index in self.resultView.selectedIndexes(): if index.column() != 0: # 忽略第二列的selection continue item = self.sortFilterModel.data(index, Qt.UserRole) if 'folder' == item.type: folders.append(item.name) elif 'file' == item.type: files.append(item.name) elif 'suffix' == item.type: suffixes.append(item.name[2:]) # 将后缀符合选中条件的文件添加到files中 path = self.pathInputBox.text() iterator = QDirIterator(path, filter=QDir.Files | QDir.Dirs | QDir.Hidden | QDir.NoDotAndDotDot, flags=QDirIterator.Subdirectories) folderPaths, filePaths = set(), set() while iterator.hasNext(): file = iterator.next() if '.' == file[-1] or '..' == file[-2]: continue fileInfo = QFileInfo(file) if fileInfo.isDir(): if fileInfo.fileName() in folders: folderPaths.add(fileInfo.absoluteFilePath()) if fileInfo.isFile(): if fileInfo.fileName() in files: filePaths.add(fileInfo.absoluteFilePath()) if fileInfo.suffix() in suffixes: filePaths.add(fileInfo.absoluteFilePath()) return sorted(folderPaths), filePaths
def performUpload(self, metadataList, authControl, ht_id_path, metadata): self.interrupt = False # Check that all files initially exist. This is a quick sanity check. The user could # *still* delete a file out from under the codes. for i in tqdm(range(len(metadataList)), desc="Checking Files"): if not QFileInfo.exists(metadataList[i]): self.currentlyUploading.emit("File Missing: " + metadataList[i].split("/")[-1]) self.interrupt = True for i in tqdm(range(len(metadataList)), desc="Uploading Files"): if self.interrupt: break if not QFileInfo.exists(metadataList[i]): self.currentlyUploading.emit("File Missing: " + metadataList[i].split("/")[-1]) break else: self.currentlyUploading.emit("Currently uploading: " + metadataList[i].split("/")[-1]) ht_requests.upload_file(authControl, metadataList[i], 'user', None, ht_id_path, metadata) self.currentUploadDone.emit(i + 1) self.allUploadsDone.emit()
def savePushed(self): """ Let the user select a TCX file to save to. Store the data. """ self.saveButton.setEnabled(False) tcx_dir_key = "file/tcx_dir" tcx_dir = self.settings.value(tcx_dir_key, ".") use_file_date = self.useFileDate.isChecked() if use_file_date: local_time = self.in_file_info.created().toPython() else: local_time = self.workoutTime.dateTime().toPython() utc_zone = tz.tzutc() local_zone = tz.tzlocal() local_time = local_time.replace(tzinfo=local_zone) start_time = local_time.astimezone(utc_zone) dialog = QFileDialog(self) dialog.selectFile(self.in_file_info.baseName() + ".tcx") dialog.setDirectory(tcx_dir) dialog.setFileMode(QFileDialog.AnyFile) dialog.setAcceptMode(QFileDialog.AcceptSave) filename = None if dialog.exec_(): filenames = dialog.selectedFiles() if len(filenames): filename = filenames[0] if not filename: # User cancel return power_adjust = self.powerAdjustment.value() self.mpower.set_power_adjust(power_adjust) self.mpower.set_interpolation(self.checkBoxInterpolate.isChecked()) mass = self.doubleSpinBoxRiderWeight.value( ) + self.doubleSpinBoxBikeWeight.value() if self.comboBoxUnits.currentText() == "lbs": mass *= self.lbs_to_kg self.mpower.set_physics(self.checkBoxPhysics.isChecked(), mass) thread_result = {'message': None, 'status': False} t = threading.Thread(target=self.saveThread, args=(filename, start_time, thread_result)) t.start() t.join() self.alert(thread_result['message']) info = QFileInfo(filename) tcx_dir = info.absoluteDir().path() self.settings.setValue(tcx_dir_key, tcx_dir)
def ajout_cv_sortie(self, fileNames): self.ui.listW_cv_sortie.clear() for file in fileNames: fInfo = QFileInfo(file) fShortName = fInfo.baseName() item = QListWidgetItem(fShortName) self.ui.listW_cv_sortie.addItem(item) item.setToolTip(file)
def ajouterMedia(self): nomMedia = QFileDialog.getOpenFileName( self, "ChoixFilm", "c:/Users/AELION/PycharmProjects/lect_video", "(*.avi *.mp4)") fInfo = QFileInfo(nomMedia[0]) fShortName = fInfo.baseName() item = QListWidgetItem(fShortName) item.setToolTip(nomMedia[0]) self.ui.listWidget.addItem(item)
def ajoutListe(self): print("Ajout dans playlist") newFile = QFileDialog.getOpenFileName(self, "Choix Film", "/home", "Movie Files (*.avi, *.mp4)") fInfo = QFileInfo(newFile[0]) fShortName = fInfo.baseName() newMovie = QListWidgetItem(fShortName) newMovie.setToolTip(newFile[0]) self.ui.listWidget.addItem(newMovie)
def pbPlusCtrl(self): fileName = QFileDialog.getOpenFileName(self,"choix film","/home","Film(*.avi *.mp4)") fInfo = QFileInfo(fileName[0]) fShortName = fInfo.baseName() item = QListWidgetItem(fShortName) item.setToolTip(fileName[0]) self.ui.listWidget.addItem(item) print(item.toolTip().title())
def save_image(self): if not self.pixmap: return file_name = QFileDialog.getSaveFileName(self, "Save file", self.directory, "Images (*.png *.jpg)")[0] info = QFileInfo(file_name) if not info.suffix(): file_name += ".png" self.pixmap.save(file_name)
def ajouter2(self): nomMedia = QFileDialog.getOpenFileName( self, "Choix Film", "C:/Users/AELION/PycharmProjects/videoLHector", "Movie Files (*.avi *.mp4)") fInfo = QFileInfo(nomMedia[0]) fShortName = fInfo.baseName() print(fShortName) item = QListWidgetItem(fShortName) item.setToolTip(nomMedia[0]) self.ui.listWidget.addItem(item)
def populate_template_model(self, populate): """Add all tool template specs to a single QTreeView. If items is None or an empty list, model is cleared. Args: populate (bool): False to clear model, True to populate. """ self.template_model.clear() self.template_model.setHorizontalHeaderItem( 0, QStandardItem("Template specification")) # Add header # Add category items source_file_category_item = QStandardItem("Source files") input_category_item = QStandardItem("Input files") opt_input_category_item = QStandardItem("Optional input files") output_category_item = QStandardItem("Output files") self.template_model.appendRow(source_file_category_item) self.template_model.appendRow(input_category_item) self.template_model.appendRow(opt_input_category_item) self.template_model.appendRow(output_category_item) if populate: if self.source_file_model.rowCount() > 0: for row in range(self.source_file_model.rowCount()): text = self.source_file_model.item(row).data( Qt.DisplayRole) qitem = QStandardItem(text) qitem.setFlags(~Qt.ItemIsEditable) qitem.setData(QFileIconProvider().icon(QFileInfo(text)), Qt.DecorationRole) source_file_category_item.appendRow(qitem) if self.input_file_model.rowCount() > 0: for row in range(self.input_file_model.rowCount()): text = self.input_file_model.item(row).data(Qt.DisplayRole) qitem = QStandardItem(text) qitem.setFlags(~Qt.ItemIsEditable) qitem.setData(QFileIconProvider().icon(QFileInfo(text)), Qt.DecorationRole) input_category_item.appendRow(qitem) if self.opt_input_file_model.rowCount() > 0: for row in range(self.opt_input_file_model.rowCount()): text = self.opt_input_file_model.item(row).data( Qt.DisplayRole) qitem = QStandardItem(text) qitem.setFlags(~Qt.ItemIsEditable) qitem.setData(QFileIconProvider().icon(QFileInfo(text)), Qt.DecorationRole) opt_input_category_item.appendRow(qitem) if self.output_file_model.rowCount() > 0: for row in range(self.output_file_model.rowCount()): text = self.output_file_model.item(row).data( Qt.DisplayRole) qitem = QStandardItem(text) qitem.setFlags(~Qt.ItemIsEditable) qitem.setData(QFileIconProvider().icon(QFileInfo(text)), Qt.DecorationRole) output_category_item.appendRow(qitem)
def send_email(self): file_name, email_address = self.dialog.get_data() info = QFileInfo(file_name) if not info.suffix(): file_name += ".png" file_name = os.path.join(os.getcwd(), "tmp", file_name) self.pixmap.save(file_name) utils.send_mail("", [email_address], "Image", "Image sent from Raspberry Pi", file_name) os.remove(file_name)
def _createDocumentIndex(self, canonicalName): fileName = QFileInfo(canonicalName).fileName() canonicalIndex = 0 for subWindow in self._documentArea.subWindowList(): if QFileInfo(subWindow.widget().canonicalName()).fileName() == fileName: if subWindow.widget().canonicalIndex() > canonicalIndex: canonicalIndex = subWindow.widget().canonicalIndex() return canonicalIndex + 1
def ajouterMedia2(self): nomMedia = QFileDialog.getOpenFileName(self, "Choix Film", "c:/", "Movie Files (*.avi *.mp4)") if nomMedia[ 0] == "": #si aucun fichier selectionné (si "Annuler" est sélectionné) return # return + vide => sortie de la fonction fInfo = QFileInfo(nomMedia[0]) fShortName = fInfo.baseName() item = QListWidgetItem(fShortName) item.setToolTip(nomMedia[0]) self.ui.listeLecture.addItem(item)
def ajouterMedia2(self): nomMedia = QFileDialog.getOpenFileName(self, "Choix Film", "c:/", "Movie Files (*.avi *.mp4)") if nomMedia[0] == "": #si aucun fichier selectionné return fInfo = QFileInfo(nomMedia[0]) fShortName = fInfo.baseName() item = QListWidgetItem(fShortName) item.setToolTip(nomMedia[0]) self.ui.lPlaylist.addItem(item)
def addClicked(self): print("+") nomMedia = QFileDialog.getOpenFileName( self, "Choix Film", "C:/Users/AELION/Desktop/Aelion/PyCharm/VideoProject", "Movie files (*.avi *.mp4)") # item = QListWidgetItem(nomMedia[0]) # self.ui.wList.addItem(item) fInfo = QFileInfo(nomMedia[0]) fShortName = fInfo.baseName() item = QListWidgetItem(fShortName) item.setToolTip(nomMedia[0]) self.ui.wList.addItem(item)
def on_downloadRequested(self, download): old_path = download.url().path() # download.path() suffix = QFileInfo(old_path).suffix() if (suffix.lower() in ["zip", "svd", "pack", "patched"]): log_debug(f"SVD Browser: Downloading {str(download.url())}") if suffix.lower() == "svd" or suffix.lower() == "patched": download.setDownloadDirectory(svdPath) download.accept() else: with TemporaryDirectory() as tempfolder: log_debug( f"SVD Browser: Downloading pack/zip to {tempfolder}") fname = download.url().fileName() r = requests.get(download.url().toString(), allow_redirects=True) dlfile = os.path.join(tempfolder, fname) open(dlfile, "wb").write(r.content) ''' # TODO: See if the original QT Downloader can be fixed since it would # help with situations where the user entered credentials in the browser. download.setDownloadDirectory(tempfolder) download.accept() while not download.finished: import time time.sleep(100) ''' if fname.endswith(".zip") or fname.endswith(".pack"): destFolder = os.path.join(svdPath, os.path.splitext(fname)[0]) log_debug(f"SVD Browser: Creating {destFolder}") if not os.path.exists(destFolder): os.mkdir(destFolder) with ZipFile(dlfile, 'r') as zipp: for ifname in zipp.namelist(): if ifname.endswith(".svd"): info = zipp.getinfo(ifname) info.filename = os.path.basename( info.filename) log_debug( f"SVD Browser: Extracting {info.filename} from {ifname}" ) zipp.extract(info, path=destFolder) else: #Move file into place shutil.move(dlfile, svdPath) else: show_message_box( "Invalid file", "That download does not appear to be a valid SVD/ZIP/PACK file." ) download.cancel()
def generateDirectorys(self, _dir): sourceDir = QFileInfo(_dir).dir() if (sourceDir.exists()): return tempDir = '' directorys = sourceDir.path().split("/") for i in range(0, len(directorys), 1): tempDir += directorys[i] + "/" dir = QDir(tempDir) if (dir.exists() == False): dir.mkdir(tempDir)
def ajoutCv_liste(self): fileNames = QFileDialog.getOpenFileNames(self, "choix cv", "C:/Users/AELION/Desktop") for file in fileNames[0]: fInfo = QFileInfo(file) fShortName = fInfo.baseName() item = QListWidgetItem(fShortName) item.setToolTip(file) if item.toolTip() not in self.listeCv: self.ui.listW_cv_entree.addItem(item) self.listeCv.append(file)
def loadPushed(self): """ Let the user select a CSV file. Load if possible. """ csv_dir_key = "file/csv_dir" csv_dir = self.settings.value(csv_dir_key, ".") (filename, filter) = QFileDialog.getOpenFileName( self, "Open CSV", csv_dir, "CSV Files (*.csv);;All Files (*)") self.saveButton.setEnabled(False) self.labelDuration.setText("---") self.labelAveragePower.setText("---") self.labelMaxPower.setText("---") self.labelEquipment.setText("---") if filename: try: self.mpower = MPower(filename) self.mpower.load_csv() except Exception: oops = traceback.format_exc().splitlines() self.alert("\nThere was an error." "\nPlease report this to [email protected]." "\nInclude your file in the email." "\n\nVersion %s" "\n\n%s\n%s\n%s\n" % (version.version, oops[-3].strip(), oops[-2].strip(), oops[-1].strip())) else: header = self.mpower.header() if self.mpower.count(): # Time to h:m:s m, s = divmod(int(header.time), 60) h, m = divmod(m, 60) self.saveButton.setEnabled(True) self.labelDuration.setText("%d:%02d:%02d" % (h, m, s)) self.labelAveragePower.setText(str(header.average_power)) self.labelMaxPower.setText(str(header.max_power)) self.labelEquipment.setText(header.equipment) self.alert("The CSV file was loaded successfully.") else: self.alert( "This file does not appear to contain ride data.") return self.in_file_info = QFileInfo(filename) csv_dir = self.in_file_info.absoluteDir().path() self.settings.setValue(csv_dir_key, csv_dir)
def _setup_entry_from_saved_file( self, file_info: QFileInfo, file_format: str, ) -> None: self._entry.file = RootConfigurationEntryFile( info=file_info, file_format=file_format, checksum=file_checksum(file_info.filePath()), ) self._entry.name = file_info.fileName() self._entry.original_raw = self._entry.raw as_signal_instance(self.root_configuration_modified).emit( self._entry, ) as_signal_instance(self.root_configuration_saved).emit(self._entry, )
def sizeString(self, fInfo): if (not fInfo.isDir()): return "" dir = QDir(fInfo.filePath()) fileFilters = QDir.Filters(QDir.Files | QDir.System | QDir.Hidden) size = 0 for filePath in dir.entryList(fileFilters): fi = QFileInfo(dir, filePath) size += fi.size() if (size > 1024 * 1024 * 10): return str("%4.1f" % (size / (1024 * 1024))) + 'MB' if (size > 1024 * 10): return str("%4.1f" % (size / 1024)) + 'KB' return str(size)
def loadSnippet(self): self.currentFileLabel.setText(QFileInfo(self.currentFile).baseName()) log_debug("Loading %s as a snippet." % self.currentFile) (snippetDescription, snippetKey, snippetCode) = loadSnippetFromFile(self.currentFile) self.snippetDescription.setText(snippetDescription) if snippetDescription else self.snippetDescription.setText("") self.keySequenceEdit.setKeySequence(snippetKey[0]) if len(snippetKey) != 0 else self.keySequenceEdit.setKeySequence(QKeySequence("")) self.edit.setPlainText(snippetCode) if snippetCode else self.edit.setPlainText("")
def loadSnippet(self): self.currentFileLabel.setText(QFileInfo(self.currentFile).baseName()) (snippetDescription, snippetKeys, snippetCode) = loadSnippetFromFile(self.currentFile) self.snippetDescription.setText(snippetDescription) if snippetDescription else self.snippetDescription.setText("") self.keySequenceEdit.setKeySequence(snippetKeys) if snippetKeys else self.keySequenceEdit.setKeySequence(QKeySequence("")) self.edit.setPlainText(snippetCode) if snippetCode else self.edit.setPlainText("") self.readOnly(False)
def contextMenuEvent(self, event): state = self.state() contextMenu = QMenu() launchAction = contextMenu.addAction("Launch") launchAction.setEnabled( state == QWebEngineDownloadItem.DownloadCompleted) showInFolderAction = contextMenu.addAction("Show in Folder") showInFolderAction.setEnabled( state == QWebEngineDownloadItem.DownloadCompleted) cancelAction = contextMenu.addAction("Cancel") cancelAction.setEnabled( state == QWebEngineDownloadItem.DownloadInProgress) removeAction = contextMenu.addAction("Remove") removeAction.setEnabled( state != QWebEngineDownloadItem.DownloadInProgress) chosenAction = contextMenu.exec_(event.globalPos()) if chosenAction == launchAction: self._launch() elif chosenAction == showInFolderAction: DownloadWidget.openFile( QFileInfo(self._downloadItem.path()).absolutePath()) elif chosenAction == cancelAction: self._downloadItem.cancel() elif chosenAction == removeAction: self.removeRequested.emit()
def findMdiChild(self, fileName): canonicalFilePath = QFileInfo(fileName).canonicalFilePath() for window in self.mdiArea.subWindowList(): if window.widget().currentFile() == canonicalFilePath: return window return None