Browse Source

qt AmountEdit: small refactor

patch-4
SomberNight 2 years ago
parent
commit
1f5ab5cb8d
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 33
      electrum/gui/qt/amountedit.py

33
electrum/gui/qt/amountedit.py

@ -85,14 +85,21 @@ class AmountEdit(SizedFreezableLineEdit):
painter.setPen(ColorScheme.GRAY.as_color())
painter.drawText(textRect, int(Qt.AlignRight | Qt.AlignVCenter), self.base_unit())
def get_amount(self) -> Union[None, Decimal, int]:
def _get_amount_from_text(self, text: str) -> Union[None, Decimal, int]:
try:
return (int if self.is_int else Decimal)(str(self.text()))
return (int if self.is_int else Decimal)(text)
except:
return None
def setAmount(self, x):
self.setText("%d"%x)
def get_amount(self) -> Union[None, Decimal, int]:
return self._get_amount_from_text(str(self.text()))
def _get_text_from_amount(self, amount) -> str:
return "%d" % amount
def setAmount(self, amount):
text = self._get_text_from_amount(amount)
self.setText(text)
class BTCAmountEdit(AmountEdit):
@ -104,10 +111,10 @@ class BTCAmountEdit(AmountEdit):
def _base_unit(self):
return decimal_point_to_base_unit_name(self.decimal_point())
def get_amount(self):
def _get_amount_from_text(self, text):
# returns amt in satoshis
try:
x = Decimal(str(self.text()))
x = Decimal(text)
except:
return None
# scale it to max allowed precision, make it an int
@ -120,11 +127,15 @@ class BTCAmountEdit(AmountEdit):
amount = Decimal(max_prec_amount) / pow(10, self.max_precision()-self.decimal_point())
return Decimal(amount) if not self.is_int else int(amount)
def _get_text_from_amount(self, amount_sat):
return format_satoshis_plain(amount_sat, decimal_point=self.decimal_point())
def setAmount(self, amount_sat):
if amount_sat is None:
self.setText(" ") # Space forces repaint in case units changed
else:
self.setText(format_satoshis_plain(amount_sat, decimal_point=self.decimal_point()))
text = self._get_text_from_amount(amount_sat)
self.setText(text)
self.repaint() # macOS hack for #6269
@ -137,10 +148,10 @@ class FeerateEdit(BTCAmountEdit):
def _base_unit(self):
return 'sat/byte'
def get_amount(self):
sat_per_byte_amount = BTCAmountEdit.get_amount(self)
def _get_amount_from_text(self, text):
sat_per_byte_amount = super()._get_amount_from_text(text)
return quantize_feerate(sat_per_byte_amount)
def setAmount(self, amount):
def _get_text_from_amount(self, amount):
amount = quantize_feerate(amount)
super().setAmount(amount)
return super()._get_text_from_amount(amount)

Loading…
Cancel
Save