-WIP-electrum-btcp/client/gui_qt.py

110 lines
2.9 KiB
Python

import sys, time
# todo: see PySide
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import PyQt4.QtCore as QtCore
import PyQt4.QtGui as QtGui
from wallet import format_satoshis
def restore_create_dialog(wallet):
pass
class Sender(QtCore.QThread):
def run(self):
while True:
self.emit(QtCore.SIGNAL('testsignal'))
time.sleep(0.5)
class BitcoinWidget(QMainWindow):
def __init__(self, wallet):
QMainWindow.__init__(self)
self.wallet = wallet
tabs = QTabWidget(self)
tabs.addTab(self.create_history_tab(), 'History')
tabs.addTab(self.create_send_tab(), 'Send')
tabs.addTab(self.create_receive_tab(), 'Receive')
tabs.addTab(self.create_contacts_tab(),'Contacts')
tabs.addTab(self.create_wall_tab(), 'Wall')
tabs.setMinimumSize(600, 400)
tabs.show()
self.create_status_bar()
self.setGeometry(100,100,750,550)
self.setWindowTitle( 'Electrum ' + self.wallet.electrum_version )
self.show()
def connect_slots(self, sender):
self.connect(sender, QtCore.SIGNAL('testsignal'), self.update_wallet)
def update_wallet(self):
if self.wallet.interface.is_connected:
if self.wallet.interface.blocks == 0:
text = "Server not ready"
elif not self.wallet.interface.was_polled:
text = "Synchronizing..."
else:
c, u = self.wallet.get_balance()
text = "Balance: %s "%( format_satoshis(c) )
if u: text += "[%s unconfirmed]"%( format_satoshis(u,True) )
else:
text = "Not connected"
self.statusBar().showMessage(text)
if self.wallet.interface.was_updated:
self.textbox.setText( self.wallet.interface.message )
self.wallet.interface.was_updated = False
def create_history_tab(self):
h = [ 'ff', 'bar' ]
qstr = QStringList((QString('foo'),QString('bar')))
qstr_model = QtGui.QStringListModel(qstr)
lv = QListView()
lv.setModel(qstr_model)
return lv
def create_send_tab(self):
return QLabel('heh')
def create_receive_tab(self):
return QLabel('heh')
def create_contacts_tab(self):
return QLabel('heh')
def create_wall_tab(self):
self.textbox = textbox = QTextEdit(self)
textbox.setReadOnly(True)
return textbox
def create_status_bar(self):
sb = QStatusBar()
sb.setFixedHeight(18)
self.setStatusBar(sb)
class BitcoinGUI():
def __init__(self, wallet):
self.wallet = wallet
def main(self):
s = Sender()
s.start()
app = QApplication(sys.argv)
w = BitcoinWidget(self.wallet)
w.connect_slots(s)
app.exec_()