Skip to content

Commit

Permalink
Add change docs button to settings window
Browse files Browse the repository at this point in the history
Implements the GUI logic necessary to change the selected document. When
"Change Selection" is clicked, it opens a File Dialog on the directory
of the previously selected files (if any)

Fixes #428
  • Loading branch information
deeplow committed Jul 25, 2023
1 parent a478d14 commit d0c86fb
Showing 1 changed file with 35 additions and 13 deletions.
48 changes: 35 additions & 13 deletions dangerzone/gui/main_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ def __init__(self, dangerzone: DangerzoneGui) -> None:
self.conversion_started = False

# Doc selection widget
self.doc_selection_widget = DocSelectionWidget()
self.doc_selection_widget = DocSelectionWidget(self.dangerzone)
self.doc_selection_widget.documents_selected.connect(self.documents_selected)

# Settings
Expand All @@ -459,6 +459,9 @@ def __init__(self, dangerzone: DangerzoneGui) -> None:
self.documents_list = DocumentsListWidget(self.dangerzone)
self.documents_added.connect(self.documents_list.documents_added)
self.settings_widget.start_clicked.connect(self.documents_list.start_conversion)
self.settings_widget.change_docs_clicked.connect(
self.doc_selection_widget.dangerous_doc_button_clicked
)
self.documents_list.hide()

# Layout
Expand Down Expand Up @@ -518,8 +521,9 @@ def start_clicked(self) -> None:
class DocSelectionWidget(QtWidgets.QWidget):
documents_selected = QtCore.Signal(list)

def __init__(self) -> None:
def __init__(self, dangerzone: DangerzoneGui) -> None:
super(DocSelectionWidget, self).__init__()
self.dangerzone = dangerzone

# Dangerous document selection
self.dangerous_doc_label = QtWidgets.QLabel()
Expand All @@ -545,21 +549,32 @@ def __init__(self) -> None:
self.setLayout(layout)

def dangerous_doc_button_clicked(self) -> None:
(filenames, _) = QtWidgets.QFileDialog.getOpenFileNames(
self,
"Open documents",
filter="Documents (*.pdf *.docx *.doc *.docm *.xlsx *.xls *.pptx *.ppt *.odt *.odg *.odp *.ods *.jpg *.jpeg *.gif *.png *.tif *.tiff)",
file_dialog = QtWidgets.QFileDialog()
file_dialog.setWindowTitle("Open Documents")
file_dialog.setFileMode(QtWidgets.QFileDialog.ExistingFiles)
file_dialog.setNameFilters(
[
"Documents (*.pdf *.docx *.doc *.docm *.xlsx *.xls *.pptx *.ppt *.odt *.odg *.odp *.ods *.jpg *.jpeg *.gif *.png *.tif *.tiff)"
]
)
if filenames == []:
# no files selected
return

documents = [Document(filename) for filename in filenames]
self.documents_selected.emit(documents)
unconverted_docs = self.dangerzone.get_unconverted_documents()
if len(unconverted_docs) > 0:
# In case there were some already selected documents, open the dir of selected files
first_doc_dir = os.path.dirname(unconverted_docs[0].input_filename)
file_dialog.setDirectory(first_doc_dir)

if file_dialog.exec():
documents = [Document(filename) for filename in file_dialog.selectedFiles()]
self.documents_selected.emit(documents)
else:
# No files selected
pass


class SettingsWidget(QtWidgets.QWidget):
start_clicked = QtCore.Signal()
change_docs_clicked = QtCore.Signal()

def __init__(self, dangerzone: DangerzoneGui) -> None:
super(SettingsWidget, self).__init__()
Expand All @@ -568,8 +583,9 @@ def __init__(self, dangerzone: DangerzoneGui) -> None:
# Num Docs Selected
self.docs_selected_label = QtWidgets.QLabel("No documents selected")
self.docs_selected_label.setAlignment(QtCore.Qt.AlignCenter)
self.docs_selected_label.setContentsMargins(0, 0, 0, 20)
self.docs_selected_label.setProperty("class", "docs-selection")
self.change_selection_button = QtWidgets.QPushButton("Change Selection")
self.change_selection_button.clicked.connect(self.change_docs_clicked.emit)

# Save safe version
self.save_checkbox = QtWidgets.QCheckBox()
Expand Down Expand Up @@ -684,7 +700,13 @@ def __init__(self, dangerzone: DangerzoneGui) -> None:

# Layout
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.docs_selected_label)
layout_docs_selected = QtWidgets.QHBoxLayout()
layout_docs_selected.addStretch()
layout_docs_selected.addWidget(self.docs_selected_label)
layout_docs_selected.addWidget(self.change_selection_button)
layout_docs_selected.addStretch()
layout.addLayout(layout_docs_selected)
layout.addSpacing(20)
layout.addLayout(self.safe_extension_layout)
layout.addLayout(save_group_box_layout)
layout.addLayout(open_layout)
Expand Down

0 comments on commit d0c86fb

Please sign in to comment.