mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-28 20:17:29 -03:00
5f0c6a7b0e
9960137
Add developer notes about blocking GUI code (Russell Yanofsky)9a61eed
Use WalletBalances struct in Qt (Russell Yanofsky)56f33ca
Remove direct bitcoin calls from qt/sendcoinsdialog.cpp (Russell Yanofsky)e872c93
Remove direct bitcoin access from qt/guiutil.cpp (Russell Yanofsky)5884558
Remove direct bitcoin calls from qt transaction table files (Russell Yanofsky)3cab2ce
Remove direct bitcoin calls from qt/paymentserver.cpp (Russell Yanofsky)3ec2ebc
Remove direct bitcoin calls from qt/addresstablemodel.cpp (Russell Yanofsky)827de03
Remove direct bitcoin calls from qt/coincontroldialog.cpp (Russell Yanofsky)a0704a8
Remove most direct bitcoin calls from qt/walletmodel.cpp (Russell Yanofsky)90d4640
Remove direct bitcoin calls from qt/optionsdialog.cpp (Russell Yanofsky)582daf6
Remove direct bitcoin calls from qt/rpcconsole.cpp (Russell Yanofsky)3034a46
Remove direct bitcoin calls from qt/bantablemodel.cpp (Russell Yanofsky)e0b66a3
Remove direct bitcoin calls from qt/peertablemodel.cpp (Russell Yanofsky)d7c2c95
Remove direct bitcoin calls from qt/intro.cpp (Russell Yanofsky)fe6f27e
Remove direct bitcoin calls from qt/clientmodel.cpp (Russell Yanofsky)5fba3af
Remove direct bitcoin calls from qt/splashscreen.cpp (Russell Yanofsky)c2f672f
Remove direct bitcoin calls from qt/utilitydialog.cpp (Russell Yanofsky)3d619e9
Remove direct bitcoin calls from qt/bitcoingui.cpp (Russell Yanofsky)c0f2756
Remove direct bitcoin calls from qt/optionsmodel.cpp (Russell Yanofsky)71e0d90
Remove direct bitcoin calls from qt/bitcoin.cpp (Russell Yanofsky)ea73b84
Add src/interface/README.md (Russell Yanofsky) Pull request description: This is a refactoring PR that does not change behavior in any way. This change: 1. Creates abstract [`Node`](https://github.com/ryanofsky/bitcoin/blob/pr/ipc-local/src/interface/node.h) and [`Wallet`](https://github.com/ryanofsky/bitcoin/blob/pr/ipc-local/src/interface/wallet.h) interfaces in [`src/interface/`](https://github.com/ryanofsky/bitcoin/tree/pr/ipc-local/src/interface) 1. Updates Qt code to call the new interfaces. This largely consists of diffs of the form: ```diff - InitLogging(); - InitParameterInteraction(); + node.initLogging(); + node.initParameterInteraction(); ``` This change allows followup PR #10102 (makes `bitcoin-qt` control `bitcoind` over an IPC socket) to work without any significant updates to Qt code. Additionally: * It provides a single place to describe the interface between GUI and daemon code. * It can make better GUI testing possible, because Node and Wallet objects have virtual methods that can be overloaded for mocking. * It can be used to help make the GUI more responsive (see https://github.com/bitcoin/bitcoin/issues/10504) Other notes: * I used python scripts [hide-globals.py](https://github.com/ryanofsky/home/blob/master/src/2017/hide-globals/hide-globals.py) and [replace-syms.py](https://github.com/ryanofsky/home/blob/master/src/2017/hide-globals/replace-syms.py) to identify all the places where Qt code was accessing libbitcoin global variables and calling functions accessing those global variables. * These changes were originally part of #10102. Thanks to @JeremyRubin for the suggestion of splitting them out. Commits: - [`ea73b84d2d` Add src/interface/README.md](ea73b84d2d
) - [`71e0d90876` Remove direct bitcoin calls from qt/bitcoin.cpp](71e0d90876
) - [`c0f2756be5` Remove direct bitcoin calls from qt/optionsmodel.cpp](c0f2756be5
) - [`3d619e9d36` Remove direct bitcoin calls from qt/bitcoingui.cpp](3d619e9d36
) - [`c2f672fb19` Remove direct bitcoin calls from qt/utilitydialog.cpp](c2f672fb19
) - [`5fba3af21e` Remove direct bitcoin calls from qt/splashscreen.cpp](5fba3af21e
) - [`fe6f27e6ea` Remove direct bitcoin calls from qt/clientmodel.cpp](fe6f27e6ea
) - [`d7c2c95948` Remove direct bitcoin calls from qt/intro.cpp](d7c2c95948
) - [`e0b66a3b7c` Remove direct bitcoin calls from qt/peertablemodel.cpp](e0b66a3b7c
) - [`3034a462a5` Remove direct bitcoin calls from qt/bantablemodel.cpp](3034a462a5
) - [`582daf6d22` Remove direct bitcoin calls from qt/rpcconsole.cpp](582daf6d22
) - [`90d4640b7e` Remove direct bitcoin calls from qt/optionsdialog.cpp](90d4640b7e
) - [`a0704a8996` Remove most direct bitcoin calls from qt/walletmodel.cpp](a0704a8996
) - [`827de038ab` Remove direct bitcoin calls from qt/coincontroldialog.cpp](827de038ab
) - [`3ec2ebcd9b` Remove direct bitcoin calls from qt/addresstablemodel.cpp](3ec2ebcd9b
) - [`3cab2ce5f9` Remove direct bitcoin calls from qt/paymentserver.cpp](3cab2ce5f9
) - [`58845587e1` Remove direct bitcoin calls from qt transaction table files](58845587e1
) - [`e872c93ee8` Remove direct bitcoin access from qt/guiutil.cpp](e872c93ee8
) - [`56f33ca349` Remove direct bitcoin calls from qt/sendcoinsdialog.cpp](56f33ca349
) - [`9a61eed1fc` Use WalletBalances struct in Qt](9a61eed1fc
) - [`9960137697` Add developer notes about blocking GUI code](9960137697
) Tree-SHA512: 7b9eff2f37d4ea21972d7cc6a3dbe144248595d6c330524396d867f3cd2841d666cdc040fd3605af559dab51b075812402f61d628d16cf13719335c1d8bf8ed3
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
// Copyright (c) 2011-2017 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_QT_WALLETMODELTRANSACTION_H
|
|
#define BITCOIN_QT_WALLETMODELTRANSACTION_H
|
|
|
|
#include <qt/walletmodel.h>
|
|
|
|
#include <memory>
|
|
|
|
#include <QObject>
|
|
|
|
class SendCoinsRecipient;
|
|
|
|
namespace interface {
|
|
class Node;
|
|
class PendingWalletTx;
|
|
}
|
|
|
|
/** Data model for a walletmodel transaction. */
|
|
class WalletModelTransaction
|
|
{
|
|
public:
|
|
explicit WalletModelTransaction(const QList<SendCoinsRecipient> &recipients);
|
|
|
|
QList<SendCoinsRecipient> getRecipients() const;
|
|
|
|
std::unique_ptr<interface::PendingWalletTx>& getWtx();
|
|
unsigned int getTransactionSize();
|
|
|
|
void setTransactionFee(const CAmount& newFee);
|
|
CAmount getTransactionFee() const;
|
|
|
|
CAmount getTotalTransactionAmount() const;
|
|
|
|
void reassignAmounts(int nChangePosRet); // needed for the subtract-fee-from-amount feature
|
|
|
|
private:
|
|
QList<SendCoinsRecipient> recipients;
|
|
std::unique_ptr<interface::PendingWalletTx> wtx;
|
|
CAmount fee;
|
|
};
|
|
|
|
#endif // BITCOIN_QT_WALLETMODELTRANSACTION_H
|