def btn_upload_callback(self): """Callback for the button UPLOAD Asks the user to select a file and calls the api to send it to the server. """ # Create File Select Dialog dialog = QFileDialog(parent=self, caption='Images') dialog.setMimeTypeFilters( ["image/jpeg", "image/png", "image/tiff", 'application/zip']) dialog.setFileMode(QFileDialog.ExistingFile) if dialog.exec_() == QDialog.Accepted: filename = dialog.selectedFiles()[0] with open(filename, 'rb') as f: file_b64s = fio_to_b64s(f) if ext_from_path(filename) == '.zip': ret = api.upload_zip(file_b64s, nameext_from_path(filename), self.user_hash) else: ret = api.upload_image(file_b64s, nameext_from_path(filename), self.user_hash) if ret.get('success') is False: self.show_error(ret['error_msg']) self.update_table()
def _save_as(self): dialog = QFileDialog(self, 'Сохранить как...') dialog.setAcceptMode(QFileDialog.AcceptSave) mime_types = ["text/html", "text/plain", "application/vnd.oasis.opendocument.text"] dialog.setMimeTypeFilters(mime_types) dialog.setDefaultSuffix("html") if dialog.exec_() != QDialog.Accepted: self.statusbar.showMessage('Сохранение отменено') return False self._file_name = dialog.selectedFiles()[0] return self._save()
def download_images(self, im_format: str): """Download all selected images in a specified format If many images were selected, they are downloaded as a zip If only one image is selected, it is downloaded as an image :param im_format: format of the output images :type im_format: str """ rows = self.tbl_images.get_selected_rows() ids = [] names = [] for r in rows: ids.append(self.tbl_images.item(r, 0).text()) names.append(self.tbl_images.item(r, 1).text()) if len(ids) == 1: # Create File Save Dialog dialog = QFileDialog(parent=self, caption='Save As..') dialog.setMimeTypeFilters(["image/" + im_format.lower()]) dialog.setFileMode(QFileDialog.AnyFile) if dialog.exec_() == QDialog.Accepted: filename = dialog.selectedFiles()[0] ret = api.get_download_images(ids, im_format, self.user_hash) if ret.get('success') is False: self.show_error(ret['error_msg']) else: image_b = b64s_to_b(ret['data']) with open(filename, 'wb+') as f: f.write(image_b) elif len(ids) >= 1: # Create File Save Dialog dialog = QFileDialog(parent=self, caption='222Save As..') dialog.setMimeTypeFilters(['application/zip']) dialog.setFileMode(QFileDialog.AnyFile) if dialog.exec_() == QDialog.Accepted: filename = dialog.selectedFiles()[0] ret = api.get_download_images(ids, im_format, self.user_hash) if ret.get('success') is False: self.show_error(ret['error_msg']) else: image_b = b64s_to_b(ret['data']) with open(filename, 'wb+') as f: f.write(image_b) else: return
def addImages(self, directory): fileDialog = QFileDialog(self, "Open Images", directory) mimeTypeFilters = [] for mimeTypeName in QImageReader.supportedMimeTypes(): mimeTypeFilters.append(str(mimeTypeName)) mimeTypeFilters.sort() fileDialog.setMimeTypeFilters(mimeTypeFilters) fileDialog.selectMimeTypeFilter('image/png') fileDialog.setAcceptMode(QFileDialog.AcceptOpen) fileDialog.setFileMode(QFileDialog.ExistingFiles) if not self.nativeFileDialogAct.isChecked(): fileDialog.setOption(QFileDialog.DontUseNativeDialog) if fileDialog.exec_() == QDialog.Accepted: self.loadImages(fileDialog.selectedFiles())
def _print_pdf(self): dialog = QFileDialog(self, 'Сохранить в PDF') dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.setMimeTypeFilters(['application/pdf']) dialog.setDefaultSuffix('pdf') if dialog.exec_() != QDialog.Accepted: return name = dialog.selectedFiles()[0] self._browser(True) pdfkit.from_file(f'{self.settings["tempdir"]}/temp_report.html', name) self.statusbar.showMessage('Экспорт успешен') if platform.system() == 'Darwin': # macOS subprocess.call(('open', name)) elif platform.system() == 'Windows': # Windows os.startfile(name) else: # linux variants subprocess.call(('xdg-open', name))
def _createLoadImagesDialog(self): dialog = QFileDialog(self, "Load photos") if self._firstLoadDialog: self._firstLoadDialog = False locations = QStandardPaths.standardLocations( QStandardPaths.PicturesLocation) dialog.setDirectory( locations[-1] if locations else QDir.currentPath()) supportedTypes = [] for mtype in QImageReader.supportedMimeTypes(): supportedTypes.append(str(mtype)) supportedTypes.sort() dialog.setMimeTypeFilters(supportedTypes) dialog.setFileMode(QFileDialog.ExistingFiles) return dialog
def loadImage(): # file picker f_diag = QFileDialog() f_diag.labelText = "Open image" # lets pick supported file types mimeTypes = QImageReader.supportedMimeTypes() for x in range(len(mimeTypes)): mimeTypes[x] = str(mimeTypes[x], 'utf-8') f_diag.setMimeTypeFilters(mimeTypes) f_diag.setFileMode(QFileDialog.ExistingFile) # checks wherever anything was picked if f_diag.exec(): res = loadImageFile(f_diag.selectedFiles()[0]) if res: sb_txt.setText("current image: " + QFileInfo(f_diag.selectedFiles()[0]).fileName()) imageLabel.setPixmap(QPixmap.fromImage(res)) imageLabel.resize(res.width(), res.height())
def chooseFiles(self, mode, oldFiles, acceptedMimeTypes): # Format acceptedMimeTypes mimeFiltersString = [] nameFiltersString = [] for x in acceptedMimeTypes: if ('/' in x): mimeFiltersString.append(x) else: nameFiltersString.append("*" + x) uploadDialog = QFileDialog() if (args.downloadPath): uploadDialog.setDirectory(args.downloadPath) print(len(mimeFiltersString)) if (len(mimeFiltersString) != 0): mimeFiltersString.append("application/octet-stream") uploadDialog.setMimeTypeFilters(mimeFiltersString) else: nameFiltersString.append("All files (*.*)") uploadDialog.setNameFilters(nameFiltersString) uploadDialog.setFileMode(QFileDialog.ExistingFiles) uploadDialog.setAcceptMode(QFileDialog.AcceptOpen) options = QFileDialog.Options() options |= QFileDialog.ReadOnly options |= QFileDialog.DontUseNativeDialog uploadDialog.setOptions(options) if uploadDialog.exec_(): fileName = uploadDialog.selectedFiles() return fileName return [""]