def __init__(self,): QObject.__init__(self,) self.thread = None self._balance = '<b>0.00</b>000000' self._fiatSymbol = u'€' self._fiatRate = 0 self._fiatBalance = u'0 €' self._wallet = Wallet() self._wallet.onNewTransaction.connect(self.notifyNewTx) self._walletUnlocked = False self.settings = Settings() self.addressesModel = AddressesModel() self.transactionsModel = TransactionsModel() self.timer = QTimer(self) self.timer.setInterval(900000) # 15 min update self.timer.timeout.connect(self.update) self.timer.start() if self.settings.storePassKey: self._currentPassKey = self.settings.passKey try: self.unlockWallet(self._currentPassKey) except: self.onError.emit('Stored pass phrase is invalid') else: self._currentPassKey = None self._currentAddressIndex = 0
def __init__(self,): QObject.__init__(self,) self.thread = None self._balance = '<b>0.00</b>000000' self._wallet = Wallet() self._walletUnlocked = False self.settings = Settings() self.addressesModel = AddressesModel() self.transactionsModel = TransactionsModel() self.timer = QTimer(self) self.timer.setInterval(900000) # 15 min update self.timer.timeout.connect(self.update) self.timer.start() if self.settings.storePassKey: self._currentPassKey = self.settings.passKey try: self.unlockWallet(self._currentPassKey) except: self.onError.emit('Stored pass phrase is invalid') else: self._currentPassKey = None self._currentAddressIndex = 0
class WalletController(QObject): onError = Signal(unicode) onConnected = Signal(bool) onTxSent = Signal(bool) onBusy = Signal() onDoubleEncrypted = Signal() onBalance = Signal() onWalletUnlocked = Signal() onCurrentBalance = Signal() onCurrentLabel = Signal() onCurrentAddress = Signal() onCurrentDoubleEncrypted = Signal() onCurrentPassKey = Signal() def __init__(self,): QObject.__init__(self,) self.thread = None self._balance = '<b>0.00</b>000000' self._wallet = Wallet() self._walletUnlocked = False self.settings = Settings() self.addressesModel = AddressesModel() self.transactionsModel = TransactionsModel() self.timer = QTimer(self) self.timer.setInterval(900000) # 15 min update self.timer.timeout.connect(self.update) self.timer.start() if self.settings.storePassKey: self._currentPassKey = self.settings.passKey try: self.unlockWallet(self._currentPassKey) except: self.onError.emit('Stored pass phrase is invalid') else: self._currentPassKey = None self._currentAddressIndex = 0 @Slot() def newAddr(self): self._wallet.createAddr() self.storeWallet() self.update() @Slot(result=bool) def walletExists(self,): if not os.path.exists(os.path.join( os.path.expanduser('~'), '.bitpurse.wallet')): return False return True @Slot(unicode) def createWallet(self, passKey): self._currentPassKey = passKey self._walletUnlocked = True self._wallet.createAddr() self._wallet.store(passKey) self.update() def storeWallet(self): self._wallet.store(self._currentPassKey) self.addressesModel.setData(self._wallet.getActiveAddresses()) def getCurrentPassKey(self): return self._currentPassKey def setCurrentPassKey(self, value): self._currentPassKey = value self.settings.currentPassKey = value self.onCurrentPassKey.emit() def getCurrentBalance(self): try: return prettyPBitcoin(self._wallet.addresses[ self._currentAddressIndex].balance) except IndexError: return prettyPBitcoin(0) def getCurrentLabel(self): try: return self._wallet.addresses[ self._currentAddressIndex].label except IndexError: return '' def getCurrentAddress(self): try: return self._wallet.addresses[ self._currentAddressIndex].addr except IndexError: return '' def getCurrentDoubleEncrypted(self): try: return self._wallet.addresses[self._currentAddressIndex] \ .doubleEncrypted except IndexError: return False @Slot() def exportWithShareUI(self): import dbus import urllib import shutil shutil.copyfile(os.path.join(os.path.expanduser('~'), '.bitpurse.wallet'), os.path.join(os.path.expanduser('~'), 'MyDocs', 'bitpurse.wallet')) bus = dbus.SessionBus() shareService = bus.get_object('com.nokia.ShareUi', '/') share = shareService.get_dbus_method('share', 'com.nokia.maemo.meegotouch.ShareUiInterface') description = urllib.quote('BitPurse Wallet') title = urllib.quote('BitPurse Wallet') link = os.path.join(os.path.expanduser('~'), 'MyDocs', 'bitpurse.wallet') item = '%s'%link share([item,]) @Slot(unicode, unicode, unicode) def importFromBlockchainInfoWallet(self, guid, key, skey): if self.thread: if self.thread.isAlive(): self.onError.emit( u'Please wait, a communication is already in progress') self.thread = threading.Thread(None, self._importFromBlockchainInfoWallet, None, (guid, key, skey)) self.thread.start() @Slot(unicode, unicode, unicode) def importFromPrivateKey(self, privateKey, label='Undefined', doubleKey=''): try: self._wallet.importFromPrivateKey(self._currentPassKey, privateKey, label, doubleKey) self.storeWallet() self.onError.emit('Key imported') self.update() except Exception, err: print err import traceback traceback.print_exc() self.onError.emit(unicode(err))