qp.end()
+def waiting_dialog(f):
+
+ s = Timer()
+ s.start()
+ w = QDialog()
+ w.resize(200, 70)
+ w.setWindowTitle('Electrum')
+ l = QLabel('')
+ vbox = QVBoxLayout()
+ vbox.addWidget(l)
+ w.setLayout(vbox)
+ w.show()
+ def ff():
+ s = f()
+ if s: l.setText(s)
+ else: w.close()
+ w.connect(s, QtCore.SIGNAL('timersignal'), ff)
+ w.exec_()
+ w.destroy()
+
def ok_cancel_buttons(dialog):
hbox = QHBoxLayout()
QMainWindow.__init__(self)
self.wallet = wallet
self.config = config
- self.wallet.register_callback(self.update_callback)
+ self.wallet.interface.register_callback('updated', self.update_callback)
self.detailed_view = config.get('qt_detailed_view', False)
def address_label_changed(self, item, column, l, column_addr, column_label):
addr = unicode( item.text(column_addr) )
text = unicode( item.text(column_label) )
+ changed = False
+
if text:
if text not in self.wallet.aliases.keys():
- self.wallet.labels[addr] = text
+ old_addr = self.wallet.labels.get(text)
+ if old_addr != addr:
+ self.wallet.labels[addr] = text
+ changed = True
else:
print_error("Error: This is one of your aliases")
label = self.wallet.labels.get(addr,'')
item.setText(column_label, QString(label))
else:
s = self.wallet.labels.get(addr)
- if s: self.wallet.labels.pop(addr)
+ if s:
+ self.wallet.labels.pop(addr)
+ changed = True
+
+ if changed:
+ self.wallet.update_tx_labels()
+ self.update_history_tab()
+ self.update_completions()
- self.update_history_tab()
- self.update_completions()
def update_history_tab(self):
self.history_list.clear()
if tx['height']:
conf = self.wallet.blocks - tx['height'] + 1
time_str = datetime.datetime.fromtimestamp( tx['timestamp']).isoformat(' ')[:-3]
- icon = QIcon(":icons/confirmed.png")
+ if conf < 6:
+ icon = QIcon(":icons/clock%d.png"%conf)
+ else:
+ icon = QIcon(":icons/confirmed.png")
else:
conf = 0
time_str = 'pending'
self.show_message(str(e))
return
- status, msg = self.wallet.sendtx( tx )
+ h = self.wallet.send_tx(tx)
+ waiting_dialog(lambda: False if self.wallet.tx_event.isSet() else _("Please wait..."))
+ status, msg = self.wallet.receive_tx( h )
+
if status:
QMessageBox.information(self, '', _('Payment sent.')+'\n'+msg, _('OK'))
self.do_clear()
qr_button.clicked.connect(show_qr_function)
ok_button = QPushButton(_("OK"))
+ ok_button.setDefault(True)
ok_button.clicked.connect(dialog.accept)
main_layout = QGridLayout()
gui_label=QLabel(_('Default GUI') + ':')
grid.addWidget(gui_label , 7, 0)
gui_combo = QComboBox()
- gui_combo.addItems(['Lite', 'Qt', 'Gtk'])
- gui_combo.setCurrentIndex(gui_combo.findText(self.config.get("gui","lite").capitalize()))
+ gui_combo.addItems(['Lite', 'Classic', 'Gtk', 'Text'])
+ gui_combo.setCurrentIndex(gui_combo.findText(self.config.get("gui","classic").capitalize()))
grid.addWidget(gui_combo, 7, 1)
grid.addWidget(HelpButton(_('Select which GUI mode to use at start up. ')), 7, 2)
if not self.config.is_modifiable('gui'):
status = _("Connected to")+" %s\n%d blocks"%(interface.host, wallet.blocks)
else:
status = _("Not connected")
- server = interface.server
else:
import random
status = _("Please choose a server.")
- server = random.choice( DEFAULT_SERVERS )
+
+ server = interface.server
if not wallet.interface.servers:
servers_list = []
plist = {}
for item in servers_list:
- host, pp = item
+ _host, pp = item
z = {}
for item2 in pp:
- protocol, port = item2
- z[protocol] = port
- plist[host] = z
+ _protocol, _port = item2
+ z[_protocol] = _port
+ plist[_host] = z
d = QDialog(parent)
d.setModal(1)
server_host.setFixedWidth(200)
server_port = QLineEdit()
server_port.setFixedWidth(60)
- server_protocol.addItems(['TCP', 'HTTP'])
- host, port, protocol = server.split(':')
- server_host.setText(host)
- server_port.setText(port)
- server_protocol.setCurrentIndex(0 if protocol=='t' else 1)
+ protocol_names = ['TCP', 'HTTP', 'TCP/SSL', 'HTTPS']
+ protocol_letters = 'thsg'
+ server_protocol.addItems(protocol_names)
grid.addWidget(QLabel(_('Server') + ':'), 0, 0)
grid.addWidget(server_protocol, 0, 1)
grid.addWidget(server_host, 0, 2)
grid.addWidget(server_port, 0, 3)
+ host, port, protocol = server.split(':')
+
def change_protocol(p):
- protocol = 't' if p == 0 else 'h'
+ protocol = protocol_letters[p]
host = unicode(server_host.text())
pp = plist[host]
if protocol not in pp.keys():
server_port.setText( port )
server_protocol.connect(server_protocol, SIGNAL('currentIndexChanged(int)'), change_protocol)
-
-
- if wallet.interface.servers:
- label = _('Active Servers')
- else:
- label = _('Default Servers')
+ label = _('Active Servers') if wallet.interface.servers else _('Default Servers')
servers_list_widget = QTreeWidget(parent)
servers_list_widget.setHeaderLabels( [ label ] )
servers_list_widget.setMaximumHeight(150)
- for host in plist.keys():
- servers_list_widget.addTopLevelItem(QTreeWidgetItem( [ host ] ))
+ for _host in plist.keys():
+ servers_list_widget.addTopLevelItem(QTreeWidgetItem( [ _host ] ))
- def change_server(x):
- host = unicode(x.text(0))
- pp = plist[host]
- if 't' in pp.keys():
- protocol = 't'
- else:
- protocol = pp.keys()[0]
- port = pp[protocol]
+
+ def change_server(host, protocol=None):
+ pp = plist.get(host,{})
+ if protocol:
+ port = pp.get(protocol)
+ if not port: protocol = None
+
+ if not protocol:
+ if not pp:
+ protocol = 't'
+ port = '50001'
+ elif 't' in pp.keys():
+ protocol = 't'
+ port = pp.get(protocol)
+ else:
+ protocol = pp.keys()[0]
+ port = pp.get(protocol)
+
+
server_host.setText( host )
server_port.setText( port )
- server_protocol.setCurrentIndex(0 if protocol == 't' else 1)
+ server_protocol.setCurrentIndex(protocol_letters.index(protocol))
+
+ for p in protocol_letters:
+ i = protocol_letters.index(p)
+ j = server_protocol.model().index(i,0)
+ if p not in pp.keys():
+ server_protocol.model().setData(j, QtCore.QVariant(0), QtCore.Qt.UserRole-1)
+ else:
+ server_protocol.model().setData(j, QtCore.QVariant(0,False), QtCore.Qt.UserRole-1)
+
+ change_server(host,protocol)
+
- servers_list_widget.connect(servers_list_widget, SIGNAL('itemClicked(QTreeWidgetItem*, int)'), change_server)
+ servers_list_widget.connect(servers_list_widget, SIGNAL('itemClicked(QTreeWidgetItem*, int)'), lambda x: change_server(unicode(x.text(0))))
grid.addWidget(servers_list_widget, 1, 1, 1, 3)
if not wallet.config.is_modifiable('server'):
if not d.exec_(): return
- server = unicode( server_host.text() ) + ':' + unicode( server_port.text() ) + ':' + ('t' if server_protocol.currentIndex() == 0 else 'h')
+ server = unicode( server_host.text() ) + ':' + unicode( server_port.text() ) + ':' + (protocol_letters[server_protocol.currentIndex()])
if proxy_mode.currentText() != 'NONE':
proxy = { u'mode':unicode(proxy_mode.currentText()).lower(), u'host':unicode(proxy_host.text()), u'port':unicode(proxy_port.text()) }
else:
def server_list_changed(self):
pass
- def waiting_dialog(self):
-
- s = Timer()
- s.start()
- w = QDialog()
- w.resize(200, 70)
- w.setWindowTitle('Electrum')
- l = QLabel('')
- vbox = QVBoxLayout()
- vbox.addWidget(l)
- w.setLayout(vbox)
- w.show()
- def f():
- if self.wallet.up_to_date:
- w.close()
- else:
- l.setText("Please wait...\nAddresses generated: %d\nKilobytes received: %.1f"\
- %(len(self.wallet.all_addresses()), self.wallet.interface.bytes_received/1024.))
-
- w.connect(s, QtCore.SIGNAL('timersignal'), f)
- self.wallet.interface.poke()
- w.exec_()
- w.destroy()
-
def restore_or_create(self):
# ask for the server.
if not ElectrumWindow.network_dialog( wallet, parent=None ): return False
+ waiting = lambda: False if wallet.up_to_date else "Please wait...\nAddresses generated: %d\nKilobytes received: %.1f"\
+ %(len(wallet.all_addresses()), wallet.interface.bytes_received/1024.)
+
if not is_recovery:
wallet.new_seed(None)
wallet.init_mpk( wallet.seed )
wallet.up_to_date_event.clear()
wallet.up_to_date = False
- self.waiting_dialog()
+ wallet.interface.poke('synchronizer')
+ waiting_dialog(waiting)
# run a dialog indicating the seed, ask the user to remember it
ElectrumWindow.show_seed_dialog(wallet)
#ask for password
wallet.init_mpk( wallet.seed )
wallet.up_to_date_event.clear()
wallet.up_to_date = False
- self.waiting_dialog()
+ wallet.interface.poke('synchronizer')
+ waiting_dialog(waiting)
if wallet.is_found():
# history and addressbook
wallet.update_tx_history()