mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-29 02:12:36 +02:00
Allow more types of dialogs
Factor out some parts of the Alert class into a more generic dialog class. This class will be used for a new type of dialog that we will introduce in a subsequent commit. Note that this commit does not alter the functionality of the Alert class.
This commit is contained in:
parent
0e3255d091
commit
20a25f1dd4
1 changed files with 40 additions and 18 deletions
|
@ -122,19 +122,20 @@ class DangerzoneGui(DangerzoneCore):
|
||||||
return pdf_viewers
|
return pdf_viewers
|
||||||
|
|
||||||
|
|
||||||
class Alert(QtWidgets.QDialog):
|
class Dialog(QtWidgets.QDialog):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
dangerzone: DangerzoneGui,
|
dangerzone: DangerzoneGui,
|
||||||
message: str,
|
title: str,
|
||||||
ok_text: str = "Ok",
|
ok_text: str = "Ok",
|
||||||
has_cancel: bool = True,
|
has_cancel: bool = True,
|
||||||
|
cancel_text: str = "Cancel",
|
||||||
extra_button_text: Optional[str] = None,
|
extra_button_text: Optional[str] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
super(Alert, self).__init__()
|
super().__init__()
|
||||||
self.dangerzone = dangerzone
|
self.dangerzone = dangerzone
|
||||||
|
|
||||||
self.setWindowTitle("dangerzone")
|
self.setWindowTitle(title)
|
||||||
self.setWindowIcon(self.dangerzone.get_window_icon())
|
self.setWindowIcon(self.dangerzone.get_window_icon())
|
||||||
self.setModal(True)
|
self.setModal(True)
|
||||||
|
|
||||||
|
@ -147,19 +148,7 @@ class Alert(QtWidgets.QDialog):
|
||||||
)
|
)
|
||||||
self.setWindowFlags(flags)
|
self.setWindowFlags(flags)
|
||||||
|
|
||||||
logo = QtWidgets.QLabel()
|
message_layout = self.create_layout()
|
||||||
logo.setPixmap(
|
|
||||||
QtGui.QPixmap.fromImage(QtGui.QImage(get_resource_path("icon.png")))
|
|
||||||
)
|
|
||||||
|
|
||||||
label = QtWidgets.QLabel()
|
|
||||||
label.setText(message)
|
|
||||||
label.setWordWrap(True)
|
|
||||||
|
|
||||||
message_layout = QtWidgets.QHBoxLayout()
|
|
||||||
message_layout.addWidget(logo)
|
|
||||||
message_layout.addSpacing(10)
|
|
||||||
message_layout.addWidget(label, stretch=1)
|
|
||||||
|
|
||||||
ok_button = QtWidgets.QPushButton(ok_text)
|
ok_button = QtWidgets.QPushButton(ok_text)
|
||||||
ok_button.clicked.connect(self.clicked_ok)
|
ok_button.clicked.connect(self.clicked_ok)
|
||||||
|
@ -173,7 +162,7 @@ class Alert(QtWidgets.QDialog):
|
||||||
if extra_button_text:
|
if extra_button_text:
|
||||||
buttons_layout.addWidget(extra_button)
|
buttons_layout.addWidget(extra_button)
|
||||||
if has_cancel:
|
if has_cancel:
|
||||||
cancel_button = QtWidgets.QPushButton("Cancel")
|
cancel_button = QtWidgets.QPushButton(cancel_text)
|
||||||
cancel_button.clicked.connect(self.clicked_cancel)
|
cancel_button.clicked.connect(self.clicked_cancel)
|
||||||
buttons_layout.addWidget(cancel_button)
|
buttons_layout.addWidget(cancel_button)
|
||||||
|
|
||||||
|
@ -183,6 +172,9 @@ class Alert(QtWidgets.QDialog):
|
||||||
layout.addLayout(buttons_layout)
|
layout.addLayout(buttons_layout)
|
||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
def create_layout(self) -> QtWidgets.QBoxLayout:
|
||||||
|
raise NotImplementedError("Dangerzone dialogs must implement this method")
|
||||||
|
|
||||||
def clicked_ok(self) -> None:
|
def clicked_ok(self) -> None:
|
||||||
self.done(int(QtWidgets.QDialog.Accepted))
|
self.done(int(QtWidgets.QDialog.Accepted))
|
||||||
|
|
||||||
|
@ -194,3 +186,33 @@ class Alert(QtWidgets.QDialog):
|
||||||
|
|
||||||
def launch(self) -> int:
|
def launch(self) -> int:
|
||||||
return self.exec_()
|
return self.exec_()
|
||||||
|
|
||||||
|
|
||||||
|
class Alert(Dialog):
|
||||||
|
def __init__( # type: ignore [no-untyped-def]
|
||||||
|
self,
|
||||||
|
*args,
|
||||||
|
message: str = "",
|
||||||
|
**kwargs,
|
||||||
|
) -> None:
|
||||||
|
self.message = message
|
||||||
|
kwargs.setdefault("title", "dangerzone")
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def create_layout(self) -> QtWidgets.QBoxLayout:
|
||||||
|
logo = QtWidgets.QLabel()
|
||||||
|
logo.setPixmap(
|
||||||
|
QtGui.QPixmap.fromImage(QtGui.QImage(get_resource_path("icon.png")))
|
||||||
|
)
|
||||||
|
|
||||||
|
label = QtWidgets.QLabel()
|
||||||
|
label.setText(self.message)
|
||||||
|
label.setWordWrap(True)
|
||||||
|
label.setOpenExternalLinks(True)
|
||||||
|
|
||||||
|
message_layout = QtWidgets.QHBoxLayout()
|
||||||
|
message_layout.addWidget(logo)
|
||||||
|
message_layout.addSpacing(10)
|
||||||
|
message_layout.addWidget(label, stretch=1)
|
||||||
|
|
||||||
|
return message_layout
|
||||||
|
|
Loading…
Reference in a new issue