forked from bit-team/backintime
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmessagebox.py
More file actions
103 lines (85 loc) · 3.33 KB
/
messagebox.py
File metadata and controls
103 lines (85 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Copyright (C) 2012-2021 Germar Reitze
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import gettext
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtWidgets import QApplication, QMessageBox, QInputDialog, QLineEdit,\
QDialog, QVBoxLayout, QLabel, QDialogButtonBox, QScrollArea
import qttools
_ = gettext.gettext
def askPasswordDialog(parent, title, prompt, timeout = None):
if parent is None:
app = qttools.createQApplication()
translator = qttools.translator()
app.installTranslator(translator)
import icon
dialog = QInputDialog()
timer = QTimer()
if not timeout is None:
timer.timeout.connect(dialog.reject)
timer.setInterval(timeout * 1000)
timer.start()
dialog.setWindowIcon(icon.BIT_LOGO)
dialog.setWindowTitle(title)
dialog.setLabelText(prompt)
dialog.setTextEchoMode(QLineEdit.Password)
QApplication.processEvents()
ret = dialog.exec_()
timer.stop()
if ret:
password = dialog.textValue()
else:
password = ''
del(dialog)
return(password)
def critical(parent, msg):
return QMessageBox.critical(parent, _('Error'),
msg,
buttons = QMessageBox.Ok,
defaultButton = QMessageBox.Ok)
def warningYesNo(parent, msg):
return QMessageBox.question(parent, _('Question'), msg,
buttons = QMessageBox.Yes | QMessageBox.No,
defaultButton = QMessageBox.No)
def warningYesNoOptions(parent, msg, options = ()):
dlg = QDialog(parent)
dlg.setWindowTitle(_('Question'))
layout = QVBoxLayout()
dlg.setLayout(layout)
label = QLabel(msg)
layout.addWidget(label)
for opt in options:
layout.addWidget(opt['widget'])
buttonBox = QDialogButtonBox(QDialogButtonBox.Yes | QDialogButtonBox.No)
buttonBox.button(QDialogButtonBox.No).setDefault(True)
layout.addWidget(buttonBox)
buttonBox.accepted.connect(dlg.accept)
buttonBox.rejected.connect(dlg.reject)
ret = dlg.exec_()
return (ret, {opt['id']:opt['retFunc']() for opt in options if opt['retFunc'] is not None})
def showInfo(parent, title, msg):
dlg = QDialog(parent)
dlg.setWindowTitle(title)
vlayout = QVBoxLayout(dlg)
label = QLabel(msg)
label.setTextInteractionFlags(Qt.LinksAccessibleByMouse)
label.setOpenExternalLinks(True)
scroll_area = QScrollArea()
scroll_area.setWidget(label)
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok)
buttonBox.accepted.connect(dlg.accept)
vlayout.addWidget(scroll_area)
vlayout.addWidget(buttonBox)
return dlg.exec_()