* qt: Add PlatformStyle::Icon + only show icons on menu if enabled
Now icons are disabled everywhere if imagesOnButtons is disabled. There were still buttons on each menu item.
* qt: Disable all PlatformStyle related changes
* qt: Drop PlatformStyle
* qt: Add platform specific css style for scrollbars
This disabled scrollbars.css loading and adds a "windows,other" section in general.css, dark.css and light.css where it adds customizations for scrollbars in each theme.
* qt: Remove scrollbar.css and all its remaining mentions
* qt: Run update-css-files.py
* qt: Add "Appearance Tab" to OptionsDialog and move "Theme" into it
* qt: Add "Font scale" settings to Appearance Tab of OptionsDialog
Allows to scale the font in the same way like with -font-scale.
* qt: Add font weight settings to Appearance tab of OptionsDialog
Allows to set the weight for normal and bold text
* qt: Add font family setting to Appearance tab of OptionsDialog
Allows to choose between system default font or montserrat
* qt: GUIUtil - Maintain a map with supported weights for all fonts.
* qt: Introduce AppearanceWidget
A widget which just wraps all appearance related settings.
Also replaces Appearance settings in OptionsDialog with the introduced widget.
* qt: Introduce initial appearance setup dialog
This will pop up the first time the user starts the DashCore version with the new UI changes.
* qt: Load font related settings in GUIUtil::loadFonts
* qt: Make osDefaultFont global in GUIUtil to fix getFont()
Before getFont(FontFamily, ...) wasn't always able to return the correct font without the requested font family beeing set as application font upfront.
* qt: Improve supported weight helpers
Add conversion helpers. and let all of them depend on the currently selected font.
* qt: Default weights based on supported if not all weights are supported
For SystemDefault only because Montserrat has all supported weights.
* qt/test: Fix GUI tests
* Store normal/bold font GUI settings as "pure" (not "supported") values
* Rename supportedWeighti(To/From)Arg to supportedWeight(To/From)Index to better match the logic and avoid confusion with weight(To/From)Arg functions
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
fa811b0 qa: Normalize executable location (MarcoFalke)
Pull request description:
This removes the need to override the executable locations by just reading them from the config file. Beside making the code easier to read, running individual test on Windows is now possible by default (without providing further command line arguments).
Note: Of course, it is still possible to manually specify the location through the `BITCOIND` environment variable, e.g. `bitcoin-qt`.
Tree-SHA512: bee6d22246796242d747120ca18aaab089f73067de213c9111182561985c5912228a0b0f7f9eec025ecfdb44db031f15652f30d67c489d481c995bb3232a7ac7
8b8032e test: Add rpcauth pair that generated by rpcauth (Chun Kuan Lee)
Pull request description:
This PR adds a rpcauth pair that is randomly generated. Also checks that rpcauth.py works fine.
Resolve#12995
Tree-SHA512: d9661f40e306bcf528dc25919c874ebcdbdd21101319985dc12ce133c80fd0021cfee5e4bfe8ee7970eccc2e24c97e596263b270fe0b79f3613ae573a825ed63
3e53004339 test: add rpcauth-test to AC_CONFIG_LINKS to fix out-of-tree make check (Wladimir J. van der Laan)
Pull request description:
Add rpcauth-test (introduced #13056) to AC_CONFIG_LINKS, like the other directly called python scripts, to fix out-of-tree `make check`.
(forgot to test this before merging, unfortunately)
Tree-SHA512: 60306ac83ee81e0f27d5b4f0420c3bd4edfa3fd5daaa067ff0c235eb55da9f6c559203c2625fed97783b2d11d9f1bed7a359b4d9204ab4af75fd1fd24b9882a8
d6cde007db9d3e6ee93bd98a9bbfdce9bfa9b15b rpcauth: Improve by using argparse and getpass modules (João Barbosa)
Pull request description:
This PR improves argument handling in `rpcauth.py` script by using `argparse` module. Specifying `-` as password makes it prompt securely with `getpass` module which prevents leaking passwords to bash history.
Tree-SHA512: 489d66c95f66b5618cb75fd8f07ea5647281226ab9e32b03051eb43f758b9334ac19b7c82c2ed4f8c7ffbb0bee949b3d389e1564ec7a6e372f2864233bc7cb88
6be7d14d243eeeaaf6b4b98c3359c3e1695f2046 Properly generate salt in rpcauth.py, update tests (Carl Dong)
Pull request description:
Previously, when iterating over bytes of the generated salt to construct
a hex string, only one character would be outputted when the byte is
less than 0x10. Meaning that for a 16 byte salt, the hex string might be
less than 32 characters and collisions would occur.
Tree-SHA512: 7038ecbbac846cd1851112396acd8a04475685f5b6f786e4e7316acba4a56cc711c275b7f52f0f2b6bc6cfdc0c0d9d39c3afeb2c0aff3a30fde516bf642fdf9f
2a89b0c rpcauth: Make it possible to provide a custom password (Wladimir J. van der Laan)
Pull request description:
This adds the functionality to specify a custom password to `rpcauth.py`, as well as makes the code (IMO) easier to understand.
Tree-SHA512: 458d54cc258e16917c0f0ce5ae1c3d6c0c03b5ab931011bf3feb09a3474f1511c38ec45822a4af2aadeaca522a002ba04a564849dd3f42fa6f36dd21b0cba093
643aad17fa Enable additional flake8 rules (practicalswift)
f020aca297 Minor Python cleanups to make flake8 pass with the new rules enabled (practicalswift)
Pull request description:
Enabled rules:
```
* E242: tab after ','
* E266: too many leading '#' for block comment
* E401: multiple imports on one line
* E402: module level import not at top of file
* E701: multiple statements on one line (colon)
* E901: SyntaxError: invalid syntax
* E902: TokenError: EOF in multi-line string
* F821: undefined name 'Foo'
* W293: blank line contains whitespace
* W606: 'async' and 'await' are reserved keywords starting with Python 3.7
```
Note to reviewers:
* In general we don't allow whitespace cleanups to existing code, but in order to allow for enabling Travis checking for these rules a few smaller whitespace cleanups had to made as part of this PR.
* Use [this `?w=1` link](https://github.com/bitcoin/bitcoin/pull/12987/files?w=1) to show a diff without whitespace changes.
Before this commit:
```
$ flake8 -qq --statistics --ignore=B,C,E,F,I,N,W --select=E112,E113,E115,E116,E125,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E714,E721,E741,E742,E743,F401,E901,E902,F402,F404,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W292,W293,W504,W601,W602,W603,W604,W605,W606 .
5 E266 too many leading '#' for block comment
4 E401 multiple imports on one line
6 E402 module level import not at top of file
5 E701 multiple statements on one line (colon)
1 F812 list comprehension redefines 'n' from line 159
4 F821 undefined name 'ConnectionRefusedError'
28 W293 blank line contains whitespace
```
After this commit:
```
$ flake8 -qq --statistics --ignore=B,C,E,F,I,N,W --select=E112,E113,E115,E116,E125,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E714,E721,E741,E742,E743,F401,E901,E902,F402,F404,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W292,W293,W504,W601,W602,W603,W604,W605,W606 .
$
```
Tree-SHA512: fc7d5e752298a50d4248afc620ee2c173135b4ca008e48e02913ac968e5a24a5fd5396926047ec62f1d580d537434ccae01f249bb2f3338fa59dc630bf97ca7a
Signed-off-by: pasta <pasta@dashboost.org>
12ad33a [doc] qt: fixes broken link on readme (marcoagner)
Pull request description:
I was reading qt files and just fixed a trivial mistake on its readme file.
"#use-qt-Creator-as IDE" should be "#using-qt-creator-as-ide"
Tree-SHA512: b2610821370dd7cac86725750ce7fd7a9e414c175e525f2e53e87302363c2a4a86206e0f9ce1d02657c751c395a33f0505953a94fd8124ea1943e39bb0711777
18326ae [doc] Add comments for chainparams.h, validation.cpp (James O'Beirne)
Pull request description:
Added a few comments during a leisurely read through some of the validation code. If this kind of thing seems useful, I can add similar documentation for most of the `CChainState` interface.
Tree-SHA512: a4d9db60383a8ff02e74ac326ed88902eec1ee441e8cd4e1845bcf257072673c15974225288cebf0a633e76a3410f99e2206616b4694725a2a5b0d19c78327d6
0ef7b40 [doc] Fix comment in FindForkInGlobalIndex (James O'Beirne)
Pull request description:
The comment erroneously implies that we're searching `chainActive` for the
first block common to `locator`, but we're using the parameter `chain`.
Tree-SHA512: 42ba0fb378597820bdf1eaff1e3e284097baa312e7dd8448421c8c71aa91c353ea6c840860afcb7725f392431f3134d4feb271b96ab7058a62f84f48e468e714
fad0fc3c9a Refine travis check for duplicate includes (MarcoFalke)
Pull request description:
Since there is no harm in having "duplicate" includes and it makes it obvious what are the dependencies of each file, without having to do static analysis or jumping between files, I'd suggest to revert the travis check for duplicate includes.
Generally, I think that enforcing minor style preferences should not be done via travis. The cost of maintaining and the burden on other developers is too high. C.f discussion in https://github.com/bitcoin/bitcoin/pull/10973#discussion_r180142594
Tree-SHA512: 97ab0e769d457ccfb873fff6c99613f8b944cd7ef95bfdccb0e1bbe8f5df1f16548c658fa03af42516f806546e75646d338a061e7b057619490235d311ca21f1
c198dc00e1 [Doc] Clarify the meaning of fee delta not being a fee rate in prioritisetransaction RPC (Jan Čapek)
Pull request description:
Hi,
I have faced some confusion among our developers considering this being a fee rate. Would you consider including this tiny doc update?
Best regards,
Jan Capek
Tree-SHA512: cd0560540418e53c5c19ceab2d5aca229f4ef6b788b9543695742522e1c63a7f2cce2574b47fead098a106da2f77e297f0c728474565f6259b50d62369bbe7da
4e05687153 [wallet] [rpc] [doc] importprivkey: hint about importmulti (Karl-Johan Alm)
Pull request description:
From #12701, a hint about `importmulti` inside the help for `importprivkey` seems useful.
Tree-SHA512: 09ddfd384062b4365f678167076cb9f5af1eb8f083714a20c2a9bb14fef1c886d1666196272bf09862537166d15ae89c3330cdc6836eee76cb54d137e53301df
Showing it instantly may lead to the selector showing up in an unexpected place because it only gets added to a proper layout when a second wallet gets added.
- Makes it singleton to make sure we always only have one instance of it
- Protects its members by making them private and adding set/getters
- Makes it thread safe
With the introduction of better mutliwallet support, privatesend only worked for your first wallet. This commit implements multiwallet for privatesend such that the wallet you start the mixing from is the wallet mixing will occur in.
Signed-off-by: pasta <pasta@dashboost.org>
779c5f984 Qt: hide RPCConsole wallet selector when no wallets are present (Jonas Schnelli)
dc6f150f3 Qt: show wallet name in request dlg in case of multiwallet (Jonas Schnelli)
4826ca4b8 Qt: show wallet name in send confirmation dlg in case of multiwallet (Jonas Schnelli)
cfa4133ce GUI: RPCConsole: Log wallet changes (Luke Dashjr)
b6d04fc7c Qt: Get wallet name from WalletModel rather than passing it around (Luke Dashjr)
12d8d2681 Qt: When multiple wallets are used, include in notifications the name (Jonas Schnelli)
d1ec34a76 Qt: QComboBox::setVisible doesn't work in toolbars, so defer adding it at all until needed (Luke Dashjr)
d49cc70e6 Qt: Add wallet selector to debug console (Jonas Schnelli)
d558f44c5 Bugfix: RPC: Add missing UnregisterHTTPHandler for /wallet/ (Luke Dashjr)
85d531971 Qt: Ensure UI updates only come from the currently selected walletView (Luke Dashjr)
e449f9a9e Qt: Add a combobox to toolbar to select from multiple wallets (Luke Dashjr)
3dba3c3ac Qt: Load all wallets into WalletModels (Luke Dashjr)
Pull request description:
This is an overhaul of #11383 (plus some additions).
It avoids unnecessary coupling of httpserver/jsonrpc and the wallet as well as it avoids pointer pure passing (and pointer deletion) of `CWallet` (plus other minor design changes).
Additionally it adds the wallet name to the sendconfirmation and request dialog (in case multiwallet is active)
Tree-SHA512: 3d06e18badbc5d1821e488bf1dae463bb0be544cf11b2b618e025812bfdd13c5f39604bb93b4c705313930e7dc4e66f4848b9469ba14871bade58e7a027246a1
* Merge #11517: Tests: Improve benchmark precision
760af84 Removed CCheckQueueSpeed benchmark (Martin Ankerl)
00721e6 Improved microbenchmarking with multiple features. (Martin Ankerl)
Pull request description:
The benchmark's KeepRunning() used to make a function call for each call, inflating measurement times for short running code. This change inlines the critical code that is executed each run and moves the slow timer updates into a new function.
This change increases the average runtime for Trig from 0.000000082339208 sec to 0.000000080948591.
Tree-SHA512: 36b3bc55fc9b1d4cbf526b7103af6af18e9783e6b8f3ad3adbd09fac0bf9401cfefad58fd1e6fa2615d3c4e677998f912f3323d61d7b00b1c660d581c257d577
Signed-off-by: pasta <pasta@dashboost.org>
# Conflicts:
# src/bench/bench.cpp
# src/bench/bench_dash.cpp
# src/bench/crypto_hash.cpp
# src/bench/prevector_destructor.cpp
# src/bench/verify_script.cpp
* More of 11517
Co-authored-by: Wladimir J. van der Laan <laanwj@gmail.com>
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
I saw this test failing many times now at this point and it always looked like (if i did not missread the logs) that the expected messages and so the disconnects did pop up right after it failed. So this might help to avoid some red crosses.
* qt: Draw a border around net traffic graph
* qt: ReceiveRequestDialog - Improve QR code image
- Fix issue with bluriness
- Refine sizing/layout of QR code and address
- Adjust coloring to match the themes
* qt: Give the TransactionView's instantsendWidget a name
Required to access it in css
* qt: Rename conflicting label in SendCoinsDialog
- Was named the same as the the label in EditAddressDialog so it couldn't be accessed properly in css
* qt: Give the TransactionView's search field the first focus on startup
* qt: Some updates to the PrivateSend widget on the OverviewPage
- Hide denom labels if inactive
- Enable wordwrap for denom label
- Add some spacer
- Make sure it gets its basic initialization on startup
* qt: Fix some layout issues in SendCoinsDialog's UI file.
- Added some margins for fee selection radio buttons to align them centered to their options
- Removed a weird placed spacer
* qt: Fix vertical alignment of the two balance labels in SendCoinsDialog
* qt: Add newline in textedit of receiverequest
* qt: OptionsDialog - Hide override hint if there is nothing overridden
* qt: Allow stylesheet modifications for auto completition popup
- Inheritance doesn't work here obviously because of QCompleter is parent of the popup
- QStyledItemDelegate delegate is required. Without its not possible to access `::item` selectors from css.
* qt: Make the progress label in the status bar accessible in css
* qt: Update weekend colors of QCalendarWidget on style changes
Its obviously not possible to do this in stylesheets thats why i added
this as workaround.
* qt: Load stylesheets for Intro
This is the datadir selection dialog.
* Drop labelPrivateSendLastMessage
* Add a space
Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
* qt: Add platform specific css loading to GUIUtil::loadStyleSheet
This commit leads to GUIUtil::loadStyleSheet treating css code between
<os="<os_list>"> and </os> different. It will only become added for
operating systems provided in the list of the sections start tag.
There may be multiple entries per section. Possible entries:
- macosx
- windows
- other
<os_list> must be a combination of the three options above separated by
comma like in "windows,macosx".
Its ok to have multiple <os="...">...</os> sections in a file with
arbitrary OS combinations. They will all become added to the end of the
file though. Means even putting an <os> section in the top of the file
would become appended to the end of the file during loading which should
be kept in mind when adding sections to avoid unexpected overwriting.
Example
------------------------------------------------------------------------
<os="macosx, windows, other">
/* Example section to add styles for all operating systems
Remove any to exclude it.
*/
</os>
* Respect `-uiplatform` when matching for os-specific styles
* Format osStyleExp to make it a bit easier to see groups
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
* qt: Remove min-width of BitcoinAmountField in ReceiveCoinsDialog
* qt: Add BitcoinUnits::data(const int &row, int role)
Make its data also accessible int, not only by QModelIndex.
* qt: Adjust BitcoinAmountField
- AmountSpinBox (QAbstractBox) is now called AmountLineEdit (QLineEdit)
- Replaced the AmountSpinBox and the QValueComboBox with just an AmountLineEdit
- Adjusted min-size hint calculation
- Increased maximum width
- Right-Align text
- Removed obsolete code
* qt: Removed leftover from legacy BitcoinAmountField
* qt: Move amount field into a Hlayout with a spacer (ReveiveCoinsDialog)
Make sure it does not get stretched above the in AmountLineEdit::minimumSizeHint() calculated size.
* qt: Removed obsolete workaround related to BitcoinAmountField
Its fixed now with the change to a normal line edit.
* qt: Set the default theme properly
* qt: Keep track of disabled rects for macOS
This allows enabling them again on theme changes
* qt: Introduce runtime theme changes
Runtime theme changes means no more client restart required if the
theme gets changed in the options dialog.
In the RPCConsole's StyleChange event make sure following things are still correct after a runtime theme change:
- Hide prompt icon for dash themes in rpc console if dash theme gets
activated.
- Clear rpc console on theme changes to make sure fonts/sizes/colors are correct.