diff --git a/src/currency_core/currency_format_utils.h b/src/currency_core/currency_format_utils.h index 195e1cb3..378c9a48 100644 --- a/src/currency_core/currency_format_utils.h +++ b/src/currency_core/currency_format_utils.h @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2018 Zano Project +// Copyright (c) 2014-2023 Zano Project // Copyright (c) 2014-2018 The Louisdor Project // Copyright (c) 2012-2013 The Cryptonote developers // Copyright (c) 2012-2013 The Boolberry developers @@ -556,12 +556,23 @@ namespace currency return true; } //--------------------------------------------------------------- + // outputs "1391306.970000000000" template std::string print_fixed_decimal_point(t_number amount, size_t decimal_point) { return epee::string_tools::print_fixed_decimal_point(amount, decimal_point); } //--------------------------------------------------------------- + // outputs "1391306.97 " + template + std::string print_fixed_decimal_point_with_trailing_spaces(t_number amount, size_t decimal_point) + { + std::string s = epee::string_tools::print_fixed_decimal_point(amount, decimal_point); + for(size_t n = s.size() - 1; n != 0 && s[n] == '0'; --n) + s[n] = ' '; + return s; + } + //--------------------------------------------------------------- template std::string print_money(t_number amount) { diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 75075d70..ef987f68 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2019 Zano Project +// Copyright (c) 2014-2023 Zano Project // Copyright (c) 2014-2018 The Louisdor Project // Copyright (c) 2012-2013 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying @@ -857,15 +857,7 @@ bool simple_wallet::refresh(const std::vector& args) //---------------------------------------------------------------------------------------------------- bool simple_wallet::show_balance(const std::vector& args/* = std::vector()*/) { - std::list balances; - uint64_t mined = 0; - m_wallet->balance(balances, mined); - std::stringstream ss; - for (const tools::wallet_public::asset_balance_entry& b : balances) - { - ss << std::setw(21) << print_fixed_decimal_point(b.total, b.asset_info.decimal_point) << "\t" << b.asset_info.ticker << "\t" << b.asset_info.asset_id << ENDL; - } - success_msg_writer() << "Balance: " << ENDL << ss.str(); + success_msg_writer() << m_wallet->get_balance_str(); return true; } //---------------------------------------------------------------------------------------------------- diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 9a8b6057..4c4e8a94 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2022 Zano Project +// Copyright (c) 2014-2023 Zano Project // Copyright (c) 2014-2018 The Louisdor Project // Copyright (c) 2012-2013 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying @@ -53,22 +53,27 @@ using namespace currency; ENABLE_CHANNEL_BY_DEFAULT("wallet") namespace tools { - wallet2::wallet2() : m_stop(false), - m_wcallback(new i_wallet2_callback()), //stub - m_core_proxy(new default_http_core_proxy()), - m_upper_transaction_size_limit(0), - m_height_of_start_sync(0), - m_last_sync_percent(0), - m_fake_outputs_count(0), - m_do_rise_transfer(false), - m_log_prefix("???"), - m_watch_only(false), - m_last_pow_block_h(0), - m_minimum_height(WALLET_MINIMUM_HEIGHT_UNSET_CONST), - m_pos_mint_packing_size(WALLET_DEFAULT_POS_MINT_PACKING_SIZE), - m_current_wallet_file_size(0), - m_use_deffered_global_outputs(false), - m_disable_tor_relay(false) + wallet2::wallet2() + : m_stop(false) + , m_wcallback(new i_wallet2_callback()) //stub + , m_core_proxy(new default_http_core_proxy()) + , m_upper_transaction_size_limit(0) + , m_height_of_start_sync(0) + , m_last_sync_percent(0) + , m_fake_outputs_count(0) + , m_do_rise_transfer(false) + , m_log_prefix("???") + , m_watch_only(false) + , m_last_pow_block_h(0) + , m_minimum_height(WALLET_MINIMUM_HEIGHT_UNSET_CONST) + , m_pos_mint_packing_size(WALLET_DEFAULT_POS_MINT_PACKING_SIZE) + , m_current_wallet_file_size(0) + , m_use_deffered_global_outputs(false) +#ifdef DISABLE_TOR + , m_disable_tor_relay(true) +#else + , m_disable_tor_relay(false) +#endif { m_core_runtime_config = currency::get_default_core_runtime_config(); } @@ -3413,6 +3418,33 @@ std::string wallet2::get_transfers_str(bool include_spent /*= true*/, bool inclu return ss.str(); } //---------------------------------------------------------------------------------------------------- +std::string wallet2::get_balance_str() const +{ + // balance unlocked / [balance total] ticker asset id + // 1391306.970000000000 / 1391306.970000000000 ZANO d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a + // 1391306.97 ZANO d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a + // 106.971 / 206.4 ZANO d6329b5b1f7c0805b5c345f4957554002a2f557845f64d7645dae0e051a6498a + + static const char* header = " balance unlocked / [balance total] ticker asset id"; + std::stringstream ss; + ss << header << ENDL; + + std::list balances; + uint64_t mined = 0; + balance(balances, mined); + for (const tools::wallet_public::asset_balance_entry& b : balances) + { + ss << " " << std::setw(20) << print_fixed_decimal_point_with_trailing_spaces(b.unlocked, b.asset_info.decimal_point); + if (b.total == b.unlocked) + ss << " "; + else + ss << " / " << std::setw(20) << print_fixed_decimal_point_with_trailing_spaces(b.total, b.asset_info.decimal_point); + ss << " " << std::setw(8) << std::left << b.asset_info.ticker << " " << b.asset_info.asset_id << ENDL; + } + + return ss.str(); +} +//---------------------------------------------------------------------------------------------------- void wallet2::get_payments(const std::string& payment_id, std::list& payments, uint64_t min_height) const { auto range = m_payments.equal_range(payment_id); diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index 4406be40..64c657c5 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2022 Zano Project +// Copyright (c) 2014-2023 Zano Project // Copyright (c) 2014-2018 The Louisdor Project // Copyright (c) 2012-2013 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying @@ -743,6 +743,7 @@ namespace tools void get_transfers(wallet2::transfer_container& incoming_transfers) const; std::string get_transfers_str(bool include_spent = true, bool include_unspent = true) const; + std::string wallet2::get_balance_str() const; // Returns all payments by given id in unspecified order void get_payments(const std::string& payment_id, std::list& payments, uint64_t min_height = 0) const;