From dbff6b4b793223a4ec5a28c54c8051ac0b6ee365 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 7 Jan 2020 15:41:32 -0800 Subject: [PATCH] Make save browse button let you select an output file --- dangerzone/common.py | 10 ++++++++++ dangerzone/settings_widget.py | 17 ++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/dangerzone/common.py b/dangerzone/common.py index 59ddc4b..08198b3 100644 --- a/dangerzone/common.py +++ b/dangerzone/common.py @@ -22,13 +22,22 @@ class Common(object): f"Temporary directories created, dangerous={self.pixel_dir.name}, safe={self.safe_dir.name}" ) + # Name of input file self.document_filename = None + + # Name of output file + self.save_filename = None + + # Preload font self.fixed_font = QtGui.QFontDatabase.systemFont(QtGui.QFontDatabase.FixedFont) + # App data folder self.appdata_path = appdirs.user_config_dir("dangerzone") + # Preload list of PDF viewers on computer self.pdf_viewers = self._find_pdf_viewers() + # Languages supported by tesseract self.ocr_languages = { "Afrikaans": "ar", "Amharic": "amh", @@ -192,6 +201,7 @@ class Common(object): "Vietnamese script": "Vietnamese", } + # Load settings self.settings = Settings(self) def set_document_filename(self, filename): diff --git a/dangerzone/settings_widget.py b/dangerzone/settings_widget.py index e24a8c4..9d11d14 100644 --- a/dangerzone/settings_widget.py +++ b/dangerzone/settings_widget.py @@ -19,12 +19,12 @@ class SettingsWidget(QtWidgets.QWidget): self.save_lineedit = QtWidgets.QLineEdit() self.save_lineedit.setReadOnly(True) self.save_browse_button = QtWidgets.QPushButton("Save as...") + self.save_browse_button.clicked.connect(self.save_browse_button_clicked) save_layout = QtWidgets.QHBoxLayout() save_layout.addWidget(self.save_checkbox) save_layout.addWidget(self.save_lineedit) save_layout.addWidget(self.save_browse_button) save_layout.addStretch() - self.save_location = None # OCR document self.ocr_checkbox = QtWidgets.QCheckBox("OCR document, language") @@ -109,7 +109,18 @@ class SettingsWidget(QtWidgets.QWidget): ) # Update the save location - self.save_location = ( + self.common.save_filename = ( f"{os.path.splitext(self.common.document_filename)[0]}-safe.pdf" ) - self.save_lineedit.setText(os.path.basename(self.save_location)) + self.save_lineedit.setText(os.path.basename(self.common.save_filename)) + + def save_browse_button_clicked(self): + filename = QtWidgets.QFileDialog.getSaveFileName( + self, + "Save safe PDF as...", + self.common.save_filename, + filter="Documents (*.pdf)", + ) + if filename[0] != "": + self.common.save_filename = filename[0] + self.save_lineedit.setText(os.path.basename(self.common.save_filename))