1 from electrum.i18n import _
2 from PyQt4.QtGui import *
3 from PyQt4.QtCore import *
11 self.emit(SIGNAL('timersignal'))
15 class EnterButton(QPushButton):
16 def __init__(self, text, func):
17 QPushButton.__init__(self, text)
19 self.clicked.connect(func)
21 def keyPressEvent(self, e):
22 if e.key() == Qt.Key_Return:
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') )
39 def close_button(dialog, label=_("Close") ):
42 b = QPushButton(label)
44 b.clicked.connect(dialog.close)
48 def ok_cancel_buttons2(dialog, ok_label=_("OK") ):
51 b = QPushButton(_("Cancel"))
53 b.clicked.connect(dialog.reject)
54 b = QPushButton(ok_label)
56 b.clicked.connect(dialog.accept)
60 def ok_cancel_buttons(dialog, ok_label=_("OK") ):
61 hbox, b = ok_cancel_buttons2(dialog, ok_label)
64 def text_dialog(parent, title, label, ok_label, default=None):
65 dialog = QDialog(parent)
66 dialog.setMinimumWidth(500)
67 dialog.setWindowTitle(title)
71 l.addWidget(QLabel(label))
76 l.addLayout(ok_cancel_buttons(dialog, ok_label))
78 return unicode(txt.toPlainText())
82 def address_field(addresses):
84 address_e = QLineEdit()
86 address_e.setText(addresses[0])
88 i = addresses.index(str(address_e.text())) + 1
89 i = i % len(addresses)
90 address_e.setText(addresses[i])
91 button = QPushButton(_('Address'))
92 button.clicked.connect(func)
93 hbox.addWidget(button)
94 hbox.addWidget(address_e)
95 return hbox, address_e
98 def filename_field(parent, config, defaultname, select_msg):
101 vbox.addWidget(QLabel(_("Format")))
102 gb = QGroupBox("format", parent)
103 b1 = QRadioButton(gb)
106 b2 = QRadioButton(gb)
107 b2.setText(_("json"))
113 directory = config.get('io_dir', unicode(os.path.expanduser('~')))
114 path = os.path.join( directory, defaultname )
115 filename_e = QLineEdit()
116 filename_e.setText(path)
119 text = unicode(filename_e.text())
120 _filter = "*.csv" if text.endswith(".csv") else "*.json" if text.endswith(".json") else None
121 p = unicode( QFileDialog.getSaveFileName(None, select_msg, text, _filter))
123 filename_e.setText(p)
125 button = QPushButton(_('File'))
126 button.clicked.connect(func)
127 hbox.addWidget(button)
128 hbox.addWidget(filename_e)
132 text = unicode(filename_e.text())
133 text = text.replace(".json",".csv") if v else text.replace(".csv",".json")
134 filename_e.setText(text)
136 b1.clicked.connect(lambda: set_csv(True))
137 b2.clicked.connect(lambda: set_csv(False))
139 return vbox, filename_e, b1
143 class MyTreeWidget(QTreeWidget):
144 def __init__(self, parent):
145 QTreeWidget.__init__(self, parent)
146 self.setContextMenuPolicy(Qt.CustomContextMenu)
147 self.connect(self, SIGNAL('itemActivated(QTreeWidgetItem*, int)'), self.itemactivated)
149 def itemactivated(self, item):
151 for i in range(0,self.viewport().height()/5):
152 if self.itemAt(QPoint(0,i*5)) == item:
156 for j in range(0,30):
157 if self.itemAt(QPoint(0,i*5 + j)) != item:
159 self.emit(SIGNAL('customContextMenuRequested(const QPoint&)'), QPoint(50, i*5 + j - 1))