add optional default value to text dialog
[electrum-nvc.git] / gui / qt / util.py
1 from electrum.i18n import _
2 from PyQt4.QtGui import *
3 from PyQt4.QtCore import *
4 import os.path
5 import time
6
7
8 class Timer(QThread):
9     def run(self):
10         while True:
11             self.emit(SIGNAL('timersignal'))
12             time.sleep(0.5)
13
14
15 class EnterButton(QPushButton):
16     def __init__(self, text, func):
17         QPushButton.__init__(self, text)
18         self.func = func
19         self.clicked.connect(func)
20
21     def keyPressEvent(self, e):
22         if e.key() == Qt.Key_Return:
23             apply(self.func,())
24
25
26
27
28
29 class HelpButton(QPushButton):
30     def __init__(self, text):
31         QPushButton.__init__(self, '?')
32         self.setFocusPolicy(Qt.NoFocus)
33         self.setFixedWidth(20)
34         self.clicked.connect(lambda: QMessageBox.information(self, 'Help', text, 'OK') )
35
36
37
38
39 def close_button(dialog, label=_("Close") ):
40     hbox = QHBoxLayout()
41     hbox.addStretch(1)
42     b = QPushButton(label)
43     hbox.addWidget(b)
44     b.clicked.connect(dialog.close)
45     b.setDefault(True)
46     return hbox
47
48 def ok_cancel_buttons(dialog, ok_label=_("OK") ):
49     hbox = QHBoxLayout()
50     hbox.addStretch(1)
51     b = QPushButton(_("Cancel"))
52     hbox.addWidget(b)
53     b.clicked.connect(dialog.reject)
54     b = QPushButton(ok_label)
55     hbox.addWidget(b)
56     b.clicked.connect(dialog.accept)
57     b.setDefault(True)
58     return hbox
59
60 def text_dialog(parent, title, label, ok_label, default=None):
61     dialog = QDialog(parent)
62     dialog.setMinimumWidth(500)
63     dialog.setWindowTitle(title)
64     dialog.setModal(1)
65     l = QVBoxLayout()
66     dialog.setLayout(l)
67     l.addWidget(QLabel(label))
68     txt = QTextEdit()
69     if default:
70         txt.setText(default)
71     l.addWidget(txt)
72     l.addLayout(ok_cancel_buttons(dialog, ok_label))
73     if dialog.exec_():
74         return unicode(txt.toPlainText())
75
76
77 class MyTreeWidget(QTreeWidget):
78     def __init__(self, parent):
79         QTreeWidget.__init__(self, parent)
80         self.setContextMenuPolicy(Qt.CustomContextMenu)
81         self.connect(self, SIGNAL('itemActivated(QTreeWidgetItem*, int)'), self.itemactivated)
82
83     def itemactivated(self, item):
84         if not item: return
85         for i in range(0,self.viewport().height()/5):
86             if self.itemAt(QPoint(0,i*5)) == item:
87                 break
88         else:
89             return
90         for j in range(0,30):
91             if self.itemAt(QPoint(0,i*5 + j)) != item:
92                 break
93         self.emit(SIGNAL('customContextMenuRequested(const QPoint&)'), QPoint(50, i*5 + j - 1))
94