7e375f50b5
This is a long overdue cleanup around the ideas of entering numbers in Flowee Pay. The core dataclass BitcoinValue now keeps track where the number came from, either user input or some calculation. This allows us to have the Fiat and the Coin price stay in sync without weird problems. The one we type uses a string, the price field that we are not typing in is then a slave and we follow the auto-generated number as the source. This solves a host of known issues: * Editing of value objects is much more consistnnt and predictable now. * Switching to a different fiat type now properly re-calculates the values that are slaved. So if the primary is a BCH value then the fiat value gets the new exhange rate instantly applied. * Switching to a different fiat type properly applies having a separator So if you go from euro to Japanese yen, we now remove the separator and the numbers behind it. * Changing the app setting from BCH to mBCH now properly updates all amounts. Notice that the user-typed string wins, if you typed 2 and then change to mBCH we assume you wanted 2, not 2000. * Paste now works more logcally. * Cursor is no longer sometimes invisible, requiring backspace to make it show up. And last we now protect against too large numbers. It is seen as an error to type a number above 21 million BCH. Fixes #19