Example #1
0
    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
Example #2
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
Example #3
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))