Move main window content into widget, and either show content or the waiting widget, but never both

This commit is contained in:
Micah Lee 2021-07-27 11:06:20 -07:00
parent 9fcb304545
commit 7fcd10e404
No known key found for this signature in database
GPG key ID: 403C2657CD994F73
2 changed files with 60 additions and 41 deletions

View file

@ -142,7 +142,7 @@ def gui_main(filename):
click.echo("Permission denied")
return False
window.common.input_filename = filename
window.doc_selection_widget.document_selected.emit()
window.content_widget.doc_selection_widget.document_selected.emit()
return True

View file

@ -42,13 +42,14 @@ class MainWindow(QtWidgets.QMainWindow):
header_layout.addWidget(header_label)
header_layout.addStretch()
# Waiting widget
# Waiting widget, replaces content widget while VM is booting
self.waiting_widget = WaitingWidget(self.global_common, self.gui_common)
self.waiting_widget.vm_started.connect(self.vm_started)
# Doc selection widget
self.doc_selection_widget = DocSelectionWidget(self.common)
self.doc_selection_widget.document_selected.connect(self.document_selected)
# Content widget, contains all the window content except waiting widget
self.content_widget = ContentWidget(
self.global_common, self.gui_common, self.common
)
# Only use the waiting widget if we have a VM
if (
@ -56,40 +57,16 @@ class MainWindow(QtWidgets.QMainWindow):
and self.global_common.vm.state != self.global_common.vm.STATE_ON
):
self.waiting_widget.show()
self.doc_selection_widget.hide()
self.content_widget.hide()
else:
self.waiting_widget.hide()
self.doc_selection_widget.show()
# Settings
self.settings_widget = SettingsWidget(
self.global_common, self.gui_common, self.common
)
self.doc_selection_widget.document_selected.connect(
self.settings_widget.document_selected
)
self.settings_widget.start_clicked.connect(self.start_clicked)
self.settings_widget.close_window.connect(self.close)
self.settings_widget.hide()
# Tasks
self.tasks_widget = TasksWidget(
self.global_common, self.gui_common, self.common
)
self.tasks_widget.close_window.connect(self.close)
self.doc_selection_widget.document_selected.connect(
self.tasks_widget.document_selected
)
self.settings_widget.start_clicked.connect(self.tasks_widget.start)
self.tasks_widget.hide()
self.content_widget.show()
# Layout
layout = QtWidgets.QVBoxLayout()
layout.addLayout(header_layout)
layout.addWidget(self.waiting_widget, stretch=1)
layout.addWidget(self.doc_selection_widget, stretch=1)
layout.addWidget(self.settings_widget, stretch=1)
layout.addWidget(self.tasks_widget, stretch=1)
layout.addWidget(self.content_widget, stretch=1)
central_widget = QtWidgets.QWidget()
central_widget.setLayout(layout)
@ -99,15 +76,7 @@ class MainWindow(QtWidgets.QMainWindow):
def vm_started(self):
self.waiting_widget.hide()
self.doc_selection_widget.show()
def document_selected(self):
self.doc_selection_widget.hide()
self.settings_widget.show()
def start_clicked(self):
self.settings_widget.hide()
self.tasks_widget.show()
self.content_widget.show()
def closeEvent(self, e):
e.accept()
@ -147,6 +116,56 @@ class WaitingWidget(QtWidgets.QWidget):
self.label.setText("Dangerzone virtual machine failed to start :(")
class ContentWidget(QtWidgets.QWidget):
def __init__(self, global_common, gui_common, common):
super(ContentWidget, self).__init__()
self.global_common = global_common
self.gui_common = gui_common
self.common = common
# Doc selection widget
self.doc_selection_widget = DocSelectionWidget(self.common)
self.doc_selection_widget.document_selected.connect(self.document_selected)
# Settings
self.settings_widget = SettingsWidget(
self.global_common, self.gui_common, self.common
)
self.doc_selection_widget.document_selected.connect(
self.settings_widget.document_selected
)
self.settings_widget.start_clicked.connect(self.start_clicked)
self.settings_widget.close_window.connect(self.close)
self.settings_widget.hide()
# Tasks
self.tasks_widget = TasksWidget(
self.global_common, self.gui_common, self.common
)
self.tasks_widget.close_window.connect(self.close)
self.doc_selection_widget.document_selected.connect(
self.tasks_widget.document_selected
)
self.settings_widget.start_clicked.connect(self.tasks_widget.start)
self.tasks_widget.hide()
# Layout
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.doc_selection_widget, stretch=1)
layout.addWidget(self.settings_widget, stretch=1)
layout.addWidget(self.tasks_widget, stretch=1)
self.setLayout(layout)
def document_selected(self):
self.doc_selection_widget.hide()
self.settings_widget.show()
def start_clicked(self):
self.settings_widget.hide()
self.tasks_widget.show()
class DocSelectionWidget(QtWidgets.QWidget):
document_selected = QtCore.Signal()