%PDF- %PDF-
| Direktori : /lib/calibre/calibre/gui2/dialogs/ |
| Current File : //lib/calibre/calibre/gui2/dialogs/confirm_delete.py |
#!/usr/bin/env python3
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en'
from qt.core import (
QDialog, Qt, QIcon, QVBoxLayout, QHBoxLayout, QLabel, QCheckBox, QDialogButtonBox
)
from calibre import confirm_config_name
from calibre.gui2 import dynamic
from calibre.gui2.dialogs.message_box import Icon
class Dialog(QDialog):
def __init__(self, msg, name, parent, config_set=dynamic, icon='dialog_warning.png',
title=None, confirm_msg=None, show_cancel_button=True, extra_button=None):
QDialog.__init__(self, parent)
self.setWindowTitle(title or _("Are you sure?"))
self.setWindowIcon(QIcon(I(icon)))
self.l = l = QVBoxLayout(self)
self.h = h = QHBoxLayout()
l.addLayout(h)
self.icon_widget = Icon(self)
self.icon_widget.set_icon(QIcon(I(icon)))
self.msg = m = QLabel(self)
m.setOpenExternalLinks(True)
m.setMinimumWidth(350), m.setWordWrap(True), m.setObjectName("msg")
m.setText(msg)
h.addWidget(self.icon_widget), h.addSpacing(10), h.addWidget(m)
self.again = a = QCheckBox((confirm_msg or _("&Show this warning again")), self)
a.setChecked(True), a.setObjectName("again")
a.stateChanged.connect(self.toggle)
l.addWidget(a)
if show_cancel_button:
buttons = QDialogButtonBox.StandardButton.Yes | QDialogButtonBox.StandardButton.No
standard_button = QDialogButtonBox.StandardButton.Yes
else:
buttons = QDialogButtonBox.StandardButton.Ok
standard_button = QDialogButtonBox.StandardButton.Ok
self.buttonBox = bb = QDialogButtonBox(buttons, self)
bb.setObjectName("buttonBox")
bb.setFocus(Qt.FocusReason.OtherFocusReason)
bb.accepted.connect(self.accept), bb.rejected.connect(self.reject)
self.extra_button_clicked = False
if extra_button:
b = bb.addButton(extra_button, QDialogButtonBox.ButtonRole.AcceptRole)
b.clicked.connect(self.on_extra_button_click)
l.addWidget(bb)
self.name = name
self.config_set = config_set
self.resize(self.sizeHint())
bb.button(standard_button).setFocus(Qt.FocusReason.OtherFocusReason)
def on_extra_button_click(self):
self.extra_button_clicked = True
def toggle(self, *args):
self.config_set[confirm_config_name(self.name)] = self.again.isChecked()
def confirm(msg, name, parent=None, pixmap='dialog_warning.png', title=None,
show_cancel_button=True, confirm_msg=None, config_set=None, extra_button=None):
config_set = config_set or dynamic
if not config_set.get(confirm_config_name(name), True):
if extra_button:
return True, False
return True
d = Dialog(msg, name, parent, config_set=config_set, icon=pixmap, extra_button=extra_button,
title=title, confirm_msg=confirm_msg, show_cancel_button=show_cancel_button)
ret = d.exec() == QDialog.DialogCode.Accepted
if extra_button:
ret = ret, d.extra_button_clicked
return ret