|
|
@ -1,5 +1,7 @@ |
|
|
|
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject |
|
|
|
|
|
|
|
from decimal import Decimal |
|
|
|
|
|
|
|
from electrum.logging import get_logger |
|
|
|
|
|
|
|
class QEConfig(QObject): |
|
|
@ -10,9 +12,6 @@ class QEConfig(QObject): |
|
|
|
_logger = get_logger(__name__) |
|
|
|
|
|
|
|
autoConnectChanged = pyqtSignal() |
|
|
|
serverStringChanged = pyqtSignal() |
|
|
|
manualServerChanged = pyqtSignal() |
|
|
|
|
|
|
|
@pyqtProperty(bool, notify=autoConnectChanged) |
|
|
|
def autoConnect(self): |
|
|
|
return self.config.get('auto_connect') |
|
|
@ -27,6 +26,7 @@ class QEConfig(QObject): |
|
|
|
def autoConnectDefined(self): |
|
|
|
return self.config.get('auto_connect') is not None |
|
|
|
|
|
|
|
serverStringChanged = pyqtSignal() |
|
|
|
@pyqtProperty('QString', notify=serverStringChanged) |
|
|
|
def serverString(self): |
|
|
|
return self.config.get('server') |
|
|
@ -36,6 +36,7 @@ class QEConfig(QObject): |
|
|
|
self.config.set_key('server', server, True) |
|
|
|
self.serverStringChanged.emit() |
|
|
|
|
|
|
|
manualServerChanged = pyqtSignal() |
|
|
|
@pyqtProperty(bool, notify=manualServerChanged) |
|
|
|
def manualServer(self): |
|
|
|
return self.config.get('oneserver') |
|
|
@ -45,3 +46,56 @@ class QEConfig(QObject): |
|
|
|
self.config.set_key('oneserver', oneserver, True) |
|
|
|
self.manualServerChanged.emit() |
|
|
|
|
|
|
|
baseUnitChanged = pyqtSignal() |
|
|
|
@pyqtProperty(str, notify=baseUnitChanged) |
|
|
|
def baseUnit(self): |
|
|
|
return self.config.get_base_unit() |
|
|
|
|
|
|
|
@baseUnit.setter |
|
|
|
def baseUnit(self, unit): |
|
|
|
self.config.set_base_unit(unit) |
|
|
|
self.baseUnitChanged.emit() |
|
|
|
|
|
|
|
thousandsSeparatorChanged = pyqtSignal() |
|
|
|
@pyqtProperty(bool, notify=thousandsSeparatorChanged) |
|
|
|
def thousandsSeparator(self): |
|
|
|
return self.config.get('amt_add_thousands_sep', False) |
|
|
|
|
|
|
|
@thousandsSeparator.setter |
|
|
|
def thousandsSeparator(self, checked): |
|
|
|
self.config.set_key('amt_add_thousands_sep', checked) |
|
|
|
self.config.amt_add_thousands_sep = checked |
|
|
|
self.thousandsSeparatorChanged.emit() |
|
|
|
|
|
|
|
|
|
|
|
@pyqtSlot(int, result=str) |
|
|
|
@pyqtSlot(int, bool, result=str) |
|
|
|
def formatSats(self, satoshis, with_unit=False): |
|
|
|
if with_unit: |
|
|
|
return self.config.format_amount_and_units(satoshis) |
|
|
|
else: |
|
|
|
return self.config.format_amount(satoshis) |
|
|
|
|
|
|
|
# TODO delegate all this to config.py/util.py |
|
|
|
def decimal_point(self): |
|
|
|
return self.config.get('decimal_point') |
|
|
|
|
|
|
|
def max_precision(self): |
|
|
|
return self.decimal_point() + 0 #self.extra_precision |
|
|
|
|
|
|
|
@pyqtSlot(str, result=int) |
|
|
|
def unitsToSats(self, unitAmount): |
|
|
|
# returns amt in satoshis |
|
|
|
try: |
|
|
|
x = Decimal(unitAmount) |
|
|
|
except: |
|
|
|
return None |
|
|
|
# scale it to max allowed precision, make it an int |
|
|
|
max_prec_amount = int(pow(10, self.max_precision()) * x) |
|
|
|
# if the max precision is simply what unit conversion allows, just return |
|
|
|
if self.max_precision() == self.decimal_point(): |
|
|
|
return max_prec_amount |
|
|
|
# otherwise, scale it back to the expected unit |
|
|
|
#amount = Decimal(max_prec_amount) / Decimal(pow(10, self.max_precision()-self.decimal_point())) |
|
|
|
#return int(amount) #Decimal(amount) if not self.is_int else int(amount) |
|
|
|
|
|
|
|