mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-29 10:12:38 +02:00
Allow adding more docs via 'open_with' while in settings
Handle the case where a user has already added some documents (either through 'open with' or via Dangerzone 'select documents' button) and then they want to add some more via the 'open_with' dialog. It updates the settings to reflect the newly added documents and blocks the user from adding them if a conversion is already in progress.
This commit is contained in:
parent
cb68ba7d1c
commit
65d0b7a0d0
2 changed files with 32 additions and 14 deletions
|
@ -114,6 +114,7 @@ class Alert(QtWidgets.QDialog):
|
|||
dangerzone: DangerzoneGui,
|
||||
message: str,
|
||||
ok_text: str = "Ok",
|
||||
has_cancel: bool = True,
|
||||
extra_button_text: str = None,
|
||||
) -> None:
|
||||
super(Alert, self).__init__()
|
||||
|
@ -151,14 +152,15 @@ class Alert(QtWidgets.QDialog):
|
|||
if extra_button_text:
|
||||
extra_button = QtWidgets.QPushButton(extra_button_text)
|
||||
extra_button.clicked.connect(self.clicked_extra)
|
||||
cancel_button = QtWidgets.QPushButton("Cancel")
|
||||
cancel_button.clicked.connect(self.clicked_cancel)
|
||||
|
||||
buttons_layout = QtWidgets.QHBoxLayout()
|
||||
buttons_layout.addStretch()
|
||||
buttons_layout.addWidget(ok_button)
|
||||
if extra_button_text:
|
||||
buttons_layout.addWidget(extra_button)
|
||||
if has_cancel:
|
||||
cancel_button = QtWidgets.QPushButton("Cancel")
|
||||
cancel_button.clicked.connect(self.clicked_cancel)
|
||||
buttons_layout.addWidget(cancel_button)
|
||||
|
||||
layout = QtWidgets.QVBoxLayout()
|
||||
|
|
|
@ -213,6 +213,7 @@ class ContentWidget(QtWidgets.QWidget):
|
|||
def __init__(self, dangerzone: DangerzoneGui) -> None:
|
||||
super(ContentWidget, self).__init__()
|
||||
self.dangerzone = dangerzone
|
||||
self.conversion_started = False
|
||||
|
||||
# Doc selection widget
|
||||
self.doc_selection_widget = DocSelectionWidget()
|
||||
|
@ -238,6 +239,7 @@ class ContentWidget(QtWidgets.QWidget):
|
|||
self.setLayout(layout)
|
||||
|
||||
def documents_selected(self, new_docs: List[Document]) -> None:
|
||||
if not self.conversion_started:
|
||||
for doc in new_docs:
|
||||
self.dangerzone.add_document(doc)
|
||||
|
||||
|
@ -245,7 +247,15 @@ class ContentWidget(QtWidgets.QWidget):
|
|||
self.settings_widget.show()
|
||||
self.documents_added.emit(new_docs)
|
||||
|
||||
else:
|
||||
Alert(
|
||||
self.dangerzone,
|
||||
message="Dangerzone does not support adding documents after the conversion has started.",
|
||||
has_cancel=False,
|
||||
).exec_()
|
||||
|
||||
def start_clicked(self) -> None:
|
||||
self.conversion_started = True
|
||||
self.settings_widget.hide()
|
||||
self.documents_list.show()
|
||||
|
||||
|
@ -513,18 +523,24 @@ class SettingsWidget(QtWidgets.QWidget):
|
|||
save_path = os.path.dirname(first_doc.input_filename)
|
||||
save_dir = os.path.basename(save_path)
|
||||
self.save_location.setText(save_dir)
|
||||
if len(new_docs) == 1:
|
||||
self.start_button.setText("Convert to Safe Document")
|
||||
self.docs_selected_label.setText(f"1 document selected")
|
||||
else:
|
||||
self.start_button.setText("Convert to Safe Documents")
|
||||
self.docs_selected_label.setText(f"{len(new_docs)} documents selected")
|
||||
self.update_doc_n_labels()
|
||||
|
||||
self.update_ui()
|
||||
|
||||
# validations
|
||||
self.check_writeable_archive_dir(new_docs)
|
||||
|
||||
def update_doc_n_labels(self) -> None:
|
||||
"""Updates labels dependent on the number of present documents"""
|
||||
n_docs = len(self.dangerzone.get_unconverted_documents())
|
||||
|
||||
if n_docs == 1:
|
||||
self.start_button.setText("Convert to Safe Document")
|
||||
self.docs_selected_label.setText(f"1 document selected")
|
||||
else:
|
||||
self.start_button.setText("Convert to Safe Documents")
|
||||
self.docs_selected_label.setText(f"{n_docs} documents selected")
|
||||
|
||||
def select_output_directory(self) -> None:
|
||||
dialog = QtWidgets.QFileDialog()
|
||||
dialog.setLabelText(QtWidgets.QFileDialog.Accept, "Select output directory")
|
||||
|
|
Loading…
Reference in a new issue