Compare commits

..

915 Commits

Author SHA1 Message Date
luigi1111
937cb98256 Merge pull request #3469
9cfeba9 cmake: cleanup hidapi / libusb (selsta)
2021-05-13 00:24:51 -05:00
selsta
9cfeba9ba1 cmake: cleanup hidapi / libusb 2021-05-13 07:12:28 +02:00
luigi1111
e730e3ff63 Merge pull request #3468
46dec78 cmake: move external subdir before -Werror (selsta)
2021-05-12 23:27:48 -05:00
luigi1111
6b580cbb00 Merge pull request #3467
c8c8736 js: fix getApproximateBlockchainHeight (testnet) (selsta)
2021-05-12 23:27:10 -05:00
luigi1111
cb33fe2fc0 Merge pull request #3466
380c5b5 Transfer: fix QR code scanner inline button icon (xiphon)
2021-05-12 23:26:38 -05:00
luigi1111
bff6f7587f Merge pull request #3464
9360de4 cmake: fix WITH_SCANNER static build (link against Qt5MultimediaQuick) (xiphon)
2021-05-12 23:26:11 -05:00
luigi1111
12a72970fb Merge pull request #3463
138e164 Transfer: highlight invalid address (xiphon)
2021-05-12 23:25:46 -05:00
luigi1111
16e1d64b74 Merge pull request #3462
410ad22 LineEditMulti: fix 'error' property (xiphon)
2021-05-12 23:25:23 -05:00
luigi1111
9dbad4745d Merge pull request #3461
8d59880 cmake: prepare v0.17.2.2 (selsta)
2021-05-12 23:24:59 -05:00
luigi1111
0e7d1ab65b Merge pull request #3459
7d34086 WizardSummary: display bootstrap address only in local node mode (selsta)
2021-05-12 23:24:29 -05:00
luigi1111
b69eff367c Merge pull request #3458
755d218 WizardSummary: display daemon address only in remote node mode (selsta)
2021-05-12 23:24:06 -05:00
luigi1111
54ef114370 Merge pull request #3456
b304140 Transfer: vertical center address (selsta)
2021-05-12 23:23:38 -05:00
luigi1111
e984949aa7 Merge pull request #3455
a021b71 cmake: don't add fstack-clash-protection with clang (selsta)
2021-05-12 23:22:36 -05:00
luigi1111
25be9d5b9b Merge pull request #3451
a89ac67 Docker: Linux - fix docker cache and apt update issue (xiphon)
2021-05-12 23:21:55 -05:00
selsta
46dec78806 cmake: move external subdir before -Werror 2021-05-08 23:29:57 +02:00
selsta
c8c8736cf3 js: fix getApproximateBlockchainHeight (testnet) 2021-05-08 16:45:45 +02:00
xiphon
380c5b5588 Transfer: fix QR code scanner inline button icon 2021-05-08 11:38:35 +00:00
xiphon
9360de4ef8 cmake: fix WITH_SCANNER static build (link against Qt5MultimediaQuick) 2021-05-08 11:02:05 +00:00
xiphon
138e164878 Transfer: highlight invalid address 2021-05-08 10:02:19 +00:00
xiphon
410ad22821 LineEditMulti: fix 'error' property 2021-05-08 09:56:00 +00:00
selsta
8d59880d02 cmake: prepare v0.17.2.2 2021-05-07 15:52:28 +02:00
selsta
7d340869fc WizardSummary: display bootstrap address only in local node mode 2021-05-06 20:19:16 +02:00
selsta
755d218594 WizardSummary: display daemon address only in remote node mode 2021-05-06 19:25:48 +02:00
selsta
b304140720 Transfer: vertical center address 2021-05-05 22:29:47 +02:00
selsta
a021b71261 cmake: don't add fstack-clash-protection with clang 2021-05-05 21:39:15 +02:00
xiphon
a89ac67d59 Docker: Linux - fix docker cache and apt update issue 2021-04-30 14:05:27 +00:00
luigi1111
426dc3fa47 Merge pull request #3448
2cda1fc cmake: link with wallet_api instead of wallet_merged (selsta)
2021-04-29 14:16:56 -04:00
luigi1111
947a70a638 Merge pull request #3447
dac0c04 main: fix Monero GUI window centering (xiphon)
2021-04-29 14:16:32 -04:00
luigi1111
9041e73345 Merge pull request #3446
ab5cb01 docker: fix boost bintray links (selsta)
2021-04-29 14:16:10 -04:00
luigi1111
ea01a536ce Merge pull request #3445
bc528cc main: drop unused altKeyReleased routine (xiphon)
2021-04-29 14:15:46 -04:00
luigi1111
56f471b1b6 Merge pull request #3444
ad6f26c main: drop unused enableUI routine (xiphon)
2021-04-29 14:14:51 -04:00
luigi1111
9a216682c8 Merge pull request #3443
db8c4ed main: handleTransactionConfirmed - fix 'no file specified' case (xiphon)
2021-04-29 14:14:24 -04:00
luigi1111
e2e5a3919b Merge pull request #3441
837dd61 Revert 'Animation slow down for debugging' (selsta)
2021-04-29 14:13:57 -04:00
luigi1111
adc7c02782 Merge pull request #3439
51ece5f Wallet: drop unused paymentId property (xiphon)
2021-04-29 14:12:31 -04:00
luigi1111
4c85aea7c3 Merge pull request #3438
b3ad95f cmake: WIN_DEPLOY_DLLS - update libicu version to 68 (xiphon)
2021-04-29 14:12:09 -04:00
luigi1111
5c2076daa1 Merge pull request #3437
7558a23 main: remove minor switch/case code duplication (selsta)
2021-04-29 14:11:45 -04:00
luigi1111
578324348d Merge pull request #3436
14b1476 History: cleanup unused lookupPaymentID function (selsta)
2021-04-29 14:10:53 -04:00
luigi1111
dc3e35a928 Merge pull request #3434
989f135 Navbar: fix layout bug on resize (selsta)
2021-04-29 14:08:24 -04:00
luigi1111
0ee5259466 Merge pull request #3433
e13d49f Navbar: horizontally center text (selsta)
2021-04-29 14:07:58 -04:00
luigi1111
c3e88adc6d Merge pull request #3430
db0485c main: simplify blackTheme code (selsta)
2021-04-29 14:07:24 -04:00
luigi1111
c368ce2776 Merge pull request #3428
0fb9306 Makefile: add CMAKE_BUILD_TYPE=Debug to debug build (selsta)
2021-04-29 14:06:40 -04:00
selsta
2cda1fca69 cmake: link with wallet_api instead of wallet_merged 2021-04-27 13:49:28 +02:00
xiphon
dac0c04d20 main: fix Monero GUI window centering 2021-04-26 21:11:21 +00:00
selsta
ab5cb01510 docker: fix boost bintray links 2021-04-26 19:51:03 +02:00
xiphon
bc528ccb77 main: drop unused altKeyReleased routine 2021-04-26 11:52:31 +00:00
xiphon
ad6f26c8b4 main: drop unused enableUI routine 2021-04-26 11:46:56 +00:00
xiphon
db8c4edb08 main: handleTransactionConfirmed - fix 'no file specified' case 2021-04-26 11:17:59 +00:00
selsta
837dd6184e Revert "Animation slow down for debugging"
This reverts commit baff7f213f.
2021-04-25 23:53:43 +02:00
xiphon
51ece5fd00 Wallet: drop unused paymentId property 2021-04-25 00:05:35 +00:00
xiphon
b3ad95fdfc cmake: WIN_DEPLOY_DLLS - update libicu version to 68 2021-04-24 22:08:25 +00:00
luigi1111
d2fc4e60c6 Merge pull request #3431
4e67cd0 Wallet: omit redundant 'delete' on destruction (xiphon)
2021-04-24 16:17:06 -04:00
luigi1111
1ea38be404 Merge pull request #3429
1f904d4 RemoteNodeEdit: fix getAddress() and isValid() inconsistency (xiphon)
2021-04-24 16:16:33 -04:00
luigi1111
d69b1e0520 Merge pull request #3427
0a4b017 cmake: link translations target with Qt5::Core (selsta)
2021-04-24 16:16:05 -04:00
luigi1111
c11e32f511 Merge pull request #3208
01c3c19 SuccessfulTxDialog: add View progress button (rating89us)
2021-04-24 16:14:28 -04:00
selsta
7558a23243 main: remove minor switch/case code duplication 2021-04-24 08:25:12 +02:00
selsta
14b1476786 History: cleanup unused lookupPaymentID function 2021-04-24 07:25:05 +02:00
selsta
989f135d9a Navbar: fix layout bug on resize 2021-04-24 05:32:09 +02:00
selsta
e13d49f43e Navbar: horizontally center text 2021-04-24 05:24:43 +02:00
xiphon
4e67cd0014 Wallet: omit redundant 'delete' on destruction 2021-04-22 23:08:41 +00:00
selsta
db0485c600 main: simplify blackTheme code 2021-04-22 23:14:32 +02:00
xiphon
1f904d4cff RemoteNodeEdit: fix getAddress() and isValid() inconsistency 2021-04-22 21:00:48 +00:00
selsta
0a4b017697 cmake: link translations target with Qt5::Core 2021-04-22 21:03:41 +02:00
selsta
0fb93061b1 Makefile: add CMAKE_BUILD_TYPE=Debug to debug build 2021-04-22 18:54:25 +02:00
luigi1111
bc1131ce41 Merge pull request #3425
2fcacd1 main: update estimatedBlockchainSize (rating89us)
2021-04-22 01:58:29 -04:00
luigi1111
5667526ef6 Merge pull request #3424
341b267 Merchant: display selected subaddress (selsta)
2021-04-22 01:58:02 -04:00
luigi1111
fe5992debd Merge pull request #3423
398e28e Account, Receive: add missing fallback icons (selsta)
2021-04-22 01:57:35 -04:00
luigi1111
ca09151092 Merge pull request #3422
69a6c6b WizardDaemonSettings: implement full remote node configuration support (xiphon)
2021-04-22 01:57:04 -04:00
luigi1111
4ddc6b1c90 Merge pull request #3420
becc747 WalletManager: support kdf round in device wallet restore (selsta)
2021-04-22 01:56:39 -04:00
luigi1111
46bc94fbe8 Merge pull request #3419
820b221 WizardHome: fix kdf textbox displaying incorrect value (selsta)
2021-04-22 01:55:54 -04:00
luigi1111
842a9278d0 Merge pull request #3414
23f71e1 WizardSummary: don't display node address in simple mode (selsta)
2021-04-22 01:54:27 -04:00
luigi1111
f57e115e99 Merge pull request #3413
684fd94 WizardDaemonSettings: add reset button to db location (selsta)
2021-04-22 01:53:54 -04:00
luigi1111
beb566f11e Merge pull request #2242
9fc6179 macOS: add basic menubar support (selsta)
2021-04-22 01:53:03 -04:00
rating89us
2fcacd1e84 main: update estimatedBlockchainSize 2021-04-21 19:04:55 +02:00
selsta
341b267852 Merchant: display selected subaddress 2021-04-21 04:13:39 +02:00
selsta
398e28ed24 Account, Receive: add missing fallback icons 2021-04-21 03:57:39 +02:00
xiphon
69a6c6b821 WizardDaemonSettings: implement full remote node configuration support 2021-04-20 22:15:15 +00:00
selsta
becc74714b WalletManager: support kdf round in device wallet restore 2021-04-20 21:44:23 +02:00
selsta
820b221fa5 WizardHome: fix kdf textbox displaying incorrect value 2021-04-20 21:28:04 +02:00
selsta
23f71e1959 WizardSummary: don't display node address in simple mode 2021-04-19 07:21:11 +02:00
selsta
684fd941fb WizardDaemonSettings: add reset button to db location 2021-04-19 07:17:07 +02:00
selsta
9fc617956d macOS: add basic menubar support 2021-04-18 15:50:36 +02:00
luigi1111
02ae14fd6b Merge pull request #3405
62faf4d Navbar: fix width being slightly off (selsta)
2021-04-16 12:57:35 -05:00
luigi1111
a84d7bd2cb Merge pull request #3404
ba62f9c main: omit QML Screen type, use QGuiApplication::primaryScreen() instead (xiphon)
2021-04-16 12:57:08 -05:00
luigi1111
84b9264d1d Merge pull request #3401
767b9e0 TextPlain, Label: implement tooltips. Transfer: advanced - use tooltips (xiphon)
2021-04-16 12:56:34 -05:00
luigi1111
0ae6435429 Merge pull request #3397
6f7192b Transfer: fix desktop icon style (selsta)
2021-04-16 12:55:59 -05:00
luigi1111
c47332e2f1 Merge pull request #3395
d60bbb7 Wizard: use endsWith, fix todo (selsta)
2021-04-16 12:55:37 -05:00
luigi1111
7dcd33f203 Merge pull request #3394
c60252d LanguageSidebar: simplify code (selsta)
2021-04-16 12:55:08 -05:00
luigi1111
bed56137e3 Merge pull request #3392
475f263 main: lower minimum required QtQml.Models version to 2.2 (xiphon)
2021-04-16 12:54:44 -05:00
selsta
62faf4d82e Navbar: fix width being slightly off 2021-04-16 02:37:25 +02:00
xiphon
ba62f9c686 main: omit QML Screen type, use QGuiApplication::primaryScreen() instead 2021-04-15 19:50:32 +00:00
selsta
6f7192bb12 Transfer: fix desktop icon style 2021-04-15 14:55:40 +02:00
xiphon
767b9e05b3 TextPlain, Label: implement tooltips. Transfer: advanced - use tooltips 2021-04-15 00:09:45 +00:00
selsta
d60bbb72f7 Wizard: use endsWith, fix todo 2021-04-14 21:34:17 +02:00
selsta
c60252d3ce LanguageSidebar: simplify code 2021-04-14 19:17:01 +02:00
xiphon
475f26398d main: lower minimum required QtQml.Models version to 2.2 2021-04-14 15:34:05 +00:00
luigi1111
8444a9563e Merge pull request #3391
142c6bc cmake: prepare v0.17.2.1 (selsta)
2021-04-13 16:29:45 -05:00
luigi1111
2f41a6aecf Merge pull request #3390
f53af12 Wallet: fix transfer with Qt 5.12 (selsta)
2021-04-13 16:29:13 -05:00
luigi1111
61bb6d359f Merge pull request #3386
990e92b without StartupWMClass=monero-wallet-gui gnome-shell users can not add the applications to their favorites (Tobias Strauß)
2021-04-13 16:28:31 -05:00
luigi1111
938a4fada4 Merge pull request #3383
3a37364 cmake: remove typo (selsta)
2021-04-13 16:27:53 -05:00
selsta
142c6bc19f cmake: prepare v0.17.2.1 2021-04-13 16:15:24 +02:00
selsta
f53af12e02 Wallet: fix transfer with Qt 5.12 2021-04-13 07:27:05 +02:00
Tobias Strauß
990e92ba00 without StartupWMClass=monero-wallet-gui gnome-shell users can not add the applications to their favorites 2021-04-09 09:59:35 +02:00
luigi1111
816eeb4647 Merge pull request #3382
ddec66b build: prepare v0.17.2.0 (selsta)
2021-04-08 20:19:25 -05:00
luigi1111
d5b4f43f48 Merge pull request #3381
325e99d SettingsNode: fix icon size (selsta)
2021-04-08 20:10:16 -05:00
luigi1111
4597b4d94d Merge pull request #3380
c789efb workflows: test qml of docker compiled apps (selsta)
2021-04-08 20:09:52 -05:00
luigi1111
691fdac7a4 Merge pull request #3379
76b0b60 docker: build with QtQmlModels plugin (xiphon)
2021-04-08 20:01:08 -05:00
selsta
3a37364741 cmake: remove typo 2021-04-09 01:10:04 +02:00
selsta
c789efbe8a workflows: test qml of docker compiled apps 2021-04-08 01:36:06 +02:00
selsta
ddec66b2ad build: prepare v0.17.2.0 2021-04-08 01:32:54 +02:00
selsta
325e99d202 SettingsNode: fix icon size 2021-04-07 18:14:09 +02:00
xiphon
76b0b6013a docker: build with QtQmlModels plugin 2021-04-06 21:43:55 +00:00
luigi1111
183585653f Merge pull request #3373
6bc9627 SettingsNode: implement multiple remote nodes support (xiphon)
2021-04-06 11:35:23 -05:00
xiphon
6bc9627046 SettingsNode: implement multiple remote nodes support 2021-04-06 11:58:36 +00:00
luigi1111
ba7eeb12c5 Merge pull request #3371
ecc8b8c RemoteNodeEdit: change border color on focus (xiphon)
2021-04-05 21:43:23 -05:00
luigi1111
2354c615d1 Merge pull request #3370
74e1483 Checkbox: handle Enter/Return/Space keys, change border color on focus (xiphon)
2021-04-05 21:31:48 -05:00
luigi1111
3aa530aa84 Merge pull request #3345
6b0cb8d support pruning of new databases (benevanoff)
2021-04-05 21:31:00 -05:00
benevanoff
6b0cb8dadb support pruning of new databases 2021-04-05 18:56:19 -05:00
xiphon
ecc8b8cc99 RemoteNodeEdit: change border color on focus 2021-04-02 16:42:52 +00:00
xiphon
74e1483d0b Checkbox: handle Enter/Return/Space keys, change border color on focus 2021-04-02 12:10:24 +00:00
luigi1111
b3dace6b45 Merge pull request #3363
1e4c0d2 Renamed Norwegian translation file. (Anton Kling)
2021-03-30 14:07:07 -04:00
luigi1111
a17b88d80a Merge pull request #3361
7c881d0 LeftPanel: drop Advanced submenu items, use NavBar instead (xiphon)
2021-03-30 14:06:30 -04:00
luigi1111
1ee06fb78c Merge pull request #3360
d83f147 DaemonManager: start monerod with '--non-interactive' cli option set (xiphon)
2021-03-30 14:06:05 -04:00
luigi1111
ac2e9d370b Merge pull request #3332
a0a9d9e Transfer: implement sending to multiple recipients (xiphon)
2021-03-30 14:05:28 -04:00
xiphon
a0a9d9e31e Transfer: implement sending to multiple recipients 2021-03-23 08:50:10 +00:00
Anton Kling
1e4c0d2e0d Renamed Norwegian translation file. 2021-03-21 00:12:35 +01:00
xiphon
7c881d0100 LeftPanel: drop Advanced submenu items, use NavBar instead 2021-03-20 09:20:09 +00:00
xiphon
d83f14799e DaemonManager: start monerod with '--non-interactive' cli option set 2021-03-19 10:31:43 +00:00
luigi1111
34df4e74d4 Merge pull request #3359
244d622 Docker: Android - switch to debian:stretch, build CMake from source (xiphon)
2021-03-19 01:09:50 -04:00
luigi1111
9593a16cb0 Merge pull request #3357
34d3f65 Navbar: reimplement as a reusable component, drop redundant code (xiphon)
e94ac7c Navbar: move to components (xiphon)
2021-03-19 01:08:50 -04:00
luigi1111
3e8bc1dcd3 Merge pull request #3354
ad19dbb cmake: sync submodule if DEV_MODE=ON (selsta)
2021-03-19 01:08:02 -04:00
luigi1111
8dd06bba5c Merge pull request #3325
92a2ae1 TxConfirmationDialog: implement multiple recipients support, layout fixes (xiphon)
2021-03-19 01:06:59 -04:00
xiphon
244d622818 Docker: Android - switch to debian:stretch, build CMake from source 2021-03-17 12:57:28 +00:00
xiphon
34d3f6575a Navbar: reimplement as a reusable component, drop redundant code 2021-03-17 12:00:17 +00:00
xiphon
e94ac7c75d Navbar: move to components 2021-03-17 11:28:01 +00:00
selsta
ad19dbb440 cmake: sync submodule if DEV_MODE=ON 2021-03-12 01:26:57 +01:00
luigi1111
c18614f96f Merge pull request #3347
40adc6b use preferred colors for DaemonManagerDialog (Ben Evanoff)
2021-03-05 14:01:59 -05:00
luigi1111
16fdedc4d0 Merge pull request #3342
4403387 Translations from Weblate (weblate)
2021-03-05 14:01:20 -05:00
luigi1111
057de959b9 Merge pull request #3330
16fd2b4 LineEdit: fontFamily and inputPadding properties, fix backtab (xiphon)
2021-03-05 13:58:54 -05:00
luigi1111
88d26dbecf Merge pull request #3328
2bb1092 LineEditMulti: right padding, fontFamily, backtab, inline btns vcenter (xiphon)
2021-03-05 13:58:28 -05:00
luigi1111
059af2bb49 Merge pull request #3326
4f10683 OSHelper: Linux - fix isCapsLock memory leak (xiphon)
2021-03-05 13:58:00 -05:00
Weblate
4403387fa4 Translations from Weblate
Translation files updated:

    Found 724 source text(s) (2 new and 722 already existing)
    Removed 2 obsolete entries

Translators:

* Spanish

    * Luis Alejandro Herrera Bolaños
    * ian vatega
    * Miguel Medina
    * Michael Russo
    * Samuel
    * 0x82b
    * kombometralla
    * Tony Nguyen

* Slovak

    * Boris Sipos

* Vietnamese

    * Tabula Rasa

* Italian

    * 8uDD4T
    * Gleb Golov

* Chinese (Traditional)

    * Lafudoci

* Catalan

    * Joan Montané

* Persian

    * Nima Ghotbi

* Esperanto

    * Gilberto F da Silva

* Russian

    * Russian Bear
    * Agent LvM
    * v1docq47

* Japanese

    * Scott Anecito
    * x52fws
    * Lana

* Portuguese (Portugal)

    * Demofrager
    * Ian appel
    * EvolBit

* French

    * Bertrand Jacquin
    * lir4376
    * Loué Marie
    * el00ruobuob

* Czech

    * Michal Vašíček
    * dskch83

* Polish

    * ambercookie

* Greek

    * warraxxx
    * Georgios Apostolopoulos
    * ΚΥΡΙΑΚΟΣ ΚΑΡΑΚΥΡΙΟΣ
    * Marinus Savoritias
    * Iason Andreou
    * Donald A. Iljazi

* Lithuanian

    * Vytas
    * Aivaras Kasperaitis

* Portuguese (Brazil)

    * Renato MB
    * netrik182
    * Mathkamy

* Norwegian Bokmål

    * Allan Nordhøy

* Dutch

    * obit33
    * Edwin den Boer
    * dutchcodes

* Hebrew

    * Ori Levenglick
    * Yan Abu Arab

* German

    * G. Orwell
    * mr
    * Paul Janowitz
    * Nicolas
    * GreenPiece
    * SJ
    * Deleted User
    * Wobole

Signed-off-by: erciccione <erciccione@protonmail.com>
2021-03-03 16:47:09 +01:00
xiphon
92a2ae1a11 TxConfirmationDialog: implement multiple recipients support, layout fixes 2021-03-03 00:53:51 +00:00
Ben Evanoff
40adc6bbbf use preferred colors for DaemonManagerDialog 2021-03-02 14:49:49 -06:00
luigi1111
c073867657 Merge pull request #3331
e25e44b AddressBook: don't alter tx Description on recipient selection (xiphon)
2021-02-18 15:03:27 -05:00
luigi1111
a7f5b44488 Merge pull request #3329
3c27c57 CheckBox: change opacity to 70% in disabled state (xiphon)
2021-02-18 15:02:07 -05:00
luigi1111
8b8948954d Merge pull request #3327
b20b956 Wallet: estimateTransactionFeeAsync - multi dest support (xiphon)
2021-02-18 15:01:14 -05:00
luigi1111
2c763f5014 Merge pull request #3323
f40b10e workflows: add py7zr to macos bundle (selsta)
2021-02-18 14:58:50 -05:00
luigi1111
5d566d1c02 Merge pull request #3321
38f21a3 installers/windows: fix typo in readme.htm (secure-designer)
2021-02-18 14:58:24 -05:00
luigi1111
41520b3a71 Merge pull request #3317
c948c9d README: Update the homebrew install instructions (toh995)
2021-02-18 14:57:31 -05:00
luigi1111
5039de8327 Merge pull request #3315
04d5fa5 Wallet: refactor createTransaction (xiphon)
2021-02-18 14:55:10 -05:00
xiphon
2bb1092472 LineEditMulti: right padding, fontFamily, backtab, inline btns vcenter 2021-02-08 20:30:05 +00:00
xiphon
16fd2b4447 LineEdit: fontFamily and inputPadding properties, fix backtab 2021-02-08 20:29:28 +00:00
xiphon
3c27c570d4 CheckBox: change opacity to 70% in disabled state 2021-02-05 15:32:04 +00:00
xiphon
e25e44b45f AddressBook: don't alter tx Description on recipient selection 2021-02-05 15:28:38 +00:00
xiphon
b20b956e15 Wallet: estimateTransactionFeeAsync - multi dest support 2021-02-04 11:32:30 +00:00
xiphon
4f10683c2c OSHelper: Linux - fix isCapsLock memory leak 2021-02-03 10:41:33 +00:00
selsta
f40b10ea0b workflows: add py7zr to macos bundle 2021-02-02 00:58:19 +01:00
secure-designer
38f21a3e89 installers/windows: fix typo in readme.htm 2021-01-30 20:03:55 +00:00
luigi1111
1f0f21a8e5 Merge pull request #3314
9cf7c7f DaemonManager: enable dns block list in simple mode (selsta)
2021-01-29 00:33:07 -05:00
toh995
c948c9dd7c README: Update the homebrew install instructions 2021-01-27 00:32:49 -08:00
xiphon
04d5fa51cf Wallet: refactor createTransaction 2021-01-25 11:57:49 +00:00
luigi1111
c1573c2c2a Merge pull request #3308
5848aee Navbar: cleanup layout (xiphon)
2021-01-22 15:09:07 -05:00
luigi1111
42fba21c6b Merge pull request #3306
83bb7a9 Makefile: support USE_SINGLE_BUILDDIR=OFF without git installed (xiphon)
2021-01-22 15:08:20 -05:00
luigi1111
04e3ac9200 Merge pull request #3305
d3102b1 DaemonManager: refactoring - drop singleton usage (xiphon)
2021-01-22 15:07:39 -05:00
luigi1111
f9f319d571 Merge pull request #3302
55baa8b main: restrict max window width/height, fix initial window alignment (xiphon)
2021-01-22 15:07:00 -05:00
luigi1111
090dca7848 Merge pull request #3301
18f16d9 SettingsLayout: 'Display wallet name in title bar' option (xiphon)
2021-01-22 15:05:58 -05:00
selsta
9cf7c7f03c DaemonManager: enable dns block list in simple mode
Co-authored-by: xiphon <xiphon@protonmail.com>
2021-01-22 20:50:51 +01:00
luigi1111
d3d26e37d0 Merge pull request #3309
a25b164 SettingsLog: disable daemon command input in Remote Node mode (xiphon)
2021-01-21 23:41:50 -05:00
luigi1111
b79f1b8ff4 Merge pull request #3307
a214003 README: Windows docker builds are reproducible since v0.17.1.9 (xiphon)
2021-01-21 23:40:17 -05:00
luigi1111
2a44f95f16 Merge pull request #3311
45b5150 Utils: fix removeTrailingZeros regression (xiphon)
2021-01-20 22:43:27 -05:00
luigi1111
dc0ce27963 Merge pull request #3310
bd21914 README: MacOS - add libsodium monero dependency (xiphon)
2021-01-20 22:42:54 -05:00
luigi1111
378da8093d Merge pull request #3304
93b2231 Subaddress: log account subaddresses refresh error (xiphon)
2021-01-20 22:42:01 -05:00
luigi1111
5261f79e9f Merge pull request #3298
f3a24d9 main: fix kraken fiat api (selsta)
2021-01-20 22:41:21 -05:00
luigi1111
1659c7fd1a Merge pull request #3295
07a9b0e workflows: print sha256sum of windows gui (selsta)
2021-01-20 22:40:50 -05:00
luigi1111
ec7bc577d6 Merge pull request #3292
e9b894d Transfer: implement 'Grab QR code from screen' functionality (xiphon)
2021-01-20 22:40:14 -05:00
luigi1111
3f4de99be4 Merge pull request #3289
7c32fe6 remove copy qr uri to clipboard button (Ben Evanoff)
2021-01-20 22:39:43 -05:00
luigi1111
1a11f2b192 Merge pull request #3215
cedfa5a History: search by receiving address, receiving address label, address book label (rating89us)
2021-01-20 22:39:03 -05:00
luigi1111
e21d7be725 Merge pull request #3168
baa0ffa WizardRestoreWallet1: add view-only option in placeholder of private spend key (rating89us)
2021-01-20 22:38:24 -05:00
luigi1111
4098352faf Merge pull request #3164
1373e70 account/receive: highlight background and text of selected item (rating89us)
2021-01-20 22:37:24 -05:00
xiphon
a25b164cd5 SettingsLog: disable daemon command input in Remote Node mode 2021-01-19 09:42:14 +00:00
xiphon
45b5150487 Utils: fix removeTrailingZeros regression 2021-01-16 03:31:23 +00:00
xiphon
bd21914b9b README: MacOS - add libsodium monero dependency 2021-01-15 11:34:04 +00:00
xiphon
5848aee1c3 Navbar: cleanup layout 2021-01-15 10:09:44 +00:00
xiphon
a214003559 README: Windows docker builds are reproducible since v0.17.1.9 2021-01-15 00:01:34 +00:00
xiphon
83bb7a9297 Makefile: support USE_SINGLE_BUILDDIR=OFF without git installed
# Conflicts:
#	Makefile
2021-01-14 23:21:33 +00:00
xiphon
d3102b1cc5 DaemonManager: refactoring - drop singleton usage 2021-01-14 19:14:22 +00:00
xiphon
93b22311e3 Subaddress: log account subaddresses refresh error 2021-01-14 08:19:13 +00:00
xiphon
55baa8b695 main: restrict max window width/height, fix initial window alignment 2021-01-13 03:14:57 +00:00
xiphon
18f16d9ebd SettingsLayout: 'Display wallet name in title bar' option 2021-01-12 12:59:28 +00:00
xiphon
e9b894da16 Transfer: implement 'Grab QR code from screen' functionality 2021-01-11 01:35:54 +00:00
selsta
f3a24d92a4 main: fix kraken fiat api 2021-01-11 00:29:48 +01:00
selsta
07a9b0e6f7 workflows: print sha256sum of windows gui 2021-01-08 05:33:01 +01:00
Alexander Blair
3ca5f10fa8 Merge pull request #3294
f7b81797 build: prepare v0.17.1.9 (selsta)
2021-01-07 18:00:05 -08:00
selsta
f7b817972f build: prepare v0.17.1.9 2021-01-08 02:56:28 +01:00
Alexander Blair
9399839d96 Merge pull request #3287
72ab846b installer: remove high dpi shortcut (selsta)
2021-01-03 18:46:20 -08:00
Alexander Blair
51a4d1f629 Merge pull request #3283
5662841d docker: Windows - use Qt 5.15.2 (xiphon)
2021-01-03 18:45:48 -08:00
Alexander Blair
bbe3716542 Merge pull request #3277
8d4cda03 QR-Code-scanner: integrate QUIRC library, implement QrDecoder, drop ZBar (xiphon)
2021-01-03 18:45:26 -08:00
Ben Evanoff
7c32fe6b5c remove copy qr uri to clipboard button 2021-01-02 14:34:59 -06:00
selsta
72ab846be5 installer: remove high dpi shortcut
Qt 5.15 supports high DPI natively
2021-01-01 05:13:36 +01:00
Alexander Blair
8e6a2cde0f Merge pull request #3285
c34d4ee9 build: prepare v0.17.1.8 (selsta)
2020-12-30 01:53:31 -08:00
selsta
c34d4ee97c build: prepare v0.17.1.8 2020-12-30 10:37:36 +01:00
Alexander Blair
0194cf8f22 Merge pull request #3280
ba4d6993 LineEdit: fix padding, fix inline buttons layout, multiple btns support (xiphon)
2020-12-28 11:41:47 -08:00
Alexander Blair
ad06fcc79e Merge pull request #3271
78f5360a Transfer: support pasting amount with whitespaces (xiphon)
2020-12-28 11:41:38 -08:00
Alexander Blair
7d4b82c691 Merge pull request #3270
a1fdffca WizardRestoreWallet1: fix mnemonic seed placeholder (xiphon)
2020-12-28 11:41:15 -08:00
Alexander Blair
69f989d617 Merge pull request #3281
3f0bbfb6 Transfer: updateFromQrCode - fix extra space (empty recipient name) (xiphon)
2020-12-26 13:47:31 -08:00
Alexander Blair
0f3df860e3 Merge pull request #3275
772b828b cmake: MacOS - detect ICU link directory (required by Boost.Locale) (xiphon)
2020-12-26 13:45:24 -08:00
xiphon
5662841d22 docker: Windows - use Qt 5.15.2 2020-12-26 08:37:45 +00:00
xiphon
3f0bbfb6aa Transfer: updateFromQrCode - fix extra space (empty recipient name) 2020-12-24 10:07:08 +00:00
xiphon
ba4d6993b7 LineEdit: fix padding, fix inline buttons layout, multiple btns support 2020-12-24 08:20:38 +00:00
xiphon
8d4cda030e QR-Code-scanner: integrate QUIRC library, implement QrDecoder, drop ZBar 2020-12-23 15:08:42 +00:00
xiphon
772b828b67 cmake: MacOS - detect ICU link directory (required by Boost.Locale) 2020-12-20 20:00:23 +00:00
xiphon
78f5360af2 Transfer: support pasting amount with whitespaces 2020-12-14 11:59:45 +00:00
xiphon
a1fdffcabe WizardRestoreWallet1: fix mnemonic seed placeholder 2020-12-13 11:31:14 +00:00
luigi1111
fed00a5662 Merge pull request #3269
14a4777 build: prepare v0.17.1.7 (selsta)
2020-12-12 22:16:13 -06:00
luigi1111
79f2843b09 Merge pull request #3268
cebb789 Wallet: fix initialization flag handling (xiphon)
2020-12-12 22:15:10 -06:00
selsta
14a477748e build: prepare v0.17.1.7 2020-12-13 05:11:20 +01:00
xiphon
cebb78979c Wallet: fix initialization flag handling 2020-12-12 11:22:52 +00:00
Alexander Blair
df771470c2 Merge pull request #3267
90e9968d main: get back "Sending transaction ..." splash (xiphon)
2020-12-10 18:02:11 -08:00
Alexander Blair
e359c60f00 Merge pull request #3266
841d0e01 Utils: removeTrailingZeros - handle .0* decimal part (i.e. 1.00000) (xiphon)
2020-12-10 18:01:38 -08:00
Alexander Blair
53335a8487 Merge pull request #3264
2feee9e9 workflows: shorten name (selsta)
2020-12-10 18:01:19 -08:00
Alexander Blair
3f64312283 Merge pull request #3262
486ba055 main: disable QML cache (xiphon)
2020-12-10 17:59:09 -08:00
Alexander Blair
897946af13 Merge pull request #3260
ae8394e5 main: Linux - fix missing askDesktopShortcut setting (xiphon)
2020-12-10 17:58:42 -08:00
Alexander Blair
e90626e05a Merge pull request #3259
fa79e609 workflows: bump docker cache action (selsta)
2020-12-10 17:58:06 -08:00
xiphon
90e9968dcb main: get back "Sending transaction ..." splash 2020-12-10 23:59:12 +00:00
xiphon
841d0e01dc Utils: removeTrailingZeros - handle .0* decimal part (i.e. 1.00000) 2020-12-10 23:00:39 +00:00
selsta
2feee9e956 workflows: shorten name 2020-12-10 04:01:43 +01:00
xiphon
486ba05526 main: disable QML cache 2020-12-09 14:29:02 +00:00
xiphon
ae8394e5f8 main: Linux - fix missing askDesktopShortcut setting 2020-12-08 01:02:00 +00:00
selsta
fa79e609e1 workflows: bump docker cache action 2020-12-07 19:22:37 +01:00
luigi1111
cc352e4913 Merge pull request #3258
903539b build: prepare v0.17.1.6 (selsta)
2020-12-07 10:37:31 -06:00
selsta
903539bd30 build: prepare v0.17.1.6 2020-12-07 17:34:40 +01:00
rating89us
01c3c19653 SuccessfulTxDialog: add View progress button 2020-12-04 12:53:40 +01:00
Alexander Blair
af0b3142a0 Merge pull request #3255
606dbed4 README: update Linux Docker build instructions (xiphon)
2020-12-03 12:24:50 -08:00
Alexander Blair
6fe41e6f55 Merge pull request #3254
0d5d2dbf Transfer: fix focus, cycle focus between Address, Amount and Send (xiphon)
2020-12-03 12:24:22 -08:00
Alexander Blair
2a6ad67f77 Merge pull request #3253
110b09ef TxConfirmationDialog: fix keys handling (xiphon)
2020-12-03 12:23:58 -08:00
Alexander Blair
5652284572 Merge pull request #3252
0fdf81bc SuccessfulTxDialog: fix keys handling (xiphon)
2020-12-03 12:23:24 -08:00
Alexander Blair
2eeeadfd10 Merge pull request #3251
ea1fee2f main: Linux - ask to create desktop entry on the first start (xiphon)
2020-12-03 12:23:02 -08:00
xiphon
0d5d2dbf5e Transfer: fix focus, cycle focus between Address, Amount and Send 2020-12-03 19:40:15 +00:00
xiphon
606dbed4a0 README: update Linux Docker build instructions 2020-12-03 00:55:29 +00:00
Alexander Blair
301b20d19c Merge pull request #3249
ef54a32d workflows: print hash for reproducible builds (selsta)
2020-12-01 14:25:22 -08:00
Alexander Blair
f6196d48ab Merge pull request #3169
cd3a0f85 Restore: display red border if invalid seed (rating89us)
2020-12-01 14:25:01 -08:00
xiphon
110b09efba TxConfirmationDialog: fix keys handling 2020-12-01 16:25:35 +00:00
xiphon
0fdf81bc92 SuccessfulTxDialog: fix keys handling 2020-12-01 16:19:56 +00:00
xiphon
ea1fee2f5f main: Linux - ask to create desktop entry on the first start 2020-11-30 15:36:19 +00:00
selsta
ef54a32de0 workflows: print hash for reproducible builds 2020-11-26 10:34:19 +01:00
luigi1111
96f9c11320 Merge pull request #3248
2e81ea2 build: prepare v0.17.1.5 (selsta)
2020-11-25 17:24:18 -06:00
luigi1111
4a5b191f7f Merge pull request #3247
5150945 workflows: upload source archive artifact (xiphon)
2020-11-25 17:23:24 -06:00
luigi1111
148d487988 Merge pull request #3245
ec8cd13 portable: use portable storage folder to store QML disk cache (xiphon)
2020-11-25 17:22:38 -06:00
luigi1111
7b137f7682 Merge pull request #3097
56722e4 AddressBook: fix Qt warning (selsta)
2020-11-25 17:21:41 -06:00
selsta
2e81ea2c09 build: prepare v0.17.1.5 2020-11-25 16:36:37 +01:00
xiphon
5150945414 workflows: upload source archive artifact 2020-11-25 13:27:59 +00:00
xiphon
ec8cd137cc portable: use portable storage folder to store QML disk cache 2020-11-25 10:50:56 +00:00
Alexander Blair
d5365298d2 Merge pull request #3244
2d20bfd7 cmake: find libgcrypt include directory (xiphon)
2020-11-24 11:36:29 -08:00
Alexander Blair
30bf63b4b8 Merge pull request #3237
46cea8db History: fix sortCollapsedIcon rotation (xiphon)
2020-11-24 11:36:05 -08:00
Alexander Blair
e8ee55a502 Merge pull request #3236
b4c0cb65 Makefile: refactor USE_SINGLE_BUILDDIR=OFF builddir path (xiphon)
2020-11-24 11:35:45 -08:00
Alexander Blair
212fa083e2 Merge pull request #3231
56e61148 wizard: move language related settings to PersistentSettings (xiphon)
2020-11-24 11:35:24 -08:00
Alexander Blair
3daf16e65d Merge pull request #3229
45bfcfd2 workflows: build and upload macOS bundle (selsta)
2020-11-24 11:35:05 -08:00
Alexander Blair
abfaac9772 Merge pull request #3227
ff201af7 docker: Linux - use Qt 5.15.2 (xiphon)
2020-11-24 11:34:39 -08:00
Alexander Blair
28e6558a48 Merge pull request #3224
ef2be82c cmake: use QT_INSTALL_PREFIX instead of CMAKE_PREFIX_PATH (xiphon)
2020-11-24 11:34:15 -08:00
xiphon
2d20bfd7ac cmake: find libgcrypt include directory 2020-11-24 15:41:41 +00:00
selsta
45bfcfd2e9 workflows: build and upload macOS bundle 2020-11-24 01:00:26 +01:00
xiphon
46cea8db6b History: fix sortCollapsedIcon rotation 2020-11-15 02:50:18 +00:00
xiphon
b4c0cb65de Makefile: refactor USE_SINGLE_BUILDDIR=OFF builddir path 2020-11-15 02:45:28 +00:00
xiphon
56e611480a wizard: move language related settings to PersistentSettings 2020-11-12 22:47:07 +00:00
xiphon
ff201af778 docker: Linux - use Qt 5.15.2 2020-11-12 13:51:36 +00:00
xiphon
ef2be82c21 cmake: use QT_INSTALL_PREFIX instead of CMAKE_PREFIX_PATH 2020-11-10 02:00:07 +00:00
luigi1111
6fce5c7a84 Merge pull request #3223
1571662 build: prepare v0.17.1.4 (selsta)
2020-11-09 11:52:44 -06:00
selsta
157166269b build: prepare v0.17.1.4 2020-11-09 18:41:19 +01:00
luigi1111
caa273afea Merge pull request #3221
19a6f39 Revert 'docker: Linux - use Qt 5.15.2' (selsta)
2020-11-09 11:35:15 -06:00
luigi1111
d58ce3f599 Merge pull request #3217
18c964a docker: Android - use Qt 5.15.2, drop QT_PREFIX env variable (xiphon)
2020-11-09 11:32:46 -06:00
selsta
19a6f399f3 Revert "docker: Linux - use Qt 5.15.2"
This reverts commit 1adf58793f.
2020-11-09 15:37:46 +01:00
xiphon
18c964afca docker: Android - use Qt 5.15.2, drop QT_PREFIX env variable 2020-11-07 23:05:26 +00:00
luigi1111
158e0c3523 Merge pull request #3214
f3ddf52 build: prepare v0.17.1.3 (selsta)
2020-11-07 13:19:54 -06:00
luigi1111
770a7a344b Merge pull request #3204
e86fa3e cmake: workaround for MacOS '-framework' pkg-config flags issue (xiphon)
2020-11-07 13:17:21 -06:00
selsta
f3ddf525a4 build: prepare v0.17.1.3 2020-11-07 20:11:59 +01:00
rating89us
cedfa5aabb History: search by receiving address, receiving address label, address book label 2020-11-07 20:04:12 +01:00
luigi1111
df2b85e7ee Merge pull request #3200
5702bde workflows: upload Windows and Linux static binaries (xiphon)
2020-11-06 19:10:01 -06:00
xiphon
e86fa3e4fb cmake: workaround for MacOS '-framework' pkg-config flags issue 2020-11-06 13:51:02 +00:00
xiphon
5702bdef39 workflows: upload Windows and Linux static binaries 2020-11-06 13:48:08 +00:00
Alexander Blair
c7213abb9a Merge pull request #3212
be177d62 workflows: bump msys2 action to v2 (selsta)
2020-11-06 05:11:53 -08:00
Alexander Blair
5ee363f9f3 Merge pull request #3210
919b2e4f WizardLanguage: introduce LanguageButton component, replace the btn (xiphon)
8b9580d6 WizardHome: display icon + language instead of change language button (xiphon)
2020-11-06 05:11:29 -08:00
Alexander Blair
3e01647744 Merge pull request #3209
6f5bacab Logger: print to stdout till log file path gets initialized (xiphon)
2020-11-06 05:11:09 -08:00
Alexander Blair
f491b41100 Merge pull request #3205
6fab741f SettingsInfo: add selected node to info page (selsta)
2020-11-06 05:10:52 -08:00
Alexander Blair
a564abbe6b Merge pull request #3202
0997b38e SettingsWallet: fix warning (selsta)
2020-11-06 05:09:46 -08:00
Alexander Blair
149732af3a Merge pull request #3203
c2977ac4 DEPLOY: new hidapi release available (selsta)
2020-11-06 05:09:31 -08:00
Alexander Blair
2bb6da5f09 Merge pull request #3201
1adf5879 docker: Linux - use Qt 5.15.2 (xiphon)
2020-11-06 05:08:40 -08:00
Alexander Blair
11370c50eb Merge pull request #3199
d79f8e8b Makefile: MANUAL_SUBMODULES support (OFF by default) (xiphon)
2020-11-06 05:06:23 -08:00
Alexander Blair
0ae4677a25 Merge pull request #3198
a817bfba QThreadPool: adjust max threads count (4) (xiphon)
2020-11-06 05:06:10 -08:00
Alexander Blair
1c2879bda3 Merge pull request #3188
9fa597bb workflows: docker android apk build (xiphon)
2020-11-06 05:05:45 -08:00
selsta
0997b38e1e SettingsWallet: fix warning 2020-11-05 02:39:47 +01:00
selsta
be177d6205 workflows: bump msys2 action to v2 2020-11-05 00:32:16 +01:00
xiphon
919b2e4f3a WizardLanguage: introduce LanguageButton component, replace the btn 2020-11-04 03:10:02 +00:00
xiphon
8b9580d621 WizardHome: display icon + language instead of change language button
Co-authored-by: rating89us <45968869+rating89us@users.noreply.github.com>
2020-11-04 02:10:37 +00:00
xiphon
6f5bacabfd Logger: print to stdout till log file path gets initialized 2020-11-04 01:42:19 +00:00
selsta
6fab741f2e SettingsInfo: add selected node to info page 2020-11-02 01:26:40 +01:00
selsta
c2977ac410 DEPLOY: new hidapi release available 2020-11-01 00:25:08 +01:00
xiphon
1adf58793f docker: Linux - use Qt 5.15.2 2020-10-30 22:20:35 +00:00
xiphon
9fa597bb58 workflows: docker android apk build 2020-10-30 22:16:20 +00:00
xiphon
d79f8e8b17 Makefile: MANUAL_SUBMODULES support (OFF by default) 2020-10-30 03:05:06 +00:00
xiphon
a817bfba05 QThreadPool: adjust max threads count (4) 2020-10-30 02:58:38 +00:00
Alexander Blair
04429e85e6 Merge pull request #3159
9d2f083a repo: cleanup qmake (selsta)
2020-10-28 01:22:38 -07:00
Alexander Blair
e52d86d442 Merge pull request #3195
153154f4 cmake: Linux - Qt 5.15 installer support (xiphon)
2020-10-28 00:44:03 -07:00
Alexander Blair
7f164e739a Merge pull request #3194
9b18344d main: don't override user-provided QT_QPA_PLATFORM env variable (xiphon)
2020-10-28 00:43:43 -07:00
Alexander Blair
43214de7d0 Merge pull request #3193
ee013705 cmake: omit Qt5Widgets and Qt5Network modules (xiphon)
2020-10-28 00:43:18 -07:00
Alexander Blair
0cf683a6cf Merge pull request #3192
1b0f274a docker: Linux - CFLAGS and CXXFLAGS env variables (xiphon)
2020-10-28 00:42:59 -07:00
Alexander Blair
c9fd9634ee Merge pull request #3187
cd054f6c docker: fix Android build, update to Qt 5.15, README.md build steps (xiphon)
d6cb9b6c docker: move Android Dockerfile to root (xiphon)
2020-10-28 00:42:36 -07:00
Alexander Blair
ddcee95b88 Merge pull request #3186
fe730114 cmake: Android cross compilation support (xiphon)
2020-10-28 00:42:16 -07:00
Alexander Blair
299067a273 Merge pull request #3185
852378ac cmake: ZBar - Android support, fix find_package without pkg-config (xiphon)
2020-10-28 00:40:22 -07:00
Alexander Blair
08635e3030 Merge pull request #3163
25ca0811 transfer: new TxConfirmationDialog (rating89us)
2020-10-28 00:39:43 -07:00
Alexander Blair
fdff5f68dd Merge pull request #3160
9da52f23 SettingsWallet: disable creating view-only wallet for Ledger (rating89us)
2020-10-28 00:37:30 -07:00
xiphon
9b18344d23 main: don't override user-provided QT_QPA_PLATFORM env variable 2020-10-28 00:57:30 +00:00
xiphon
153154f484 cmake: Linux - Qt 5.15 installer support 2020-10-28 00:55:06 +00:00
xiphon
ee0137056d cmake: omit Qt5Widgets and Qt5Network modules 2020-10-28 00:44:58 +00:00
xiphon
1b0f274aed docker: Linux - CFLAGS and CXXFLAGS env variables 2020-10-27 10:59:41 +00:00
xiphon
cd054f6c26 docker: fix Android build, update to Qt 5.15, README.md build steps
Co-authored-by: takel
2020-10-26 11:24:45 +00:00
xiphon
d6cb9b6c85 docker: move Android Dockerfile to root 2020-10-22 04:13:19 +00:00
xiphon
852378accb cmake: ZBar - Android support, fix find_package without pkg-config 2020-10-21 20:48:38 +00:00
xiphon
fe73011422 cmake: Android cross compilation support 2020-10-21 20:29:17 +00:00
selsta
9d2f083a97 repo: cleanup qmake 2020-10-20 02:01:44 +02:00
Alexander Blair
33afd0bb83 Merge pull request #3180
954c9725 repo: prepare v0.17.1.1 (selsta)
2020-10-19 00:14:37 -07:00
Alexander Blair
a165a14519 Merge pull request #3181
6ee5effc Wallet: fix different signedness comparison (-Werror=sign-compare) (xiphon)
2020-10-19 00:14:12 -07:00
Alexander Blair
33e1801c57 Merge pull request #3175
e5b0837c SettingsNode: ignore selecting the same mode twice (xiphon)
2020-10-19 00:13:24 -07:00
Alexander Blair
fac3fcb518 Merge pull request #3174
a73ae625 DaemonManager: set out-peers to 16 in simple mode / bootstrap (selsta)
2020-10-19 00:12:52 -07:00
Alexander Blair
8457055f08 Merge pull request #3172
44df1bcc cmake: fix install targets (Bertrand Jacquin)
2020-10-19 00:12:31 -07:00
Alexander Blair
e01c847fde Merge pull request #3171
0a0dbf88 WizardRestoreWallet1: fix "wallet name" check in keys mode (selsta)
2020-10-19 00:12:05 -07:00
Alexander Blair
bedf04d08a Merge pull request #3161
b932df85 Wallet: interrupt refresh thread on wallet close (xiphon)
2020-10-19 00:11:35 -07:00
Alexander Blair
83da709436 Merge pull request #3158
79ee8934 History: fix failed and pending tx statuses (xiphon)
2020-10-19 00:11:09 -07:00
Alexander Blair
f51b0d7d0c Merge pull request #3156
1b2d9408 Makefile: add 'release-linux-armv8' target (xiphon)
2020-10-19 00:10:31 -07:00
Alexander Blair
1f9d60602a Merge pull request #3155
db4273ee NetworkStatusItem: 'starting/stopping the node' status (no splash) (xiphon)
2020-10-19 00:10:19 -07:00
Alexander Blair
7a285b3613 Merge pull request #3136
05733c14 Transfer: fix help text (white theme) (selsta)
2020-10-19 00:09:52 -07:00
xiphon
6ee5effc15 Wallet: fix different signedness comparison (-Werror=sign-compare)
Co-authored-by: Bertrand Jacquin <bertrand@jacquin.bzh>
2020-10-18 20:58:40 +00:00
selsta
954c972530 repo: prepare v0.17.1.1 2020-10-18 18:01:44 +02:00
rating89us
cd3a0f85a6 Restore: display red border if invalid seed 2020-10-18 17:06:34 +02:00
xiphon
e5b0837c8e SettingsNode: ignore selecting the same mode twice 2020-10-18 02:53:57 +00:00
selsta
a73ae62526 DaemonManager: set out-peers to 16 in simple mode / bootstrap 2020-10-18 02:07:29 +02:00
Bertrand Jacquin
44df1bccfc cmake: fix install targets
Binary should be installed in bin/ relative to CMAKE_INSTALL_PREFIX,
prior to this commit, monero-wallet-gui is installed in usr/ instead of
usr/bin

  -- Installing: image/usr/monero-wallet-gui

With this comment, file is installed in the right location:

  -- Installing: image/usr/bin/monero-wallet-gui

See: https://cmake.org/cmake/help/latest/command/install.html
2020-10-17 23:08:21 +01:00
selsta
0a0dbf8853 WizardRestoreWallet1: fix "wallet name" check in keys mode 2020-10-17 20:23:29 +02:00
rating89us
1373e709d6 account/receive: highlight background and text of selected item 2020-10-17 20:19:50 +02:00
rating89us
baa0ffa5f9 WizardRestoreWallet1: add view-only option in placeholder of private spend key 2020-10-17 17:53:52 +02:00
rating89us
25ca081109 transfer: new TxConfirmationDialog 2020-10-17 12:11:13 +02:00
xiphon
b932df85fd Wallet: interrupt refresh thread on wallet close 2020-10-17 02:58:23 +00:00
rating89us
9da52f2387 SettingsWallet: disable creating view-only wallet for Ledger 2020-10-17 03:10:33 +02:00
xiphon
79ee893499 History: fix failed and pending tx statuses 2020-10-15 10:23:06 +00:00
xiphon
1b2d940850 Makefile: add 'release-linux-armv8' target 2020-10-14 15:51:29 +00:00
xiphon
db4273ee82 NetworkStatusItem: 'starting/stopping the node' status (no splash) 2020-10-14 02:26:56 +00:00
luigi1111
cb1f3ad0ce Merge pull request #3153
701f063 build: prepare v0.17.1.0 (selsta)
2020-10-13 12:41:38 -05:00
luigi1111
c81a842b6e Merge pull request #3150
6ed5369 cmake: set CMAKE_SKIP_RPATH on Linux to fix empty RPATH token issue (xiphon)
2020-10-13 12:40:39 -05:00
luigi1111
26ad7b78b5 Merge pull request #3147
4661167 onTransactionCommitted: don't show informationPopup on success (xiphon)
2020-10-13 12:39:34 -05:00
luigi1111
381442a138 Merge pull request #3145
39d9d7d Wallet: rework wallet refreshing (xiphon)
2020-10-13 12:38:40 -05:00
luigi1111
7cb24f50b8 Merge pull request #3143
8ad5fd4 main: wizard: console.log fixes (selsta)
2020-10-13 12:37:55 -05:00
luigi1111
8c5891e28a Merge pull request #3141
3c28ece Logger: runtime log config, no logs till a user selects wallet mode (xiphon)
2020-10-13 12:36:49 -05:00
luigi1111
61c0e15404 Merge pull request #3138
b76b43d README: minor sponsorships fixes (selsta)
2020-10-13 12:35:58 -05:00
luigi1111
b03714ec45 Merge pull request #3131
21d8c09 cmake: remove unused code (xiphon)
2020-10-13 12:35:12 -05:00
selsta
701f063797 build: prepare v0.17.1.0 2020-10-13 18:28:23 +02:00
xiphon
6ed5369829 cmake: set CMAKE_SKIP_RPATH on Linux to fix empty RPATH token issue 2020-10-11 19:51:05 +00:00
xiphon
4661167734 onTransactionCommitted: don't show informationPopup on success 2020-10-10 14:26:20 +00:00
xiphon
39d9d7d071 Wallet: rework wallet refreshing 2020-10-09 14:11:05 +00:00
selsta
8ad5fd4c76 main: wizard: console.log fixes 2020-10-08 21:24:55 +02:00
xiphon
3c28ecef93 Logger: runtime log config, no logs till a user selects wallet mode 2020-10-08 18:28:07 +00:00
luigi1111
d3943ca2a9 Merge pull request #3130
13ca3ee KeysFiles: QDirIterator is initially located before the first entry (xiphon)
2020-10-08 10:34:53 -05:00
luigi1111
73f76cec99 Merge pull request #3129
4cea7e1 docker: Linux - update freetype2 git source (xiphon)
2020-10-08 10:32:37 -05:00
selsta
b76b43da6c README: minor sponsorships fixes 2020-10-08 01:46:06 +02:00
selsta
05733c14b7 Transfer: fix help text (white theme) 2020-10-07 12:59:33 +02:00
xiphon
21d8c096ff cmake: remove unused code 2020-10-06 13:21:37 +00:00
xiphon
13ca3eeb84 KeysFiles: QDirIterator is initially located before the first entry 2020-10-05 12:36:00 +00:00
xiphon
4cea7e1647 docker: Linux - update freetype2 git source 2020-10-04 23:48:33 +00:00
luigi1111
afc2e846fd Merge pull request #3123
0b7cf4a cmake: update version (selsta)
2020-10-04 17:54:22 -05:00
luigi1111
c601313943 Merge pull request #3127
ff51dd0 History: fix amount handling for txex sent to the same account (xiphon)
2020-10-04 17:52:47 -05:00
luigi1111
73c0522a56 Merge pull request #3126
4768968 Translations from Weblate (erciccione)
2020-10-04 17:51:41 -05:00
luigi1111
06a66e3a00 Merge pull request #3122
caff619 workflows: don't brew update (selsta)
2020-10-04 17:43:16 -05:00
luigi1111
12355deb94 Merge pull request #3121
e2a82c9 Transfer: create SuccessfulTxDialog (rating89us)
2020-10-04 17:41:44 -05:00
luigi1111
cbbbf30198 Merge pull request #3120
7af0999 LeftPanel: add missing emptyString (selsta)
2020-10-04 17:40:10 -05:00
luigi1111
40e108eb2b Merge pull request #3026
4208b66 WizardModeSelection: optional 'Portable mode' feature support (xiphon)
2020-10-04 17:39:09 -05:00
luigi1111
cdfe9f338f Merge pull request #3025
f5c5df7 main: accountsDir runtime configuration support (xiphon)
2020-10-04 17:38:14 -05:00
luigi1111
adb04cef71 Merge pull request #3023
1aa98c3 MoneroSettings: portable mode, CWD relative 'monero-storage' dir (xiphon)
2020-10-04 17:37:21 -05:00
luigi1111
1123dd7046 Merge pull request #2992
f1fdbee history: 'in'/'to' fields + address labels + width/height + fix amounts (rating89us)
2020-10-04 17:35:45 -05:00
rating89us
f1fdbee25d history: "in"/"to" fields + address labels + width/height + fix amounts 2020-10-02 20:38:03 +02:00
xiphon
ff51dd08d3 History: fix amount handling for txex sent to the same account 2020-10-02 11:12:20 +00:00
erciccione
476896864c Translations from Weblate
Credits:

Spanish

    Michael Russo
    G.T.S.
    kombometralla
    CharlesCrisco
    nemecis rojas
    porokon7
    Viktor

Italian

    78carla
    erciccione
    Gleb Golov
    Anonymous

Russian

    Agent LvM
    solevoy-psih
    v1docq47
    Anonymous
    TheFuzzStone
    Russian Bear
    translator133

Portuguese (Portugal)

    Peter J. Mello
    EvolBit
    Anonymous

French

    icuntcode
    Bertrand Jacquin
    el00ruobuob
    Anonymous

Hindi

    srk raidu

Polish

    To Ja
    Anonymous

Portuguese (Brazil)

    vp11
    netrik182

Dutch

    Jaimie
    Jonathan Heirbaut
    Marcus
    obit33

German

    Paul Janowitz
    SJ
    Wobole
    Anonymous
    GreenPiece
2020-10-01 10:59:38 +02:00
selsta
0b7cf4a544 cmake: update version 2020-09-30 02:52:10 +02:00
selsta
caff6193f2 workflows: don't brew update 2020-09-30 01:58:57 +02:00
rating89us
e2a82c9037 Transfer: create SuccessfulTxDialog 2020-09-30 00:30:57 +02:00
luigi1111
28ee4164cd Merge pull request #3118
0d8e363 README: update to cmake (selsta)
2020-09-29 12:50:12 -05:00
selsta
7af099958e LeftPanel: add missing emptyString 2020-09-29 15:18:48 +02:00
selsta
0d8e363407 README: update to cmake 2020-09-29 15:01:03 +02:00
Alexander Blair
7306b84d41 Merge pull request #3117
67c47d46 DEPLOY: update with cmake (selsta)
2020-09-28 19:10:53 -07:00
Alexander Blair
9d25f7230b Merge pull request #3113
5b5c0ac6 workflows: cache docker build environment images (xiphon)
2020-09-28 19:10:26 -07:00
Alexander Blair
b28f2dae33 Merge pull request #3112
4c257aff docker: reduce Linux build environment image size (xiphon)
2020-09-28 19:09:58 -07:00
Alexander Blair
619b2d7947 Merge pull request #3111
be1f63f9 PasswordDialog: configurable Ok btn text/icon, non-primary Cancel (xiphon)
2020-09-28 19:09:32 -07:00
Alexander Blair
a23c49e5b6 Merge pull request #3110
9df9cb8d build: enable USE_SINGLE_BUILDDIR by default, OFF to disable (selsta)
2020-09-28 19:09:05 -07:00
Alexander Blair
61fc38b29c Merge pull request #3091
1b4c2170 build: set submodule to v0.17.0.1 (selsta)
2020-09-28 19:07:39 -07:00
Alexander Blair
22386aa7e1 Merge pull request #3089
0fcaadae main: command line option for socks5 proxy (selsta)
2020-09-28 19:06:58 -07:00
xiphon
f5c5df7b67 main: accountsDir runtime configuration support 2020-09-28 13:54:02 +00:00
xiphon
1aa98c3cfd MoneroSettings: portable mode, CWD relative 'monero-storage' dir 2020-09-28 13:50:01 +00:00
selsta
67c47d468c DEPLOY: update with cmake 2020-09-28 03:28:51 +02:00
selsta
0fcaadae53 main: command line option for socks5 proxy 2020-09-28 01:57:47 +02:00
xiphon
5b5c0ac658 workflows: cache docker build environment images 2020-09-26 14:26:53 +00:00
selsta
1b4c21700f build: set submodule to v0.17.0.1 2020-09-26 02:54:11 +02:00
selsta
9df9cb8da7 build: enable USE_SINGLE_BUILDDIR by default, OFF to disable 2020-09-26 02:15:58 +02:00
luigi1111
a32d39cc96 Merge pull request #3108
b12ec3b QR-Code-generator: remove from repo, use monero qrcodegen (selsta)
2020-09-25 18:27:48 -05:00
luigi1111
8ef7b7c89a Merge pull request #3106
839167a workflows: add static docker build (selsta)
2020-09-25 18:26:45 -05:00
luigi1111
1ef96f9544 Merge pull request #3105
b9e74f6 cmake: support ARCH and BUILD_64 overriding (xiphon)
2020-09-25 18:25:15 -05:00
luigi1111
d413b16d34 Merge pull request #3103
87400e7 cmake: add deploy target (mac / windows) (selsta)
2020-09-25 18:24:24 -05:00
luigi1111
37fea0ee33 Merge pull request #3101
9123988 main: Tails - enable 127.0.0.1:9050 socks5 proxy by default (xiphon)
2020-09-25 18:23:35 -05:00
selsta
b12ec3b0f0 QR-Code-generator: remove from repo, use monero qrcodegen 2020-09-25 01:37:29 +02:00
xiphon
4c257aff67 docker: reduce Linux build environment image size 2020-09-24 15:40:15 +00:00
xiphon
be1f63f93d PasswordDialog: configurable Ok btn text/icon, non-primary Cancel
Co-authored-by: rating89us <45968869+rating89us@users.noreply.github.com>
2020-09-24 14:32:52 +00:00
selsta
839167aff5 workflows: add static docker build 2020-09-24 08:25:04 +02:00
selsta
87400e781e cmake: add deploy target (mac / windows) 2020-09-24 04:28:53 +02:00
luigi1111
98ce87a572 Merge pull request #3102
270b86b workflows: remove qmake (selsta)
2020-09-22 10:43:38 -05:00
luigi1111
d555ba55a9 Merge pull request #3099
2d464a1 docker: Windows static build (cross-compilation from Linux) (xiphon)
2020-09-22 10:42:40 -05:00
luigi1111
1387fd4f9c Merge pull request #3098
6c67a39 README: update sponsors (selsta)
2020-09-22 10:39:04 -05:00
luigi1111
6ff43fa81e Merge pull request #3095
0dda579 Windows installer: Update for Oxygen Orion 0.17.0.0 (rbrunner7)
2020-09-22 10:33:42 -05:00
luigi1111
076c70906a Merge pull request #3094
e198752 cmake: support manual submodules (selsta)
2020-09-22 10:32:53 -05:00
luigi1111
923a32cfd5 Merge pull request #3090
1b519b8 fix build on arm (ph4r05)
2020-09-22 10:31:17 -05:00
luigi1111
e7c37fc7bc Merge pull request #3087
d488979 Remove Pirate language (erciccione)
2020-09-22 10:30:07 -05:00
luigi1111
2b83edc982 Merge pull request #3003
9fc260c account: update balances of account page when new block is found (rating89us)
2020-09-22 10:28:49 -05:00
xiphon
4208b66baf WizardModeSelection: optional 'Portable mode' feature support 2020-09-22 15:08:18 +00:00
xiphon
b9e74f6b6d cmake: support ARCH and BUILD_64 overriding 2020-09-22 15:01:36 +00:00
selsta
270b86b142 workflows: remove qmake 2020-09-22 03:03:06 +02:00
selsta
6c67a39d2e README: update sponsors 2020-09-21 21:46:22 +02:00
selsta
56722e4747 AddressBook: fix Qt warning 2020-09-21 00:47:32 +02:00
xiphon
91239881f1 main: Tails - enable 127.0.0.1:9050 socks5 proxy by default 2020-09-20 14:22:51 +00:00
xiphon
2d464a1266 docker: Windows static build (cross-compilation from Linux) 2020-09-20 10:15:04 +00:00
René Brunner
0dda5796ec Windows installer: Update for Oxygen Orion 0.17.0.0 2020-09-20 10:11:33 +02:00
selsta
e1987522e2 cmake: support manual submodules 2020-09-20 03:51:40 +02:00
Dusan Klinec
1b519b8302 fix build on arm 2020-09-16 21:35:30 +02:00
erciccione
d488979351 Remove Pirate language 2020-09-14 18:39:06 +02:00
luigi1111
d313c2de37 Merge pull request #3085
248ec22 WizardController: delete duplicated line (line 67) (rating89us)
2020-09-14 11:36:55 -05:00
luigi1111
560dd09f8a Merge pull request #3084
04eab65 WizardRestoreWallet1: reset radio buttons when loading (raiting89us)
2020-09-14 11:36:13 -05:00
luigi1111
ea778c41dd Merge pull request #3082
8643f85 cmake: MinGW - fix qtfreetype linking (xiphon)
2020-09-14 11:35:27 -05:00
luigi1111
6595a7b1c1 Merge pull request #3081
e0679ce cmake: cross-compilation to Windows - fix 'version' lib linking (xiphon)
2020-09-14 11:34:38 -05:00
luigi1111
dea513fc84 Merge pull request #3051
03db3f9 cmake: minor message improvements (selsta)
2020-09-14 11:33:43 -05:00
luigi1111
55759545d1 Merge pull request #3044
4e16698 MerchantTrackingList: fix Qt warning (selsta)
2020-09-14 11:32:28 -05:00
rating89us
248ec22eb5 WizardController: delete duplicated line (line 67) 2020-09-13 07:35:39 +02:00
rating89us
04eab65b10 WizardRestoreWallet1: reset radio buttons when loading 2020-09-13 07:33:28 +02:00
xiphon
8643f85fef cmake: MinGW - fix qtfreetype linking 2020-09-12 22:06:59 +00:00
xiphon
e0679ce5e6 cmake: cross-compilation to Windows - fix 'version' lib linking 2020-09-12 22:02:31 +00:00
luigi1111
31dbe7ea42 Merge pull request #3080
6467333 cmake: drop redundant CheckTrezor include (xiphon)
2020-09-12 16:00:31 -05:00
luigi1111
f745670b36 Merge pull request #3079
4effbd3 cmake: cross-compilation to Windows - use 'win32' Boost_THREADAPI (xiphon)
2020-09-12 15:59:29 -05:00
luigi1111
a80746adf1 Merge pull request #3078
8845ce6 cmake: cross-compilation to Windows - fix lrelease search paths (xiphon)
2020-09-12 15:56:03 -05:00
luigi1111
2e8bec15da Merge pull request #3077
3aeaf99 oshelper: 'shlobj.h' include should be lower case (xiphon)
2020-09-12 15:54:56 -05:00
luigi1111
24d8360da1 Merge pull request #3076
c41e3d8 cmake: cross-compilation to Windows - find MinGW prefixed windres (xiphon)
2020-09-12 15:54:05 -05:00
luigi1111
f75d988437 Merge pull request #3074
394e569 SettingsInfo: copy Tails information to clipboard (selsta)
2020-09-12 15:52:59 -05:00
luigi1111
3a1601f132 Merge pull request #3050
9d05462 cmake: fix DEV_MODE, checkout master in submodule (selsta)
2020-09-12 15:51:23 -05:00
luigi1111
fd956b54b5 Merge pull request #3033
749c166 main: socks5 proxy support (xiphon)
2020-09-12 15:49:57 -05:00
xiphon
6467333fe7 cmake: drop redundant CheckTrezor include 2020-09-10 23:06:30 +00:00
xiphon
4effbd3c8e cmake: cross-compilation to Windows - use 'win32' Boost_THREADAPI 2020-09-10 11:50:17 +00:00
xiphon
8845ce6d49 cmake: cross-compilation to Windows - fix lrelease search paths 2020-09-10 11:02:37 +00:00
xiphon
3aeaf99057 oshelper: 'shlobj.h' include should be lower case 2020-09-10 10:45:28 +00:00
xiphon
c41e3d8e7a cmake: cross-compilation to Windows - find MinGW prefixed windres 2020-09-10 10:37:06 +00:00
selsta
9d05462715 cmake: fix DEV_MODE, checkout master in submodule 2020-09-08 11:59:59 +02:00
selsta
394e56915d SettingsInfo: copy Tails information to clipboard 2020-09-07 22:58:34 +02:00
xiphon
749c166b10 main: socks5 proxy support 2020-09-07 20:35:20 +00:00
luigi1111
a563582d95 Merge pull request #3060
e1b5ee2 cmake: remove already defined functions (selsta)
2020-09-07 15:30:02 -05:00
luigi1111
a000b8d850 Merge pull request #3064
370607a Settings -> Info -> Copy to clipboard #3063 (xmrdsc)
2020-09-07 15:19:59 -05:00
luigi1111
4b626924e6 Merge pull request #3062
fed38b9 LineEdit: change background color when disabled (selsta)
2020-09-07 15:07:36 -05:00
luigi1111
e97fb0b3d8 Merge pull request #3061
17213bf cmake: move autogen to avoid warnings (selsta)
2020-09-07 15:06:49 -05:00
luigi1111
aa1ab4f448 Merge pull request #3059
35f92b7 tabs: remove from repo (selsta)
2020-09-07 15:06:01 -05:00
luigi1111
1752fde08b Merge pull request #3058
9255d64 cmake: copy monerod to mac bundle (selsta)
2020-09-07 15:05:18 -05:00
luigi1111
121904f340 Merge pull request #3056
86f5aae cmake: fix MacOS linking (-rpath, -bind_at_load, -dead_strip, etc.) (xiphon)
2020-09-07 15:04:30 -05:00
luigi1111
05f63a24cc Merge pull request #3055
75e4333 cmake: manually fix pkg-config prefix (QTBUG-80922 workaround) (xiphon)
2020-09-07 15:02:10 -05:00
luigi1111
e2085bdaa3 Merge pull request #3054
dc1d0a6 monero: update submodule to master branch HEAD (xiphon)
2020-09-07 15:01:05 -05:00
luigi1111
7e83173c77 Merge pull request #3053
1d2840f ipc: fix Qt deprecation warning with 5.15.1 beta (selsta)
2020-09-07 14:51:14 -05:00
luigi1111
183c8084a5 Merge pull request #3052
1895755 cmake: remove duplicate find_package (selsta)
2020-09-07 14:50:16 -05:00
luigi1111
5bc305679c Merge pull request #3032
5ea99a7 Wallet: WalletManager: implement proxy support (xiphon)
2020-09-07 14:46:14 -05:00
luigi1111
2557bdb35f Merge pull request #3030
43aeea8 Network: instantiable QML type, introduce proxyAddress property (xiphon)
2020-09-07 14:45:21 -05:00
luigi1111
79a87ca03b Merge pull request #3029
380b955 Downloader: introduce proxyAddress property (xiphon)
2020-09-07 14:44:26 -05:00
luigi1111
a8eab144e4 Merge pull request #3047
f51b0f6 fix windows deploy with QT 5.14+ (italocoin-project)
2020-09-07 14:43:32 -05:00
luigi1111
83cffa469e Merge pull request #3043
27e4771 docker: update Qt to 5.9.9 (selsta)
2020-09-07 14:42:00 -05:00
luigi1111
b1b7307578 Merge pull request #3042
c013d7d README: update list of third party monero packages (erciccione)
2020-09-07 14:41:14 -05:00
luigi1111
e0dfda2189 Merge pull request #3000
16646eb cmake: fix zxcvbn option description (selsta)
2020-09-07 14:39:25 -05:00
dsc
370607a7dc Settings -> Info -> Copy to clipboard #3063 2020-09-01 21:43:31 +02:00
xiphon
dc1d0a68c8 monero: update submodule to master branch HEAD 2020-08-31 23:05:34 +00:00
selsta
fed38b9e06 LineEdit: change background color when disabled 2020-08-29 23:22:49 +02:00
selsta
17213bfe8c cmake: move autogen to avoid warnings 2020-08-29 04:27:31 +02:00
selsta
e1b5ee24e9 cmake: remove already defined functions 2020-08-29 03:32:10 +02:00
selsta
35f92b76a2 tabs: remove from repo 2020-08-29 01:48:13 +02:00
selsta
9255d649d9 cmake: copy monerod to mac bundle 2020-08-29 00:42:30 +02:00
xiphon
86f5aae63d cmake: fix MacOS linking (-rpath, -bind_at_load, -dead_strip, etc.) 2020-08-28 17:54:17 +00:00
xiphon
75e433388f cmake: manually fix pkg-config prefix (QTBUG-80922 workaround) 2020-08-28 11:33:34 +00:00
Italocoin Project
f51b0f6704 fix windows deploy with QT 5.14+
this is a workaround on QT 5.14+ errors on mingw

fixes issue https://github.com/monero-project/monero-gui/issues/3041
2020-08-26 20:16:34 +02:00
selsta
1895755efb cmake: remove duplicate find_package 2020-08-26 03:18:41 +02:00
selsta
03db3f96ff cmake: minor message improvements 2020-08-26 03:07:18 +02:00
selsta
1d2840f8b5 ipc: fix Qt deprecation warning with 5.15.1 beta 2020-08-26 02:58:11 +02:00
selsta
4e16698558 MerchantTrackingList: fix Qt warning 2020-08-18 12:29:49 +02:00
erciccione
c013d7d125 README: update list of third party monero packages
Removed AUR package, since doesn't seem to exist anymore, added Debian package (the CCS-funded one) and updated xbps and guix packages.
2020-08-16 19:59:34 +02:00
selsta
27e4771622 docker: update Qt to 5.9.9 2020-08-16 01:21:23 +02:00
luigi1111
e65159163d Merge pull request #3038
6898d5d oshelper: always convert to canonical path in openContainingFolder (xiphon)
2020-08-14 14:16:19 -05:00
luigi1111
77b7a5244a Merge pull request #3024
eb924a3 KeysFiles: relative file path support (xiphon)
2020-08-14 14:15:26 -05:00
luigi1111
3c69023135 Merge pull request #3037
67be96e Translations from weblate (Monero-Weblate)
2020-08-08 20:48:31 -05:00
luigi1111
fad8dab165 Merge pull request #3035
9ce88c6 build: prepare v0.16.0.3 (selsta)
2020-08-08 20:46:53 -05:00
selsta
16646eb651 cmake: fix zxcvbn option description 2020-08-09 02:31:57 +02:00
xiphon
6898d5dd42 oshelper: always convert to canonical path in openContainingFolder 2020-08-06 18:58:15 +00:00
Anonymous
67be96e6d5 Translations from weblate
Languages:

- German
Currently translated at 97.2% (669 of 688 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/de/

- Russian
Currently translated at 97.9% (673 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/ru/

- Romanian
Currently translated at 85.5% (588 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/ro/

- Czech
Currently translated at 54.1% (372 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/cs/

-  Chinese (Simplified)
Currently translated at 94.3% (648 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/zh_Hans/

- Norwegian Bokmål
Currently translated at 90.3% (621 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/nb_NO/

- Turkish
Currently translated at 82.3% (566 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/tr/

- Greek
Currently translated at 46.5% (320 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/el/

- Japanese
Currently translated at 86.8% (597 of 687 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/ja/

- Italian
Currently translated at 92.2% (632 of 685 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/it/

  All languages were updated:

    Found 690 source text(s) (12 new and 678 already existing)
    Removed 9 obsolete entries

  Translators:

* Italian

    * 8uDD4T
    * erciccione

* Romanian

    * Marius Tanislav

* Turkish

    * xmoreee

* Japanese

    * Lana

* French

    * Anonymous

* Czech

    * Michal Poupe
    * dskch83

* Chinese (Simplified)

    * anony_xmr
    * C3Pool
    * Muge Niu
    * Anonymous
    * razorshaman909

* Greek

    * Stavros
    * warraxxx
    * Georgios Apostolopoulos

* Norwegian Bokmål

    * bitbooz

Co-authored-by: GreenPiece <villa@posteo.net>
Co-authored-by: v1docq47 <chiptune@protonmail.ch>
Co-authored-by: Agent LvM <agent.lvm@gmail.com>
Co-authored-by: dskch83 <skarkadaniel@gmail.com>
Co-authored-by: razorshaman909 <work909ang@gmail.com>
Co-authored-by: Muge Niu <mugeniu12138@gmail.com>
Co-authored-by: C3Pool <hkfoan@gmail.com>
Co-authored-by: xmoreee <sskacarfun@gmail.com>
Co-authored-by: warraxxx <kpantelidis@hotmail.gr>
Co-authored-by: 8uDD4T <8uDD4T@protonmail.com>
2020-08-06 12:30:49 +02:00
selsta
9ce88c6aeb build: prepare v0.16.0.3 2020-08-05 14:24:27 +02:00
xiphon
5ea99a73e7 Wallet: WalletManager: implement proxy support 2020-07-30 21:37:09 +00:00
xiphon
43aeea8eb7 Network: instantiable QML type, introduce proxyAddress property
# Conflicts:
#	main.qml
2020-07-30 16:49:22 +00:00
luigi1111
7eeda0a8f0 Merge pull request #3031
d1bde4f workflows: fix mac cmake (selsta)
2020-07-29 13:46:44 -05:00
luigi1111
9220937c4b Merge pull request #3027
0db4c36 QrScanThread: fix Qt 5.15 compability (selsta)
2020-07-29 13:35:36 -05:00
luigi1111
6aaf294f0b Merge pull request #3019
dcc040a WalletManager: instantiable QML type (xiphon)
2020-07-29 13:34:33 -05:00
luigi1111
721a0cbf91 Merge pull request #3018
352da92 QrCodeScanner: use parse_uri_to_object to parse scanned codes (xiphon)
2020-07-29 13:33:27 -05:00
selsta
d1bde4f8b2 workflows: fix mac cmake 2020-07-29 20:30:06 +02:00
xiphon
380b955bce Downloader: introduce proxyAddress property 2020-07-29 17:31:44 +00:00
selsta
0db4c36db0 QrScanThread: fix Qt 5.15 compability 2020-07-29 17:40:58 +02:00
xiphon
dcc040a119 WalletManager: instantiable QML type 2020-07-29 15:17:02 +00:00
luigi1111
63e32c4a83 Merge pull request #3017
99907e5 WalletManager: parse_uri_to_object extra parameters support (xiphon)
2020-07-29 09:53:31 -05:00
luigi1111
7972d8a219 Merge pull request #3015
e8bcabe cmake: fix static libraries linking (xiphon)
2020-07-29 09:50:05 -05:00
luigi1111
872b81fe39 Merge pull request #3014
829414e Transfer: fix 'Send' and 'Sweep' functionality (xiphon)
2020-07-29 09:49:04 -05:00
luigi1111
6136e88fcb Merge pull request #3013
085abb7 cmake: fix MacOS build (Qt installer) (xiphon)
2020-07-29 09:47:21 -05:00
luigi1111
c77637d141 Merge pull request #3012
410897c SettingsLog: add command history (rating89us)
2020-07-29 09:46:04 -05:00
luigi1111
0d047035fb Merge pull request #3007
13ee9b1 KeysFiles: fix WalletKeysFilesModel, should be instantiable QML type (xiphon)
2020-07-29 09:44:45 -05:00
luigi1111
b5aa659757 Merge pull request #3004
36262f0 version: use MONERO_VERSION_FULL const as monero core version (xiphon)
2020-07-29 09:42:24 -05:00
luigi1111
88d297d8cc Merge pull request #3002
f78c95b cmake: build bundle on macOS (selsta)
2020-07-29 09:38:55 -05:00
xiphon
eb924a34d1 KeysFiles: relative file path support 2020-07-28 17:38:03 +00:00
xiphon
352da92229 QrCodeScanner: use parse_uri_to_object to parse scanned codes 2020-07-16 17:30:00 +00:00
xiphon
99907e539a WalletManager: parse_uri_to_object extra parameters support 2020-07-16 17:28:00 +00:00
xiphon
e8bcabe66b cmake: fix static libraries linking 2020-07-15 23:26:14 +00:00
xiphon
829414ed01 Transfer: fix 'Send' and 'Sweep' functionality 2020-07-15 04:02:42 +00:00
xiphon
36262f029a version: use MONERO_VERSION_FULL const as monero core version 2020-07-15 03:45:03 +00:00
xiphon
13ee9b1f26 KeysFiles: fix WalletKeysFilesModel, should be instantiable QML type 2020-07-14 23:44:46 +00:00
xiphon
085abb798a cmake: fix MacOS build (Qt installer) 2020-07-14 23:36:30 +00:00
luigi1111
c137a6ea36 Merge pull request #3010
2fd3974 WalletManager: displayAmount should be static (xiphon)
2020-07-14 15:51:01 -05:00
luigi1111
2cea0fc669 Merge pull request #3009
7c50e1f PasswordDialog: focus on gui start (selsta)
2020-07-14 15:50:14 -05:00
luigi1111
aaa1cb47c0 Merge pull request #3006
dec5dcf KeysFiles: don't use WalletManager in findWallets (xiphon)
2020-07-14 15:49:19 -05:00
luigi1111
1577ce278b Merge pull request #3001
df885b6 cmake: set current monero-gui version (selsta)
2020-07-14 15:48:15 -05:00
luigi1111
9d48f96fc8 Merge pull request #2999
b22fb24 Donate to Monero feature (xmrdsc)
2020-07-14 15:47:29 -05:00
luigi1111
1a51e93e55 Merge pull request #2991
c9d36b1 cmake: translations deps handling, build translations as a library (xiphon)
d931022 cmake: implement MacOS 'release' build + CI support (xiphon)
2020-07-14 15:46:09 -05:00
luigi1111
b62b821002 Merge pull request #2989
8c8faf2 Support comma seperator for amount field, dynamically change to dot. Fixes #2951 (xmrdsc)
2020-07-14 15:45:01 -05:00
luigi1111
f3ee46175c Merge pull request #2935
f1e3926 WizardWalletInput: disallow (back)slash (selsta)
2020-07-14 15:43:58 -05:00
luigi1111
17a3c51a43 Merge pull request #2915
527adcb Utils: simplify for translations (selsta)
2020-07-14 15:43:08 -05:00
rating89us
410897ced7 SettingsLog: add command history 2020-07-14 22:38:54 +02:00
xiphon
2fd3974194 WalletManager: displayAmount should be static 2020-07-14 17:10:25 +00:00
selsta
7c50e1ff4b PasswordDialog: focus on gui start 2020-07-14 16:52:40 +02:00
xiphon
dec5dcf25c KeysFiles: don't use WalletManager in findWallets 2020-07-14 01:39:46 +00:00
rating89us
9fc260c62d account: update balances of account page when new block is found 2020-07-10 10:57:59 +02:00
xiphon
c9d36b1302 cmake: translations deps handling, build translations as a library 2020-07-09 16:42:32 +00:00
xiphon
d931022963 cmake: implement MacOS 'release' build + CI support 2020-07-09 15:23:04 +00:00
selsta
df885b6eaa cmake: set current monero-gui version 2020-07-09 08:13:08 +02:00
selsta
f78c95b73b cmake: build bundle on macOS 2020-07-09 08:12:36 +02:00
dsc
b22fb24e47 Donate to Monero feature 2020-07-08 22:50:48 +02:00
dsc
8c8faf29e4 Support comma seperator for amount field, dynamically change to dot. Fixes #2951 2020-07-08 22:14:28 +02:00
luigi1111
b7b1221221 Merge pull request #2997
f1b4eb6 history: remove trailing zeros in amount + fix amount display (rating89us)
2020-07-08 13:57:44 -05:00
luigi1111
38c3534ead Merge pull request #2996
d37c4dd history: fix search filter not working when there is a pending transaction (rating89us)
2020-07-08 13:56:35 -05:00
luigi1111
f631b75f0a Merge pull request #2994
50c22ca Mining: Indicate probability of finding a block in one day (glv2)
2020-07-08 13:55:27 -05:00
luigi1111
11fd19e0f8 Merge pull request #2988
2522ff1 Prevent textbox from turning active when window is not active. Fixes #2924 (xmrdsc)
2020-07-08 13:53:41 -05:00
luigi1111
1572b4cf79 Merge pull request #2978
fead82b RemoteNodeEdit: initialAddress, add square brackets on ipv6 input (xiphon)
2020-07-08 13:52:22 -05:00
luigi1111
10a47d783e Merge pull request #2977
f55bf48 cmake: fix git tag + commit detection and version.js generation (xiphon)
2020-07-08 13:51:19 -05:00
luigi1111
14cc1d096a Merge pull request #2976
a00ed6a cmake: implement translations support (xiphon)
2020-07-08 13:50:18 -05:00
luigi1111
840421fd7b Merge pull request #2974
7677103 docker: implement Docker Linux 'release-static' build (xiphon)
2020-07-08 13:49:07 -05:00
luigi1111
51739dfb22 Merge pull request #2949
1edc068 PasswordDialog: remove already defined z value (selsta)
2020-07-08 13:36:52 -05:00
luigi1111
be5e6772a4 Merge pull request #2948
53066ae QML: fix some Qt 5.15 warnings (selsta)
2020-07-08 13:35:55 -05:00
luigi1111
c869390272 Merge pull request #2940
c672d80 docs: add deploy readme (selsta)
2020-07-08 13:34:46 -05:00
Guillaume Le Vaillant
50c22ca300 Mining: Indicate probability of finding a block in one day 2020-07-08 19:30:27 +02:00
rating89us
f1b4eb6c56 history: remove trailing zeros in amount + fix amount display 2020-07-08 15:05:11 +02:00
rating89us
d37c4ddef2 history: fix search filter not working when there is a pending transaction 2020-07-08 15:01:19 +02:00
dsc
2522ff13fe Prevent textbox from turning active when window is not active. Fixes #2924 2020-07-07 15:33:54 +02:00
luigi1111
596b71b293 Merge pull request #2982
8159b75 cmake: fix monero-wallet-gui target dependencies (xiphon)
2020-07-05 23:45:33 -05:00
xiphon
8159b75be3 cmake: fix monero-wallet-gui target dependencies 2020-07-02 23:32:55 +00:00
xiphon
7677103f1b docker: implement Docker Linux 'release-static' build 2020-07-02 18:13:51 +00:00
xiphon
fead82b198 RemoteNodeEdit: initialAddress, add square brackets on ipv6 input 2020-07-02 13:39:56 +00:00
xiphon
f55bf48bad cmake: fix git tag + commit detection and version.js generation 2020-07-01 01:48:52 +00:00
luigi1111
e0faddf964 Merge pull request #2975
b54127e main: disable NetworkAccessBlockingFactory.h if Qt < 5.12 (selsta)
2020-06-30 14:43:32 -05:00
xiphon
a00ed6a75a cmake: implement translations support 2020-06-30 17:07:35 +00:00
selsta
b54127e997 main: disable NetworkAccessBlockingFactory.h if Qt < 5.12
Due to a potential Qt bug qrc:///lang/languages.xml gets
blocked resulting in broken translations.
2020-06-30 04:21:14 +02:00
selsta
c672d8016d docs: add deploy readme 2020-06-30 01:53:35 +02:00
luigi1111
ccd8eb1c3a Merge pull request #2967
1c62ede Revert 'main: update balance only when wallet is synced' (selsta)
2020-06-24 13:36:53 -05:00
luigi1111
d5b165bde2 Merge pull request #2966
34439af build: set submodule to v0.16.0.1 (selsta)
2020-06-24 13:34:33 -05:00
luigi1111
c978027933 Merge pull request #2964
e1e862b cmake: implement Linux 'release-static' build target (xiphon)
2020-06-24 13:10:35 -05:00
luigi1111
9deec4dad0 Merge pull request #2957
749460f README: update donation fund address (selsta)
2020-06-24 13:08:55 -05:00
luigi1111
e306992ce8 Merge pull request #2955
f64dcde simple mode: enable settings log tab (selsta)
2020-06-24 13:07:53 -05:00
luigi1111
19daa074ca Merge pull request #2909
66e7696 QML: disable networking (selsta)
2020-06-24 13:06:57 -05:00
selsta
1c62edeff4 Revert "main: update balance only when wallet is synced"
This reverts commit 333c9ee311.
2020-06-24 04:02:27 +02:00
selsta
34439af67e build: set submodule to v0.16.0.1 2020-06-24 03:59:45 +02:00
xiphon
e1e862bce4 cmake: implement Linux 'release-static' build target 2020-06-21 02:03:26 +00:00
luigi1111
0b2e74cdb5 Merge pull request #2963
a3fc675 cmake: fix x11 linking (xiphon)
2020-06-19 16:58:28 -05:00
luigi1111
3fee17e564 Merge pull request #2933
1e7d829 openpgp: fix gcc 5.4.0 compilation (xiphon)
2020-06-19 16:56:05 -05:00
xiphon
1e7d8293cb openpgp: fix gcc 5.4.0 compilation 2020-06-19 21:53:47 +00:00
xiphon
a3fc6754e0 cmake: fix x11 linking 2020-06-19 21:50:42 +00:00
luigi1111
8354c251c5 Merge pull request #2962
27532dc cmake: fix USE_DEVICE_TREZOR option (xiphon)
2020-06-19 16:16:57 -05:00
luigi1111
8f5053bd61 Merge pull request #2961
52c090b cmake: downgrade minimum required boost version to 1.58 (xiphon)
2020-06-19 16:16:08 -05:00
luigi1111
92b0a115f4 Merge pull request #2959
c0e0626 SettingsLayout: ask password for password relevant setting (selsta)
2020-06-19 16:15:20 -05:00
luigi1111
6a3e1aaf40 Merge pull request #2950
d18af7d LeftPanel: simpifly color binding (selsta)
2020-06-19 16:14:31 -05:00
luigi1111
c32e11d3e8 Merge pull request #2947
333c9ee main: update balance only when wallet is synced (rating89us)
2020-06-19 16:13:48 -05:00
luigi1111
9580c19da3 Merge pull request #2937
c6d5c5d workflows: update msys2 setup action v0 -> v1 (selsta)
2020-06-19 16:12:52 -05:00
xiphon
27532dc1bf cmake: fix USE_DEVICE_TREZOR option 2020-06-17 14:04:35 +00:00
selsta
c0e0626b84 SettingsLayout: ask password for password relevant setting 2020-06-17 10:01:42 +02:00
selsta
c6d5c5dc3a workflows: update msys2 setup action v0 -> v1 2020-06-15 23:07:48 +02:00
selsta
749460fb46 README: update donation fund address 2020-06-15 22:23:19 +02:00
luigi1111
c9ee76c2ee Merge pull request #2943
ef5d855 openpgp: implement public subkeys support (xiphon)
2020-06-15 15:11:56 -05:00
luigi1111
94dbf179d5 Merge pull request #2942
ff4de8e updater: use monero tools::sha256sum (xiphon)
2020-06-15 15:10:47 -05:00
luigi1111
7deecbfdf6 Merge pull request #2941
e6f3057 windeploy_helper: add libgcrypt and update 65 -> 67 (selsta)
2020-06-15 15:09:58 -05:00
luigi1111
29a742ba26 Merge pull request #2928
7f0c199 workflows: Windows CMake 'release-win64' target CI (xiphon)
2020-06-15 15:09:08 -05:00
luigi1111
47559e51be Merge pull request #2927
1580c3a DaemonManager: remove max-concurrency upper bound (selsta)
2020-06-15 15:07:59 -05:00
selsta
f64dcde600 simple mode: enable settings log tab 2020-06-15 13:17:42 +02:00
xiphon
52c090b82f cmake: downgrade minimum required boost version to 1.58 2020-06-14 12:30:40 +00:00
selsta
1edc068047 PasswordDialog: remove already defined z value
main already defines z
2020-06-13 04:47:17 +02:00
selsta
d18af7da72 LeftPanel: simpifly color binding 2020-06-13 03:34:16 +02:00
selsta
53066ae92b QML: fix some Qt 5.15 warnings 2020-06-12 03:10:32 +02:00
rating89us
333c9ee311 main: update balance only when wallet is synced 2020-06-12 00:08:04 +02:00
xiphon
ff4de8e8f7 updater: use monero tools::sha256sum 2020-06-10 15:11:15 +00:00
xiphon
ef5d855950 openpgp: implement public subkeys support 2020-06-10 12:48:55 +00:00
selsta
e6f30578c0 windeploy_helper: add libgcrypt and update 65 -> 67 2020-06-10 00:38:07 +02:00
selsta
f1e3926192 WizardWalletInput: disallow (back)slash 2020-06-04 18:33:07 +02:00
xiphon
7f0c19950b workflows: Windows CMake 'release-win64' target CI 2020-06-04 00:30:47 +00:00
selsta
1580c3a574 DaemonManager: remove max-concurrency upper bound 2020-05-29 13:58:53 +02:00
luigi1111
c8f4355e15 Merge pull request #2926
39561f8 cmake: workflows: implement 'release' Linux build target + CI (xiphon)
2020-05-28 12:55:08 -05:00
xiphon
39561f8ead cmake: workflows: implement 'release' Linux build target + CI 2020-05-28 14:51:52 +00:00
luigi1111
b15dbbb9b0 Merge pull request #2921
55cbc56 workflows: fix windows build (selsta)
2020-05-26 15:40:24 -05:00
luigi1111
a73a4363ec Update submodule to recent master (77a008f) 2020-05-26 13:10:17 -05:00
selsta
55cbc562b6 workflows: fix windows build 2020-05-24 23:34:31 +02:00
luigi1111
e6c4c32d01 Merge pull request #2919
c946905 OpenGL: Windows - fall back to software renderer if OpenGL < 2.1 (xiphon)
2020-05-21 12:42:00 -05:00
luigi1111
e36d4a918f Merge pull request #2917
43f0854 Translations from Weblate (Monero-Weblate)
2020-05-21 12:40:51 -05:00
luigi1111
0355ca2747 Merge pull request #2916
f38e460 build: set submodule to v0.16.0.0 (selsta)
2020-05-21 12:39:34 -05:00
xiphon
c946905907 OpenGL: Windows - fall back to software renderer if OpenGL < 2.1 2020-05-20 13:45:16 +00:00
luigi1111
a8bd2ab77e Merge pull request #2913
0de1ba9 Windows installer: Update for Nitrogen Nebula 0.16.0.0 (rbrunner7)
2020-05-18 12:30:09 -05:00
luigi1111
149e373367 Merge pull request #2912
1503885 cmake: always link libgcc, libstdc++ statically (xiphon)
2020-05-18 12:29:15 -05:00
luigi1111
fa3c8b5f89 Merge pull request #2911
754a968 build: release-win64 support (xiphon)
2020-05-18 12:28:20 -05:00
luigi1111
e0f6577afd Merge pull request #2910
efc9ad4 cmake: fix Qt 5.14+ build, link Qt5QmlModels if available (xiphon)
2020-05-18 12:26:49 -05:00
Anonymous
43f0854de9 Translations from Weblate
Credits:

* Ukrainian

    * reketen
    * TheFuzzStone

* Spanish

    * Michael Russo
    * kombometralla
    * CharlesCrisco
    * Anonymous
    * porokon7
    * Juanpaab

* Korean

    * enaSo97

* Croatian

    * TasmaniaKrama

* Finnish

    * vaa red

* Italian

    * 8uDD4T
    * Anonymous

* Chinese (Traditional)

    * Lafudoci

* Esperanto

    * Gilberto F da Silva

* Romanian

    * Marius Tanislav
    * Anonymous
    * Vlad G.

* Russian

    * Agent LvM
    * solevoy-psih
    * v1docq47
    * TheFuzzStone
    * Russian Bear
    * translator133

* Japanese

    * Scott Anecito

* Portuguese (Portugal)

    * Anonymous

* French

    * Anonymous
    * Viktor

* Czech

    * Anonymous

* Chinese (Simplified)

    * jindouyunz
    * anony_xmr
    * tan
    * Muge Niu
    * Anonymous
    * TE Scott
    * razorshaman909

* Bulgarian

    * Weblate Admin

* Arabic

    * Weblate Admin

* Slovenian

    * Matija Mazi

* Polish

    * To Ja
    * Anonymous

* Portuguese (Brazil)

    * ANMNQ
    * Nelson Renan
    * netrik182
    * Anonymous
    * Boçogrolho Tabúrcio Mendez
    * Asdrubal Petronidas Calhofos

* Norwegian Bokmål

    * bitbooz
    * Anonymous

* Dutch

    * Marcus

* Swedish

    * B
    * peter hermansson

* Danish

    * KforG
    * Poul
    * Anonymous

* German

    * Wobole
    * Anonymous
    * René Brunner
    * GreenPiece
2020-05-18 09:42:46 +00:00
selsta
f38e460842 build: set submodule to v0.16.0.0 2020-05-18 01:40:53 +02:00
selsta
527adcba17 Utils: simplify for translations 2020-05-16 18:11:39 +02:00
René Brunner
0de1ba9f51 Windows installer: Update for Nitrogen Nebula 0.16.0.0 2020-05-15 15:09:40 +02:00
selsta
66e769603c QML: disable networking 2020-05-15 06:21:08 +02:00
xiphon
15038850c2 cmake: always link libgcc, libstdc++ statically 2020-05-15 02:28:47 +00:00
xiphon
efc9ad45e4 cmake: fix Qt 5.14+ build, link Qt5QmlModels if available 2020-05-15 02:27:09 +00:00
xiphon
754a968706 build: release-win64 support 2020-05-15 02:24:14 +00:00
luigi1111
c20a0ef928 Merge pull request #2908
210248e cmake: disable '-pie' on Win with gcc (xiphon)
2020-05-14 16:06:39 -05:00
luigi1111
eab98e3a48 Merge pull request #2906
da4e0db cmake: rename monero-gui binary to monero-wallet-gui (xiphon)
2020-05-14 16:05:53 -05:00
luigi1111
2a8960bc2c Merge pull request #2905
f82948f cmake: drop '-std=c++0x' compiler flag (xiphon)
2020-05-14 16:05:04 -05:00
luigi1111
fe68f59763 Merge pull request #2903
9dd3f4f add isTrezor() function (rating89us)
2020-05-14 16:04:17 -05:00
luigi1111
80e8dd6aef Merge pull request #2901
72a3b34 Merchant: allow to exit when height < minHeight (selsta)
2020-05-14 16:03:22 -05:00
luigi1111
c82bd94bc3 Merge pull request #2899
abbe042 Filter out multiple blanks in seed input when counting words (rbrunner7)
2020-05-14 16:02:27 -05:00
luigi1111
28ca9503df Merge pull request #2897
d662e46 Merchant: display size warning when height < minHeight (rating89us)
2020-05-14 16:01:28 -05:00
luigi1111
73cc400ae8 Merge pull request #2896
bbc9ca8 Transfer: fix html paragraph tag (rating89us)
2020-05-14 16:00:43 -05:00
luigi1111
8b7438ace2 Merge pull request #2894
f7271d1 SettingsNode: add translation to Address and Port strings (rating89us)
2020-05-14 15:59:40 -05:00
xiphon
210248e6ef cmake: disable '-pie' on Win with gcc 2020-05-14 18:48:08 +00:00
xiphon
f82948f4b0 cmake: drop '-std=c++0x' compiler flag 2020-05-13 14:29:01 +00:00
xiphon
da4e0dbf0f cmake: rename monero-gui binary to monero-wallet-gui 2020-05-13 14:26:14 +00:00
rating89us
9dd3f4fecb add isTrezor() function 2020-05-13 13:22:49 +02:00
rbrunner7
abbe042c8a Filter out multiple blanks in seed input when counting words 2020-05-13 07:51:31 +02:00
selsta
72a3b346bb Merchant: allow to exit when height < minHeight 2020-05-12 20:43:46 +02:00
rating89us
d662e46146 Merchant: display size warning when height < minHeight 2020-05-11 00:42:45 +02:00
rating89us
bbc9ca8f08 Transfer: fix html paragraph tag 2020-05-10 23:48:48 +02:00
rating89us
f7271d1c7b SettingsNode: add translation to Address and Port strings 2020-05-09 19:31:36 +02:00
luigi1111
afe1ae9b9c Merge pull request #2892
b616a14 LanguageSidebar: fix white theme (selsta)
2020-05-08 12:27:37 -05:00
luigi1111
7f5b8ea0ad Merge pull request #2890
2f8c0ca Main: clear spendable funds message when closing wallet (rating89us)
2020-05-08 12:26:24 -05:00
luigi1111
aa5000f556 Merge pull request #2876
4354a76 StandardDropdown: drop Qt 5.8 workaround (xiphon)
2020-05-08 12:25:15 -05:00
luigi1111
8b6978b2a5 Merge pull request #2829
86d21a3 trezor: support new passphrase entry mechanism (ph4r05)
2020-05-08 12:21:59 -05:00
Dusan Klinec
86d21a34ba trezor: support new passphrase entry mechanism
- passphrase can be prompted also when wallet is running (thus added to the wallet listener)
- device/host decision is now made on the host
2020-05-08 18:40:17 +02:00
xiphon
4354a76df9 StandardDropdown: drop Qt 5.8 workaround 2020-05-07 21:55:44 +00:00
selsta
b616a14f88 LanguageSidebar: fix white theme 2020-05-07 21:04:03 +02:00
luigi1111
7536e922e9 Merge pull request #2885
8f70fb4 Transfer: improve warning message while connecting (selsta)
2020-05-07 10:49:44 -05:00
luigi1111
5bf0dd9684 Merge pull request #2884
c439d68 main: fix local node status check on closing uninitialized wallet (xiphon)
2020-05-07 10:31:35 -05:00
luigi1111
cdf4ce2d6f Merge pull request #2891
37a8bcb SimpleMode: use connection timer 'running' prop, fix daemon restart (xiphon)
2020-05-07 10:30:13 -05:00
xiphon
37a8bcb525 SimpleMode: use connection timer 'running' prop, fix daemon restart 2020-05-07 13:40:43 +00:00
rating89us
2f8c0ca499 Main: clear spendable funds message when closing wallet 2020-05-06 19:18:55 +02:00
luigi1111
38612c1285 Merge pull request #2881
487e706 Improved daemon sync progress bar (rbrunner7)
2020-05-06 00:41:41 -05:00
luigi1111
1d3a201077 Merge pull request #2879
ca79525 Slider component (xiphon)
503c1af SettingsLayout: implement autosave, enabled by default (10 minutes) (xiphon)
2020-05-06 00:40:36 -05:00
luigi1111
a91a4f51ab Merge pull request #2871
7db5de0 WizardAskPassword: drop custom password fields, use LineEdit (xiphon)
2020-05-06 00:39:26 -05:00
luigi1111
52fbbae484 Merge pull request #2883
f26f146 PasswordDialog: fix focus on open (selsta)
2020-05-06 00:38:20 -05:00
selsta
8f70fb4f79 Transfer: improve warning message while connecting 2020-05-05 13:12:10 +02:00
xiphon
c439d6814b main: fix local node status check on closing uninitialized wallet 2020-05-04 14:48:56 +00:00
selsta
f26f1469ca PasswordDialog: fix focus on open 2020-05-03 15:51:46 +02:00
rbrunner7
487e706f06 Improved daemon sync progress bar 2020-05-02 16:34:54 +02:00
xiphon
503c1af5f8 SettingsLayout: implement autosave, enabled by default (10 minutes) 2020-05-02 01:54:11 +00:00
xiphon
ca79525fdb Slider component 2020-05-02 01:54:05 +00:00
xiphon
7db5de082d WizardAskPassword: drop custom password fields, use LineEdit 2020-05-02 01:32:35 +00:00
luigi1111
ce6cc47afe Merge pull request #2845
7f9b28c WizardNav: use PageIndicator in wizardProgress (rating89us)
2020-05-01 15:51:48 -05:00
luigi1111
a10a94f51c Merge pull request #2866
5265e52 ProcessingSplash: new design (selsta)
2020-05-01 15:11:43 -05:00
luigi1111
1833c16e39 Merge pull request #2785
be954cc StandardDropdown: fix margins, text overlapping (xiphon)
2020-05-01 15:10:49 -05:00
luigi1111
d7207bfde3 Merge pull request #2874
387e643 Transfer: fix 'call method estimateTransactionFeeAsync of undefined' (xiphon)
2020-05-01 15:09:49 -05:00
selsta
5265e52b8b ProcessingSplash: new design 2020-05-01 22:09:27 +02:00
luigi1111
b6fdb709ba Merge pull request #2873
4a7ccd8 SettingsLayout: add check for updates checkbox (selsta)
2020-05-01 15:07:50 -05:00
luigi1111
9aef3bab33 Merge pull request #2870
2195c67 LineEdit: password mode, linking. PasswordDialog: use LineEdit (xiphon)
2020-05-01 15:06:46 -05:00
luigi1111
4b55197e18 Merge pull request #2848
c7f9ac9 LanguageSidebar: reenable (selsta)
3835387 wizard: add flags to language sidebar (mmbyday, selsta)
2020-05-01 15:04:55 -05:00
luigi1111
11617d2f76 Merge pull request #2846
2102e4b Merchant: fix confirmations (selsta)
b245d0a MerchantTrackingList: point out unconfirmed amount (selsta)
07ecca5 Merchant: fix payment URL (selsta)
3af99e9 Merchant: remove unused variables (selsta)
2020-05-01 15:03:04 -05:00
luigi1111
765e93cfd0 Merge pull request #2840
d31e661 Transfer: redesign advanced options (rating89us)
2020-05-01 14:58:56 -05:00
rating89us
d31e661cd1 Transfer: redesign advanced options 2020-05-01 11:48:53 +02:00
rating89us
7f9b28c05f WizardNav: use PageIndicator in wizardProgress 2020-05-01 11:40:47 +02:00
selsta
4a7ccd8d82 SettingsLayout: add check for updates checkbox 2020-05-01 03:46:58 +02:00
xiphon
be954cc2c4 StandardDropdown: fix margins, text overlapping 2020-05-01 01:30:40 +00:00
xiphon
387e643ae9 Transfer: fix 'call method estimateTransactionFeeAsync of undefined' 2020-04-29 22:33:08 +00:00
luigi1111
6f71d47806 Merge pull request #2868
5c13624 DaemonManager: drop unused 'initialized', 'm_has_daemon' members (xiphon)
2020-04-28 21:41:19 -05:00
luigi1111
135c970ad9 Merge pull request #2865
cfdba59 Wallet: implement async wallet storing (xiphon)
2020-04-28 21:40:17 -05:00
luigi1111
fd5d1f584e Merge pull request #2861
4b0dcb9 StandardDialog: reset button text on close (selsta)
2020-04-28 21:38:59 -05:00
xiphon
2195c67f58 LineEdit: password mode, linking. PasswordDialog: use LineEdit 2020-04-28 20:44:53 +00:00
xiphon
5c13624596 DaemonManager: drop unused 'initialized', 'm_has_daemon' members 2020-04-28 20:42:23 +00:00
xiphon
cfdba59584 Wallet: implement async wallet storing 2020-04-28 20:36:22 +00:00
luigi1111
4141832a4d Merge pull request #2869
3d24300 SettingsNode: forbid 'data-dir', 'bootstrap-daemon-address' flags (xiphon)
2020-04-28 15:24:11 -05:00
luigi1111
5f183da6e3 Merge pull request #2867
9748974 DaemonManager: fix memory leak (xiphon)
2020-04-28 15:23:03 -05:00
luigi1111
30c54b1c6e Merge pull request #2864
ce4cb65 WizardAskPassword: hide strength if getPasswordStrength is missing (xiphon)
2020-04-28 15:22:02 -05:00
luigi1111
c1da3d1c97 Merge pull request #2863
120b528 WizardDaemonSettings: bootstrap node address 'auto' special case (xiphon)
2020-04-28 15:21:19 -05:00
luigi1111
cbd03229dd Merge pull request #2862
33c1a6f repo: cleanup unused images (selsta)
2020-04-28 15:20:22 -05:00
luigi1111
2fc1b287dd Merge pull request #2860
fdb7f80 SettingsInfo: fix number string formatting (selsta)
2020-04-28 15:19:36 -05:00
luigi1111
7c8c6a116f Merge pull request #2856
a810bf3 CheckBox: add enabled property (selsta)
2020-04-28 15:18:51 -05:00
luigi1111
ef93139a80 Merge pull request #2855
b022735 main: add --disable-check-updates flag (selsta)
2020-04-28 15:17:57 -05:00
luigi1111
1b7844ec34 Merge pull request #2854
a99eef6 always use native directory separators in paths (xiphon)
2020-04-28 15:16:57 -05:00
luigi1111
8f63e8870f Merge pull request #2851
7ebdb88 README: list libgcrypt linux (selsta)
2020-04-28 15:16:10 -05:00
luigi1111
286c75aa5b Merge pull request #2850
9b98e0a checkUpates: installer support (Win), use GUI buildTag and version (xiphon)
2020-04-28 15:14:40 -05:00
luigi1111
0a4d65dd99 Merge pull request #2849
02eec35 src: fix qt 5.15 warnings (selsta)
2020-04-28 15:13:45 -05:00
luigi1111
83ccadb6a8 Merge pull request #2847
238b1b7 pages: remove legacy code (selsta)
2020-04-28 15:12:57 -05:00
luigi1111
eae7eff9db Merge pull request #2844
81d5dd1 Transfer: add offline transaction signing info in send button warning (rating89us)
2020-04-28 15:11:58 -05:00
selsta
2102e4be0d Merchant: fix confirmations 2020-04-28 19:30:22 +02:00
selsta
02eec351b9 src: fix qt 5.15 warnings 2020-04-28 19:00:53 +02:00
xiphon
ce4cb6512d WizardAskPassword: hide strength if getPasswordStrength is missing 2020-04-28 15:05:43 +00:00
xiphon
3d24300963 SettingsNode: forbid 'data-dir', 'bootstrap-daemon-address' flags 2020-04-27 13:18:23 +00:00
xiphon
9748974ce0 DaemonManager: fix memory leak 2020-04-27 12:46:15 +00:00
xiphon
120b5285fb WizardDaemonSettings: bootstrap node address "auto" special case 2020-04-26 01:14:29 +00:00
selsta
b022735506 main: add --disable-check-updates flag 2020-04-26 02:57:35 +02:00
selsta
33c1a6f4fc repo: cleanup unused images 2020-04-26 02:18:35 +02:00
selsta
4b0dcb95bf StandardDialog: reset button text on close 2020-04-25 21:10:25 +02:00
selsta
fdb7f806fa SettingsInfo: fix number string formatting 2020-04-25 20:55:32 +02:00
selsta
a810bf3eb7 CheckBox: add enabled property 2020-04-24 04:35:21 +02:00
xiphon
a99eef68f5 always use native directory separators in paths 2020-04-24 00:43:40 +00:00
selsta
7ebdb884a1 README: list libgcrypt linux 2020-04-23 23:31:43 +02:00
selsta
c7f9ac926b LanguageSidebar: reenable 2020-04-23 20:28:09 +02:00
xiphon
9b98e0a2f5 checkUpates: installer support (Win), use GUI buildTag and version 2020-04-23 16:08:10 +00:00
mmbyday
3835387eea wizard: add flags to language sidebar 2020-04-23 00:04:07 +02:00
selsta
238b1b777f pages: remove legacy code 2020-04-22 23:18:08 +02:00
selsta
3af99e91e4 Merchant: remove unused variables 2020-04-22 22:10:40 +02:00
selsta
07ecca5af4 Merchant: fix payment URL
This would previously get loaded on the Receive page.
2020-04-22 22:10:40 +02:00
selsta
b245d0af7a MerchantTrackingList: point out unconfirmed amount 2020-04-22 22:10:40 +02:00
luigi1111
585fb2810d Merge pull request #2843
5076757 SettingsLog: don't assign color to font family (selsta)
2020-04-22 13:37:34 -05:00
luigi1111
0784532001 Merge pull request #2842
1d5b940 Merchant: fix close button (selsta)
2020-04-22 13:36:37 -05:00
luigi1111
dcbdae0954 Merge pull request #2841
3563d44 Transfer: move address field to the top (rating89us)
2020-04-22 13:35:49 -05:00
luigi1111
2bef74fe8a Merge pull request #2838
ffceda9 SettingsLayout: add checkbox 'ask for password before sending a transaction' (rating89us)
2020-04-22 13:34:47 -05:00
rating89us
81d5dd1cae Transfer: add offline transaction signing info in send button warning 2020-04-21 20:57:55 +02:00
selsta
50767570f0 SettingsLog: don't assign color to font family 2020-04-21 20:02:23 +02:00
selsta
1d5b940349 Merchant: fix close button 2020-04-21 19:42:05 +02:00
rating89us
3563d44d99 Transfer: move address field to the top 2020-04-18 19:25:45 +02:00
rating89us
ffceda9159 SettingsLayout: add checkbox 'ask for password before sending a transaction' 2020-04-18 17:42:27 +02:00
luigi1111
a75a0fb8c5 Merge pull request #2839
fee81ba workflows: add trezor support ubuntu (selsta)
2020-04-17 22:10:21 -05:00
luigi1111
5fa64c34ec Merge pull request #2831
de6a9b6 Transfer: address book inline button, 2nd inline button, scan QR code button fixes (rating89us)
2020-04-17 22:09:18 -05:00
luigi1111
376421667a Merge pull request #2836
3f13a5c QRCodeScanner: don't load webcam on startup (mmbyday/selsta)
2020-04-17 20:53:46 -05:00
luigi1111
8a73fd241e Merge pull request #2835
a078705 QrScanThread: use sizeInBytes to fix warning (selsta)
2020-04-17 20:52:33 -05:00
luigi1111
9760886eff Merge pull request #2834
fb7470a build: find zbar header on macOS (selsta)
2020-04-17 20:49:18 -05:00
luigi1111
34089599cd Merge pull request #2833
e2c6ae6 AddressBook: remove leftover code (selsta)
2020-04-17 20:46:49 -05:00
luigi1111
4a7a98034e Merge pull request #2832
ea25b71 updater: fetch signed hashes from getmonero.org, verify downloads (xiphon)
2020-04-17 20:45:24 -05:00
luigi1111
79f78f48e2 Merge pull request #2830
5ebe3f5 Settings: move Merchant menu entry (tobtoht/selsta)
2020-04-17 20:43:40 -05:00
selsta
fee81ba210 workflows: add trezor support ubuntu 2020-04-16 22:53:33 +02:00
selsta
a078705ec6 QrScanThread: use sizeInBytes to fix warning 2020-04-16 19:11:29 +02:00
rating89us
de6a9b6779 Transfer: address book inline button, 2nd inline button, scan QR code button fixes
spacing fix
2020-04-16 13:25:28 +02:00
mmbyday
3f13a5c9a4 QRCodeScanner: don't load webcam on startup 2020-04-16 03:29:39 +02:00
selsta
fb7470a2a6 build: find zbar header on macOS 2020-04-16 03:13:33 +02:00
selsta
e2c6ae6472 AddressBook: remove leftover code 2020-04-16 02:08:32 +02:00
xiphon
ea25b71ca6 updater: fetch signed hashes from getmonero.org, verify downloads 2020-04-14 21:37:04 +00:00
thotbot
5ebe3f5092 Settings: move Merchant menu entry 2020-04-13 23:15:14 +02:00
luigi1111
8e4124f06a Merge pull request #2828
e1258e0 TitleBar: fix close icon fallback (selsta)
2020-04-13 15:49:17 -05:00
luigi1111
e47fd5f760 Merge pull request #2827
925cced README: add weblate's widget for translations status (erciccione)
2020-04-13 15:48:14 -05:00
luigi1111
8767c71107 Merge pull request #2825
94083e7 cmake: use monero core compilation and linking flags (xiphon)
2020-04-13 15:46:38 -05:00
luigi1111
2156a6533b Merge pull request #2824
5f27a45 '--verify-update', shasum support, OpenPGP signatures verification (xiphon)
2020-04-13 15:43:24 -05:00
luigi1111
7eac690d44 Merge pull request #2822
a49d579 build: fix MSYS2 folder detection (xiphon)
2020-04-13 15:40:42 -05:00
luigi1111
31adc6cfd6 Merge pull request #2821
6d7db13 Settings: rework wallet page (thotbot/xiphon)
2020-04-13 15:39:54 -05:00
luigi1111
d582fd338d Merge pull request #2819
6ed7fce UpdateDialog: implement update download functionality (xiphon)
2020-04-13 15:38:06 -05:00
luigi1111
eed51e3ffa Merge pull request #2772
48aab5c WalletManager: wallet recovery - seed offset passphrase support (xiphon)
2020-04-13 15:36:44 -05:00
luigi1111
6a889bdaa1 Merge pull request #2739
b5fafb5 Transfer: display estimated transaction fee, requires #6302 (xiphon)
2020-04-13 15:35:44 -05:00
xiphon
5f27a45910 '--verify-update', shasum support, OpenPGP signatures verification 2020-04-12 21:34:22 +00:00
selsta
e1258e0ada TitleBar: fix close icon fallback 2020-04-10 13:55:25 +02:00
erciccione
925cced7d7 README: add weblate's widget for translations status 2020-04-09 12:25:54 +02:00
xiphon
94083e746f cmake: use monero core compilation and linking flags 2020-04-08 02:31:16 +00:00
xiphon
a49d579bd3 build: fix MSYS2 folder detection 2020-04-06 17:22:34 +00:00
xiphon
6ed7fcec67 UpdateDialog: implement update download functionality 2020-04-06 16:59:33 +00:00
thotbot
6d7db135e7 Settings: rework wallet page 2020-04-05 13:07:11 +00:00
luigi1111
042400b83f Set submodule back to master 2020-04-04 14:30:32 -05:00
luigi1111
df54439972 Merge pull request #2818
a9fea24 workflows: retry on apt failure / increase timeout (selsta)
2020-04-04 13:22:37 -05:00
luigi1111
86252506f0 Merge pull request #2817
58987b2 network: provide common HTTP GET functionality with js callbacks (xiphon)
2020-04-04 13:21:23 -05:00
selsta
a9fea2462b workflows: retry on apt failure / increase timeout
Co-authored-by: xiphon <xiphon@protonmail.com>
2020-04-01 00:50:24 +02:00
xiphon
58987b2ec6 network: provide common HTTP GET functionality with js callbacks 2020-03-31 21:37:19 +00:00
luigi1111
aecd218d15 Merge pull request #2807
d07da76 MenuButton: add hover effect (xiphon)
2020-03-27 10:55:07 -05:00
luigi1111
856843b52a Merge pull request #2803
5872bc8 build: disable _FORTIFY_SOURCE when building without optimization (xiphon)
2020-03-27 10:53:46 -05:00
luigi1111
fc740a89ab Merge pull request #2801
dede10e Add QT Creator cache file to gitignore (tobtoht)
2020-03-27 10:19:31 -05:00
luigi1111
0643607ec3 Merge pull request #2792
d21c22b SettingsNode: blockchain location 'Reset' button (xiphon)
2020-03-27 10:16:58 -05:00
xiphon
5872bc8a2b build: disable _FORTIFY_SOURCE when building without optimization 2020-03-23 06:34:18 +00:00
xiphon
d07da76383 MenuButton: add hover effect 2020-03-14 01:19:08 +00:00
luigi1111
c092de97f2 Merge pull request #2805
c9e461d build: set submodule to v0.15.0.5 (selsta)
2020-03-10 18:58:00 -04:00
luigi1111
c84a8fb07d Merge pull request #2799
55b548f qt: drop Qt Network and Qt OpenSSL deps, use epee library instead (xiphon)
2020-03-10 18:56:04 -04:00
luigi1111
63b4566475 Merge pull request #2796
c7df74d README: add protobuf to linux instructions (selsta)
2020-03-10 18:50:54 -04:00
luigi1111
3699dc9f2e Merge pull request #2795
94a27b9 README: cleanup macOS instructions (selsta)
2020-03-10 18:49:22 -04:00
luigi1111
eee48ce74c Merge pull request #2797
b739cdd cmake: -static, -static-libgcc, -static-libstdc++ linker flags (xiphon)
2020-03-10 18:48:01 -04:00
luigi1111
9072f89a4e Merge pull request #2794
bf9b04b installers: fix warning (selsta)
2020-03-10 18:46:45 -04:00
selsta
c9e461dcb6 build: set submodule to v0.15.0.5 2020-03-09 20:50:16 +01:00
xiphon
55b548f31c qt: drop Qt Network and Qt OpenSSL deps, use epee library instead 2020-03-09 11:05:49 +00:00
thotbot
dede10ea1a Add QT Creator cache file to gitignore 2020-03-08 15:58:29 +00:00
xiphon
b739cdd52a cmake: -static, -static-libgcc, -static-libstdc++ linker flags 2020-03-06 11:54:16 +00:00
selsta
94a27b964a README: cleanup macOS instructions 2020-03-06 02:06:08 +01:00
selsta
c7df74dab7 README: add protobuf to linux instructions 2020-03-06 01:52:00 +01:00
selsta
bf9b04b126 installers: fix warning 2020-03-04 20:02:08 +01:00
xiphon
d21c22b444 SettingsNode: blockchain location 'Reset' button 2020-03-02 10:35:50 +00:00
luigi1111
cee56a7d23 Merge pull request #2789
dc3a99c Add and activate new language: Norwegian (erciccione)
2020-02-28 16:16:01 -05:00
luigi1111
c3a34227b7 Merge pull request #2788
566beea Add translations from Weblate + refresh + 1 new language: Norwegian (Monero-Weblate)
2020-02-28 16:14:19 -05:00
luigi1111
7a86856063 Merge pull request #2787
9deca92 fix multiple minor issues (c-style casts, default branch, etc.) (xiphon)
2020-02-28 16:11:15 -05:00
luigi1111
86f35992dc Merge pull request #2786
09ff85a main: show splash screen after passphrase entry (selsta)
2020-02-28 16:10:31 -05:00
luigi1111
cb84652c8e Merge pull request #2781
a0b6c8a PasswordDialog: don't skip equality check (selsta)
2020-02-28 16:09:36 -05:00
erciccione
dc3a99c9ca Add and activate new language: Norwegian 2020-02-28 14:08:23 +01:00
Weblate
566beeaf4b Add translations from Weblate + refresh + 1 new language: Norwegian
Refresh language files (Including monero-core.ts)

results:

Found 656 source text(s) (27 new and 629 already existing)
    Removed 18 obsolete entries

Translations:

Hungarian

Currently translated at 78.2% (506 of 647 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/hu/
Author: Zsolt András Kovács

Norwegian Bokmål

Currently translated at 100.0% (647 of 647 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/nb_NO/
Author: Chris
Reviewed by Luigi1111 and Rehrar in behalf of luigi1111's reviewer

Italian

Currently translated at 94.0% (608 of 647 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/it/
Author: Marco

    Ukrainian

    Currently translated at 93.2% (603 of 647 strings)
    Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/uk/
    Author: Agent LvM

    Portuguese (Brazil)

    Currently translated at 97.7% (632 of 647 strings)
    Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/pt_BR/
    Author: netrik182
2020-02-28 12:49:34 +00:00
xiphon
9deca92e07 fix multiple minor issues (c-style casts, default branch, etc.) 2020-02-28 10:25:57 +00:00
selsta
09ff85af44 main: show splash screen after passphrase entry 2020-02-27 18:39:35 +01:00
selsta
a0b6c8a397 PasswordDialog: don't skip equality check
credit to consistent-dream
2020-02-27 15:29:35 +01:00
luigi1111
44dfb80633 Merge pull request #2783
dfd8ff9 main: fix Trezor passphrase screen (selsta)
2020-02-26 14:52:44 -05:00
luigi1111
7067195c2f Merge pull request #2785
c14852c WizardController: invoke restart() after persistentSettings update (xiphon)
2020-02-26 14:51:10 -05:00
luigi1111
19cf510e62 Merge pull request #2784
57d3302 workflows: fix macOS build (selsta)
2020-02-26 14:17:57 -05:00
xiphon
c14852cbd7 WizardController: invoke restart() after persistentSettings update 2020-02-26 17:53:35 +00:00
selsta
57d330244b workflows: fix macOS build 2020-02-25 22:33:50 +01:00
selsta
dfd8ff9809 main: fix Trezor passphrase screen 2020-02-25 21:24:58 +01:00
luigi1111
b4a65c52cc Merge pull request #2778
636ca1c DaemonManager: async stop, simple mode wizard - show splash on stop (xiphon)
2020-02-19 22:17:04 -05:00
luigi1111
386c5e3d30 Merge pull request #2777
872b18d Simple mode: don't override bootstrap daemon textbox (selsta)
2020-02-19 22:16:13 -05:00
luigi1111
5069e6ecae Merge pull request #2776
98abdaa build: fix all warnings, treat warnings as errors (xiphon)
2020-02-19 22:15:08 -05:00
luigi1111
7c38a836d3 Merge pull request #2775
fbfc531 History: display Address Book names for known destination addresses (xiphon)
2020-02-19 22:13:53 -05:00
luigi1111
0731972499 Merge pull request #2774
0af7a43 macOS: add copyright notice (selsta)
2020-02-19 22:10:43 -05:00
luigi1111
f9b9d43ac1 Merge pull request #2773
478fdda macOS: add version to info.plist (selsta)
2020-02-19 22:09:43 -05:00
luigi1111
d1e431c5e8 Merge pull request #2769
98ab4ea misc: strip html out of translatable strings (selsta)
2020-02-19 22:07:38 -05:00
luigi1111
4c0996888a Merge pull request #2764
a20422d Transfer: allow to import key images using trusted remote node (xiphon)
2020-02-19 22:06:50 -05:00
luigi1111
a9d855ad00 Merge pull request #2584
d175070 installer: change blockchain folder string (selsta)
2020-02-19 22:05:43 -05:00
xiphon
636ca1c41d DaemonManager: async stop, simple mode wizard - show splash on stop 2020-02-16 15:01:17 +00:00
selsta
872b18d5af Simple mode: don't override bootstrap daemon textbox 2020-02-16 15:09:36 +01:00
xiphon
98abdaa5d5 build: fix all warnings, treat warnings as errors 2020-02-16 13:55:08 +00:00
xiphon
b5fafb55c9 Transfer: display estimated transaction fee, requires #6302 2020-02-16 11:55:36 +00:00
xiphon
fbfc5310d5 History: display Address Book names for known destination addresses 2020-02-15 15:57:38 +00:00
selsta
478fddaf57 macOS: add version to info.plist 2020-02-14 14:32:04 +01:00
selsta
d175070f55 installer: change blockchain folder string 2020-02-13 16:45:08 +01:00
selsta
0af7a4320d macOS: add copyright notice 2020-02-13 13:11:05 +01:00
xiphon
48aab5c6e5 WalletManager: wallet recovery - seed offset passphrase support 2020-02-12 13:49:26 +00:00
xiphon
a20422da74 Transfer: allow to import key images using trusted remote node 2020-02-06 15:14:38 +00:00
luigi1111
eb7fae92ef Merge pull request #2765
0629f06 DaemonManager: check monerod binary, error details on start failure (xiphon)
2020-02-05 21:42:11 -05:00
luigi1111
4b1a6eb49b Merge pull request #2718
e05e634 Keys: rename keys section to primary address & keys, add primary address (rating89us)
2020-02-05 21:41:07 -05:00
luigi1111
df614cd0a0 Merge pull request #2712
b4a6569 History: add filter options in search field (rating89us)
2020-02-05 21:40:17 -05:00
luigi1111
0adafaaa91 Merge pull request #2711
023951f Transfer: import key images always visible (rating89us)
2020-02-05 21:39:34 -05:00
luigi1111
467dd8b664 Merge pull request #2702
c7f272d Wizard: open wallet -> create wallet (rating89us)
2020-02-05 21:38:47 -05:00
luigi1111
dba48334e6 Merge pull request #2689
e5a6a50 Wizard: remove unnecessary periods (rating89us)
2020-02-05 21:37:35 -05:00
selsta
98ab4ea2aa misc: strip html out of translatable strings 2020-02-05 17:06:52 +01:00
xiphon
0629f06156 DaemonManager: check monerod binary, error details on start failure 2020-02-04 23:27:48 +00:00
rating89us
e05e6346ac Keys: rename keys section to primary address & keys, add primary address 2020-02-04 21:51:03 +01:00
luigi1111
d5469c8247 Merge pull request #2759
900f478 MenuButton: fix gradient (selsta)
2020-02-04 14:37:17 -05:00
luigi1111
080ec28eb4 Merge pull request #2758
742a465 AddressBook: thread-safety, fix use-after-free (xiphon)
2020-02-04 14:36:35 -05:00
luigi1111
8f197bc6ac Merge pull request #2756
b6d554e LeftPanel: NetworkStatusItem fixed at bottom left corner (rating89us)
2020-02-04 14:35:18 -05:00
luigi1111
82bc71c81d Merge pull request #2594
24ac001 main: fix warning (selsta)
2020-02-04 14:34:23 -05:00
luigi1111
5a4f27b375 Merge pull request #2592
163fa73 WizardOpenWallet1: fix warning (selsta)
2020-02-04 14:33:34 -05:00
rating89us
b6d554eebd LeftPanel: NetworkStatusItem fixed at bottom left corner 2020-02-02 18:51:50 +01:00
selsta
900f478abe MenuButton: fix gradient 2020-02-01 23:01:10 +01:00
xiphon
742a4659f4 AddressBook: thread-safety, fix use-after-free 2020-02-01 14:21:33 +00:00
luigi1111
35b7a5f6bb Merge pull request #2747
6940390 Wallet: implement 'Connecting' status, add 'disconnected' property (xiphon)
2020-01-30 16:32:56 -05:00
luigi1111
21e8c7ca17 Merge pull request #2749
e59e247 Merchant: strip html tags out of translatable string (xiphon)
2020-01-30 16:31:55 -05:00
luigi1111
8ef1b41093 Merge pull request #2748
8940d2b Translations from Weblate + Updated language files (Monero-Weblate)
2020-01-28 15:27:04 -05:00
luigi1111
911ff4288d Merge pull request #2746
7ebf50d Keys: stop displaying hw device msg in view-only wallets (rating89us)
2020-01-28 15:25:36 -05:00
luigi1111
6dd759de33 Merge pull request #2744
2c515ce History: address filter case insensitive (rating89us)
2020-01-28 15:24:34 -05:00
xiphon
e59e247048 Merchant: strip html tags out of translatable string 2020-01-28 16:33:01 +00:00
Weblate
8940d2b8d1 Translations from Weblate + Updated language files
Refresh:
Found 647 source text(s) (44 new and 603 already existing)
    Removed 45 obsolete entries

Translations:

Portuguese (Brazil)

Currently translated at 100.0% (648 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/pt_BR/

Korean

Currently translated at 37.3% (242 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/ko/

Spanish

Currently translated at 89.5% (580 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/es/

Swedish

Currently translated at 80.9% (524 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/sv/

Greek

Currently translated at 13.6% (88 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/el/

Dutch

Currently translated at 100.0% (648 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/nl/

Korean

Currently translated at 37.2% (241 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/ko/

Russian

Currently translated at 100.0% (648 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/ru/

Lithuanian

Currently translated at 61.1% (396 of 648 strings)
Translate-URL: https://translate.getmonero.org/projects/monero/gui-wallet/lt/
2020-01-28 15:44:40 +00:00
xiphon
6940390a5e Wallet: implement 'Connecting' status, add 'disconnected' property 2020-01-28 05:11:29 +00:00
rating89us
7ebf50dc6f Keys: stop displaying hw device msg in view-only wallets 2020-01-27 10:07:07 +01:00
rating89us
2c515ceb74 History: address filter case insensitive 2020-01-27 01:53:31 +01:00
luigi1111
39aa6e76b1 Merge pull request #2740
a3f5460 build: fix cmake command line ARCH def, add ARCH=native fallback (xiphon)
2e262d4 workflows: checkout v2 -> v1 (selsta)
2020-01-24 22:02:29 -05:00
luigi1111
aa5962519a Merge pull request #2733
f266480 Style: All button (transfer page) in white text (rating89us)
2020-01-24 21:59:47 -05:00
xiphon
a3f5460d12 build: fix cmake command line ARCH def, add ARCH=native fallback 2020-01-24 20:31:45 +01:00
selsta
2e262d41d7 workflows: checkout v2 -> v1 2020-01-24 13:16:22 +01:00
luigi1111
6de8547047 Merge pull request #2736
7e6fcff Update Arch Linux installation instructions (trulex)
2020-01-23 10:28:05 -05:00
luigi1111
59954df199 Merge pull request #2730
96106cc resources: drop JPEG images (xiphon)
2020-01-23 10:26:54 -05:00
luigi1111
8a66f7b6f7 Merge pull request #2729
ed9e061 cmake: set minimum required CMake version to 3.5 (Ubuntu 16.04 LTS) (xiphon)
2020-01-23 10:25:21 -05:00
luigi1111
a5e5bfad46 Merge pull request #2728
b56c0cd cmake: fix Linux detection (xiphon)
2020-01-23 10:24:36 -05:00
luigi1111
2058c78943 Merge pull request #2727
0043905 workflows: update checkout to v2 (selsta)
f36098d workflows: remove bundled boost (selsta)
2020-01-23 10:22:34 -05:00
luigi1111
4d279a5f02 Merge pull request #2726
fae5956 README: link to figma (design) (selsta)
2020-01-23 10:16:55 -05:00
luigi1111
29f0c4667c Merge pull request #2725
8dfd7a3 README: link to weblate (selsta)
2020-01-23 10:15:17 -05:00
luigi1111
f00b7b42c0 Merge pull request #2724
098e78f README: remove deprecated forum (selsta)
2020-01-23 10:14:27 -05:00
luigi1111
80a3da6efa Merge pull request #2723
4a30d1f Account: update label after rename (selsta)
2020-01-23 10:13:22 -05:00
luigi1111
2a1cd7dc01 Merge pull request #2719
148c1b9 Transfer: fix Send button state not being updated properly (xiphon)
2020-01-23 10:12:20 -05:00
luigi1111
9bc6e041ee Merge pull request #2717
cc22693 StandardDropdown: remove dots from upper corners (rating89us)
2020-01-23 10:10:52 -05:00
luigi1111
3bab6ccedf Merge pull request #2716
c4bdf56 Remove paste buttons (rating89us)
2020-01-23 10:09:47 -05:00
luigi1111
eebbd2b93e Merge pull request #2715
a8618b0 Pass -dead_strip and -dead_strip_dylibs on macOS (rex4539)
2020-01-23 10:08:50 -05:00
luigi1111
a807dcd5df Merge pull request #2714
50f3e67 Receive: buttons in rows + labels + 3D depth + FontAwesome icons (rating89us)
2020-01-23 10:06:51 -05:00
luigi1111
0009a886fe Merge pull request #2707
266b1f1 CheckBox: fix word wrap on windows (Qt 5.13.2) (selsta)
2020-01-22 17:25:52 -05:00
luigi1111
9c2bceaaed Merge pull request #2615
7cf0f21 build: support ARCH override for libwallet_merged (xiphon)
2020-01-22 17:21:40 -05:00
rating89us
50f3e67e81 Receive: buttons in rows + labels + 3D depth + FontAwesome icons 2020-01-19 17:29:49 -03:00
Darko Janković
7e6fcff3ee Update Arch Linux installation instructions 2020-01-19 17:32:27 +01:00
rating89us
f266480f7d Style: All button (transfer page) in white text 2020-01-18 14:12:25 -03:00
xiphon
96106cc818 resources: drop JPEG images 2020-01-17 11:58:51 +00:00
xiphon
ed9e061489 cmake: set minimum required CMake version to 3.5 (Ubuntu 16.04 LTS) 2020-01-17 11:01:30 +00:00
xiphon
b56c0cd8a2 cmake: fix Linux detection 2020-01-17 10:40:51 +00:00
selsta
f36098d60f workflows: remove bundled boost 2020-01-17 02:03:16 +01:00
selsta
00439052e6 workflows: update checkout to v2 2020-01-17 01:56:25 +01:00
selsta
fae5956bfb README: link to figma (design) 2020-01-17 00:41:48 +01:00
selsta
8dfd7a300d README: link to weblate 2020-01-17 00:36:27 +01:00
xiphon
7cf0f21ec0 build: support ARCH override for libwallet_merged 2020-01-16 13:54:52 +00:00
selsta
098e78f4ef README: remove deprecated forum 2020-01-16 03:58:20 +01:00
selsta
4a30d1fc38 Account: update label after rename 2020-01-15 22:41:39 +01:00
xiphon
148c1b9816 Transfer: fix Send button state not being updated properly 2020-01-15 13:52:40 +00:00
rating89us
cc22693504 StandardDropdown: remove dots from upper corners 2020-01-14 22:02:02 -03:00
rating89us
c4bdf5621c Remove paste buttons 2020-01-14 03:29:54 -03:00
Dimitris Apostolou
a8618b0471 Pass -dead_strip and -dead_strip_dylibs on macOS 2020-01-13 14:01:43 +02:00
rating89us
b4a6569e63 History: add filter options in search field 2020-01-12 16:20:20 -03:00
rating89us
e5a6a50e49 Wizard: remove unnecessary periods 2020-01-09 20:12:08 -03:00
rating89us
c7f272d86a Wizard: open wallet -> create wallet 2020-01-09 18:24:16 -03:00
rating89us
023951fd84 Transfer: import key images always visible
Closes #2687
2020-01-08 23:08:17 -03:00
luigi1111
ef2b0cfa4a Merge pull request #2709
a5b500c main: add blur to wizard password dialog (selsta)
2020-01-08 18:43:03 -05:00
luigi1111
fe08950b03 Merge pull request #2708
16fd1d1 windeploy: add libzstd and update libicu* (iDunk5400)
2020-01-08 18:40:42 -05:00
selsta
a5b500cd93 main: add blur to wizard password dialog 2020-01-08 21:56:15 +01:00
iDunk5400
16fd1d1eee windeploy: add libzstd and update libicu* 2020-01-08 21:47:04 +01:00
sebseb7
266b1f167d CheckBox: fix word wrap on windows (Qt 5.13.2) 2020-01-08 21:38:57 +01:00
luigi1111
40a1edbbcb Merge pull request #2695
5ca671e workflows: rename to be consistent with cli repo (selsta)
2020-01-06 11:21:25 -05:00
luigi1111
0999daf1f2 Merge pull request #2693
c98ffcc workflows: add windows support (selsta)
2020-01-06 11:20:29 -05:00
luigi1111
7462c64fe2 Merge pull request #2692
e74075b build: link ole32 on windows (selsta)
2020-01-06 11:17:47 -05:00
luigi1111
4920df95e3 Merge pull request #2691
916c0e4 workflows: fix macOS build (selsta)
2020-01-06 11:17:01 -05:00
luigi1111
6a453039ee Merge pull request #2694
118ad12 Update WizardCreateDevice1.qml (rating89us)
2020-01-02 10:52:18 -05:00
luigi1111
5281244b33 Merge pull request #2690
b626fcb build: autodetect MSYS2 install path, support non-standard location (xiphon)
2020-01-02 10:50:39 -05:00
luigi1111
525822f391 Merge pull request #2684
c765bbb build: define Boost_USE_STATIC_RUNTIME for static builds (xiphon)
2020-01-02 10:47:44 -05:00
luigi1111
23e3d82441 Merge pull request #2676
181866b Set minimum window size (tobtoht)
2020-01-02 10:46:18 -05:00
selsta
5ca671e5f5 workflows: rename to be consistent with cli repo 2019-12-31 00:20:49 +01:00
rating89us
118ad125c4 Update WizardCreateDevice1.qml 2019-12-30 13:47:45 -03:00
selsta
c98ffcca5d workflows: add windows support 2019-12-30 13:36:51 +01:00
selsta
e74075bb0e build: link ole32 on windows 2019-12-30 13:29:17 +01:00
selsta
916c0e4406 workflows: fix macOS build 2019-12-30 11:03:05 +01:00
xiphon
b626fcba08 build: autodetect MSYS2 install path, support non-standard location 2019-12-30 09:44:21 +00:00
xiphon
c765bbb1fd build: define Boost_USE_STATIC_RUNTIME for static builds 2019-12-24 11:25:17 +00:00
thotbot
181866ba4a Set minimum window size 2019-12-21 21:43:37 +00:00
selsta
24ac001daa main: fix warning 2019-12-14 03:37:44 +01:00
selsta
163fa733ae WizardOpenWallet1: fix warning 2019-12-14 03:18:26 +01:00
281 changed files with 74820 additions and 54262 deletions

1
.dockerignore Normal file
View File

@@ -0,0 +1 @@
*

View File

@@ -1,34 +1,177 @@
name: GUI build
name: ci/gh-actions/gui
on: [push, pull_request]
jobs:
build-macos:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v1
- name: update brew and install dependencies
run: brew update && brew install boost hidapi zmq libpgm unbound libsodium miniupnpc ldns expat doxygen graphviz libunwind-headers protobuf qt5
with:
submodules: recursive
- name: install dependencies
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi zmq libpgm libsodium miniupnpc ldns expat libunwind-headers protobuf qt5 pkg-config
- name: build
run: export PATH=$PATH:/usr/local/opt/qt/bin && ./build.sh
run: DEV_MODE=ON make release -j3
- name: test qml
run: build/release/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
build-ubuntu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- name: remove bundled boost
run: sudo rm -rf /usr/local/share/boost
- name: set apt conf
run: |
echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- name: update apt
run: sudo apt update
- name: install monero dependencies
run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev
run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler
- name: install monero gui dependencies
run: sudo apt -y install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel qttools5-dev-tools qml-module-qtquick-templates2 libqt5svg5-dev xvfb
run: sudo apt -y install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtqml-models2 qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel qml-module-qt-labs-settings qml-module-qt-labs-platform qml-module-qt-labs-folderlistmodel qttools5-dev-tools qml-module-qtquick-templates2 libqt5svg5-dev libgcrypt20-dev xvfb
- name: build
run: ./build.sh
run: DEV_MODE=ON make release -j3
- name: test qml
run: xvfb-run -a build/release/bin/monero-wallet-gui --test-qml
build-windows:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: eine/setup-msys2@v2
with:
update: true
install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb git mingw-w64-x86_64-qt5 mingw-w64-x86_64-libgcrypt
- name: build
run: DEV_MODE=ON make release-win64 -j2
- name: test qml
run: build/release/bin/monero-wallet-gui --test-qml
macos-bundle:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- name: install dependencies
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi zmq libpgm miniupnpc ldns expat libunwind-headers protobuf pkg-config python3 p7zip
- name: install dependencies
run: pip3 install requests semantic_version lxml py7zr
- name: download qt
run: |
curl -O https://raw.githubusercontent.com/engnr/qt-downloader/master/qt-downloader
chmod +x qt-downloader
./qt-downloader macos desktop 5.15.2 clang_64
working-directory: ../
- name: build
run: CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 make release -j3
- name: deploy
run: make deploy
working-directory: build/release
- name: test qml
run: build/release/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
- name: create .tar
run: tar -cf monero-wallet-gui.tar monero-wallet-gui.app
working-directory: build/release/bin
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: build/release/bin/monero-wallet-gui.tar
docker-linux-static:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.10
continue-on-error: true
with:
key: docker-linux-static-{hash}
restore-keys: |
docker-linux-static-
- name: install dependencies
run: sudo apt -y install xvfb libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0
- name: preprare build enviroment
run: docker build --tag monero:build-env-linux --build-arg THREADS=3 --file Dockerfile.linux .
- name: build
run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -w /monero-gui monero:build-env-linux sh -c 'make release-static -j3'
- name: sha256sum
run: shasum -a256 /home/runner/work/monero-gui/monero-gui/build/release/bin/monero-wallet-gui
- name: test qml
run: xvfb-run -a /home/runner/work/monero-gui/monero-gui/build/release/bin/monero-wallet-gui --test-qml
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: |
/home/runner/work/monero-gui/monero-gui/build/release/bin/monero-wallet-gui
/home/runner/work/monero-gui/monero-gui/build/release/bin/monerod
docker-windows-static:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.10
continue-on-error: true
with:
key: docker-windows-static-{hash}
restore-keys: |
docker-windows-static-
- name: preprare build enviroment
run: docker build --tag monero:build-env-windows --build-arg THREADS=3 --file Dockerfile.windows .
- name: build
run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -w /monero-gui monero:build-env-windows sh -c 'make depends root=/depends target=x86_64-w64-mingw32 tag=win-x64 -j3'
- name: sha256sum
run: shasum -a256 /home/runner/work/monero-gui/monero-gui/build/x86_64-w64-mingw32/release/bin/monero-wallet-gui.exe
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: |
/home/runner/work/monero-gui/monero-gui/build/x86_64-w64-mingw32/release/bin/monero-wallet-gui.exe
/home/runner/work/monero-gui/monero-gui/build/x86_64-w64-mingw32/release/bin/monerod.exe
docker-android:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- name: preprare build enviroment
run: docker build --tag monero:build-env-android --build-arg THREADS=3 --file Dockerfile.android .
- name: build
run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -e THREADS=3 monero:build-env-android
- uses: actions/upload-artifact@v2
with:
name: ${{ github.job }}
path: /home/runner/work/monero-gui/monero-gui/build/Android/release/android-build/monero-gui.apk
source-archive:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- name: archive
run: |
pip install git-archive-all
export VERSION="monero-gui-$(git describe)"
export OUTPUT="$VERSION.tar"
echo "OUTPUT=$OUTPUT" >> $GITHUB_ENV
/home/runner/.local/bin/git-archive-all --prefix "$VERSION/" --force-submodules "$OUTPUT"
- uses: actions/upload-artifact@v2
with:
name: ${{ env.OUTPUT }}
path: /home/runner/work/monero-gui/monero-gui/${{ env.OUTPUT }}

1
.gitignore vendored
View File

@@ -13,6 +13,7 @@ monero-wallet-gui_plugin_import.cpp
monero-wallet-gui_qml_plugin_import.cpp
*.qmlc
*.jsc
qml_qmlcache.qrc
### Vim ###
# Swap

3
.gitmodules vendored
View File

@@ -2,3 +2,6 @@
path = monero
url = https://github.com/monero-project/monero
ignore = all
[submodule "external/quirc"]
path = external/quirc
url = https://github.com/dlbeer/quirc/

View File

@@ -1,82 +1,69 @@
cmake_minimum_required(VERSION 3.10)
cmake_minimum_required(VERSION 3.12)
project(monero-gui)
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
set(VERSION_MAJOR "14")
set(VERSION_MINOR "0")
set(VERSION_REVISION "3")
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
set(VERSION_MAJOR "17")
set(VERSION_MINOR "2")
set(VERSION_REVISION "2")
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
# libwallet requires a static build, so we only allow static compilation
set(STATIC ON)
option(STATIC "Link libraries statically, requires static Qt")
option(USE_DEVICE_TREZOR ON)
option(ENABLE_PASS_STRENGTH_METER "Disable zxcvbn" OFF)
option(USE_DEVICE_TREZOR "Trezor support compilation" ON)
option(ENABLE_PASS_STRENGTH_METER "Enable zxcvbn library for password strength" OFF)
option(WITH_SCANNER "Enable webcam QR scanner" OFF)
option(DEV_MODE "Checkout latest monero master on build" OFF)
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
include(CheckLinkerFlag)
include(FindCcache)
if(DEBUG)
set(CMAKE_VERBOSE_MAKEFILE ON)
endif()
set(BUILD_GUI_DEPS ON)
set(ARCH "x86-64")
set(BUILD_64 ON)
set(INSTALL_VENDORED_LIBUNBOUND=ON)
set(ARCH "x86-64" CACHE STRING "Target architecture")
set(BUILD_64 ON CACHE BOOL "Build 64-bit binaries")
function (add_c_flag_if_supported flag var)
string(REPLACE "-" "_" supported ${flag}_c)
check_c_compiler_flag(${flag} ${supported})
if(${${supported}})
set(${var} "${${var}} ${flag}" PARENT_SCOPE)
endif()
endfunction()
function (add_cxx_flag_if_supported flag var)
string(REPLACE "-" "_" supported ${flag}_cxx)
check_cxx_compiler_flag(${flag} ${supported})
if(${${supported}})
set(${var} "${${var}} ${flag}" PARENT_SCOPE)
endif()
endfunction()
function (add_linker_flag_if_supported flag var)
string(REPLACE "-" "_" supported ${flag}_ld)
string(REPLACE "," "_" supported ${flag}_ld)
check_linker_flag(${flag} ${supported})
if(${${supported}})
set(${var} "${${var}} ${flag}" PARENT_SCOPE)
endif()
endfunction()
find_package(Git)
if(GIT_FOUND)
if(NOT DEV_MODE)
find_package(Git)
function (check_submodule relative_path)
execute_process(COMMAND git rev-parse "HEAD" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${relative_path} OUTPUT_VARIABLE localHead)
execute_process(COMMAND git rev-parse "HEAD:${relative_path}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE checkedHead)
string(COMPARE EQUAL "${localHead}" "${checkedHead}" upToDate)
if (upToDate)
message(STATUS "Submodule '${relative_path}' is up-to-date")
else()
message(FATAL_ERROR "Submodule '${relative_path}' is not using the checked head. Please update all submodules with\ngit submodule update --init --force\nor run cmake with -DMANUAL_SUBMODULES=1,\n or if you want to build from latest master run cmake with -DEV_MODE,\n or run make devmode")
if(NOT MANUAL_SUBMODULES)
find_package(Git)
if(GIT_FOUND)
if(NOT DEV_MODE)
function (check_submodule relative_path)
execute_process(COMMAND git rev-parse "HEAD" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${relative_path} OUTPUT_VARIABLE localHead)
execute_process(COMMAND git rev-parse "HEAD:${relative_path}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE checkedHead)
string(COMPARE EQUAL "${localHead}" "${checkedHead}" upToDate)
if (upToDate)
message(STATUS "Submodule '${relative_path}' is up-to-date")
else()
message(FATAL_ERROR "Submodule '${relative_path}' is not using the checked head. Please update all submodules with\ngit submodule update --init --force --recursive\nor run cmake with -DMANUAL_SUBMODULES=1,\n or if you want to build from latest master run cmake with -DDEV_MODE=ON,\n or run make devmode")
endif()
endfunction ()
message(STATUS "Checking submodules")
check_submodule(monero)
else()
execute_process(COMMAND ${GIT_EXECUTABLE} fetch WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/monero RESULT_VARIABLE GIT_FETCH_RESULT)
execute_process(COMMAND ${GIT_EXECUTABLE} checkout -f origin/master WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/monero RESULT_VARIABLE GIT_CHECKOUT_MASTER_RESULT)
execute_process(COMMAND ${GIT_EXECUTABLE} submodule sync --recursive WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/monero RESULT_VARIABLE GIT_SUBMODULE_SYNC_RESULT)
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --force --recursive WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/monero RESULT_VARIABLE GIT_SUBMODULE_UPDATE_RESULT)
if(NOT GIT_FETCH_RESULT EQUAL "0" OR NOT GIT_CHECKOUT_MASTER_RESULT EQUAL "0" OR NOT GIT_SUBMODULE_SYNC_RESULT EQUAL "0" OR NOT GIT_SUBMODULE_UPDATE_RESULT EQUAL "0")
message(FATAL_ERROR "Updating git submodule to master (-DDEV_MODE=ON) failed")
endif()
endfunction ()
message(STATUS "Checking submodules")
check_submodule(monero)
else()
execute_process(COMMAND cd monero && git checkout origin/master)
endif()
endif()
endif()
add_subdirectory(monero)
set_property(TARGET wallet_merged PROPERTY FOLDER "monero")
add_subdirectory(external)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
get_directory_property(ARCH_WIDTH DIRECTORY "monero" DEFINITION ARCH_WIDTH)
if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
@@ -84,20 +71,20 @@ if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
endif()
if(STATIC)
message(STATUS "Initiating static build")
set(Boost_USE_STATIC_LIBS ON)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
message(STATUS "Initiating static build")
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME ON)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ${CMAKE_FIND_LIBRARY_SUFFIXES})
add_definitions(-DMONERO_GUI_STATIC)
endif()
# Include password strength library
if(ENABLE_PASS_STRENGTH_METER)
message(STATUS "Buildin with pass strength meter support.")
message(STATUS "Building with pass strength meter support.")
else()
add_definitions(-DDISABLE_PASS_STRENGTH_METER)
endif()
include(CheckTrezor) # Trezor support check
include(CMakePackageConfigHelpers)
# force version update
@@ -134,38 +121,33 @@ monero_gui_add_library(gui_version SOURCES version.js DEPENDS genversiongui)
message(STATUS "${CMAKE_MODULE_PATH}")
# OpenSSL
if(APPLE AND NOT OPENSSL_ROOT_DIR)
execute_process(COMMAND brew --prefix openssl OUTPUT_VARIABLE OPENSSL_ROOT_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
find_package(OpenSSL REQUIRED)
message(STATUS "OpenSSL: Version ${OPENSSL_VERSION}")
message(STATUS "OpenSSL: include dir at ${OPENSSL_INCLUDE_DIR}")
message(STATUS "OpenSSL: libraries at ${OPENSSL_LIBRARIES} ${OPENSSL_SSL_LIBRARIES}")
# Zbar (for QR scanner)
if(WITH_SCANNER)
add_definitions(-DWITH_SCANNER)
find_package(ZBar0)
message(STATUS "libzbar: include dir at ${ZBAR_INCLUDE_DIR}")
message(STATUS "libzbar: libraries at ${ZBAR_LIBRARIES}")
endif()
# Sodium
find_library(SODIUM_LIBRARY sodium)
message(STATUS "libsodium: libraries at ${SODIUM_LIBRARY}")
# LibUSB
find_package(LibUSB)
message(STATUS "libusb: include dir at ${LibUSB_INCLUDE_DIRS}")
message(STATUS "libusb: libraries at ${LibUSB_LIBRARIES}")
# HIDApi
find_package(HIDAPI REQUIRED)
message(STATUS "libhidapi: include dir at ${HIDAPI_INCLUDE_DIRS}")
message(STATUS "libhidapi: libraries at ${HIDAPI_LIBRARIES}")
# Boost
if(DEBUG)
set(Boost_DEBUG ON)
endif()
find_package(Boost 1.62 REQUIRED COMPONENTS
if(APPLE AND NOT BOOST_ROOT)
execute_process(COMMAND brew --prefix boost OUTPUT_VARIABLE BOOST_ROOT OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
if(MINGW)
set(Boost_THREADAPI win32)
endif()
find_package(Boost 1.58 REQUIRED COMPONENTS
system
filesystem
thread
@@ -176,8 +158,12 @@ find_package(Boost 1.62 REQUIRED COMPONENTS
program_options
locale)
if(LINUX)
if(UNIX AND NOT APPLE AND NOT ANDROID)
set(CMAKE_SKIP_RPATH ON)
set(CMAKE_FIND_LIBRARY_SUFFIXES_PREV ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
find_package(X11 REQUIRED)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_PREV})
message(STATUS "X11_FOUND = ${X11_FOUND}")
message(STATUS "X11_INCLUDE_DIR = ${X11_INCLUDE_DIR}")
message(STATUS "X11_LIBRARIES = ${X11_LIBRARIES}")
@@ -193,21 +179,6 @@ if(MINGW)
string(REGEX MATCH "^[^/]:/[^/]*" msys2_install_path "${CMAKE_C_COMPILER}")
message(STATUS "MSYS location: ${msys2_install_path}")
set(CMAKE_INCLUDE_PATH "${msys2_install_path}/mingw${ARCH_WIDTH}/include")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/Qt/labs/folderlistmodel")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/Qt/labs/settings")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtGraphicalEffects")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtGraphicalEffects/private")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtMultimedia")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick.2")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/Controls")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/Controls.2")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/Dialogs")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/Dialogs/Private")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/Layouts")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/PrivateWidgets")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/Templates.2")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/Window.2")
link_directories("${msys2_install_path}/mingw${ARCH_WIDTH}/qml/QtQuick/XmlListModel")
# This is necessary because otherwise CMake will make Boost libraries -lfoo
# rather than a full path. Unfortunately, this makes the shared libraries get
# linked due to a bug in CMake which misses putting -static flags around the
@@ -220,35 +191,87 @@ endif()
set(QT5_LIBRARIES
Qt5Core
Qt5Quick
Qt5QuickControls2
Qt5Widgets
Qt5Gui
Qt5Network
Qt5Qml
Qt5Multimedia
Qt5Xml
Qt5XmlPatterns
Qt5Svg
Qt5Xml
)
if(WITH_SCANNER)
list(APPEND QT5_LIBRARIES Qt5Multimedia)
endif()
if(APPLE)
list(APPEND QT5_LIBRARIES Qt5MacExtras)
endif()
if(UNIX)
if(NOT CMAKE_PREFIX_PATH AND DEFINED ENV{CMAKE_PREFIX_PATH})
message(STATUS "Using CMAKE_PREFIX_PATH environment variable: '$ENV{CMAKE_PREFIX_PATH}'")
set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
endif()
if(APPLE AND NOT CMAKE_PREFIX_PATH)
execute_process(COMMAND brew --prefix qt5 OUTPUT_VARIABLE QT5_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
list(APPEND CMAKE_PREFIX_PATH ${QT5_DIR})
endif()
endif()
find_package(PkgConfig REQUIRED)
# TODO: drop this once we switch to Qt 5.14+
pkg_check_modules(Qt5QmlModels_PKG_CONFIG QUIET Qt5QmlModels)
if(Qt5QmlModels_PKG_CONFIG_FOUND)
list(APPEND QT5_LIBRARIES Qt5QmlModels)
endif()
# TODO: drop this once we switch to Qt 5.12+
find_package(Qt5XmlPatterns QUIET)
if(Qt5XmlPatterns_FOUND)
list(APPEND QT5_LIBRARIES Qt5XmlPatterns)
endif()
foreach(QT5_MODULE ${QT5_LIBRARIES})
find_package(${QT5_MODULE} REQUIRED)
include_directories(${${QT5_MODULE}_INCLUDE_DIRS})
endforeach()
find_package(PkgConfig)
if(PKGCONFIG_FOUND)
pkg_check_modules(QT5_PKG_CONFIG ${QT5_LIBRARIES})
if(NOT (CMAKE_CROSSCOMPILING AND ANDROID))
pkg_check_modules(QT5_PKG_CONFIG REQUIRED ${QT5_LIBRARIES})
else()
set(QT5_LIBRARIES_ABI)
foreach(QT5_MODULE ${QT5_LIBRARIES})
list(APPEND QT5_LIBRARIES_ABI "${QT5_MODULE}_${CMAKE_ANDROID_ARCH_ABI}")
endforeach()
pkg_check_modules(QT5_PKG_CONFIG REQUIRED ${QT5_LIBRARIES_ABI})
endif()
if(QT5_PKG_CONFIG_FOUND)
set(QT5_PKG_CONFIG "QT5_PKG_CONFIG")
if(STATIC)
set(QT5_PKG_CONFIG "${QT5_PKG_CONFIG}_STATIC")
endif()
get_target_property(QMAKE_IMPORTED_LOCATION Qt5::qmake IMPORTED_LOCATION)
get_filename_component(QT_INSTALL_PREFIX "${QMAKE_IMPORTED_LOCATION}/../.." ABSOLUTE)
set(QT5_LIBRARIES ${${QT5_PKG_CONFIG}_LIBRARIES} ${${QT5_PKG_CONFIG}_LDFLAGS_OTHER})
include_directories(${${QT5_PKG_CONFIG}_INCLUDE_DIRS})
link_directories(${${QT5_PKG_CONFIG}_LIBRARY_DIRS})
if(APPLE AND NOT STATIC)
set(CMAKE_BUILD_RPATH "${QT_INSTALL_PREFIX}/lib")
endif()
if(QT5_PKG_CONFIG_FOUND)
set(QT5_PKG_CONFIG "QT5_PKG_CONFIG")
if(STATIC)
set(QT5_PKG_CONFIG "${QT5_PKG_CONFIG}_STATIC")
endif()
if(UNIX AND CMAKE_PREFIX_PATH)
if(APPLE)
list(JOIN ${QT5_PKG_CONFIG}_LDFLAGS_OTHER " " ${QT5_PKG_CONFIG}_LDFLAGS_OTHER)
endif()
# temporal workaround for https://bugreports.qt.io/browse/QTBUG-80922
STRING(REPLACE "${QT5_PKG_CONFIG_Qt5Core_PREFIX}" "${QT_INSTALL_PREFIX}" ${QT5_PKG_CONFIG}_LDFLAGS_OTHER "${${QT5_PKG_CONFIG}_LDFLAGS_OTHER}")
STRING(REPLACE "${QT5_PKG_CONFIG_Qt5Core_PREFIX}" "${QT_INSTALL_PREFIX}" ${QT5_PKG_CONFIG}_LIBRARIES "${${QT5_PKG_CONFIG}_LIBRARIES}")
STRING(REPLACE "${QT5_PKG_CONFIG_Qt5Core_PREFIX}" "${QT_INSTALL_PREFIX}" ${QT5_PKG_CONFIG}_INCLUDE_DIRS "${${QT5_PKG_CONFIG}_INCLUDE_DIRS}")
STRING(REPLACE "${QT5_PKG_CONFIG_Qt5Core_PREFIX}" "${QT_INSTALL_PREFIX}" ${QT5_PKG_CONFIG}_LIBRARY_DIRS "${${QT5_PKG_CONFIG}_LIBRARY_DIRS}")
endif()
set(QT5_LIBRARIES ${${QT5_PKG_CONFIG}_LIBRARIES} ${${QT5_PKG_CONFIG}_LDFLAGS_OTHER})
include_directories(${${QT5_PKG_CONFIG}_INCLUDE_DIRS})
link_directories(${${QT5_PKG_CONFIG}_LIBRARY_DIRS})
endif()
list(APPEND QT5_LIBRARIES
@@ -259,37 +282,122 @@ list(APPEND QT5_LIBRARIES
)
if(STATIC)
set(QT5_LIBRARIES
qtquickcontrols2plugin # has to be the first one, depends on Qt5QuickControls2
${QT5_LIBRARIES}
declarative_multimedia
set(QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/Qt/labs/folderlistmodel)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/Qt/labs/settings)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/Qt/labs/platform)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtGraphicalEffects)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtGraphicalEffects/private)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtMultimedia)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQml)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQml/Models.2)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick.2)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/Controls)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/Controls.2)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/Dialogs)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/Dialogs/Private)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/Layouts)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/PrivateWidgets)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/Templates.2)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/Window.2)
list(APPEND QT5_EXTRA_PATHS ${QT5_PKG_CONFIG_Qt5Qml_PREFIX}/qml/QtQuick/XmlListModel)
set(QT5_EXTRA_LIBRARIES_LIST
qtquicktemplates2plugin
Qt5QuickTemplates2
qtquickcontrols2plugin
Qt5QuickControls2
dialogplugin
dialogsprivateplugin
qmlfolderlistmodelplugin
qmlsettingsplugin
qtlabsplatformplugin
qmlxmllistmodelplugin
qquicklayoutsplugin
Qt5EventDispatcherSupport
Qt5FontDatabaseSupport
Qt5MultimediaQuick_p
Qt5PacketProtocol
Qt5ThemeSupport
modelsplugin
)
if(WITH_SCANNER)
list(APPEND QT5_EXTRA_LIBRARIES_LIST
declarative_multimedia
Qt5MultimediaQuick
)
endif()
list(APPEND QT5_EXTRA_LIBRARIES_LIST
qtgraphicaleffectsplugin
qtgraphicaleffectsprivate
qtquick2plugin
qtquickcontrolsplugin
qtquicktemplates2plugin
widgetsplugin
windowplugin
)
if(MINGW)
list(APPEND QT5_LIBRARIES qtfreetype)
if(NOT ${Qt5Core_VERSION} VERSION_LESS 5.14)
list(APPEND QT5_EXTRA_LIBRARIES_LIST qmlplugin)
endif()
set(QT5_EXTRA_LIBRARIES)
foreach(LIBRARY ${QT5_EXTRA_LIBRARIES_LIST})
find_library(${LIBRARY}_LIBRARY ${LIBRARY} PATHS ${QT5_EXTRA_PATHS} REQUIRED)
list(APPEND QT5_EXTRA_LIBRARIES ${${LIBRARY}_LIBRARY})
endforeach()
if(MINGW)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
list(APPEND QT5_LIBRARIES D3D11 Dwrite D2d1)
list(APPEND QT5_EXTRA_LIBRARIES D3D11 Dwrite D2d1)
endif()
endif()
set(QT5_LIBRARIES
${QT5_EXTRA_LIBRARIES}
${QT5_LIBRARIES}
)
set(QT5_INTEGRATION_LIBRARIES_LIST
Qt5EventDispatcherSupport
Qt5PacketProtocol
Qt5ThemeSupport
Qt5FontDatabaseSupport
)
if(UNIX AND NOT APPLE)
list(APPEND QT5_INTEGRATION_LIBRARIES_LIST
Qt5XcbQpa
Qt5ServiceSupport
Qt5GlxSupport
)
elseif(MINGW)
list(APPEND QT5_INTEGRATION_LIBRARIES_LIST qtfreetype)
endif()
foreach(LIBRARY ${QT5_INTEGRATION_LIBRARIES_LIST})
find_library(${LIBRARY}_LIBRARY ${LIBRARY} PATHS ${QT5_EXTRA_PATHS} REQUIRED)
list(APPEND QT5_LIBRARIES ${${LIBRARY}_LIBRARY})
endforeach()
if(UNIX AND NOT APPLE)
pkg_check_modules(X11XCB_XCBGLX REQUIRED x11-xcb xcb-glx)
list(APPEND QT5_LIBRARIES ${X11XCB_XCBGLX_LIBRARIES})
pkg_check_modules(FONTCONFIG REQUIRED fontconfig)
list(APPEND QT5_LIBRARIES ${FONTCONFIG_STATIC_LIBRARIES})
endif()
endif()
if(ANDROID)
set(QT5_EXTRA_LIBRARIES_LIST
GLESv2
log
z
jnigraphics
android
EGL
Qt5VirtualKeyboard_${CMAKE_ANDROID_ARCH_ABI}
c++_shared
)
foreach(LIBRARY ${QT5_EXTRA_LIBRARIES_LIST})
find_library(${LIBRARY}_LIBRARY ${LIBRARY} PATHS "${ANDROID_TOOLCHAIN_ROOT}/sysroot/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${ANDROID_PLATFORM_LEVEL}" REQUIRED)
list(APPEND QT5_LIBRARIES ${${LIBRARY}_LIBRARY})
endforeach()
endif()
message(STATUS "Using Boost include dir at ${Boost_INCLUDE_DIRS}")
@@ -304,7 +412,9 @@ if(MINGW)
else()
set(ICU_LIBRARIES icuio icuin icuuc icudt icutu iconv)
endif()
elseif(APPLE OR OPENBSD OR ANDROID)
elseif(APPLE)
set(EXTRA_LIBRARIES "-framework AppKit")
elseif(OPENBSD OR ANDROID)
set(EXTRA_LIBRARIES "")
elseif(FREEBSD)
set(EXTRA_LIBRARIES execinfo)
@@ -336,6 +446,8 @@ if(APPLE)
endif()
# warnings
add_c_flag_if_supported(-Werror C_SECURITY_FLAGS)
add_cxx_flag_if_supported(-Werror CXX_SECURITY_FLAGS)
add_c_flag_if_supported(-Wformat C_SECURITY_FLAGS)
add_cxx_flag_if_supported(-Wformat CXX_SECURITY_FLAGS)
add_c_flag_if_supported(-Wformat-security C_SECURITY_FLAGS)
@@ -354,7 +466,7 @@ if (NOT OPENBSD AND NOT (WIN32 AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE
add_c_flag_if_supported(-fcf-protection=full C_SECURITY_FLAGS)
add_cxx_flag_if_supported(-fcf-protection=full CXX_SECURITY_FLAGS)
endif()
if (NOT WIN32 AND NOT OPENBSD)
if (NOT WIN32 AND NOT OPENBSD AND NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
add_c_flag_if_supported(-fstack-clash-protection C_SECURITY_FLAGS)
add_cxx_flag_if_supported(-fstack-clash-protection CXX_SECURITY_FLAGS)
endif()
@@ -366,7 +478,12 @@ if (NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_C_COMPILER_VERSION VER
endif()
# linker
if (NOT (WIN32 AND CMAKE_C_COMPILER_ID STREQUAL "GNU"))
if (APPLE)
add_linker_flag_if_supported(-Wl,-bind_at_load LD_SECURITY_FLAGS)
add_linker_flag_if_supported(-Wl,-dead_strip LD_SECURITY_FLAGS)
add_linker_flag_if_supported(-Wl,-dead_strip_dylibs LD_SECURITY_FLAGS)
endif()
if (NOT APPLE AND NOT (WIN32 AND CMAKE_C_COMPILER_ID STREQUAL "GNU"))
# Windows binaries die on startup with PIE when compiled with GCC
add_linker_flag_if_supported(-pie LD_SECURITY_FLAGS)
endif()
@@ -381,32 +498,36 @@ if (noexecheap_SUPPORTED)
set(LD_SECURITY_FLAGS "${LD_SECURITY_FLAGS} -Wl,-z,noexecheap")
endif()
# some windows linker bits
if (WIN32)
add_linker_flag_if_supported(-Wl,--dynamicbase LD_SECURITY_FLAGS)
add_linker_flag_if_supported(-Wl,--nxcompat LD_SECURITY_FLAGS)
add_linker_flag_if_supported(-Wl,--high-entropy-va LD_SECURITY_FLAGS)
endif()
if(STATIC)
add_linker_flag_if_supported(-static-libgcc STATIC_FLAGS)
add_linker_flag_if_supported(-static-libstdc++ STATIC_FLAGS)
if(MINGW)
add_linker_flag_if_supported(-static STATIC_FLAGS)
endif()
endif()
# With GCC 6.1.1 the compiled binary malfunctions due to aliasing. Until that
# is fixed in the code (Issue #847), force compiler to be conservative.
add_c_flag_if_supported(-fno-strict-aliasing C_SECURITY_FLAGS)
add_cxx_flag_if_supported(-fno-strict-aliasing CXX_SECURITY_FLAGS)
add_c_flag_if_supported(-fPIC C_SECURITY_FLAGS)
add_cxx_flag_if_supported(-fPIC CXX_SECURITY_FLAGS)
message(STATUS "Using C security hardening flags: ${C_SECURITY_FLAGS}")
message(STATUS "Using C++ security hardening flags: ${CXX_SECURITY_FLAGS}")
message(STATUS "Using linker security hardening flags: ${LD_SECURITY_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_SECURITY_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_SECURITY_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS}")
if (HIDAPI_FOUND OR LibUSB_COMPILE_TEST_PASSED)
if (APPLE)
if(DEPENDS)
list(APPEND EXTRA_LIBRARIES "-framework Foundation -framework IOKit")
else()
find_library(COREFOUNDATION CoreFoundation)
find_library(IOKIT IOKit)
list(APPEND EXTRA_LIBRARIES ${IOKIT})
list(APPEND EXTRA_LIBRARIES ${COREFOUNDATION})
endif()
endif()
if (WIN32)
list(APPEND EXTRA_LIBRARIES setupapi Version)
endif()
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 ${C_SECURITY_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${CXX_SECURITY_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LD_SECURITY_FLAGS} ${STATIC_FLAGS}")
add_subdirectory(translations)
add_subdirectory(src)
# Required to make wallet_merged build before the gui
add_dependencies(monero-gui wallet_merged)

42
DEPLOY.md Normal file
View File

@@ -0,0 +1,42 @@
# macOS:
Use macOS 10.12 - 10.13 for better backwards compability.
1. `HOMEBREW_OPTFLAGS="-march=core2" HOMEBREW_OPTIMIZATION_LEVEL="O0" brew install boost zmq libpgm miniupnpc libsodium expat libunwind-headers protobuf libgcrypt hidapi`
2. Get the latest LTS from here: https://www.qt.io/offline-installers and install
3. `git clone --recursive -b v0.X.Y.Z --depth 1 https://github.com/monero-project/monero-gui`
4. `CMAKE_PREFIX_PATH=~/Qt5.12.8/5.12.8/clang_64 make release`
5. `cd build/release && make deploy`
6. Replace the `monerod` binary inside `monero-wallet-gui.app/Contents/MacOS/` with one built using deterministic builds / gitian.
## Codesigning and notarizing
1. Save the following text as `entitlements.plist`
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict>
</plist>
```
2. `codesign --deep --force --verify --verbose --options runtime --timestamp --entitlements entitlements.plist --sign 'XXXXXXXXXX' monero-wallet-gui.app`
You can check if this step worked by using `codesign -dvvv monero-wallet-gui.app`
3. `hdiutil create -fs HFS+ -srcfolder monero-gui-v0.X.Y.Z -volname monero-wallet-gui monero-gui-mac-x64-v0.X.Y.Z.dmg`
4. `xcrun altool -t osx --file monero-gui-mac-x64-v0.X.Y.Z.dmg --primary-bundle-id org.monero-project.monero-wallet-gui.dmg --notarize-app --username email@address.org`
5. `xcrun altool --notarization-info aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee -u email@address.org`
6. `xcrun stapler staple -v monero-gui-mac-x64-v0.X.Y.Z.dmg`

207
Dockerfile.android Normal file
View File

@@ -0,0 +1,207 @@
FROM debian:stretch
ARG THREADS=1
ARG ANDROID_NDK_REVISION=21d
ARG ANDROID_NDK_HASH=bcf4023eb8cb6976a4c7cff0a8a8f145f162bf4d
ARG ANDROID_SDK_REVISION=4333796
ARG ANDROID_SDK_HASH=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9
ARG QT_VERSION=5.15.2
WORKDIR /opt/android
ENV WORKDIR=/opt/android
ENV ANDROID_NATIVE_API_LEVEL=28
ENV ANDROID_API=android-${ANDROID_NATIVE_API_LEVEL}
ENV ANDROID_CLANG=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang
ENV ANDROID_CLANGPP=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang++
ENV ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION}
ENV ANDROID_SDK_ROOT=${WORKDIR}/tools
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
ENV PATH=${JAVA_HOME}/bin:${PATH}
ENV PREFIX=${WORKDIR}/prefix
ENV TOOLCHAIN_DIR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64
RUN apt-get update \
&& apt-get install -y ant automake build-essential ca-certificates-java file gettext git libc6 libncurses5 \
libssl-dev libstdc++6 libtinfo5 libtool libz1 openjdk-8-jdk-headless openjdk-8-jre-headless pkg-config python3 \
unzip wget
RUN wget -q https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \
&& unzip -q sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \
&& rm -f sdk-tools-linux-${ANDROID_SDK_REVISION}.zip
RUN wget -q https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \
&& unzip -q android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \
&& rm -f android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip
RUN cd ${ANDROID_SDK_ROOT} && echo y | ./bin/sdkmanager "platform-tools" "platforms;${ANDROID_API}" "tools" > /dev/null
RUN cp -r ${WORKDIR}/platforms ${WORKDIR}/platform-tools ${ANDROID_SDK_ROOT}
ENV HOST_PATH=${PATH}
ENV PATH=${TOOLCHAIN_DIR}/aarch64-linux-android/bin:${TOOLCHAIN_DIR}/bin:${PATH}
ARG ZLIB_VERSION=1.2.11
ARG ZLIB_HASH=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
RUN wget -q https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \
&& tar -xzf zlib-${ZLIB_VERSION}.tar.gz \
&& rm zlib-${ZLIB_VERSION}.tar.gz \
&& cd zlib-${ZLIB_VERSION} \
&& CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --prefix=${PREFIX} --static \
&& make -j${THREADS} \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
RUN git clone git://code.qt.io/qt/qt5.git -b ${QT_VERSION} --depth 1 \
&& cd qt5 \
&& perl init-repository --module-subset=default,-qtwebengine \
&& PATH=${HOST_PATH} ./configure -v -developer-build -release \
-xplatform android-clang \
-android-ndk-platform ${ANDROID_API} \
-android-ndk ${ANDROID_NDK_ROOT} \
-android-sdk ${ANDROID_SDK_ROOT} \
-android-ndk-host linux-x86_64 \
-no-dbus \
-opengl es2 \
-no-use-gold-linker \
-no-sql-mysql \
-opensource -confirm-license \
-android-arch arm64-v8a \
-prefix ${PREFIX} \
-nomake tools -nomake tests -nomake examples \
-skip qtwebengine \
-skip qtserialport \
-skip qtconnectivity \
-skip qttranslations \
-skip qtpurchasing \
-skip qtgamepad -skip qtscript -skip qtdoc \
-no-warnings-are-errors \
&& sed -i '213,215d' qtbase/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h \
&& PATH=${HOST_PATH} make -j${THREADS} \
&& PATH=${HOST_PATH} make -j${THREADS} install \
&& cd qttools/src/linguist/lrelease \
&& ../../../../qtbase/bin/qmake \
&& PATH=${HOST_PATH} make -j${THREADS} install \
&& cd ../../../.. \
&& rm -rf $(pwd)
ARG ICONV_VERSION=1.16
ARG ICONV_HASH=e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04
RUN wget -q http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz \
&& echo "${ICONV_HASH} libiconv-${ICONV_VERSION}.tar.gz" | sha256sum -c \
&& tar -xzf libiconv-${ICONV_VERSION}.tar.gz \
&& rm -f libiconv-${ICONV_VERSION}.tar.gz \
&& cd libiconv-${ICONV_VERSION} \
&& CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --build=x86_64-linux-gnu --host=aarch64 --prefix=${PREFIX} --disable-rpath \
&& make -j${THREADS} \
&& make -j${THREADS} install
ARG BOOST_VERSION=1_74_0
ARG BOOST_VERSION_DOT=1.74.0
ARG BOOST_HASH=83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1
RUN wget -q https://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION_DOT}/boost_${BOOST_VERSION}.tar.bz2 \
&& echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
&& tar -xf boost_${BOOST_VERSION}.tar.bz2 \
&& rm -f boost_${BOOST_VERSION}.tar.bz2 \
&& cd boost_${BOOST_VERSION} \
&& PATH=${HOST_PATH} ./bootstrap.sh --prefix=${PREFIX} \
&& PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} ./b2 --build-type=minimal link=static runtime-link=static \
--with-chrono --with-date_time --with-filesystem --with-program_options --with-regex --with-serialization \
--with-system --with-thread --with-locale --build-dir=android --stagedir=android toolset=clang threading=multi \
threadapi=pthread target-os=android -sICONV_PATH=${PREFIX} \
cflags='--target=aarch64-linux-android' \
cxxflags='--target=aarch64-linux-android' \
linkflags='--target=aarch64-linux-android --sysroot=${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm64 ${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/arm64-v8a/libc++_shared.so -nostdlib++' \
install -j${THREADS} \
&& rm -rf $(pwd)
ARG OPENSSL_VERSION=1.1.1g
ARG OPENSSL_HASH=ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46
RUN wget -q https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
&& rm openssl-${OPENSSL_VERSION}.tar.gz \
&& cd openssl-${OPENSSL_VERSION} \
&& ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} ./Configure CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} \
android-arm64 no-asm no-shared --static \
--with-zlib-include=${PREFIX}/include --with-zlib-lib=${PREFIX}/lib \
--prefix=${PREFIX} --openssldir=${PREFIX} \
&& sed -i 's/CNF_EX_LIBS=-ldl -pthread//g;s/BIN_CFLAGS=-pie $(CNF_CFLAGS) $(CFLAGS)//g' Makefile \
&& ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} make -j${THREADS} \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
ARG ZMQ_VERSION=v4.3.3
ARG ZMQ_HASH=04f5bbedee58c538934374dc45182d8fc5926fa3
RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} --depth 1 \
&& cd libzmq \
&& git checkout ${ZMQ_HASH} \
&& ./autogen.sh \
&& CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --prefix=${PREFIX} --host=aarch64-linux-android \
--enable-static --disable-shared \
&& make -j${THREADS} \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
ARG SODIUM_VERSION=1.0.18
ARG SODIUM_HASH=4f5e89fa84ce1d178a6765b8b46f2b6f91216677
RUN set -ex \
&& git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} --depth 1 \
&& cd libsodium \
&& test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \
&& ./autogen.sh \
&& CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --prefix=${PREFIX} --host=aarch64-linux-android --enable-static --disable-shared \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
RUN git clone -b libgpg-error-1.38 --depth 1 git://git.gnupg.org/libgpg-error.git \
&& cd libgpg-error \
&& git reset --hard 71d278824c5fe61865f7927a2ed1aa3115f9e439 \
&& ./autogen.sh \
&& CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --host=aarch64-linux-android --prefix=${PREFIX} --disable-rpath --disable-shared --enable-static --disable-doc --disable-tests \
&& PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} make -j${THREADS} \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
RUN git clone -b libgcrypt-1.8.5 --depth 1 git://git.gnupg.org/libgcrypt.git \
&& cd libgcrypt \
&& git reset --hard 56606331bc2a80536db9fc11ad53695126007298 \
&& ./autogen.sh \
&& CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --host=aarch64-linux-android --prefix=${PREFIX} --with-gpg-error-prefix=${PREFIX} --disable-shared --enable-static --disable-doc --disable-tests \
&& PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} make -j${THREADS} \
&& make -j${THREADS} install \
&& rm -rf $(pwd)
RUN cd tools \
&& wget -q http://dl-ssl.google.com/android/repository/tools_r25.2.5-linux.zip \
&& unzip -q tools_r25.2.5-linux.zip \
&& rm -f tools_r25.2.5-linux.zip \
&& echo y | ${ANDROID_SDK_ROOT}/tools/android update sdk --no-ui --all --filter build-tools-28.0.3
RUN git clone -b v3.19.7 --depth 1 https://github.com/Kitware/CMake \
&& cd CMake \
&& git reset --hard 22612dd53a46c7f9b4c3f4b7dbe5c78f9afd9581 \
&& PATH=${HOST_PATH} ./bootstrap \
&& PATH=${HOST_PATH} make -j${THREADS} \
&& PATH=${HOST_PATH} make -j${THREADS} install \
&& rm -rf $(pwd)
CMD set -ex \
&& cd /monero-gui \
&& mkdir -p build/Android/release \
&& cd build/Android/release \
&& cmake \
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake" \
-DCMAKE_PREFIX_PATH="${PREFIX}" \
-DCMAKE_FIND_ROOT_PATH="${PREFIX}" \
-DCMAKE_BUILD_TYPE=Release \
-DARCH="armv8-a" \
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_TOOLCHAIN=clang \
-DBoost_USE_STATIC_RUNTIME=ON \
-DLRELEASE_PATH="${PREFIX}/bin" \
-DQT_ANDROID_APPLICATION_BINARY="monero-wallet-gui" \
-DWITH_SCANNER=ON \
../../.. \
&& PATH=${HOST_PATH} make generate_translations_header \
&& make -j${THREADS} -C src \
&& make -j${THREADS} apk

276
Dockerfile.linux Normal file
View File

@@ -0,0 +1,276 @@
FROM ubuntu:16.04
ARG THREADS=1
ARG QT_VERSION=5.15.2
ENV CFLAGS="-fPIC"
ENV CPPFLAGS="-fPIC"
ENV CXXFLAGS="-fPIC"
ENV SOURCE_DATE_EPOCH=1397818193
RUN apt update && \
apt install -y automake autopoint bison gettext git gperf libgl1-mesa-dev libglib2.0-dev \
libpng12-dev libpthread-stubs0-dev libsodium-dev libtool-bin libudev-dev libusb-1.0-0-dev mesa-common-dev \
pkg-config python wget xutils-dev
RUN git clone -b xorgproto-2020.1 --depth 1 https://gitlab.freedesktop.org/xorg/proto/xorgproto && \
cd xorgproto && \
git reset --hard c62e8203402cafafa5ba0357b6d1c019156c9f36 && \
./autogen.sh && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b 1.12 --depth 1 https://gitlab.freedesktop.org/xorg/proto/xcbproto && \
cd xcbproto && \
git reset --hard 6398e42131eedddde0d98759067dde933191f049 && \
./autogen.sh && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b libXau-1.0.9 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxau && \
cd libxau && \
git reset --hard d9443b2c57b512cfb250b35707378654d86c7dea && \
./autogen.sh --enable-shared --disable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b 1.12 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb && \
cd libxcb && \
git reset --hard d34785a34f28fa6a00f8ce00d87e3132ff0f6467 && \
./autogen.sh --enable-shared --disable-static && \
make -j$THREADS && \
make -j$THREADS install && \
make -j$THREADS clean && \
rm /usr/local/lib/libxcb-xinerama.so && \
./autogen.sh --disable-shared --enable-static && \
make -j$THREADS && \
cp src/.libs/libxcb-xinerama.a /usr/local/lib/ && \
rm -rf $(pwd)
RUN git clone -b 0.4.0 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-util && \
cd libxcb-util && \
git reset --hard acf790d7752f36e450d476ad79807d4012ec863b && \
git submodule init && \
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
./autogen.sh --enable-shared --disable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b 0.4.0 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-image && \
cd libxcb-image && \
git reset --hard d882052fb2ce439c6483fce944ba8f16f7294639 && \
git submodule init && \
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
./autogen.sh --enable-shared --disable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b 0.4.0 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-keysyms && \
cd libxcb-keysyms && \
git reset --hard 0e51ee5570a6a80bdf98770b975dfe8a57f4eeb1 && \
git submodule init && \
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
./autogen.sh --enable-shared --disable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b 0.3.9 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-render-util && \
cd libxcb-render-util && \
git reset --hard 0317caf63de532fd7a0493ed6afa871a67253747 && \
git submodule init && \
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
./autogen.sh --enable-shared --disable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b 0.4.1 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-wm && \
cd libxcb-wm && \
git reset --hard 24eb17df2e1245885e72c9d4bbb0a0f69f0700f2 && \
git submodule init && \
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
./autogen.sh --enable-shared --disable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b xkbcommon-0.5.0 --depth 1 https://github.com/xkbcommon/libxkbcommon && \
cd libxkbcommon && \
git reset --hard c43c3c866eb9d52cd8f61e75cbef1c30d07f3a28 && \
./autogen.sh --prefix=/usr --enable-shared --disable-static --enable-x11 --disable-docs && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b v1.2.11 --depth 1 https://github.com/madler/zlib && \
cd zlib && \
git reset --hard cacf7f1d4e3d44d871b605da3b647f07d718623f && \
./configure --static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b VER-2-10-2 --depth 1 https://git.savannah.gnu.org/git/freetype/freetype2.git && \
cd freetype2 && \
git reset --hard 132f19b779828b194b3fede187cee719785db4d8 && \
./autogen.sh && \
./configure --disable-shared --enable-static --with-zlib=no && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b R_2_2_9 --depth 1 https://github.com/libexpat/libexpat && \
cd libexpat/expat && \
git reset --hard a7bc26b69768f7fb24f0c7976fae24b157b85b13 && \
./buildconf.sh && \
./configure --disable-shared --enable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b 2.13.92 --depth 1 https://gitlab.freedesktop.org/fontconfig/fontconfig && \
cd fontconfig && \
git reset --hard b1df1101a643ae16cdfa1d83b939de2497b1bf27 && \
./autogen.sh --disable-shared --enable-static --sysconfdir=/etc --localstatedir=/var && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b release-64-2 --depth 1 https://github.com/unicode-org/icu && \
cd icu/icu4c/source && \
git reset --hard e2d85306162d3a0691b070b4f0a73e4012433444 && \
./configure --disable-shared --enable-static --disable-tests --disable-samples && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN wget https://downloads.sourceforge.net/project/boost/boost/1.73.0/boost_1_73_0.tar.gz && \
echo "9995e192e68528793755692917f9eb6422f3052a53c5e13ba278a228af6c7acf boost_1_73_0.tar.gz" | sha256sum -c && \
tar -xzf boost_1_73_0.tar.gz && \
rm boost_1_73_0.tar.gz && \
cd boost_1_73_0 && \
./bootstrap.sh && \
./b2 --with-atomic --with-system --with-filesystem --with-thread --with-date_time --with-chrono --with-regex --with-serialization --with-program_options --with-locale variant=release link=static runtime-link=static cflags="${CFLAGS}" cxxflags="${CXXFLAGS}" install -a --prefix=/usr && \
rm -rf $(pwd)
RUN wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz && \
echo "ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46 openssl-1.1.1g.tar.gz" | sha256sum -c && \
tar -xzf openssl-1.1.1g.tar.gz && \
rm openssl-1.1.1g.tar.gz && \
cd openssl-1.1.1g && \
./config no-asm no-shared no-zlib-dynamic --openssldir=/usr && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN rm /usr/lib/x86_64-linux-gnu/libX11.a && \
rm /usr/lib/x86_64-linux-gnu/libXext.a && \
rm /usr/lib/x86_64-linux-gnu/libX11-xcb.a && \
git clone git://code.qt.io/qt/qt5.git -b ${QT_VERSION} --depth 1 && \
cd qt5 && \
git clone git://code.qt.io/qt/qtbase.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtdeclarative.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtgraphicaleffects.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtimageformats.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtmultimedia.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtquickcontrols.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtquickcontrols2.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtsvg.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qttools.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qttranslations.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtx11extras.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtxmlpatterns.git -b ${QT_VERSION} --depth 1 && \
sed -ri s/\(Libs:.*\)/\\1\ -lexpat/ /usr/local/lib/pkgconfig/fontconfig.pc && \
sed -ri s/\(Libs:.*\)/\\1\ -lz/ /usr/local/lib/pkgconfig/freetype2.pc && \
sed -ri s/\(Libs:.*\)/\\1\ -lXau/ /usr/local/lib/pkgconfig/xcb.pc && \
sed -i s/\\/usr\\/X11R6\\/lib64/\\/usr\\/local\\/lib/ qtbase/mkspecs/linux-g++-64/qmake.conf && \
./configure --prefix=/usr -platform linux-g++-64 -opensource -confirm-license -release -static -no-avx \
-opengl desktop -qpa xcb -xcb -xcb-xlib -feature-xlib -system-freetype -fontconfig -glib \
-no-dbus -no-feature-qml-worker-script -no-linuxfb -no-openssl -no-sql-sqlite -no-kms -no-use-gold-linker \
-qt-harfbuzz -qt-libjpeg -qt-libpng -qt-pcre -qt-zlib \
-skip qt3d -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d \
-skip qtdoc -skip qtgamepad -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpurchasing \
-skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qttools \
-skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview \
-skip qtwinextras -skip qtx11extras -skip gamepad -skip serialbus -skip location -skip webengine \
-nomake examples -nomake tests -nomake tools && \
make -j$THREADS && \
make -j$THREADS install && \
cd qttools/src/linguist/lrelease && \
../../../../qtbase/bin/qmake && \
make -j$THREADS && \
make -j$THREADS install && \
cd ../../../.. && \
rm -rf $(pwd)
RUN git clone -b v1.0.23 --depth 1 https://github.com/libusb/libusb && \
cd libusb && \
git reset --hard e782eeb2514266f6738e242cdcb18e3ae1ed06fa && \
./autogen.sh --disable-shared --enable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b hidapi-0.9.0 --depth 1 https://github.com/libusb/hidapi && \
cd hidapi && \
git reset --hard 7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f && \
./bootstrap && \
./configure --disable-shared --enable-static && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b v4.3.2 --depth 1 https://github.com/zeromq/libzmq && \
cd libzmq && \
git reset --hard a84ffa12b2eb3569ced199660bac5ad128bff1f0 && \
./autogen.sh && \
./configure --disable-shared --enable-static --disable-libunwind --with-libsodium && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b libgpg-error-1.38 --depth 1 git://git.gnupg.org/libgpg-error.git && \
cd libgpg-error && \
git reset --hard 71d278824c5fe61865f7927a2ed1aa3115f9e439 && \
./autogen.sh && \
./configure --disable-shared --enable-static --disable-doc --disable-tests && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b libgcrypt-1.8.5 --depth 1 git://git.gnupg.org/libgcrypt.git && \
cd libgcrypt && \
git reset --hard 56606331bc2a80536db9fc11ad53695126007298 && \
./autogen.sh && \
./configure --disable-shared --enable-static --disable-doc && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b v3.10.0 --depth 1 https://github.com/protocolbuffers/protobuf && \
cd protobuf && \
git reset --hard 6d4e7fd7966c989e38024a8ea693db83758944f1 && \
./autogen.sh && \
./configure --enable-static --disable-shared && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)
RUN git clone -b v3.18.4 --depth 1 https://github.com/Kitware/CMake && \
cd CMake && \
git reset --hard 3cc3d42aba879fff5e85b363ae8f21386a3f9f9b && \
./bootstrap && \
make -j$THREADS && \
make -j$THREADS install && \
rm -rf $(pwd)

82
Dockerfile.windows Normal file
View File

@@ -0,0 +1,82 @@
FROM ubuntu:20.04
ARG THREADS=1
ARG QT_VERSION=5.15.2
ENV SOURCE_DATE_EPOCH=1397818193
RUN apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y build-essential cmake g++-mingw-w64 gettext git libtool pkg-config \
python && \
rm -rf /var/lib/apt/lists/*
RUN update-alternatives --set x86_64-w64-mingw32-g++ $(which x86_64-w64-mingw32-g++-posix) && \
update-alternatives --set x86_64-w64-mingw32-gcc $(which x86_64-w64-mingw32-gcc-posix)
RUN git clone -b v0.17.0.0 --depth 1 https://github.com/monero-project/monero && \
cd monero && \
git reset --hard d27d4526fe89b7cdeb4b296280c4a6cf7efe21f8 && \
cp -a contrib/depends / && \
cd .. && \
rm -rf monero
RUN make -j$THREADS -C /depends HOST=x86_64-w64-mingw32 NO_QT=1
RUN git clone git://code.qt.io/qt/qt5.git -b ${QT_VERSION} --depth 1 && \
cd qt5 && \
git clone git://code.qt.io/qt/qtbase.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtdeclarative.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtgraphicaleffects.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtimageformats.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtmultimedia.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtquickcontrols.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtquickcontrols2.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtsvg.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qttools.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qttranslations.git -b ${QT_VERSION} --depth 1 && \
git clone git://code.qt.io/qt/qtxmlpatterns.git -b ${QT_VERSION} --depth 1 && \
./configure --prefix=/depends/x86_64-w64-mingw32 -xplatform win32-g++ \
-device-option CROSS_COMPILE=/usr/bin/x86_64-w64-mingw32- \
-I $(pwd)/qtbase/src/3rdparty/angle/include \
-opensource -confirm-license -release -static -static-runtime -opengl dynamic -no-angle \
-no-avx -no-openssl -no-sql-sqlite \
-no-feature-qml-worker-script -no-openssl -no-sql-sqlite \
-qt-freetype -qt-harfbuzz -qt-libjpeg -qt-libpng -qt-pcre -qt-zlib \
-skip gamepad -skip location -skip qt3d -skip qtactiveqt -skip qtandroidextras \
-skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdoc \
-skip qtgamepad -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpurchasing \
-skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport \
-skip qtspeech -skip qttools -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel \
-skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras \
-skip serialbus -skip webengine \
-nomake examples -nomake tests -nomake tools && \
make -j$THREADS && \
make -j$THREADS install && \
cd qttools/src/linguist/lrelease && \
../../../../qtbase/bin/qmake && \
make -j$THREADS && \
make -j$THREADS install && \
cd ../../../.. && \
rm -rf $(pwd)
RUN git clone -b libgpg-error-1.38 --depth 1 git://git.gnupg.org/libgpg-error.git && \
cd libgpg-error && \
git reset --hard 71d278824c5fe61865f7927a2ed1aa3115f9e439 && \
./autogen.sh && \
./configure --disable-shared --enable-static --disable-doc --disable-tests \
--host=x86_64-w64-mingw32 --prefix=/depends/x86_64-w64-mingw32 && \
make -j$THREADS && \
make -j$THREADS install && \
cd .. && \
rm -rf libgpg-error
RUN git clone -b libgcrypt-1.8.5 --depth 1 git://git.gnupg.org/libgcrypt.git && \
cd libgcrypt && \
git reset --hard 56606331bc2a80536db9fc11ad53695126007298 && \
./autogen.sh && \
./configure --disable-shared --enable-static --disable-doc \
--host=x86_64-w64-mingw32 --prefix=/depends/x86_64-w64-mingw32 \
--with-gpg-error-prefix=/depends/x86_64-w64-mingw32 && \
make -j$THREADS && \
make -j$THREADS install && \
cd .. && \
rm -rf libgcrypt

View File

@@ -58,13 +58,9 @@ Rectangle {
signal historyClicked()
signal transferClicked()
signal receiveClicked()
signal txkeyClicked()
signal sharedringdbClicked()
signal advancedClicked()
signal settingsClicked()
signal addressBookClicked()
signal miningClicked()
signal signClicked()
signal merchantClicked()
signal accountClicked()
function selectItem(pos) {
@@ -72,12 +68,7 @@ Rectangle {
if(pos === "History") menuColumn.previousButton = historyButton
else if(pos === "Transfer") menuColumn.previousButton = transferButton
else if(pos === "Receive") menuColumn.previousButton = receiveButton
else if(pos === "Merchant") menuColumn.previousButton = merchantButton
else if(pos === "AddressBook") menuColumn.previousButton = addressBookButton
else if(pos === "Mining") menuColumn.previousButton = miningButton
else if(pos === "TxKey") menuColumn.previousButton = txkeyButton
else if(pos === "SharedRingDB") menuColumn.previousButton = sharedringdbButton
else if(pos === "Sign") menuColumn.previousButton = signButton
else if(pos === "Settings") menuColumn.previousButton = settingsButton
else if(pos === "Advanced") menuColumn.previousButton = advancedButton
else if(pos === "Account") menuColumn.previousButton = accountButton
@@ -223,7 +214,7 @@ Rectangle {
MoneroComponents.Label {
fontSize: 16
visible: isSyncing
text: qsTr("Syncing...")
text: qsTr("Syncing...") + translationManager.emptyString
color: MoneroComponents.Style.blackTheme ? "white" : "black"
anchors.left: parent.left
anchors.leftMargin: 20
@@ -265,6 +256,10 @@ Rectangle {
anchors.leftMargin: 58
anchors.baseline: currencyLabel.baseline
color: MoneroComponents.Style.blackTheme ? "white" : "black"
Binding on color {
when: balancePart1MouseArea.containsMouse || balancePart2MouseArea.containsMouse
value: MoneroComponents.Style.orange
}
text: {
if (persistentSettings.fiatPriceEnabled && persistentSettings.fiatPriceToggle) {
return balanceFiatString.split('.')[0] + "."
@@ -286,14 +281,6 @@ Rectangle {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: {
balancePart1.color = MoneroComponents.Style.orange
balancePart2.color = MoneroComponents.Style.orange
}
onExited: {
balancePart1.color = Qt.binding(function() { return MoneroComponents.Style.blackTheme ? "white" : "black" })
balancePart2.color = Qt.binding(function() { return MoneroComponents.Style.blackTheme ? "white" : "black" })
}
onClicked: {
console.log("Copied to clipboard");
clipboard.setText(balancePart1.text + balancePart2.text);
@@ -307,7 +294,7 @@ Rectangle {
anchors.left: balancePart1.right
anchors.leftMargin: 2
anchors.baseline: currencyLabel.baseline
color: MoneroComponents.Style.blackTheme ? "white" : "black"
color: balancePart1.color
text: {
if (persistentSettings.fiatPriceEnabled && persistentSettings.fiatPriceToggle) {
return balanceFiatString.split('.')[1]
@@ -317,11 +304,10 @@ Rectangle {
}
font.pixelSize: 16
MouseArea {
id: balancePart2MouseArea
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onEntered: balancePart1MouseArea.entered()
onExited: balancePart1MouseArea.exited()
onClicked: balancePart1MouseArea.clicked(mouse)
}
}
@@ -348,7 +334,7 @@ Rectangle {
id:flicker
contentHeight: menuColumn.height
anchors.top: parent.top
anchors.bottom: networkStatus.top
anchors.bottom: progressBar.visible ? progressBar.top : networkStatus.top
width: parent.width
boundsBehavior: isMac ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds
clip: true
@@ -454,30 +440,6 @@ Rectangle {
anchors.leftMargin: 20
}
// ------------- Merchant tab ---------------
MoneroComponents.MenuButton {
id: merchantButton
visible: appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Merchant") + translationManager.emptyString
symbol: qsTr("U") + translationManager.emptyString
under: receiveButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = merchantButton
panel.merchantClicked()
}
}
MoneroComponents.MenuButtonDivider {
visible: merchantButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 20
}
// ------------- History tab ---------------
MoneroComponents.MenuButton {
@@ -511,6 +473,7 @@ Rectangle {
onClicked: {
parent.previousButton.checked = false
parent.previousButton = advancedButton
panel.advancedClicked()
}
}
@@ -521,98 +484,6 @@ Rectangle {
anchors.leftMargin: 20
}
// ------------- Mining tab ---------------
MoneroComponents.MenuButton {
id: miningButton
visible: !isAndroid && !isIOS && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Mining") + translationManager.emptyString
symbol: qsTr("M") + translationManager.emptyString
under: advancedButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = miningButton
panel.miningClicked()
}
}
MoneroComponents.MenuButtonDivider {
visible: miningButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 20
}
// ------------- TxKey tab ---------------
MoneroComponents.MenuButton {
id: txkeyButton
visible: appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Prove/check") + translationManager.emptyString
symbol: qsTr("K") + translationManager.emptyString
under: advancedButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = txkeyButton
panel.txkeyClicked()
}
}
MoneroComponents.MenuButtonDivider {
visible: txkeyButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 20
}
// ------------- Shared RingDB tab ---------------
MoneroComponents.MenuButton {
id: sharedringdbButton
visible: appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Shared RingDB") + translationManager.emptyString
symbol: qsTr("G") + translationManager.emptyString
under: advancedButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = sharedringdbButton
panel.sharedringdbClicked()
}
}
MoneroComponents.MenuButtonDivider {
visible: sharedringdbButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 20
}
// ------------- Sign/verify tab ---------------
MoneroComponents.MenuButton {
id: signButton
visible: appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("Sign/verify") + translationManager.emptyString
symbol: qsTr("I") + translationManager.emptyString
under: advancedButton
onClicked: {
parent.previousButton.checked = false
parent.previousButton = signButton
panel.signClicked()
}
}
MoneroComponents.MenuButtonDivider {
visible: signButton.present && appWindow.walletMode >= 2
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 20
}
// ------------- Settings tab ---------------
MoneroComponents.MenuButton {
id: settingsButton
@@ -644,22 +515,11 @@ Rectangle {
anchors.right: parent.right
anchors.leftMargin: 0
anchors.rightMargin: 0
anchors.bottom: networkStatus.top;
anchors.bottom: progressBar.visible ? progressBar.top : networkStatus.top
height: 10
color: "transparent"
}
MoneroComponents.NetworkStatusItem {
id: networkStatus
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 5
anchors.rightMargin: 0
anchors.bottom: (progressBar.visible)? progressBar.top : parent.bottom;
connected: Wallet.ConnectionStatus_Disconnected
height: 48
}
MoneroComponents.ProgressBar {
id: progressBar
anchors.left: parent.left
@@ -667,17 +527,29 @@ Rectangle {
anchors.bottom: daemonProgressBar.top
height: 48
syncType: qsTr("Wallet") + translationManager.emptyString
visible: networkStatus.connected
visible: !appWindow.disconnected
}
MoneroComponents.ProgressBar {
id: daemonProgressBar
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.bottom: networkStatus.top
syncType: qsTr("Daemon") + translationManager.emptyString
visible: networkStatus.connected
visible: !appWindow.disconnected
height: 62
}
MoneroComponents.NetworkStatusItem {
id: networkStatus
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: 5
anchors.rightMargin: 0
anchors.bottom: parent.bottom
anchors.bottomMargin: 5
connected: Wallet.ConnectionStatus_Disconnected
height: 48
}
}
}

View File

@@ -1,40 +1,69 @@
ANDROID_STANDALONE_TOOLCHAIN_PATH ?= /usr/local/toolchain
MANUAL_SUBMODULES ?= OFF
dotgit=$(shell ls -d .git/config)
ifneq ($(dotgit), .git/config)
USE_SINGLE_BUILDDIR=1
ifeq ($(dotgit), .git/config)
ifeq ($(shell git --version > /dev/null 2>&1 ; echo $$?), 0)
git = yes
else
$(warning git command not found)
endif
endif
subbuilddir:=$(shell echo `uname | sed -e 's|[:/\\ \(\)]|_|g'`/`git branch | grep '\* ' | cut -f2- -d' '| sed -e 's|[:/\\ \(\)]|_|g'`)
ifeq ($(USE_SINGLE_BUILDDIR),)
builddir := build/"$(subbuilddir)"
topdir := ../../../..
deldirs := $(builddir)
builddir := build
topdir := ../..
ifeq ($(USE_SINGLE_BUILDDIR), OFF)
os := $(shell echo `uname | sed -e 's|[:/\\ \(\)]|_|g'`)
builddir := $(builddir)/$(os)
topdir := $(topdir)/..
ifdef git
branch := $(shell git branch | grep '\* ' | cut -f2- -d' '| sed -e 's|[:/\\ \(\)]|_|g')
builddir := $(builddir)/$(branch)
topdir := $(topdir)/..
endif
deldirs := $(builddir)
else
builddir := build
topdir := ../..
deldirs := $(builddir)/debug $(builddir)/release $(builddir)/fuzz
deldirs := $(builddir)/debug $(builddir)/release $(builddir)/fuzz
endif
default:
mkdir -p build && cd build && cmake -D ARCH="x86-64" -D DEV_MODE=$(or ${DEV_MODE},OFF) -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
mkdir -p build && cd build && cmake -D ARCH="x86-64" -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
debug:
mkdir -p build && cd build && cmake -D DEV_MODE=$(or ${DEV_MODE},ON) .. && $(MAKE) VERBOSE=1
mkdir -p build && cd build && cmake -D DEV_MODE=$(or ${DEV_MODE},ON) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D CMAKE_BUILD_TYPE=Debug .. && $(MAKE) VERBOSE=1
depends:
mkdir -p build/$(target)/release
cd build/$(target)/release && cmake -D STATIC=ON -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D BUILD_TAG=$(tag) -D CMAKE_BUILD_TYPE=Release -D CMAKE_TOOLCHAIN_FILE=$(root)/$(target)/share/toolchain.cmake ../../.. && $(MAKE)
devmode:
mkdir -p build && cd build && cmake -D ARCH="x86-64" -D DEV_MODE=$(or ${DEV_MODE},ON) -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
mkdir -p build && cd build && cmake -D ARCH="x86-64" -D DEV_MODE=$(or ${DEV_MODE},ON) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
clean:
mkdir -p build && cd build && rm -rf *
scanner:
mkdir -p build && cd build && cmake -D ARCH="x86-64" -D DEV_MODE=$(or ${DEV_MODE},ON) -D WITH_SCANNER=ON -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
mkdir -p build && cd build && cmake -D ARCH="x86-64" -D DEV_MODE=$(or ${DEV_MODE},ON) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D WITH_SCANNER=ON -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
release:
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D ARCH="x86-64" -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)
release-linux-armv8:
mkdir -p $(builddir)/release
cd $(builddir)/release
cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -D ARCH="armv8-a" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="linux-armv8" $(topdir) && $(MAKE)
release-static:
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D STATIC=ON -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)
debug-static-win64:
mkdir -p $(builddir)/debug && cd $(builddir)/debug && cmake -D STATIC=ON -G "MSYS Makefiles" -D DEV_MODE=$(or ${DEV_MODE},ON) -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Debug -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys64 -D MINGW=ON $(topdir) && $(MAKE)
mkdir -p $(builddir)/debug && cd $(builddir)/debug && cmake -D STATIC=ON -G "MSYS Makefiles" -D DEV_MODE=$(or ${DEV_MODE},ON) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Debug -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=$(shell cd ${MINGW_PREFIX}/.. && pwd -W) -D MINGW=ON $(topdir) && $(MAKE)
debug-static-mac64:
mkdir -p $(builddir)/debug
cd $(builddir)/debug && cmake -D STATIC=ON -D DEV_MODE=$(or ${DEV_MODE},ON) -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="mac-x64" $(topdir) && $(MAKE)
cd $(builddir)/debug && cmake -D STATIC=ON -D DEV_MODE=$(or ${DEV_MODE},ON) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=release -D BUILD_TAG="mac-x64" $(topdir) && $(MAKE)
release-static-win64:
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D STATIC=ON -G "MSYS Makefiles" -D DEV_MODE=$(or ${DEV_MODE},OFF) -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys64 -D MINGW=ON $(topdir) && $(MAKE)
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D STATIC=ON -G "MSYS Makefiles" -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=$(shell cd ${MINGW_PREFIX}/.. && pwd -W) -D MINGW=ON $(topdir) && $(MAKE)
release-win64:
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D STATIC=OFF -G "MSYS Makefiles" -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x64" -D CMAKE_TOOLCHAIN_FILE=$(topdir)/cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=$(shell cd ${MINGW_PREFIX}/.. && pwd -W) -D MINGW=ON $(topdir) && $(MAKE)

View File

@@ -50,20 +50,20 @@ Rectangle {
property alias contentHeight: mainFlickable.contentHeight
property alias flickable: mainFlickable
property Transfer transferView: Transfer { }
property Transfer transferView: Transfer {
onPaymentClicked: root.paymentClicked(recipients, paymentId, mixinCount, priority, description)
onSweepUnmixableClicked: root.sweepUnmixableClicked()
}
property Receive receiveView: Receive { }
property Merchant merchantView: Merchant { }
property TxKey txkeyView: TxKey { }
property SharedRingDB sharedringdbView: SharedRingDB { }
property History historyView: History { }
property Sign signView: Sign { }
property Advanced advancedView: Advanced { }
property Settings settingsView: Settings { }
property Mining miningView: Mining { }
property AddressBook addressBookView: AddressBook { }
property Keys keysView: Keys { }
property Account accountView: Account { }
signal paymentClicked(string address, string paymentId, string amount, int mixinCount, int priority, string description)
signal paymentClicked(var recipients, string paymentId, int mixinCount, int priority, string description)
signal sweepUnmixableClicked()
signal generatePaymentIdInvoked()
signal getProofClicked(string txid, string address, string message);
@@ -116,6 +116,12 @@ Rectangle {
transferView.sendTo(address, paymentId, description);
}
// open Transactions page with search term in search field
function searchInHistory(searchTerm){
root.state = "History";
historyView.searchInHistory(searchTerm);
}
states: [
State {
name: "History"
@@ -133,30 +139,18 @@ Rectangle {
name: "Merchant"
PropertyChanges { target: root; currentView: merchantView }
PropertyChanges { target: mainFlickable; contentHeight: merchantView.merchantHeight + 80 }
}, State {
name: "TxKey"
PropertyChanges { target: root; currentView: txkeyView }
PropertyChanges { target: mainFlickable; contentHeight: txkeyView.txkeyHeight + 80 }
}, State {
name: "SharedRingDB"
PropertyChanges { target: root; currentView: sharedringdbView }
PropertyChanges { target: mainFlickable; contentHeight: sharedringdbView.panelHeight + 80 }
}, State {
name: "AddressBook"
PropertyChanges { target: root; currentView: addressBookView }
PropertyChanges { target: mainFlickable; contentHeight: addressBookView.addressbookHeight + 80 }
}, State {
name: "Sign"
PropertyChanges { target: root; currentView: signView }
PropertyChanges { target: mainFlickable; contentHeight: signView.signHeight + 80 }
name: "Advanced"
PropertyChanges { target: root; currentView: advancedView }
PropertyChanges { target: mainFlickable; contentHeight: advancedView.panelHeight }
}, State {
name: "Settings"
PropertyChanges { target: root; currentView: settingsView }
PropertyChanges { target: mainFlickable; contentHeight: settingsView.settingsHeight }
}, State {
name: "Mining"
PropertyChanges { target: root; currentView: miningView }
PropertyChanges { target: mainFlickable; contentHeight: miningView.miningHeight + 80 }
}, State {
name: "Keys"
PropertyChanges { target: root; currentView: keysView }
@@ -165,7 +159,7 @@ Rectangle {
name: "Account"
PropertyChanges { target: root; currentView: accountView }
PropertyChanges { target: mainFlickable; contentHeight: accountView.accountHeight + 80 }
}
}
]
ColumnLayout {
@@ -260,18 +254,4 @@ Rectangle {
anchors.bottom: parent.bottom
anchors.left: borderLeft.right
}
/* connect "payment" click */
Connections {
ignoreUnknownSignals: false
target: transferView
onPaymentClicked : {
console.log("MiddlePanel: paymentClicked")
paymentClicked(address, paymentId, amount, mixinCount, priority, description)
}
onSweepUnmixableClicked : {
console.log("MiddlePanel: sweepUnmixableClicked")
sweepUnmixableClicked()
}
}
}

231
README.md
View File

@@ -5,11 +5,11 @@ Copyright (c) 2014-2019, The Monero Project
## Development resources
- Web: [getmonero.org](https://getmonero.org)
- Forum: [forum.getmonero.org](https://forum.getmonero.org)
- Mail: [dev@getmonero.org](mailto:dev@getmonero.org)
- Github: [https://github.com/monero-project/monero-gui](https://github.com/monero-project/monero-gui)
- IRC: [#monero-dev on Freenode](irc://chat.freenode.net/#monero-dev)
- Translation platform (Weblate): [translate.getmonero.org](https://translate.getmonero.org)
- UI Design: [Monero-GUI on Figma](https://www.figma.com/file/DplJ2DDQfIKiuRvolHX2hN/Monero-GUI)
## Vulnerability response
@@ -36,19 +36,17 @@ As with many development projects, the repository on Github is considered to be
Monero is a 100% community-sponsored endeavor. If you want to join our efforts, the easiest thing you can do is support the project financially. Both Monero and Bitcoin donations can be made to **donate.getmonero.org** if using a client that supports the [OpenAlias](https://openalias.org) standard.
The Monero donation address is: `44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A` (viewkey: `f359631075708155cc3d92a32b75a7d02a5dcf27756707b47a2b31b21c389501`)
The Monero donation address is: `888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H` (viewkey: `f359631075708155cc3d92a32b75a7d02a5dcf27756707b47a2b31b21c389501`)
The Bitcoin donation address is: `1KTexdemPdxSBcG55heUuTjDRYqbC5ZL8H`
GUI development funding and/or some supporting services are also graciously provided by sponsors:
GUI development funding and/or some supporting services are also graciously provided by [sponsors](https://www.getmonero.org/community/sponsorships/):
[<img width="80" src="https://static.getmonero.org/images/sponsors/mymonero.png"/>](https://mymonero.com)
[<img width="150" src="https://static.getmonero.org/images/sponsors/kitware.png?1"/>](http://kitware.com)
[<img width="100" src="https://static.getmonero.org/images/sponsors/dome9.png"/>](http://dome9.com)
[<img width="150" src="https://static.getmonero.org/images/sponsors/araxis.png"/>](http://araxis.com)
[<img width="150" src="https://static.getmonero.org/images/sponsors/jetbrains.png"/>](http://www.jetbrains.com/)
[<img width="150" src="https://static.getmonero.org/images/sponsors/navicat.png"/>](http://www.navicat.com/)
[<img width="150" src="https://static.getmonero.org/images/sponsors/symas.png"/>](http://www.symas.com/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/tarilabs.png"/>](https://tarilabs.com/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/globee.png"/>](https://globee.com/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/symas.png"/>](https://symas.com/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/forked_logo.png"/>](http://www.forked.net/)
[<img width="150" src="https://www.getmonero.org/img/sponsors/macstadium.png"/>](https://www.macstadium.com/)
There are also several mining pools that kindly donate a portion of their fees, [a list of them can be found on our Bitcointalk post](https://bitcointalk.org/index.php?topic=583449.0).
@@ -58,18 +56,23 @@ See [LICENSE](LICENSE).
## Translations
Do you speak a second language and would like to help translate the Monero GUI? Check out Pootle, our localization platform, at [translate.getmonero.org](https://translate.getmonero.org/projects/monero-gui/). Choose the language and suggest a translation for a string or review an existing one. The Localization Workgroup made [a guide with step-by-step instructions](https://github.com/monero-ecosystem/monero-translations/blob/master/pootle.md) for Pootle.
&nbsp;
Do you speak a second language and would like to help translate the Monero GUI? Check out Weblate, our localization platform, at [translate.getmonero.org](https://translate.getmonero.org/). Choose the language and suggest a translation for a string or review an existing one. The Localization Workgroup made [a guide with step-by-step instructions](https://github.com/monero-ecosystem/monero-translations/blob/master/weblate.md) for Weblate.
If you need help/support or any info you can contact the localization workgroup on the IRC channel #monero-translations (relayed on matrix/riot and MatterMost) or by email at translate[at]getmonero[dot]org. For more info about the Localization workgroup: [github.com/monero-ecosystem/monero-translations](https://github.com/monero-ecosystem/monero-translations)
Status of the translations:
<a href="https://translate.getmonero.org/engage/monero/?utm_source=widget">
<img src="https://translate.getmonero.org/widgets/monero/-/gui-wallet/horizontal-auto.svg" alt="Translation status" />
</a>
## Installing the Monero GUI from a package
Packages are available for
* Arch Linux via AUR: [monero-wallet-qt](https://aur.archlinux.org/packages/monero-wallet-qt/)
* Void Linux: xbps-install -S monero-core
* GuixSD: guix package -i monero-core
* Arch Linux: [monero-gui](https://www.archlinux.org/packages/community/x86_64/monero-gui/)
* Debian: See the [whonix/monero-gui repository](https://gitlab.com/whonix/monero-gui#how-to-install-monero-using-apt-get)
* Void Linux: `xbps-install -S monero-gui`
* GuixSD: `guix package -i monero-gui`
* macOS (homebrew): `brew install --cask monero-wallet`
Packaging for your favorite distribution would be a welcome contribution!
@@ -77,6 +80,106 @@ Packaging for your favorite distribution would be a welcome contribution!
*Note*: Qt 5.9.7 is the minimum version required to build the GUI.
### Building Reproducible Windows static binaries with Docker (any OS)
1. Install Docker [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
2. Clone the repository
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.17.1.9`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
docker build --tag monero:build-env-windows --build-arg THREADS=4 --file Dockerfile.windows .
```
\* `4` - number of CPU threads to use
4. Build
```
docker run --rm -it -v <MONERO_GUI_DIR_FULL_PATH>:/monero-gui -w /monero-gui monero:build-env-windows sh -c 'make depends root=/depends target=x86_64-w64-mingw32 tag=win-x64 -j4'
```
\* `<MONERO_GUI_DIR_FULL_PATH>` - absolute path to `monero-gui` directory
\* `4` - number of CPU threads to use
5. Monero GUI Windows static binaries will be placed in `monero-gui/build/x86_64-w64-mingw32/release/bin` directory
### Building Reproducible Linux static binaries with Docker (any OS)
1. Install Docker [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
2. Clone the repository
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.17.1.9`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
docker build --tag monero:build-env-linux --build-arg THREADS=4 --file Dockerfile.linux .
```
\* `4` - number of CPU threads to use
4. Build
```
docker run --rm -it -v <MONERO_GUI_DIR_FULL_PATH>:/monero-gui -w /monero-gui monero:build-env-linux sh -c 'make release-static -j4'
```
\* `<MONERO_GUI_DIR_FULL_PATH>` - absolute path to `monero-gui` directory
\* `4` - number of CPU threads to use
5. Monero GUI Linux static binaries will be placed in `monero-gui/build/release/bin` directory
6. (*Optional*) Compare `monero-wallet-gui` SHA-256 hash to the one obtained from a trusted source
```
docker run --rm -it -v <MONERO_GUI_DIR_FULL_PATH>:/monero-gui -w /monero-gui monero:build-env-linux sh -c 'shasum -a 256 /monero-gui/build/release/bin/monero-wallet-gui'
```
\* `<MONERO_GUI_DIR_FULL_PATH>` - absolute path to `monero-gui` directory
### Building Android APK with Docker (any OS) *Experimental*
- Minimum Android 9 Pie (API 28)
- ARMv8-A 64-bit CPU
1. Install Docker [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
2. Clone the repository
```
git clone --recursive https://github.com/monero-project/monero-gui.git
```
3. Prepare build environment
```
cd monero-gui
docker build --tag monero:build-env-android --build-arg THREADS=4 --file Dockerfile.android .
```
\* `4` - number of CPU threads to use
4. Build
```
docker run --rm -it -v <MONERO_GUI_DIR_FULL_PATH>:/monero-gui -e THREADS=4 monero:build-env-android
```
\* `<MONERO_GUI_DIR_FULL_PATH>` - absolute path to `monero-gui` directory
\* `4` - number of CPU threads to use
5. Monero GUI APK will be placed in `monero-gui/build/Android/release/android-build` directory
6. Deploy
* Using ADB (Android debugger bridge)
- [Enable adb debugging on your device](https://developer.android.com/studio/command-line/adb.html#Enabling)
* Connect your device with USB and install Monero GUI APK with adb:
```
adb install build/Android/release/android-build/monero-gui.apk
```
* Troubleshooting:
```
adb devices -l
adb logcat
```
* If using adb inside docker, make sure you did
```
docker run -v /dev/bus/usb:/dev/bus/usb --privileged
```
* Using a web server
```
mkdir /usr/tmp
cp build/Android/release/android-build/monero-gui.apk /usr/tmp
docker run -d -v /usr/tmp:/usr/share/nginx/html:ro -p 8080:80 nginx
```
Now it should be accessible through a web browser at
```
http://<your.local.ip>:8080/QtApp-debug.apk
```
### On Linux:
(Tested on Ubuntu 17.10 x64, Ubuntu 18.04 x64 and Gentoo x64)
@@ -85,15 +188,15 @@ Packaging for your favorite distribution would be a welcome contribution!
- For Debian distributions (Debian, Ubuntu, Mint, Tails...)
`sudo apt install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev`
`sudo apt install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler libgcrypt20-dev`
- For Gentoo
`sudo emerge app-arch/xz-utils app-doc/doxygen dev-cpp/gtest dev-libs/boost dev-libs/expat dev-libs/openssl dev-util/cmake media-gfx/graphviz net-dns/unbound net-libs/ldns net-libs/miniupnpc net-libs/zeromq sys-libs/libunwind dev-libs/libsodium dev-libs/hidapi`
`sudo emerge app-arch/xz-utils app-doc/doxygen dev-cpp/gtest dev-libs/boost dev-libs/expat dev-libs/openssl dev-util/cmake media-gfx/graphviz net-dns/unbound net-libs/ldns net-libs/miniupnpc net-libs/zeromq sys-libs/libunwind dev-libs/libsodium dev-libs/hidapi dev-libs/libgcrypt`
- For Fedora
`sudo dnf install make automake cmake gcc-c++ boost-devel miniupnpc-devel graphviz doxygen unbound-devel libunwind-devel pkgconfig openssl-devel libcurl-devel hidapi-devel libusb-devel zeromq-devel`
`sudo dnf install make automake cmake gcc-c++ boost-devel miniupnpc-devel graphviz doxygen unbound-devel libunwind-devel pkgconfig openssl-devel libcurl-devel hidapi-devel libusb-devel zeromq-devel libgcrypt-devel`
2. Install Qt:
@@ -105,7 +208,7 @@ The following instructions will fetch Qt from your distribution's repositories i
- For Ubuntu 17.10+
`sudo apt install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel qttools5-dev-tools qml-module-qtquick-templates2 libqt5svg5-dev`
`sudo apt install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtqml-models2 qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel qml-module-qt-labs-settings qml-module-qt-labs-platform qml-module-qt-labs-folderlistmodel qttools5-dev-tools qml-module-qtquick-templates2 libqt5svg5-dev`
- For Gentoo
@@ -115,25 +218,29 @@ The following instructions will fetch Qt from your distribution's repositories i
- For Ubuntu
`sudo apt install qtmultimedia5-dev qml-module-qtmultimedia libzbar-dev`
`sudo apt install qtmultimedia5-dev qml-module-qtmultimedia`
- For Gentoo
The *qml* USE flag must be enabled.
`emerge dev-qt/qtmultimedia:5 media-gfx/zbar`
`emerge dev-qt/qtmultimedia:5`
3. Clone repository
`git clone https://github.com/monero-project/monero-gui.git`
```
git clone --recursive https://github.com/monero-project/monero-gui.git
cd monero-gui
```
4. Build
```
cd monero-gui
QT_SELECT=5 ./build.sh
make release -j4
```
\* `4` - number of CPU threads to use
\* Add `CMAKE_PREFIX_PATH` enviroment variable to set a custom Qt install directory, e.g. `CMAKE_PREFIX_PATH=$HOME/Qt/5.9.7/gcc_64 make release -j4`
The executable can be found in the build/release/bin folder.
@@ -145,57 +252,30 @@ The executable can be found in the build/release/bin folder.
3. Install [monero](https://github.com/monero-project/monero) dependencies:
`brew install boost`
`brew install openssl` - to install openssl headers
`brew install pkgconfig`
`brew install cmake`
`brew install zeromq`
*Note*: If cmake can not find zmq.hpp file on OS X, installing `zmq.hpp` from https://github.com/zeromq/cppzmq to `/usr/local/include` should fix that error.
`brew install boost hidapi zmq libpgm libsodium miniupnpc ldns expat libunwind-headers protobuf libgcrypt`
4. Install Qt:
`brew install qt5` (or download QT 5.9.7+ from [qt.io](https://www.qt.io/download-open-source/))
If you have an older version of Qt installed via homebrew, you can force it to use 5.x like so:
`brew link --force --overwrite qt5`
5. Grab an up-to-date copy of the monero-gui repository
5. Add the Qt bin directory to your path
```
git clone --recursive https://github.com/monero-project/monero-gui.git
cd monero-gui
```
- Example for Qt: `export PATH=$PATH:$HOME/Qt/5.9.7/clang_64/bin`
- Example for Homebrew: `export PATH=$PATH:/usr/local/opt/qt/bin`
6. Start the build
6. Grab an up-to-date copy of the monero-gui repository
`git clone https://github.com/monero-project/monero-gui.git`
7. Go into the repository
`cd monero-gui`
8. Start the build
`./build.sh`
```
make release -j4
```
\* `4` - number of CPU threads to use
\* Add `CMAKE_PREFIX_PATH` enviroment variable to set a custom Qt install directory, e.g. `CMAKE_PREFIX_PATH=$HOME/Qt/5.9.7/clang_64 make release -j4`
The executable can be found in the `build/release/bin` folder.
**Note:** Workaround for "ERROR: Xcode not set up properly"
Edit `$HOME/Qt/5.9.7/clang_64/mkspecs/features/mac/default_pre.prf`
replace
`isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null")))`
with
`isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null")))`
More info: http://stackoverflow.com/a/35098040/1683164
For building an application bundle see `DEPLOY.md`.
### On Windows:
@@ -208,15 +288,9 @@ The Monero GUI on Windows is 64 bits only; 32-bit Windows GUI builds are not off
3. Install MSYS2 packages for Monero dependencies; the needed 64-bit packages have `x86_64` in their names
```
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-libgcrypt
```
Optional : To build the flag `WITH_SCANNER`
```
pacman -S mingw-w64-x86_64-zbar
```
You find more details about those dependencies in the [Monero documentation](https://github.com/monero-project/monero). Note that that there is no more need to compile Boost from source; like everything else, you can install it now with a MSYS2 package.
4. Install Qt5
@@ -236,18 +310,17 @@ The Monero GUI on Windows is 64 bits only; 32-bit Windows GUI builds are not off
6. Clone repository
```
git clone https://github.com/monero-project/monero-gui.git
git clone --recursive https://github.com/monero-project/monero-gui.git
cd monero-gui
```
7. Build
```
cd monero-gui
source ./build.sh release-static
cd build
make release-win64 -j4
cd build/release
make deploy
```
\* `4` - number of CPU threads to use
**Note:** The use of `source` above is a dirty workaround for a suspected bug in the current QT version 5.11.2-3 available in the MSYS2 packaging system, see https://github.com/monero-project/monero-gui/issues/1559 for more info.
The executable can be found in the `.\release\bin` directory.
The executable can be found in the `.\bin` directory.

View File

@@ -1,53 +0,0 @@
Copyright (c) 2014-2018, The Monero Project
## Current status : ALPHA
- Minimum Android 5.0 (api level 21)
- Modal dialogs can appear in background giving the feeling that the application is frozen (Work around : turn screen off/on or switch to another app and back)
## Build using Docker
# Base environnement
cd monero/utils/build_scripts
docker build -f android32.Dockerfile -t monero-android .
cd ..
# Build GUI
cd android/docker
docker build -t monero-gui-android .
docker create -it --name monero-gui-android monero-gui-android bash
# Get the apk
docker cp monero-gui-android:/opt/android/monero-gui/build/release/bin/bin/QtApp-debug.apk .
## Deployment
- Using ADB (Android debugger bridge) :
First, see section [Enable adb debugging on your device](https://developer.android.com/studio/command-line/adb.html#Enabling)
The only place where we are allowed to play is `/data/local/tmp`. So :
adb push /opt/android/monero-gui/build/release/bin/bin/QtApp-debug.apk /data/local/tmp
adb shell pm install -r /data/local/tmp/QtApp-debug.apk
- Troubleshooting:
adb devices -l
adb logcat
if using adb inside docker, make sure you did "docker run -v /dev/bus/usb:/dev/bus/usb --privileged"
- Using a web server
mkdir /usr/tmp
cp QtApp-debug.apk /usr/tmp
docker run -d -v /usr/tmp:/usr/share/nginx/html:ro -p 8080:80 nginx
Now it should be accessible through a web browser at
http://<your.local.ip>:8080/QtApp-debug.apk

View File

@@ -1,107 +0,0 @@
FROM monero-android
#INSTALL JAVA
RUN echo "deb http://ftp.fr.debian.org/debian/ jessie-backports main contrib non-free" >> /etc/apt/sources.list
RUN dpkg --add-architecture i386 \
&& apt-get update \
&& apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386 \
&& apt-get install -y -t jessie-backports ca-certificates-java openjdk-8-jdk-headless openjdk-8-jre-headless ant
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV PATH $JAVA_HOME/bin:$PATH
#Get Qt
ENV QT_VERSION 5.8
RUN git clone git://code.qt.io/qt/qt5.git -b ${QT_VERSION} \
&& cd qt5 \
&& perl init-repository
## Note: Need to use libc++ but Qt does not provide mkspec for libc++.
## Their support of it is quite recent and they claim they don't use it by default
## [only because it produces bigger binary objects](https://bugreports.qt.io/browse/QTBUG-50724).
#Create new mkspec for clang + libc++
RUN cp -r qt5/qtbase/mkspecs/android-clang qt5/qtbase/mkspecs/android-clang-libc \
&& cd qt5/qtbase/mkspecs/android-clang-libc \
&& sed -i '16i ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/libs/$$ANDROID_TARGET_ARCH' qmake.conf \
&& sed -i '17i ANDROID_SOURCES_CXX_STL_INCDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/include' qmake.conf \
&& echo "QMAKE_LIBS_PRIVATE = -lc++_shared -llog -lz -lm -ldl -lc -lgcc " >> qmake.conf \
&& echo "QMAKE_CFLAGS -= -mfpu=vfp " >> qmake.conf \
&& echo "QMAKE_CXXFLAGS -= -mfpu=vfp " >> qmake.conf \
&& echo "QMAKE_CFLAGS += -mfpu=vfp4 " >> qmake.conf \
&& echo "QMAKE_CXXFLAGS += -mfpu=vfp4 " >> qmake.conf
ENV ANDROID_API android-21
#ANDROID SDK TOOLS
RUN echo y | $ANDROID_SDK_ROOT/tools/android update sdk --no-ui --all --filter platform-tools
RUN echo y | $ANDROID_SDK_ROOT/tools/android update sdk --no-ui --all --filter ${ANDROID_API}
RUN echo y | $ANDROID_SDK_ROOT/tools/android update sdk --no-ui --all --filter build-tools-25.0.1
ENV CLEAN_PATH $JAVA_HOME/bin:/usr/cmake-3.6.3-Linux-x86_64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#build Qt
RUN cd qt5 && PATH=${CLEAN_PATH} ./configure -developer-build -release \
-xplatform android-clang-libc \
-android-ndk-platform ${ANDROID_API} \
-android-ndk $ANDROID_NDK_ROOT \
-android-sdk $ANDROID_SDK_ROOT \
-opensource -confirm-license \
-prefix ${WORKDIR}/Qt-${QT_VERSION} \
-nomake tests -nomake examples \
-skip qtserialport \
-skip qtconnectivity \
-skip qttranslations \
-skip qtgamepad -skip qtscript -skip qtdoc
# build Qt tools : gnustl_shared.so is hard-coded in androiddeployqt
# replace it with libc++_shared.so
COPY androiddeployqt.patch qt5/qttools/androiddeployqt.patch
RUN cd qt5/qttools \
&& git apply androiddeployqt.patch \
&& cd .. \
&& PATH=${CLEAN_PATH} make -j4 \
&& PATH=${CLEAN_PATH} make install
# Get iconv and ZBar
ENV ICONV_VERSION 1.14
RUN git clone https://github.com/ZBar/ZBar.git \
&& curl -s -O http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz \
&& tar -xzf libiconv-${ICONV_VERSION}.tar.gz \
&& cd libiconv-${ICONV_VERSION} \
&& CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ ./configure --build=x86_64-linux-gnu --host=arm-eabi --prefix=${WORKDIR}/libiconv --disable-rpath
ENV PATH $ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:${WORKDIR}/Qt-${QT_VERSION}/bin:$PATH
#Build libiconv.a and libzbarjni.a
COPY android.mk.patch ZBar/android.mk.patch
RUN cd ZBar \
&& git apply android.mk.patch \
&& echo \
"APP_ABI := armeabi-v7a \n\
APP_STL := c++_shared \n\
TARGET_PLATFORM := ${ANDROID_API} \n\
TARGET_ARCH_ABI := armeabi-v7a \n\
APP_CFLAGS += -target armv7-none-linux-androideabi -fexceptions -fstack-protector-strong -fno-limit-debug-info -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -fno-omit-frame-pointer -fno-stack-protector\n"\
>> android/jni/Application.mk \
&& cd android \
&& android update project --path . -t "${ANDROID_API}" \
&& CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ ant -Dndk.dir=${ANDROID_NDK_ROOT} -Diconv.src=${WORKDIR}/libiconv-${ICONV_VERSION} zbar-clean zbar-ndk-build
RUN cp openssl/lib* ${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm/usr/lib
RUN cp boost_${BOOST_VERSION}/android32/lib/lib* ${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm/usr/lib
RUN cp ZBar/android/obj/local/armeabi-v7a/lib* ${ANDROID_NDK_ROOT}/platforms/${ANDROID_API}/arch-arm/usr/lib
RUN git clone https://github.com/monero-project/monero-gui.git \
&& cd monero-gui \
&& git submodule update \
&& CC=arm-linux-androideabi-clang CXX=arm-linux-androideabi-clang++ BOOST_ROOT=/opt/android/boost_1_62_0 \
BOOST_LIBRARYDIR=${WORKDIR}/boost_${BOOST_VERSION}/android32/lib/ \
OPENSSL_ROOT_DIR=${WORKDIR}/openssl/ \
CMAKE_INCLUDE_PATH=${WORKDIR}/cppzmq/ \
CMAKE_LIBRARY_PATH=${WORKDIR}/zeromq4-1/.libs \
CXXFLAGS="-I ${WORKDIR}/zeromq4-1/include/" \
./build.sh release-android \
&& cd build \
&& make deploy

View File

@@ -1,61 +0,0 @@
diff --git a/android/jni/Android.mk b/android/jni/Android.mk
index e442b07..158afd5 100644
--- a/android/jni/Android.mk
+++ b/android/jni/Android.mk
@@ -12,14 +12,18 @@ LOCAL_PATH := $(ICONV_SRC)
LOCAL_MODULE := libiconv
+LOCAL_ARM_MODE := arm
+LOCAL_CPP_FEATURES := exceptions rtti features
LOCAL_CFLAGS := \
-Wno-multichar \
-D_ANDROID \
- -DLIBDIR="c" \
+ -DLIBDIR="\".\"" \
-DBUILDING_LIBICONV \
-DBUILDING_LIBCHARSET \
-DIN_LIBRARY
+LOCAL_CFLAGS += -fno-stack-protector
+
LOCAL_SRC_FILES := \
lib/iconv.c \
libcharset/lib/localcharset.c \
@@ -30,13 +34,14 @@ LOCAL_C_INCLUDES := \
$(ICONV_SRC)/libcharset \
$(ICONV_SRC)/libcharset/include
-include $(BUILD_SHARED_LIBRARY)
+include $(BUILD_STATIC_LIBRARY)
LOCAL_LDLIBS := -llog -lcharset
# libzbarjni
include $(CLEAR_VARS)
+
LOCAL_PATH := $(MY_LOCAL_PATH)
LOCAL_MODULE := zbarjni
LOCAL_SRC_FILES := ../../java/zbarjni.c \
@@ -71,6 +76,17 @@ LOCAL_C_INCLUDES := ../include \
../zbar \
$(ICONV_SRC)/include
-LOCAL_SHARED_LIBRARIES := libiconv
+LOCAL_STATIC_LIBRARIES := libiconv
+LOCAL_ARM_MODE := arm
+LOCAL_CPP_FEATURES := exceptions rtti features
+
+LOCAL_CFLAGS := \
+ -Wno-multichar \
+ -D_ANDROID \
+ -DLIBDIR="\".\"" \
+ -DBUILDING_LIBICONV \
+ -DBUILDING_LIBCHARSET \
+ -DIN_LIBRARY
+
-include $(BUILD_SHARED_LIBRARY)
\ No newline at end of file
+include $(BUILD_STATIC_LIBRARY)

View File

@@ -1,62 +0,0 @@
diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp
index 8a8e591..71d693e 100644
--- a/src/androiddeployqt/main.cpp
+++ b/src/androiddeployqt/main.cpp
@@ -1122,7 +1122,7 @@ bool updateLibsXml(const Options &options)
QString libsPath = QLatin1String("libs/") + options.architecture + QLatin1Char('/');
- QString qtLibs = QLatin1String("<item>gnustl_shared</item>\n");
+ QString qtLibs = QLatin1String("<item>c++_shared</item>\n");
QString bundledInLibs;
QString bundledInAssets;
foreach (Options::BundledFile bundledFile, options.bundledFiles) {
@@ -2519,6 +2519,39 @@ bool installApk(const Options &options)
return true;
}
+bool copyStl(Options *options)
+{
+ if (options->deploymentMechanism == Options::Debug && !options->installApk)
+ return true;
+
+ if (options->verbose)
+ fprintf(stdout, "Copying LIBC++ STL library\n");
+
+ QString filePath = options->ndkPath
+ + QLatin1String("/sources/cxx-stl/llvm-libc++")
+ + QLatin1String("/libs/")
+ + options->architecture
+ + QLatin1String("/libc++_shared.so");
+ if (!QFile::exists(filePath)) {
+ fprintf(stderr, "LIBC STL library does not exist at %s\n", qPrintable(filePath));
+ return false;
+ }
+
+ QString destinationDirectory =
+ options->deploymentMechanism == Options::Debug
+ ? options->temporaryDirectoryName + QLatin1String("/lib")
+ : options->outputDirectory + QLatin1String("/libs/") + options->architecture;
+
+ if (!copyFileIfNewer(filePath, destinationDirectory
+ + QLatin1String("/libc++_shared.so"), options->verbose)) {
+ return false;
+ }
+
+ if (options->deploymentMechanism == Options::Debug && !deployToLocalTmp(options, QLatin1String("/lib/libc++_shared.so")))
+ return false;
+
+ return true;
+}
bool copyGnuStl(Options *options)
{
if (options->deploymentMechanism == Options::Debug && !options->installApk)
@@ -2870,7 +2903,7 @@ int main(int argc, char *argv[])
if (Q_UNLIKELY(options.timing))
fprintf(stdout, "[TIMING] %d ms: Read dependencies\n", options.timer.elapsed());
- if (options.deploymentMechanism != Options::Ministro && !copyGnuStl(&options))
+ if (options.deploymentMechanism != Options::Ministro && !copyStl(&options))
return CannotCopyGnuStl;
if (Q_UNLIKELY(options.timing))

124
build.sh
View File

@@ -1,124 +0,0 @@
#!/bin/bash
BUILD_TYPE=$1
BUILD_TREZOR=${BUILD_TREZOR-true}
source ./utils.sh
platform=$(get_platform)
# default build type
if [ -z $BUILD_TYPE ]; then
BUILD_TYPE=release
fi
# Return 0 if the command exists, 1 if it does not.
exists() {
command -v "$1" &>/dev/null
}
# Return the first value in $@ that's a runnable command.
find_command() {
for arg in "$@"; do
if exists "$arg"; then
echo "$arg"
return 0
fi
done
return 1
}
if [ "$BUILD_TYPE" == "release" ]; then
echo "Building release"
CONFIG="CONFIG+=release";
BIN_PATH=release/bin
elif [ "$BUILD_TYPE" == "release-static" ]; then
echo "Building release-static"
if [ "$platform" != "darwin" ]; then
CONFIG="CONFIG+=release static";
else
# OS X: build static libwallet but dynamic Qt.
echo "OS X: Building Qt project without static flag"
CONFIG="CONFIG+=release";
fi
BIN_PATH=release/bin
elif [ "$BUILD_TYPE" == "release-android" ]; then
echo "Building release for ANDROID"
CONFIG="CONFIG+=release static WITH_SCANNER DISABLE_PASS_STRENGTH_METER";
ANDROID=true
BIN_PATH=release/bin
DISABLE_PASS_STRENGTH_METER=true
elif [ "$BUILD_TYPE" == "debug-android" ]; then
echo "Building debug for ANDROID : ultra INSECURE !!"
CONFIG="CONFIG+=debug qml_debug WITH_SCANNER DISABLE_PASS_STRENGTH_METER";
ANDROID=true
BIN_PATH=debug/bin
DISABLE_PASS_STRENGTH_METER=true
elif [ "$BUILD_TYPE" == "debug" ]; then
echo "Building debug"
CONFIG="CONFIG+=debug"
BIN_PATH=debug/bin
else
echo "Valid build types are release, release-static, release-android, debug-android and debug"
exit 1;
fi
source ./utils.sh
pushd $(pwd)
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MONERO_DIR=monero
MONEROD_EXEC=monerod
MAKE='make'
if [[ $platform == *bsd* ]]; then
MAKE='gmake'
fi
# build libwallet
export BUILD_TREZOR
./get_libwallet_api.sh $BUILD_TYPE
# build zxcvbn
if [ "$DISABLE_PASS_STRENGTH_METER" != true ]; then
$MAKE -C src/zxcvbn-c || exit
fi
if [ ! -d build ]; then mkdir build; fi
# Platform indepenent settings
if [ "$ANDROID" != true ] && ([ "$platform" == "linux32" ] || [ "$platform" == "linux64" ]); then
exists lsb_release && distro="$(lsb_release -is)"
if [ "$distro" = "Ubuntu" ] || [ "$distro" = "Fedora" ] || test -f /etc/fedora-release; then
CONFIG="$CONFIG libunwind_off"
fi
fi
if [ "$platform" == "darwin" ]; then
BIN_PATH=$BIN_PATH/monero-wallet-gui.app/Contents/MacOS/
elif [ "$platform" == "mingw64" ] || [ "$platform" == "mingw32" ]; then
MONEROD_EXEC=monerod.exe
fi
# force version update
get_tag
echo "var GUI_VERSION = \"$TAGNAME\"" > version.js
pushd "$MONERO_DIR"
get_tag
popd
echo "var GUI_MONERO_VERSION = \"$TAGNAME\"" >> version.js
cd build
if ! QMAKE=$(find_command qmake qmake-qt5); then
echo "Failed to find suitable qmake command."
exit 1
fi
$QMAKE ../monero-wallet-gui.pro "$CONFIG" || exit
$MAKE || exit
# Copy monerod to bin folder
if [ "$platform" != "mingw32" ] && [ "$ANDROID" != true ]; then
cp ../$MONERO_DIR/bin/$MONEROD_EXEC $BIN_PATH
fi
# make deploy
popd

View File

@@ -1,181 +0,0 @@
OPTION(USE_DEVICE_TREZOR "Trezor support compilation" ON)
OPTION(USE_DEVICE_TREZOR_LIBUSB "Trezor LibUSB compilation" ON)
OPTION(USE_DEVICE_TREZOR_UDP_RELEASE "Trezor UdpTransport in release mode" OFF)
OPTION(USE_DEVICE_TREZOR_DEBUG "Trezor Debugging enabled" OFF)
OPTION(TREZOR_DEBUG "Main trezor debugging switch" OFF)
# Helper function to fix cmake < 3.6.0 FindProtobuf variables
function(_trezor_protobuf_fix_vars)
if(${CMAKE_VERSION} VERSION_LESS "3.6.0")
foreach(UPPER
PROTOBUF_SRC_ROOT_FOLDER
PROTOBUF_IMPORT_DIRS
PROTOBUF_DEBUG
PROTOBUF_LIBRARY
PROTOBUF_PROTOC_LIBRARY
PROTOBUF_INCLUDE_DIR
PROTOBUF_PROTOC_EXECUTABLE
PROTOBUF_LIBRARY_DEBUG
PROTOBUF_PROTOC_LIBRARY_DEBUG
PROTOBUF_LITE_LIBRARY
PROTOBUF_LITE_LIBRARY_DEBUG
)
if (DEFINED ${UPPER})
string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER})
if (NOT DEFINED ${Camel})
set(${Camel} ${${UPPER}} PARENT_SCOPE)
endif()
endif()
endforeach()
endif()
endfunction()
# Use Trezor master switch
if (USE_DEVICE_TREZOR)
# Protobuf is required to build protobuf messages for Trezor
include(FindProtobuf OPTIONAL)
find_package(Protobuf)
_trezor_protobuf_fix_vars()
# Protobuf handling the cache variables set in docker.
if(NOT Protobuf_FOUND AND NOT Protobuf_LIBRARY AND NOT Protobuf_PROTOC_EXECUTABLE AND NOT Protobuf_INCLUDE_DIR)
message(STATUS "Could not find Protobuf")
elseif(NOT Protobuf_LIBRARY OR NOT EXISTS "${Protobuf_LIBRARY}")
message(STATUS "Protobuf library not found: ${Protobuf_LIBRARY}")
unset(Protobuf_FOUND)
elseif(NOT Protobuf_PROTOC_EXECUTABLE OR NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
message(STATUS "Protobuf executable not found: ${Protobuf_PROTOC_EXECUTABLE}")
unset(Protobuf_FOUND)
elseif(NOT Protobuf_INCLUDE_DIR OR NOT EXISTS "${Protobuf_INCLUDE_DIR}")
message(STATUS "Protobuf include dir not found: ${Protobuf_INCLUDE_DIR}")
unset(Protobuf_FOUND)
else()
message(STATUS "Protobuf lib: ${Protobuf_LIBRARY}, inc: ${Protobuf_INCLUDE_DIR}, protoc: ${Protobuf_PROTOC_EXECUTABLE}")
set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIR})
set(Protobuf_FOUND 1) # override found if all rquired info was provided by variables
endif()
if(TREZOR_DEBUG)
set(USE_DEVICE_TREZOR_DEBUG 1)
endif()
# Compile debugging support (for tests)
if (USE_DEVICE_TREZOR_DEBUG)
add_definitions(-DWITH_TREZOR_DEBUGGING=1)
endif()
else()
message(STATUS "Trezor support disabled by USE_DEVICE_TREZOR")
endif()
if(Protobuf_FOUND AND USE_DEVICE_TREZOR)
if (NOT "$ENV{TREZOR_PYTHON}" STREQUAL "")
set(TREZOR_PYTHON "$ENV{TREZOR_PYTHON}" CACHE INTERNAL "Copied from environment variable TREZOR_PYTHON")
else()
find_package(Python QUIET COMPONENTS Interpreter) # cmake 3.12+
if(Python_Interpreter_FOUND)
set(TREZOR_PYTHON "${Python_EXECUTABLE}")
endif()
endif()
if(NOT TREZOR_PYTHON)
find_package(PythonInterp)
if(PYTHONINTERP_FOUND AND PYTHON_EXECUTABLE)
set(TREZOR_PYTHON "${PYTHON_EXECUTABLE}")
endif()
endif()
if(NOT TREZOR_PYTHON)
message(STATUS "Trezor: Python not found")
endif()
endif()
# Protobuf compilation test
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON)
execute_process(COMMAND ${Protobuf_PROTOC_EXECUTABLE} -I "${CMAKE_SOURCE_DIR}/cmake" -I "${Protobuf_INCLUDE_DIR}" "${CMAKE_SOURCE_DIR}/cmake/test-protobuf.proto" --cpp_out ${CMAKE_BINARY_DIR} RESULT_VARIABLE RET OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR)
if(RET)
message(STATUS "Protobuf test generation failed: ${OUT} ${ERR}")
endif()
try_compile(Protobuf_COMPILE_TEST_PASSED
"${CMAKE_BINARY_DIR}"
SOURCES
"${CMAKE_BINARY_DIR}/test-protobuf.pb.cc"
"${CMAKE_SOURCE_DIR}/cmake/test-protobuf.cpp"
CMAKE_FLAGS
"-DINCLUDE_DIRECTORIES=${Protobuf_INCLUDE_DIR};${CMAKE_BINARY_DIR}"
"-DCMAKE_CXX_STANDARD=11"
LINK_LIBRARIES ${Protobuf_LIBRARY}
OUTPUT_VARIABLE OUTPUT
)
if(NOT Protobuf_COMPILE_TEST_PASSED)
message(STATUS "Protobuf Compilation test failed: ${OUTPUT}.")
endif()
endif()
# Try to build protobuf messages
if(Protobuf_FOUND AND USE_DEVICE_TREZOR AND TREZOR_PYTHON AND Protobuf_COMPILE_TEST_PASSED)
set(ENV{PROTOBUF_INCLUDE_DIRS} "${Protobuf_INCLUDE_DIR}")
set(ENV{PROTOBUF_PROTOC_EXECUTABLE} "${Protobuf_PROTOC_EXECUTABLE}")
set(TREZOR_PROTOBUF_PARAMS "")
if (USE_DEVICE_TREZOR_DEBUG)
set(TREZOR_PROTOBUF_PARAMS "--debug")
endif()
execute_process(COMMAND ${TREZOR_PYTHON} tools/build_protob.py ${TREZOR_PROTOBUF_PARAMS} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/monero/src/device_trezor/trezor RESULT_VARIABLE RET OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR)
if(RET)
message(WARNING "Trezor protobuf messages could not be regenerated (err=${RET}, python ${PYTHON})."
"OUT: ${OUT}, ERR: ${ERR}."
"Please read src/device_trezor/trezor/tools/README.md")
else()
message(STATUS "Trezor protobuf messages regenerated out: \"${OUT}.\"")
set(DEVICE_TREZOR_READY 1)
add_definitions(-DDEVICE_TREZOR_READY=1)
add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DTREZOR_DEBUG=1)
endif()
if(USE_DEVICE_TREZOR_UDP_RELEASE)
add_definitions(-DUSE_DEVICE_TREZOR_UDP_RELEASE=1)
endif()
if (Protobuf_INCLUDE_DIR)
include_directories(${Protobuf_INCLUDE_DIR})
endif()
# LibUSB support, check for particular version
# Include support only if compilation test passes
if (USE_DEVICE_TREZOR_LIBUSB)
find_package(LibUSB)
endif()
if (LibUSB_COMPILE_TEST_PASSED)
add_definitions(-DHAVE_TREZOR_LIBUSB=1)
if(LibUSB_INCLUDE_DIRS)
include_directories(${LibUSB_INCLUDE_DIRS})
endif()
endif()
set(TREZOR_LIBUSB_LIBRARIES "")
if(LibUSB_COMPILE_TEST_PASSED)
list(APPEND TREZOR_LIBUSB_LIBRARIES ${LibUSB_LIBRARIES})
message(STATUS "Trezor compatible LibUSB found at: ${LibUSB_INCLUDE_DIRS}")
endif()
if (BUILD_GUI_DEPS)
set(TREZOR_DEP_LIBS "")
set(TREZOR_DEP_LINKER "")
if (Protobuf_LIBRARY)
list(APPEND TREZOR_DEP_LIBS ${Protobuf_LIBRARY})
string(APPEND TREZOR_DEP_LINKER " -lprotobuf")
endif()
if (TREZOR_LIBUSB_LIBRARIES)
list(APPEND TREZOR_DEP_LIBS ${TREZOR_LIBUSB_LIBRARIES})
string(APPEND TREZOR_DEP_LINKER " -lusb-1.0")
endif()
endif()
endif()
endif()

103
cmake/Deploy.cmake Normal file
View File

@@ -0,0 +1,103 @@
if(APPLE OR (WIN32 AND NOT STATIC))
add_custom_target(deploy)
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY)
if(APPLE AND NOT IOS)
find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
add_custom_command(TARGET deploy
POST_BUILD
COMMAND "${MACDEPLOYQT_EXECUTABLE}" "$<TARGET_FILE_DIR:monero-wallet-gui>/../.." -always-overwrite -qmldir="${CMAKE_SOURCE_DIR}"
COMMENT "Running macdeployqt..."
)
# workaround for a Qt bug that requires manually adding libqsvg.dylib to bundle
find_file(_qt_svg_dylib "libqsvg.dylib" PATHS "${CMAKE_PREFIX_PATH}/plugins/imageformats" NO_DEFAULT_PATH)
if(_qt_svg_dylib)
add_custom_command(TARGET deploy
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${_qt_svg_dylib} $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtGui.framework/Versions/5/QtGui" "@executable_path/../Frameworks/QtGui.fr amework/Versions/5/QtGui" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/../Frameworks/ QtGui.framework/Versions/5/QtGui" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtSvg.framework/Versions/5/QtSvg" "@executable_path/../Frameworks/QtGui.fr amework/Versions/5/QtGui" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtCore.framework/Versions/5/QtCore" "@executable_path/../Frameworks/QtGui. framework/Versions/5/QtGui" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
COMMENT "Copying libqsvg.dylib, running install_name_tool"
)
endif()
elseif(WIN32)
find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
add_custom_command(TARGET monero-wallet-gui POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}" "$<TARGET_FILE:monero-wallet-gui>" -no-translations -qmldir="${CMAKE_SOURCE_DIR}"
COMMENT "Running windeployqt..."
)
set(WIN_DEPLOY_DLLS
libboost_chrono-mt.dll
libboost_filesystem-mt.dll
libboost_locale-mt.dll
libboost_program_options-mt.dll
libboost_regex-mt.dll
libboost_serialization-mt.dll
libboost_thread-mt.dll
libprotobuf.dll
libbrotlicommon.dll
libbrotlidec.dll
libusb-1.0.dll
zlib1.dll
libzstd.dll
libwinpthread-1.dll
libtiff-5.dll
libstdc++-6.dll
libpng16-16.dll
libpcre16-0.dll
libpcre-1.dll
libmng-2.dll
liblzma-5.dll
liblcms2-2.dll
libjpeg-8.dll
libintl-8.dll
libiconv-2.dll
libharfbuzz-0.dll
libgraphite2.dll
libglib-2.0-0.dll
libfreetype-6.dll
libbz2-1.dll
libssp-0.dll
libpcre2-16-0.dll
libhidapi-0.dll
libdouble-conversion.dll
libgcrypt-20.dll
libgpg-error-0.dll
libsodium-23.dll
libzmq.dll
#platform files
libgcc_s_seh-1.dll
#openssl files
libssl-1_1-x64.dll
libcrypto-1_1-x64.dll
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
list(APPEND WIN_DEPLOY_DLLS
libicudtd68.dll
libicuind68.dll
libicuiod68.dll
libicutud68.dll
libicuucd68.dll
)
else() # assume release
list(APPEND WIN_DEPLOY_DLLS
libicudt68.dll
libicuin68.dll
libicuio68.dll
libicutu68.dll
libicuuc68.dll
)
endif()
list(TRANSFORM WIN_DEPLOY_DLLS PREPEND "$ENV{MSYSTEM_PREFIX}/bin/")
add_custom_command(TARGET deploy
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${WIN_DEPLOY_DLLS} "$<TARGET_FILE_DIR:monero-wallet-gui>"
COMMENT "Copying DLLs to target folder"
)
endif()
endif()

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +0,0 @@
/* increase vertical space */
#titlearea, #nav-path {
display: none;
height: 0px;
}
/* uncomment these lines for some extra vertical space */
/*
.tablist li {
line-height: 26px;
}
*/

View File

@@ -1,98 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#.rst:
# FindBacktrace
# -------------
#
# Find provider for backtrace(3).
#
# Checks if OS supports backtrace(3) via either libc or custom library.
# This module defines the following variables:
#
# ``Backtrace_HEADER``
# The header file needed for backtrace(3). Cached.
# Could be forcibly set by user.
# ``Backtrace_INCLUDE_DIRS``
# The include directories needed to use backtrace(3) header.
# ``Backtrace_LIBRARIES``
# The libraries (linker flags) needed to use backtrace(3), if any.
# ``Backtrace_FOUND``
# Is set if and only if backtrace(3) support detected.
#
# The following cache variables are also available to set or use:
#
# ``Backtrace_LIBRARY``
# The external library providing backtrace, if any.
# ``Backtrace_INCLUDE_DIR``
# The directory holding the backtrace(3) header.
#
# Typical usage is to generate of header file using configure_file() with the
# contents like the following::
#
# #cmakedefine01 Backtrace_FOUND
# #if Backtrace_FOUND
# # include <${Backtrace_HEADER}>
# #endif
#
# And then reference that generated header file in actual source.
include(CMakePushCheckState)
include(CheckSymbolExists)
include(FindPackageHandleStandardArgs)
# List of variables to be provided to find_package_handle_standard_args()
set(_Backtrace_STD_ARGS Backtrace_INCLUDE_DIR)
if(Backtrace_HEADER)
set(_Backtrace_HEADER_TRY "${Backtrace_HEADER}")
else(Backtrace_HEADER)
set(_Backtrace_HEADER_TRY "execinfo.h")
endif(Backtrace_HEADER)
find_path(Backtrace_INCLUDE_DIR "${_Backtrace_HEADER_TRY}")
set(Backtrace_INCLUDE_DIRS ${Backtrace_INCLUDE_DIR})
if (NOT DEFINED Backtrace_LIBRARY)
# First, check if we already have backtrace(), e.g., in libc
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_INCLUDES ${Backtrace_INCLUDE_DIRS})
set(CMAKE_REQUIRED_QUIET ${Backtrace_FIND_QUIETLY})
check_symbol_exists("backtrace" "${_Backtrace_HEADER_TRY}" _Backtrace_SYM_FOUND)
cmake_pop_check_state()
endif()
if(_Backtrace_SYM_FOUND)
# Avoid repeating the message() call below each time CMake is run.
if(NOT Backtrace_FIND_QUIETLY AND NOT DEFINED Backtrace_LIBRARY)
message(STATUS "backtrace facility detected in default set of libraries")
endif()
set(Backtrace_LIBRARY "" CACHE FILEPATH "Library providing backtrace(3), empty for default set of libraries")
else()
# Check for external library, for non-glibc systems
if(Backtrace_INCLUDE_DIR)
# OpenBSD has libbacktrace renamed to libexecinfo
find_library(Backtrace_LIBRARY "execinfo")
elseif() # respect user wishes
set(_Backtrace_HEADER_TRY "backtrace.h")
find_path(Backtrace_INCLUDE_DIR ${_Backtrace_HEADER_TRY})
find_library(Backtrace_LIBRARY "backtrace")
endif()
# Prepend list with library path as it's more common practice
set(_Backtrace_STD_ARGS Backtrace_LIBRARY ${_Backtrace_STD_ARGS})
endif()
message(STATUS "Backtrace_LIBRARY: ${Backtrace_LIBRARY}")
if(Backtrace_LIBRARY STREQUAL "NOTFOUND")
set(Backtrace_LIBRARY "")
endif()
if(Backtrace_LIBRARY STREQUAL "Backtrace_LIBRARY-NOTFOUND")
set(Backtrace_LIBRARY "")
endif()
set(Backtrace_LIBRARIES ${Backtrace_LIBRARY})
set(Backtrace_HEADER "${_Backtrace_HEADER_TRY}" CACHE STRING "Header providing backtrace(3) facility")
find_package_handle_standard_args(Backtrace FOUND_VAR Backtrace_FOUND REQUIRED_VARS ${_Backtrace_STD_ARGS})
mark_as_advanced(Backtrace_HEADER Backtrace_INCLUDE_DIR Backtrace_LIBRARY)

View File

@@ -1,25 +0,0 @@
# - Try to find Berkeley DB
# Once done this will define
#
# BERKELEY_DB_FOUND - system has Berkeley DB
# BERKELEY_DB_INCLUDE_DIR - the Berkeley DB include directory
# BERKELEY_DB_LIBRARIES - Link these to use Berkeley DB
# BERKELEY_DB_DEFINITIONS - Compiler switches required for using Berkeley DB
# Copyright (c) 2006, Alexander Dymo, <adymo@kdevelop.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
find_path(BERKELEY_DB_INCLUDE_DIR db_cxx.h
/usr/include/db4
/usr/local/include/db4
)
find_library(BERKELEY_DB_LIBRARIES NAMES db_cxx )
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Berkeley "Could not find Berkeley DB >= 4.1" BERKELEY_DB_INCLUDE_DIR BERKELEY_DB_LIBRARIES)
# show the BERKELEY_DB_INCLUDE_DIR and BERKELEY_DB_LIBRARIES variables only in the advanced view
mark_as_advanced(BERKELEY_DB_INCLUDE_DIR BERKELEY_DB_LIBRARIES )

View File

@@ -1,20 +1,21 @@
# Copyright (c) 2014-2019, The Monero Project
# Copyright (c) 2014-2020, The Monero Project
#
# All rights reserved.
#
#
# Redistribution and use in source and binary forms, with or without modification, are
# permitted provided that the following conditions are met:
#
#
# 1. Redistributions of source code must retain the above copyright notice, this list of
# conditions and the following disclaimer.
#
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
# of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
@@ -24,17 +25,32 @@
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# - Try to find readline include dirs and libraries
#
# Automatically finds ccache build accelerator, if it's found in PATH.
#
# Usage of this module as follows:
#
# project(monero)
# include(FindCcache) # Include AFTER the project() macro to be able to reach the CMAKE_CXX_COMPILER variable
#
# Properties modified by this module:
#
# GLOBAL PROPERTY RULE_LAUNCH_COMPILE set to ccache, when ccache found
# GLOBAL PROPERTY RULE_LAUNCH_LINK set to ccache, when ccache found
MESSAGE(STATUS "Looking for libunbound")
FIND_PATH(UNBOUND_INCLUDE_DIR
NAMES unbound.h
PATH_SUFFIXES include/ include/unbound/
PATHS "${PROJECT_SOURCE_DIR}"
${UNBOUND_ROOT}
$ENV{UNBOUND_ROOT}
/usr/local/
/usr/
)
find_library(UNBOUND_LIBRARIES unbound)
find_program(CCACHE_FOUND ccache)
if (CCACHE_FOUND)
set(TEMP_CPP_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test-program.cpp")
file(WRITE "${TEMP_CPP_FILE}" "int main() { return 0; }")
execute_process(COMMAND "${CCACHE_FOUND}" "${CMAKE_CXX_COMPILER}" "${TEMP_CPP_FILE}" RESULT_VARIABLE RET)
if (${RET} EQUAL 0)
message("found usable ccache: ${CCACHE_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_FOUND}")
else()
message("found ccache ${CCACHE_FOUND}, but is UNUSABLE! Return code: ${RET}")
endif()
else()
message("ccache NOT found!")
endif()

View File

@@ -1,60 +0,0 @@
# - try to find HIDAPI library
# from http://www.signal11.us/oss/hidapi/
#
# Cache Variables: (probably not for direct use in your scripts)
# HIDAPI_INCLUDE_DIR
# HIDAPI_LIBRARY
#
# Non-cache variables you might use in your CMakeLists.txt:
# HIDAPI_FOUND
# HIDAPI_INCLUDE_DIRS
# HIDAPI_LIBRARIES
#
# Requires these CMake modules:
# FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
find_library(HIDAPI_LIBRARY
NAMES hidapi hidapi-libusb)
find_path(HIDAPI_INCLUDE_DIR
NAMES hidapi.h
PATH_SUFFIXES
hidapi)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(HIDAPI
DEFAULT_MSG
HIDAPI_LIBRARY
HIDAPI_INCLUDE_DIR)
if(HIDAPI_FOUND)
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARY}")
if((STATIC AND UNIX AND NOT APPLE) OR (DEPENDS AND CMAKE_SYSTEM_NAME STREQUAL "Linux"))
find_library(LIBUSB-1.0_LIBRARY usb-1.0)
find_library(LIBUDEV_LIBRARY udev)
if(LIBUSB-1.0_LIBRARY)
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUSB-1.0_LIBRARY}")
if(LIBUDEV_LIBRARY)
set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARIES};${LIBUDEV_LIBRARY}")
else()
message(WARNING "libudev library not found, binaries may fail to link.")
endif()
else()
message(WARNING "libusb-1.0 library not found, binaries may fail to link.")
endif()
endif()
set(HIDAPI_INCLUDE_DIRS "${HIDAPI_INCLUDE_DIR}")
endif()
mark_as_advanced(HIDAPI_INCLUDE_DIR HIDAPI_LIBRARY)

View File

@@ -1,149 +0,0 @@
# - Find libusb for portable USB support
# This module will find libusb as published by
# http://libusb.sf.net and
# http://libusb-win32.sf.net
#
# It will use PkgConfig if present and supported, else search
# it on its own. If the LibUSB_ROOT_DIR environment variable
# is defined, it will be used as base path.
# The following standard variables get defined:
# LibUSB_FOUND: true if LibUSB was found
# LibUSB_HEADER_FILE: the location of the C header file
# LibUSB_INCLUDE_DIRS: the directory that contains the include file
# LibUSB_LIBRARIES: the library
# source: https://github.com/IntelRealSense/librealsense
include ( CheckLibraryExists )
include ( CheckIncludeFile )
find_package ( PkgConfig )
if ( PKG_CONFIG_FOUND )
pkg_check_modules ( PKGCONFIG_LIBUSB libusb-1.0 )
if ( NOT PKGCONFIG_LIBUSB_FOUND )
pkg_check_modules ( PKGCONFIG_LIBUSB libusb )
endif ( NOT PKGCONFIG_LIBUSB_FOUND )
endif ( PKG_CONFIG_FOUND )
if ( PKGCONFIG_LIBUSB_FOUND )
set ( LibUSB_INCLUDE_DIRS ${PKGCONFIG_LIBUSB_INCLUDE_DIRS} )
foreach ( i ${PKGCONFIG_LIBUSB_LIBRARIES} )
string ( REGEX MATCH "[^-]*" ibase "${i}" )
find_library ( ${ibase}_LIBRARY
NAMES ${i}
PATHS ${PKGCONFIG_LIBUSB_LIBRARY_DIRS}
)
if ( ${ibase}_LIBRARY )
list ( APPEND LibUSB_LIBRARIES ${${ibase}_LIBRARY} )
endif ( ${ibase}_LIBRARY )
mark_as_advanced ( ${ibase}_LIBRARY )
endforeach ( i )
else ( PKGCONFIG_LIBUSB_FOUND )
find_file ( LibUSB_HEADER_FILE
NAMES
libusb.h usb.h
PATHS
$ENV{ProgramFiles}/LibUSB-Win32
$ENV{LibUSB_ROOT_DIR}
PATH_SUFFIXES
include
libusb-1.0
include/libusb-1.0
)
mark_as_advanced ( LibUSB_HEADER_FILE )
get_filename_component ( LibUSB_INCLUDE_DIRS "${LibUSB_HEADER_FILE}" PATH )
if ( ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
# LibUSB-Win32 binary distribution contains several libs.
# Use the lib that got compiled with the same compiler.
if ( MSVC )
if ( WIN32 )
set ( LibUSB_LIBRARY_PATH_SUFFIX lib/msvc )
else ( WIN32 )
set ( LibUSB_LIBRARY_PATH_SUFFIX lib/msvc_x64 )
endif ( WIN32 )
elseif ( BORLAND )
set ( LibUSB_LIBRARY_PATH_SUFFIX lib/bcc )
elseif ( CMAKE_COMPILER_IS_GNUCC )
set ( LibUSB_LIBRARY_PATH_SUFFIX lib/gcc )
endif ( MSVC )
endif ( ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
find_library ( usb_LIBRARY
NAMES
usb-1.0 libusb usb
PATHS
$ENV{ProgramFiles}/LibUSB-Win32
$ENV{LibUSB_ROOT_DIR}
PATH_SUFFIXES
${LibUSB_LIBRARY_PATH_SUFFIX}
)
mark_as_advanced ( usb_LIBRARY )
if ( usb_LIBRARY )
set ( LibUSB_LIBRARIES ${usb_LIBRARY} )
endif ( usb_LIBRARY )
endif ( PKGCONFIG_LIBUSB_FOUND )
if ( LibUSB_INCLUDE_DIRS AND LibUSB_LIBRARIES )
set ( LibUSB_FOUND true )
endif ( LibUSB_INCLUDE_DIRS AND LibUSB_LIBRARIES )
if ( LibUSB_FOUND )
set ( CMAKE_REQUIRED_INCLUDES "${LibUSB_INCLUDE_DIRS}" )
check_include_file ( "${LibUSB_HEADER_FILE}" LibUSB_FOUND )
endif ( LibUSB_FOUND )
if ( LibUSB_FOUND )
check_library_exists ( "${LibUSB_LIBRARIES}" usb_open "" LibUSB_FOUND )
check_library_exists ( "${LibUSB_LIBRARIES}" libusb_get_device_list "" LibUSB_VERSION_1.0 )
check_library_exists ( "${LibUSB_LIBRARIES}" libusb_get_port_numbers "" LibUSB_VERSION_1.0.16 )
if((STATIC AND UNIX AND NOT APPLE) OR (DEPENDS AND CMAKE_SYSTEM_NAME STREQUAL "Linux"))
find_library(LIBUDEV_LIBRARY udev)
if(LIBUDEV_LIBRARY)
set(LibUSB_LIBRARIES "${LibUSB_LIBRARIES};${LIBUDEV_LIBRARY}")
else()
message(WARNING "libudev library not found, binaries may fail to link.")
endif()
endif()
# Library 1.0.16+ compilation test.
# The check_library_exists does not work well on Apple with shared libs.
if (APPLE OR LibUSB_VERSION_1.0.16 OR STATIC)
if (APPLE)
if(DEPENDS)
list(APPEND TEST_COMPILE_EXTRA_LIBRARIES "-framework Foundation -framework IOKit")
else()
find_library(COREFOUNDATION CoreFoundation)
find_library(IOKIT IOKit)
list(APPEND TEST_COMPILE_EXTRA_LIBRARIES ${IOKIT})
list(APPEND TEST_COMPILE_EXTRA_LIBRARIES ${COREFOUNDATION})
endif()
endif()
if (WIN32)
list(APPEND TEST_COMPILE_EXTRA_LIBRARIES setupapi)
endif()
list(APPEND TEST_COMPILE_EXTRA_LIBRARIES ${LibUSB_LIBRARIES})
try_compile(LibUSB_COMPILE_TEST_PASSED
${CMAKE_BINARY_DIR}
"${CMAKE_SOURCE_DIR}/cmake/test-libusb-version.c"
CMAKE_FLAGS
"-DINCLUDE_DIRECTORIES=${LibUSB_INCLUDE_DIRS}"
"-DLINK_DIRECTORIES=${LibUSB_LIBRARIES}"
LINK_LIBRARIES ${TEST_COMPILE_EXTRA_LIBRARIES}
OUTPUT_VARIABLE OUTPUT)
unset(TEST_COMPILE_EXTRA_LIBRARIES)
message(STATUS "LibUSB Compilation test: ${LibUSB_COMPILE_TEST_PASSED}")
endif()
endif ( LibUSB_FOUND )
if ( NOT LibUSB_FOUND )
if ( NOT LibUSB_FIND_QUIETLY )
message ( STATUS "LibUSB not found, try setting LibUSB_ROOT_DIR environment variable." )
endif ( NOT LibUSB_FIND_QUIETLY )
if ( LibUSB_FIND_REQUIRED )
message ( FATAL_ERROR "" )
endif ( LibUSB_FIND_REQUIRED )
endif ( NOT LibUSB_FOUND )

View File

@@ -1,41 +0,0 @@
# - Try to find libunwind
# Once done this will define
#
# LIBUNWIND_FOUND - system has libunwind
# LIBUNWIND_INCLUDE_DIR - the libunwind include directory
# LIBUNWIND_LIBRARIES - Link these to use libunwind
# LIBUNWIND_DEFINITIONS - Compiler switches required for using libunwind
# Copyright (c) 2006, Alexander Dymo, <adymo@kdevelop.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
find_path(LIBUNWIND_INCLUDE_DIR libunwind.h
/usr/include
/usr/local/include
)
find_library(LIBUNWIND_LIBRARIES NAMES unwind )
if(NOT LIBUNWIND_LIBRARIES STREQUAL "LIBUNWIND_LIBRARIES-NOTFOUND")
if (CMAKE_COMPILER_IS_GNUCC)
set(LIBUNWIND_LIBRARIES "gcc_eh;${LIBUNWIND_LIBRARIES}")
endif()
endif()
# some versions of libunwind need liblzma, and we don't use pkg-config
# so we just look whether liblzma is installed, and add it if it is.
# It might not be actually needed, but doesn't hurt if it is not.
# We don't need any headers, just the lib, as it's privately needed.
message(STATUS "looking for liblzma")
find_library(LIBLZMA_LIBRARIES lzma )
if(NOT LIBLZMA_LIBRARIES STREQUAL "LIBLZMA_LIBRARIES-NOTFOUND")
message(STATUS "liblzma found")
set(LIBUNWIND_LIBRARIES "${LIBUNWIND_LIBRARIES};${LIBLZMA_LIBRARIES}")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libunwind "Could not find libunwind" LIBUNWIND_INCLUDE_DIR LIBUNWIND_LIBRARIES)
# show the LIBUNWIND_INCLUDE_DIR and LIBUNWIND_LIBRARIES variables only in the advanced view
mark_as_advanced(LIBUNWIND_INCLUDE_DIR LIBUNWIND_LIBRARIES )

View File

@@ -1,59 +0,0 @@
# --------------------------------- FindMiniupnpc Start ---------------------------------
# Locate miniupnp library
# This module defines
# MINIUPNP_FOUND, if false, do not try to link to miniupnp
# MINIUPNP_LIBRARY, the miniupnp variant
# MINIUPNP_INCLUDE_DIR, where to find miniupnpc.h and family)
# MINIUPNPC_VERSION_1_7_OR_HIGHER, set if we detect the version of miniupnpc is 1.7 or higher
#
# Note that the expected include convention is
# #include "miniupnpc.h"
# and not
# #include <miniupnpc/miniupnpc.h>
# This is because, the miniupnpc location is not standardized and may exist
# in locations other than miniupnpc/
if (MINIUPNP_INCLUDE_DIR AND MINIUPNP_LIBRARY)
# Already in cache, be silent
set(MINIUPNP_FIND_QUIETLY TRUE)
endif ()
find_path(MINIUPNP_INCLUDE_DIR miniupnpc.h
HINTS $ENV{MINIUPNP_INCLUDE_DIR}
PATH_SUFFIXES miniupnpc
)
find_library(MINIUPNP_LIBRARY miniupnpc
HINTS $ENV{MINIUPNP_LIBRARY}
)
find_library(MINIUPNP_STATIC_LIBRARY libminiupnpc.a
HINTS $ENV{MINIUPNP_STATIC_LIBRARY}
)
set(MINIUPNP_INCLUDE_DIRS ${MINIUPNP_INCLUDE_DIR})
set(MINIUPNP_LIBRARIES ${MINIUPNP_LIBRARY})
set(MINIUPNP_STATIC_LIBRARIES ${MINIUPNP_STATIC_LIBRARY})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
MiniUPnPc DEFAULT_MSG
MINIUPNP_INCLUDE_DIR
MINIUPNP_LIBRARY
)
IF(MINIUPNPC_FOUND)
file(STRINGS "${MINIUPNP_INCLUDE_DIR}/miniupnpc.h" MINIUPNPC_API_VERSION_STR REGEX "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+[0-9]+")
if(MINIUPNPC_API_VERSION_STR MATCHES "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+([0-9]+)")
set(MINIUPNPC_API_VERSION "${CMAKE_MATCH_1}")
if (${MINIUPNPC_API_VERSION} GREATER "10" OR ${MINIUPNPC_API_VERSION} EQUAL "10")
message(STATUS "Found miniupnpc API version " ${MINIUPNPC_API_VERSION})
set(MINIUPNP_FOUND true)
set(MINIUPNPC_VERSION_1_7_OR_HIGHER true)
endif()
endif()
ENDIF()
mark_as_advanced(MINIUPNP_INCLUDE_DIR MINIUPNP_LIBRARY MINIUPNP_STATIC_LIBRARY)
# --------------------------------- FindMiniupnpc End ---------------------------------

View File

@@ -1,91 +0,0 @@
# - Try to find readline include dirs and libraries
#
# Usage of this module as follows:
#
# find_package(Readline)
#
# Variables used by this module, they can change the default behaviour and need
# to be set before calling find_package:
#
# Readline_ROOT_DIR Set this variable to the root installation of
# readline if the module has problems finding the
# proper installation path.
#
# Variables defined by this module:
#
# READLINE_FOUND System has readline, include and lib dirs found
# GNU_READLINE_FOUND Version of readline found is GNU readline, not libedit!
# LIBEDIT_FOUND Version of readline found is libedit, not GNU readline!
# Readline_INCLUDE_DIR The readline include directories.
# Readline_LIBRARY The readline library.
# GNU_READLINE_LIBRARY The GNU readline library or empty string.
# LIBEDIT_LIBRARY The libedit library or empty string.
find_path(Readline_ROOT_DIR
NAMES include/readline/readline.h
PATHS /usr/local/opt/readline/ /opt/local/ /usr/local/ /usr/
NO_DEFAULT_PATH
)
find_path(Readline_INCLUDE_DIR
NAMES readline/readline.h
PATHS ${Readline_ROOT_DIR}/include
NO_DEFAULT_PATH
)
find_library(Readline_LIBRARY
NAMES readline
PATHS ${Readline_ROOT_DIR}/lib
NO_DEFAULT_PATH
)
find_library(Termcap_LIBRARY
NAMES tinfo termcap ncursesw ncurses cursesw curses
)
if(Readline_INCLUDE_DIR AND Readline_LIBRARY)
set(READLINE_FOUND TRUE)
else(Readline_INCLUDE_DIR AND Readline_LIBRARY)
FIND_LIBRARY(Readline_LIBRARY NAMES readline PATHS Readline_ROOT_DIR)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY )
MARK_AS_ADVANCED(Readline_INCLUDE_DIR Readline_LIBRARY)
endif(Readline_INCLUDE_DIR AND Readline_LIBRARY)
mark_as_advanced(
Readline_ROOT_DIR
Readline_INCLUDE_DIR
Readline_LIBRARY
)
set(CMAKE_REQUIRED_INCLUDES ${Readline_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${Readline_LIBRARY})
include(CheckFunctionExists)
check_function_exists(rl_copy_text HAVE_COPY_TEXT)
check_function_exists(rl_filename_completion_function HAVE_COMPLETION_FUNCTION)
if(NOT HAVE_COMPLETION_FUNCTION)
if (Readline_LIBRARY)
set(CMAKE_REQUIRED_LIBRARIES ${Readline_LIBRARY} ${Termcap_LIBRARY})
endif(Readline_LIBRARY)
check_function_exists(rl_copy_text HAVE_COPY_TEXT_TC)
check_function_exists(rl_filename_completion_function HAVE_COMPLETION_FUNCTION_TC)
set(HAVE_COMPLETION_FUNCTION ${HAVE_COMPLETION_FUNCTION_TC})
set(HAVE_COPY_TEXT ${HAVE_COPY_TEXT_TC})
if(HAVE_COMPLETION_FUNCTION)
set(Readline_LIBRARY ${Readline_LIBRARY} ${Termcap_LIBRARY})
endif(HAVE_COMPLETION_FUNCTION)
endif(NOT HAVE_COMPLETION_FUNCTION)
set(LIBEDIT_LIBRARY "")
set(GNU_READLINE_LIBRARY "")
if(HAVE_COMPLETION_FUNCTION AND HAVE_COPY_TEXT)
set(GNU_READLINE_FOUND TRUE)
set(GNU_READLINE_LIBRARY ${Readline_LIBRARY})
elseif(READLINE_FOUND AND NOT HAVE_COPY_TEXT)
set(LIBEDIT_FOUND TRUE)
set(LIBEDIT_LIBRARY ${Readline_LIBRARY})
endif(HAVE_COMPLETION_FUNCTION AND HAVE_COPY_TEXT)

View File

@@ -1,22 +0,0 @@
# from http://code.google.com/p/low-cost-vision-2012/source/browse/CMakeModules/FindZBar0.cmake?name=2-helium-1&r=d61f248bd5565b3c086bf4769a04bfd98f7079df
# - Try to find ZBar
# This will define
#
# ZBAR_FOUND -
# ZBAR_LIBRARY_DIR -
# ZBAR_INCLUDE_DIR -
# ZBAR_LIBRARIES -
#
find_package(PkgConfig)
pkg_check_modules(PC_ZBAR QUIET zbar)
set(ZBAR_DEFINITIONS ${PC_ZBAR_CFLAGS_OTHER})
find_library(ZBAR_LIBRARIES NAMES zbar
HINTS ${PC_ZBAR_LIBDIR} ${PC_ZBAR_LIBRARY_DIRS} )
find_path(ZBAR_INCLUDE_DIR Decoder.h
HINTS ${PC_ZBAR_INCLUDEDIR} ${PC_ZBAR_INCLUDE_DIRS}
PATH_SUFFIXES zbar )
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ZBAR DEFAULT_MSG ZBAR_LIBRARIES ZBAR_INCLUDE_DIR)
message(STATUS "Found zbar libraries ${ZBAR_LIBRARIES}")

View File

@@ -1,68 +0,0 @@
# Copyright (c) 2014-2019, The Monero Project
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are
# permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of
# conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
# of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
# Check what commit we're on
execute_process(COMMAND "${GIT}" rev-parse --short=9 HEAD RESULT_VARIABLE RET OUTPUT_VARIABLE COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
if(RET)
# Something went wrong, set the version tag to -unknown
message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
set(VERSIONTAG "unknown")
set(VERSION_IS_RELEASE "false")
configure_file("monero/src/version.cpp.in" "${TO}")
else()
string(SUBSTRING ${COMMIT} 0 9 COMMIT)
message(STATUS "You are currently on commit ${COMMIT}")
# Get all the tags
execute_process(COMMAND "${GIT}" rev-list --tags --max-count=1 --abbrev-commit RESULT_VARIABLE RET OUTPUT_VARIABLE TAGGEDCOMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT TAGGEDCOMMIT)
message(WARNING "Cannot determine most recent tag. Make sure that you are building either from a Git working tree or from a source archive.")
set(VERSIONTAG "${COMMIT}")
set(VERSION_IS_RELEASE "false")
else()
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
# Check if we're building that tagged commit or a different one
if(COMMIT STREQUAL TAGGEDCOMMIT)
message(STATUS "You are building a tagged release")
set(VERSIONTAG "release")
set(VERSION_IS_RELEASE "true")
else()
message(STATUS "You are ahead of or behind a tagged release")
set(VERSIONTAG "${COMMIT}")
set(VERSION_IS_RELEASE "false")
endif()
endif()
configure_file("monero/src/version.cpp.in" "${TO}")
endif()

View File

@@ -28,37 +28,40 @@
#
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
# Check what commit we're on
execute_process(COMMAND "${GIT}" rev-parse --short=9 HEAD RESULT_VARIABLE RET OUTPUT_VARIABLE COMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
function (git_get_version_tag git directory result_var)
execute_process(COMMAND "${git}" rev-parse --short HEAD
WORKING_DIRECTORY ${directory}
OUTPUT_VARIABLE COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT COMMIT)
message(WARNING "${directory}: cannot determine current commit. Make sure that you are building from a Git working tree")
set(${result_var} "unknown" PARENT_SCOPE)
return()
endif()
if(RET)
# Something went wrong, set the version tag to -unknown
message(WARNING "Cannot determine current commit. Make sure that you are building either from a Git working tree or from a source archive.")
set(VERSIONTAG "unknown")
configure_file("src/version.js.in" "${TO}")
else()
string(SUBSTRING ${COMMIT} 0 9 COMMIT)
message(STATUS "You are currently on commit ${COMMIT}")
# Get all the tags
execute_process(COMMAND "${GIT}" rev-list --tags --max-count=1 --abbrev-commit RESULT_VARIABLE RET OUTPUT_VARIABLE TAGGEDCOMMIT OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT TAGGEDCOMMIT)
message(WARNING "Cannot determine most recent tag. Make sure that you are building either from a Git working tree or from a source archive.")
set(VERSIONTAG "${COMMIT}")
else()
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
# Check if we're building that tagged commit or a different one
if(COMMIT STREQUAL TAGGEDCOMMIT)
message(STATUS "You are building a tagged release")
set(VERSIONTAG "release")
else()
message(STATUS "You are ahead of or behind a tagged release")
set(VERSIONTAG "${COMMIT}")
endif()
endif()
execute_process(COMMAND "${git}" describe --tags --exact-match
WORKING_DIRECTORY ${directory}
OUTPUT_VARIABLE TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(TAG)
message(STATUS "${directory}: building tagged release ${TAG}-${COMMIT}")
set(${result_var} "${TAG}-${COMMIT}" PARENT_SCOPE)
return()
endif()
configure_file("src/version.js.in" "${TO}")
endif()
execute_process(COMMAND "${git}" describe --tags --long
WORKING_DIRECTORY ${directory}
OUTPUT_VARIABLE MOST_RECENT_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(MOST_RECENT_TAG)
message(STATUS "${directory}: ahead of or behind a tagged release, building ${MOST_RECENT_TAG}")
set(${result_var} "${MOST_RECENT_TAG}" PARENT_SCOPE)
return()
endif()
message(STATUS "${directory}: building ${COMMIT} commit")
set(${result_var} "${COMMIT}" PARENT_SCOPE)
endfunction()

View File

@@ -1,81 +0,0 @@
# Copyright (c) 2014-2017, The Monero Project
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are
# permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of
# conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
# of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
function (write_static_version_header hash)
set(VERSIONTAG "${hash}")
configure_file("${CMAKE_SOURCE_DIR}/monero/src/version.cpp.in" "${CMAKE_BINARY_DIR}/version.cpp")
endfunction ()
find_package(Git QUIET)
if ("$Format:$" STREQUAL "")
# We're in a tarball; use hard-coded variables.
write_static_version_header("release")
elseif (GIT_FOUND OR Git_FOUND)
add_custom_command(
OUTPUT "${CMAKE_BINARY_DIR}/version.cpp"
COMMAND "${CMAKE_COMMAND}"
"-D" "GIT=${GIT_EXECUTABLE}"
"-D" "TO=${CMAKE_BINARY_DIR}/version.cpp"
"-P" "cmake/GenVersion.cmake"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
#message(STATUS "Found Git: ${GIT_EXECUTABLE}")
# COMMAND "${CMAKE_COMMAND}"
# "-D" "GIT=${GIT_EXECUTABLE}"
# "-D" "TO=${CMAKE_BINARY_DIR}/monero/version.cpp"
# "-P" "cmake/GenVersion.cmake"
# BYPRODUCTS "${CMAKE_BINARY_DIR}/monero/version.cpp"
# WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
else()
message(STATUS "WARNING: Git was not found!")
write_static_version_header("unknown")
endif ()
add_custom_target(genversion ALL
DEPENDS "${CMAKE_BINARY_DIR}/version.cpp")
#find_package(Git QUIET)
#if ("$Format:$" STREQUAL "")
# # We're in a tarball; use hard-coded variables.
# write_static_version_header("release")
#elseif (GIT_FOUND OR Git_FOUND)
# message(STATUS "Found Git: ${GIT_EXECUTABLE}")
# add_custom_command(
# OUTPUT "${CMAKE_BINARY_DIR}/version.cpp"
# COMMAND "${CMAKE_COMMAND}"
# "-D" "GIT=${GIT_EXECUTABLE}"
# "-D" "TO=${CMAKE_BINARY_DIR}/version.cpp"
# "-P" "cmake/GenVersion.cmake"
# WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
#else()
# message(STATUS "WARNING: Git was not found!")
# write_static_version_header("unknown")
#endif ()
#add_custom_target(genversion ALL
# DEPENDS "${CMAKE_BINARY_DIR}/version.cpp")

View File

@@ -26,9 +26,8 @@
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
function (write_static_version_header hash)
set(VERSIONTAG "${hash}")
configure_file("${CMAKE_SOURCE_DIR}/version.js.in" "${CMAKE_SOURCE_DIR}/version.js")
function (write_static_version_header VERSION_TAG_GUI)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.js.in" "${CMAKE_CURRENT_SOURCE_DIR}/version.js")
endfunction ()
find_package(Git QUIET)
@@ -37,16 +36,14 @@ if ("$Format:$" STREQUAL "")
write_static_version_header("release")
elseif (GIT_FOUND OR Git_FOUND)
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
add_custom_command(
OUTPUT "${CMAKE_SOURCE_DIR}/version.js"
COMMAND "${CMAKE_COMMAND}"
"-D" "GIT=${GIT_EXECUTABLE}"
"-D" "TO=${CMAKE_SOURCE_DIR}/version.js"
"-P" "cmake/GenVersionGui.cmake"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
include(GitGetVersionTag)
git_get_version_tag(${GIT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} VERSION_TAG_GUI)
STRING(REGEX REPLACE "^v([0-9])" "\\1" VERSION_TAG_GUI ${VERSION_TAG_GUI})
write_static_version_header(${VERSION_TAG_GUI})
else()
message(STATUS "WARNING: Git was not found!")
write_static_version_header("unknown")
endif ()
add_custom_target(genversiongui ALL
DEPENDS "${CMAKE_SOURCE_DIR}/version.js")
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/version.js")

View File

@@ -1,7 +0,0 @@
syntax = "proto2";
import "google/protobuf/descriptor.proto";
message Success {
optional string message = 1;
}

View File

@@ -0,0 +1,64 @@
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
RowLayout {
id: advancedOptionsItem
property alias title: title.text
property alias tooltip: title.tooltip
property alias button1: button1
property alias button2: button2
property alias button3: button3
RowLayout {
id: titlecolumn
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
Layout.preferredWidth: 195
Layout.maximumWidth: 195
Layout.leftMargin: 10
MoneroComponents.Label {
id: title
fontSize: 14
}
Rectangle {
id: separator
Layout.fillWidth: true
height: 10
color: "transparent"
}
}
ColumnLayout {
Layout.fillWidth: false
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
spacing: 4
RowLayout {
Layout.fillWidth: false
spacing: 12
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
StandardButton {
id: button1
small: true
visible: button1.text
}
StandardButton {
id: button2
small: true
visible: button2.text
}
StandardButton {
id: button3
small: true
visible: button3.text
}
}
}
}

View File

@@ -49,8 +49,14 @@ Item {
property alias fontColor: label.color
property bool iconOnTheLeft: true
signal clicked()
height: 25
width: checkBoxLayout.width
opacity: enabled ? 1 : 0.7
Keys.onEnterPressed: toggle()
Keys.onReturnPressed: Keys.onEnterPressed(event)
Keys.onSpacePressed: Keys.onEnterPressed(event)
function toggle(){
if (checkBox.toggleOnClick) {
@@ -74,9 +80,9 @@ Item {
visible: checkBox.border
anchors.fill: parent
radius: 3
color: "transparent"
color: checkBox.enabled ? "transparent" : MoneroComponents.Style.inputBoxBackgroundDisabled
border.color:
if(checkBox.checked){
if (checkBox.activeFocus) {
return MoneroComponents.Style.inputBorderColorActive;
} else {
return MoneroComponents.Style.inputBorderColorInActive;
@@ -108,7 +114,8 @@ Item {
font.pixelSize: checkBox.fontSize
color: MoneroComponents.Style.defaultFontColor
textFormat: Text.RichText
wrapMode: Text.Wrap
wrapMode: Text.NoWrap
visible: text != ""
}
}

View File

@@ -52,6 +52,7 @@ Window {
// TODO: implement without hardcoding sizes
width: 480
height: 200
color: MoneroComponents.Style.middlePanelBackgroundColor
// Make window draggable
MouseArea {
@@ -96,7 +97,7 @@ Window {
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
themeTransition: false
color: "black"
color: MoneroComponents.Style.defaultFontColor
}
}

View File

@@ -117,7 +117,7 @@ Item {
Connections {
target: datePicker
onCurrentDateChanged: {
function onCurrentDateChanged() {
dateInput.setDate(datePicker.currentDate)
}
}

View File

@@ -0,0 +1,104 @@
// Copyright (c) 2014-2020, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import "." as MoneroComponents
Item {
id: root
property var onAcceptedCallback
property var onWalletEntryCallback
property var onRejectedCallback
function open(canEnterOnDevice_) {
var canEnterOnDevice = canEnterOnDevice_ !== null ? canEnterOnDevice_ : canEnterOnDevice
root.visible = true;
if (canEnterOnDevice) {
entryChooserDialog.okText = qsTr("Hardware wallet")
entryChooserDialog.cancelText = qsTr("Computer")
entryChooserDialog.open()
} else {
openPassphraseDialog()
}
}
function openPassphraseDialog() {
root.visible = true
passphraseDialog.openPassphraseDialog()
}
function close() {
root.visible = false;
if (entryChooserDialog.visible)
entryChooserDialog.close()
if (passphraseDialog.visible)
passphraseDialog.close()
}
StandardDialog {
id: entryChooserDialog
title: qsTr("Hardware wallet passphrase") + translationManager.emptyString
text: qsTr("Please select where you want to enter passphrase.\nIt is recommended to enter passphrase on the hardware wallet for better security.") + translationManager.emptyString
onAccepted: {
if (onWalletEntryCallback){
onWalletEntryCallback()
}
}
onRejected: {
openPassphraseDialog()
}
onCloseCallback: {
root.close()
}
}
PasswordDialog {
id: passphraseDialog
anchors.fill: parent
passphraseDialogMode: true
onAcceptedPassphrase: {
if (onAcceptedCallback)
onAcceptedCallback(passphraseDialog.password);
}
onRejectedPassphrase: {
if (onRejectedCallback)
onRejectedCallback();
}
onCloseCallback: {
root.close()
}
}
}

66
components/Dialog.qml Normal file
View File

@@ -0,0 +1,66 @@
// Copyright (c) 2021, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.1
import "." as MoneroComponents
Popup {
id: dialog
default property alias content: mainLayout.children
property alias title: header.text
background: Rectangle {
border.color: MoneroComponents.Style.blackTheme ? Qt.rgba(255, 255, 255, 0.25) : Qt.rgba(0, 0, 0, 0.25)
border.width: 1
color: MoneroComponents.Style.blackTheme ? "black" : "white"
radius: 10
}
closePolicy: Popup.CloseOnEscape
focus: true
padding: 20
x: (appWindow.width - width) / 2
y: (appWindow.height - height) / 2
ColumnLayout {
id: mainLayout
spacing: dialog.padding
Text {
id: header
color: MoneroComponents.Style.defaultFontColor
font.bold: true
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 18
visible: text != ""
}
}
}

View File

@@ -30,29 +30,26 @@ import QtQuick 2.9
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import FontAwesome 1.0
import "." as MoneroComponents
import "./effects/" as MoneroEffects
Item {
id: inlineButton
height: parent.height
anchors.top: parent.top
anchors.bottom: parent.bottom
property bool small: false
property string shadowPressedColor: "#B32D00"
property string shadowReleasedColor: "#FF4304"
property string pressedColor: "#FF4304"
property string releasedColor: "#FF6C3C"
property string icon: ""
property string textColor: MoneroComponents.Style.inlineButtonTextColor
property int fontSize: small ? 14 : 16
property int rectHeight: small ? 24 : 24
property int rectHMargin: small ? 16 : 22
property alias text: inlineText.text
property alias fontPixelSize: inlineText.font.pixelSize
property alias fontFamily: inlineText.font.family
property alias fontStyleName: inlineText.font.styleName
property bool isFontAwesomeIcon: fontFamily == FontAwesome.fontFamily || fontFamily == FontAwesome.fontFamilySolid
property alias buttonColor: rect.color
height: isFontAwesomeIcon ? 30 : 24
width: isFontAwesomeIcon ? height : inlineText.width + 16
signal clicked()
function doClick() {
@@ -63,20 +60,16 @@ Item {
Rectangle{
id: rect
anchors.fill: parent
color: MoneroComponents.Style.buttonInlineBackgroundColor
height: 24
width: inlineText.text ? (inlineText.width + 16) : inlineButton.icon ? (inlineImage.width + 16) : rect.height
radius: 4
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 4
MoneroComponents.TextPlain {
id: inlineText
font.family: MoneroComponents.Style.fontBold.name
font.bold: true
font.pixelSize: inlineButton.fontSize
font.pixelSize: inlineButton.isFontAwesomeIcon ? 22 : inlineButton.small ? 14 : 16
color: inlineButton.textColor
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
@@ -89,13 +82,6 @@ Item {
}
}
Image {
id: inlineImage
visible: inlineButton.icon !== ""
anchors.centerIn: parent
source: inlineButton.icon
}
MouseArea {
id: buttonArea
cursorShape: rect.enabled ? Qt.PointingHandCursor : Qt.ArrowCursor

View File

@@ -34,6 +34,7 @@ import "../components" as MoneroComponents
Item {
id: item
property alias text: label.text
property alias tooltip: label.tooltip
property alias color: label.color
property int textFormat: Text.PlainText
property string tipText: ""

View File

@@ -0,0 +1,67 @@
// Copyright (c) 2020, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Layouts 1.3
import FontAwesome 1.0
import "../components" as MoneroComponents
Item {
implicitHeight: layout.height
implicitWidth: layout.width
RowLayout {
id: layout
opacity: mouseArea.containsMouse ? 1 : 0.85
spacing: 10
MoneroComponents.Label {
Layout.bottomMargin: 5
fontColor: MoneroComponents.Style.defaultFontColor
fontFamily: FontAwesome.fontFamilySolid
fontSize: 26
styleName: "Solid"
text: FontAwesome.language
}
MoneroComponents.TextPlain {
font.pixelSize: 14
text: persistentSettings.language
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: appWindow.toggleLanguageView()
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2019, The Monero Project
// Copyright (c) 2014-2020, The Monero Project
//
// All rights reserved.
//
@@ -37,23 +37,12 @@ import QtQuick.Controls 2.0
Drawer {
id: sideBar
// @TODO: Qt 5.10 introduces `opened` built-in for Drawer
property bool isOpened: false
onClosed: {
isOpened = false;
}
onOpened: {
isOpened = true;
}
width: 240
height: parent.height - (persistentSettings.customDecorations ? 50 : 0)
y: titleBar.height
background: Rectangle {
color: "#0d0d0d"
color: MoneroComponents.Style.blackTheme ? "#0d0d0d" : "white"
width: parent.width
}
@@ -79,9 +68,24 @@ Drawer {
width: sideBar.width
height: 32
Rectangle {
id: flagRect
height: 24
width: 24
anchors.left: parent.left
anchors.leftMargin: 4
anchors.verticalCenter: parent.verticalCenter
color: "transparent"
Image {
anchors.fill: parent
source: flag
}
}
MoneroComponents.TextPlain {
anchors.left: parent.left
anchors.leftMargin: 16
anchors.leftMargin: 30
font.bold: true
font.pixelSize: 14
color: MoneroComponents.Style.defaultFontColor
@@ -116,10 +120,12 @@ Drawer {
translationManager.setLanguage(locale_spl[0]);
// set wizard language settings
wizard.language_locale = locale;
wizard.language_wallet = wallet_language;
wizard.language_language = display_name + " (" + locale_spl[1] + ") ";
sideBar.close()
persistentSettings.locale = locale;
persistentSettings.language = display_name;
persistentSettings.language_wallet = wallet_language;
appWindow.showStatusMessage(qsTr("Language changed."), 3);
appWindow.toggleLanguageView();
}
hoverEnabled: true
onEntered: {
@@ -134,15 +140,8 @@ Drawer {
}
}
ScrollIndicator.vertical: ScrollIndicator {
// @TODO: QT 5.9 introduces `policy: ScrollBar.AlwaysOn`
active: true
contentItem.opacity: 0.7
onActiveChanged: {
if (!active) {
active = true;
}
}
ScrollBar.vertical: ScrollBar {
onActiveChanged: if (!active && !isMac) active = true
}
}
}

View File

@@ -26,16 +26,25 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import FontAwesome 1.0
import QtQuick 2.9
import QtGraphicalEffects 1.0
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
Item {
id: item
default property alias content: inlineButtons.children
property alias input: input
property alias text: input.text
property bool password: false
property bool passwordHidden: true
property var passwordLinked: null
property alias placeholderText: placeholderLabel.text
property bool placeholderCenter: false
property string placeholderFontFamily: MoneroComponents.Style.fontRegular.name
@@ -43,14 +52,20 @@ Item {
property int placeholderFontSize: 18
property string placeholderColor: MoneroComponents.Style.defaultFontColor
property real placeholderOpacity: 0.35
property real placeholderLeftMargin: {
if (placeholderCenter) {
return undefined;
} else if (inlineIcon.visible) {
return inlineIcon.width + inlineIcon.anchors.leftMargin + inputPadding;
} else {
return inputPadding;
}
}
property alias acceptableInput: input.acceptableInput
property alias validator: input.validator
property alias readOnly : input.readOnly
property alias cursorPosition: input.cursorPosition
property alias echoMode: input.echoMode
property alias inlineButton: inlineButtonId
property alias inlineButtonText: inlineButtonId.text
property alias inlineIcon: inlineIcon.visible
property bool copyButton: false
property alias copyButtonText: copyButtonId.text
@@ -67,6 +82,7 @@ Item {
}
}
property string fontFamily: MoneroComponents.Style.fontRegular.name
property int fontSize: 18
property bool fontBold: false
property alias fontColor: input.color
@@ -82,14 +98,16 @@ Item {
property alias labelHorizontalAlignment: inputLabel.horizontalAlignment
property bool showingHeader: inputLabel.text !== "" || copyButton
property int inputHeight: 42
property int inputPadding: 10
signal labelLinkActivated(); // input label, rich text <a> signal
signal editingFinished();
signal accepted();
signal textUpdated();
height: showingHeader ? (inputLabel.height + inputItem.height + 2) : 42
height: showingHeader ? (inputLabel.height + inputItem.height + 2) : inputHeight
onActiveFocusChanged: activeFocus && input.forceActiveFocus()
onTextUpdated: {
// check to remove placeholder text when there is content
if(item.isEmpty()){
@@ -109,6 +127,31 @@ Item {
}
}
function isPasswordHidden() {
if (password) {
return passwordHidden;
}
if (passwordLinked) {
return passwordLinked.passwordHidden;
}
return false;
}
function reset() {
text = "";
if (!passwordLinked) {
passwordHidden = true;
}
}
function passwordToggle() {
if (passwordLinked) {
passwordLinked.passwordHidden = !passwordLinked.passwordHidden;
} else {
passwordHidden = !passwordHidden;
}
}
MoneroComponents.TextPlain {
id: inputLabel
anchors.top: parent.top
@@ -145,7 +188,7 @@ Item {
id: inputItem
height: inputHeight
anchors.top: showingHeader ? inputLabel.bottom : parent.top
anchors.topMargin: showingHeader ? 12 : 2
anchors.topMargin: showingHeader ? 12 : 0
width: parent.width
clip: true
@@ -155,13 +198,7 @@ Item {
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: placeholderCenter ? parent.horizontalCenter : undefined
anchors.left: placeholderCenter ? undefined : parent.left
anchors.leftMargin: {
if(placeholderCenter){
return undefined;
}
else if(inlineIcon.visible){ return 50; }
else { return 10; }
}
anchors.leftMargin: placeholderLeftMargin
opacity: item.placeholderOpacity
color: item.placeholderColor
@@ -175,7 +212,7 @@ Item {
Rectangle {
anchors.fill: parent
anchors.topMargin: 1
color: "transparent"
color: item.enabled ? "transparent" : MoneroComponents.Style.inputBoxBackgroundDisabled
}
Rectangle {
@@ -203,20 +240,50 @@ Item {
id: input
anchors.fill: parent
anchors.leftMargin: inlineIcon.visible ? 44 : 0
font.family: item.fontFamily
font.pixelSize: item.fontSize
font.bold: item.fontBold
KeyNavigation.backtab: item.KeyNavigation.backtab
KeyNavigation.tab: item.KeyNavigation.tab
onEditingFinished: item.editingFinished()
onAccepted: item.accepted();
onTextChanged: item.textUpdated()
topPadding: 10
bottomPadding: 10
}
leftPadding: inputPadding
rightPadding: (inlineButtons.width > 0 ? inlineButtons.width + inlineButtons.spacing : 0) + inputPadding
topPadding: inputPadding
bottomPadding: inputPadding
echoMode: isPasswordHidden() ? TextInput.Password : TextInput.Normal
MoneroComponents.InlineButton {
id: inlineButtonId
visible: item.inlineButtonText ? true : false
anchors.right: parent.right
anchors.rightMargin: 8
MoneroComponents.Label {
visible: password || passwordLinked
fontSize: 20
text: isPasswordHidden() ? FontAwesome.eye : FontAwesome.eyeSlash
opacity: eyeMouseArea.containsMouse ? 0.9 : 0.7
fontFamily: FontAwesome.fontFamily
anchors.right: parent.right
anchors.rightMargin: 15
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: 1
MouseArea {
id: eyeMouseArea
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: passwordToggle()
}
}
RowLayout {
id: inlineButtons
anchors.bottom: parent.bottom
anchors.top: parent.top
anchors.right: parent.right
anchors.topMargin: inputPadding
anchors.bottomMargin: inputPadding
anchors.rightMargin: inputPadding
spacing: 4
}
}
}
}

View File

@@ -36,6 +36,8 @@ ColumnLayout {
Layout.fillWidth: true
default property alias content: inlineButtons.children
property alias text: input.text
property alias labelText: inputLabel.text
property alias labelButtonText: labelButton.text
@@ -65,7 +67,7 @@ ColumnLayout {
}
}
property bool error: false
property alias error: input.error
property string labelFontColor: MoneroComponents.Style.defaultFontColor
property bool labelFontBold: false
@@ -73,6 +75,7 @@ ColumnLayout {
property bool labelButtonVisible: false
property string fontColor: MoneroComponents.Style.defaultFontColor
property string fontFamily: MoneroComponents.Style.fontRegular.name
property bool fontBold: false
property int fontSize: 16
@@ -85,13 +88,12 @@ ColumnLayout {
property alias addressValidation: input.addressValidation
property string backgroundColor: "" // mock
property alias inlineButton: inlineButtonId
property bool inlineButtonVisible: false
signal labelButtonClicked();
signal inputLabelLinkActivated();
signal editingFinished();
onActiveFocusChanged: activeFocus && input.forceActiveFocus()
spacing: 0
Rectangle {
id: inputLabelRect
@@ -157,20 +159,23 @@ ColumnLayout {
id: input
readOnly: false
addressValidation: false
KeyNavigation.backtab: item.KeyNavigation.backtab
KeyNavigation.priority: KeyNavigation.BeforeItem
KeyNavigation.tab: item.KeyNavigation.tab
Layout.fillWidth: true
leftPadding: item.inputPaddingLeft
rightPadding: item.inputPaddingRight
rightPadding: (inlineButtons.width > 0 ? inlineButtons.width + inlineButtons.spacing : 0) + inputPaddingRight
topPadding: item.inputPaddingTop
bottomPadding: item.inputPaddingBottom
wrapMode: item.wrapMode
font.family: item.fontFamily
fontSize: item.fontSize
fontBold: item.fontBold
fontColor: item.fontColor
mouseSelection: item.mouseSelection
onEditingFinished: item.editingFinished()
error: item.error
MoneroComponents.TextPlain {
id: placeholderLabel
@@ -196,11 +201,12 @@ ColumnLayout {
visible: !item.borderDisabled
}
MoneroComponents.InlineButton {
id: inlineButtonId
visible: (inlineButtonId.text || inlineButtonId.icon) && inlineButtonVisible ? true : false
RowLayout {
id: inlineButtons
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 8
anchors.rightMargin: inputPaddingRight
spacing: 4
}
}
}

View File

@@ -1,21 +1,21 @@
// Copyright (c) 2014-2019, The Monero Project
//
//
// All rights reserved.
//
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
@@ -26,26 +26,30 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Layouts 1.2
import QtQuick.Controls 2.0
import Qt.labs.platform 1.0 as PlatformLabs
import "." as MoneroComponents
import "../components" as MoneroComponents
Rectangle {
property bool active: false
Layout.preferredWidth: 30
Layout.fillHeight: true
property string activeColor: MoneroComponents.Style.defaultFontColor
property string inactiveColor: MoneroComponents.Style.progressBarBackgroundColor
color: "transparent"
Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
width: 10
height: 10
radius: 10
color: parent.active ? parent.activeColor : parent.inactiveColor
PlatformLabs.MenuBar {
PlatformLabs.Menu {
title: qsTr("File")
PlatformLabs.MenuItem {
enabled: appWindow.viewState === "normal"
text: qsTr("Close Wallet")
onTriggered: appWindow.showWizard()
}
}
PlatformLabs.Menu {
title: qsTr("View")
PlatformLabs.MenuItem {
text: MoneroComponents.Style.blackTheme ? qsTr("Light Theme") : qsTr("Dark Theme")
onTriggered: {
MoneroComponents.Style.blackTheme = !MoneroComponents.Style.blackTheme;
}
}
PlatformLabs.MenuItem {
text: qsTr("Change Language")
onTriggered: appWindow.toggleLanguageView();
}
}
}

View File

@@ -62,7 +62,7 @@ Rectangle {
height: present ? ((appWindow.height >= 800) ? 44 : 38 ) : 0
LinearGradient {
visible: isOpenGL && button.checked || numSelectedChildren > 0
visible: isOpenGL && (button.checked || buttonArea.containsMouse)
height: parent.height
width: 260
anchors.verticalCenter: parent.verticalCenter
@@ -75,13 +75,15 @@ Rectangle {
GradientStop { position: 0.0; color: MoneroComponents.Style.menuButtonGradientStart }
GradientStop { position: 1.0; color: MoneroComponents.Style.menuButtonGradientStop }
}
opacity: button.checked ? 1 : 0.3
}
// fallback hover effect when opengl is not available
Rectangle {
visible: !isOpenGL && button.checked
visible: !isOpenGL && (button.checked || buttonArea.containsMouse)
anchors.fill: parent
color: MoneroComponents.Style.menuButtonFallbackBackgroundColor
opacity: button.checked ? 1 : 0.3
}
// button decorations that are subject to leftMargin offsets

208
components/Navbar.qml Normal file
View File

@@ -0,0 +1,208 @@
// Copyright (c) 2014-2021, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Layouts 1.1
import "." as MoneroComponents
Rectangle {
default property list<MoneroComponents.NavbarItem> items
color: "transparent"
height: grid.height
width: grid.width
GridLayout {
id: grid
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
columnSpacing: 0
property string fontColorActive: MoneroComponents.Style.blackTheme ? "white" : "white"
property string fontColorInActive: MoneroComponents.Style.blackTheme ? "white" : MoneroComponents.Style.dimmedFontColor
property int fontSize: 15
property bool fontBold: true
property var fontFamily: MoneroComponents.Style.fontRegular.name
property string borderColor: MoneroComponents.Style.blackTheme ? "#808080" : "#B9B9B9"
property int textMargin: {
// left-right margins for a given cell
if(appWindow.width < 890){
return 32;
} else {
return 64;
}
}
Rectangle {
// navbar left side border
id: navBarLeft
Layout.preferredWidth: 2
Layout.preferredHeight: 32
color: "transparent"
Rectangle {
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
width: 1
height: parent.height - 2
color: grid.borderColor
}
ColumnLayout {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 1
spacing: 0
Rectangle {
Layout.preferredHeight: 1
Layout.preferredWidth: 1
color: grid.borderColor
}
Rectangle {
Layout.fillHeight: true
width: 1
color: items.length > 0 && items[0].active ? grid.borderColor : "transparent";
}
Rectangle {
color: grid.borderColor
Layout.preferredHeight: 1
Layout.preferredWidth: 1
}
}
}
Repeater {
model: items.length
RowLayout {
spacing: 0
Rectangle {
Layout.preferredWidth: 1
Layout.preferredHeight: 32
color: grid.borderColor
visible: index > 0 && items[index - 1].visible
}
ColumnLayout {
Layout.minimumWidth: 72
Layout.preferredHeight: 32
Layout.fillWidth: true
spacing: 0
visible: items[index].visible
Rectangle {
color: grid.borderColor
Layout.preferredHeight: 1
Layout.fillWidth: true
}
Rectangle {
Layout.minimumHeight: 30
Layout.fillWidth: true
color: items[index].active ? grid.borderColor : "transparent"
implicitHeight: children[0].implicitHeight
implicitWidth: children[0].implicitWidth
MoneroComponents.TextPlain {
anchors.centerIn: parent
font.family: grid.fontFamily
font.pixelSize: grid.fontSize
font.bold: grid.fontBold
leftPadding: grid.textMargin / 2
rightPadding: grid.textMargin / 2
text: items[index].text
color: items[index].active ? grid.fontColorActive : grid.fontColorInActive
themeTransition: false
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: items[index].selected()
}
}
Rectangle {
color: grid.borderColor
Layout.preferredHeight: 1
Layout.fillWidth: true
}
}
}
}
Rectangle {
// navbar right side border
id: navBarRight
Layout.preferredWidth: 2
Layout.preferredHeight: 32
color: "transparent"
rotation: 180
Rectangle {
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
width: 1
height: parent.height - 2
color: grid.borderColor
}
ColumnLayout {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 1
spacing: 0
Rectangle {
Layout.preferredHeight: 1
Layout.preferredWidth: 1
color: grid.borderColor
}
Rectangle {
Layout.fillHeight: true
width: 1
color: items.length > 0 && items[items.length - 1].active ? grid.borderColor : "transparent"
}
Rectangle {
color: grid.borderColor
Layout.preferredHeight: 1
Layout.preferredWidth: 1
}
}
}
}
}

View File

@@ -1,21 +1,21 @@
// Copyright (c) 2014-2019, The Monero Project
//
// Copyright (c) 2021, The Monero Project
//
// All rights reserved.
//
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
@@ -26,9 +26,12 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <assert.h>
import QtQuick 2.9
static_assert(1, "FAIL");
int main(int argc, char *argv[]) {
return 0;
QtObject {
property bool active: false
property string text
property bool visible: true
signal selected()
}

View File

@@ -39,23 +39,34 @@ Rectangle {
property var connected: Wallet.ConnectionStatus_Disconnected
function getConnectionStatusString(status) {
if (status == Wallet.ConnectionStatus_Connected) {
if(!appWindow.daemonSynced)
return qsTr("Synchronizing")
if(persistentSettings.useRemoteNode)
return qsTr("Remote node")
return appWindow.isMining ? qsTr("Connected") + " + " + qsTr("Mining"): qsTr("Connected")
switch (appWindow.daemonStartStopInProgress)
{
case 1:
return qsTr("Starting the node");
case 2:
return qsTr("Stopping the node");
default:
break;
}
if (status == Wallet.ConnectionStatus_WrongVersion)
return qsTr("Wrong version")
if (status == Wallet.ConnectionStatus_Disconnected){
if(appWindow.walletMode <= 1){
return qsTr("Searching node") + translationManager.emptyString;
}
return qsTr("Disconnected")
switch (status) {
case Wallet.ConnectionStatus_Connected:
if (!appWindow.daemonSynced)
return qsTr("Synchronizing");
if (persistentSettings.useRemoteNode)
return qsTr("Remote node");
return appWindow.isMining ? qsTr("Connected") + " + " + qsTr("Mining"): qsTr("Connected");
case Wallet.ConnectionStatus_WrongVersion:
return qsTr("Wrong version");
case Wallet.ConnectionStatus_Disconnected:
if (appWindow.walletMode <= 1) {
return qsTr("Searching node") + translationManager.emptyString;
}
return qsTr("Disconnected");
case Wallet.ConnectionStatus_Connecting:
return qsTr("Connecting");
default:
return qsTr("Invalid connection status");
}
return qsTr("Invalid connection status")
}
RowLayout {
@@ -159,9 +170,9 @@ Rectangle {
opacity: iconItem.opacity * (refreshMouseArea.visible ? 1 : 0.5)
text: FontAwesome.random
visible: (
item.connected != Wallet.ConnectionStatus_Disconnected &&
!appWindow.disconnected &&
!persistentSettings.useRemoteNode &&
persistentSettings.bootstrapNodeAddress == "auto"
(persistentSettings.bootstrapNodeAddress == "auto" || persistentSettings.walletMode < 2)
)
MouseArea {

View File

@@ -1,85 +0,0 @@
// Copyright (c) 2017-2018, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Controls 1.4
import moneroComponents.Wallet 1.0
import "." as MoneroComponents
Item {
id: item
property string message: ""
property bool active: false
height: 180
width: 320
property int margin: 15
x: parent.width - width - margin
y: parent.height - height * scale.yScale - margin * scale.yScale
Rectangle {
color: "#FF6C3C"
border.color: "black"
anchors.fill: parent
TextArea {
id:versionText
readOnly: true
backgroundVisible: false
textFormat: TextEdit.AutoText
anchors.fill: parent
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 12
textMargin: 20
textColor: "white"
text: item.message
wrapMode: Text.WrapAnywhere
}
}
transform: Scale {
id: scale
yScale: item.active ? 1 : 0
Behavior on yScale {
NumberAnimation { duration: 500; easing.type: Easing.InOutCubic }
}
}
Timer {
id: hider
interval: 30000; running: false; repeat: false
onTriggered: { item.active = false }
}
function show(message) {
item.visible = true
item.message = message
item.active = true
hider.running = true
}
}

View File

@@ -41,11 +41,11 @@ import "../js/Utils.js" as Utils
Item {
id: root
visible: false
z: parent.z + 2
property bool isHidden: true
property alias password: passwordInput1.text
property string walletName
property var okButtonText
property string okButtonIcon
property string errorText
property bool passwordDialogMode
property bool passphraseDialogMode
@@ -61,13 +61,11 @@ Item {
signal closeCallback()
function _openInit(walletName, errorText) {
isHidden = true
capsLockTextLabel.visible = oshelper.isCapsLock();
passwordInput1.echoMode = TextInput.Password
passwordInput2.echoMode = TextInput.Password
passwordInput1.text = ""
passwordInput2.text = ""
passwordInput1.forceActiveFocus();
passwordInput1.reset();
passwordInput2.reset();
if(!appWindow.currentWallet || appWindow.active)
passwordInput1.input.forceActiveFocus();
root.walletName = walletName ? walletName : ""
errorTextLabel.text = errorText ? errorText : "";
leftPanel.enabled = false
@@ -79,10 +77,12 @@ Item {
appWindow.updateBalance();
}
function open(walletName, errorText) {
function open(walletName, errorText, okButtonText, okButtonIcon) {
passwordDialogMode = true;
passphraseDialogMode = false;
newPasswordDialogMode = false;
root.okButtonText = okButtonText;
root.okButtonIcon = okButtonIcon ? okButtonIcon : "";
_openInit(walletName, errorText);
}
@@ -116,10 +116,29 @@ Item {
closeCallback();
}
function toggleIsHidden() {
passwordInput1.echoMode = isHidden ? TextInput.Normal : TextInput.Password;
passwordInput2.echoMode = isHidden ? TextInput.Normal : TextInput.Password;
isHidden = !isHidden;
function onOk() {
if (!passwordDialogMode && passwordInput1.text !== passwordInput2.text) {
return;
}
root.close()
if (passwordDialogMode) {
root.accepted()
} else if (newPasswordDialogMode) {
root.acceptedNewPassword()
} else if (passphraseDialogMode) {
root.acceptedPassphrase()
}
}
function onCancel() {
root.close()
if (passwordDialogMode) {
root.rejected()
} else if (newPasswordDialogMode) {
root.rejectedNewPassword()
} else if (passphraseDialogMode) {
root.rejectedPassphrase()
}
}
ColumnLayout {
@@ -184,15 +203,11 @@ Item {
text: qsTr("CAPSLOCKS IS ON.") + translationManager.emptyString;
}
MoneroComponents.Input {
MoneroComponents.LineEdit {
id: passwordInput1
password: true
Layout.topMargin: 6
Layout.fillWidth: true
horizontalAlignment: TextInput.AlignLeft
verticalAlignment: TextInput.AlignVCenter
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 24
echoMode: TextInput.Password
KeyNavigation.tab: {
if (passwordDialogMode) {
return okButton
@@ -200,78 +215,12 @@ Item {
return passwordInput2
}
}
implicitHeight: 50
bottomPadding: 10
leftPadding: 10
topPadding: 10
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
onTextChanged: capsLockTextLabel.visible = oshelper.isCapsLock();
background: Rectangle {
radius: 2
color: MoneroComponents.Style.blackTheme ? "black" : "#A9FFFFFF"
border.color: MoneroComponents.Style.inputBorderColorInActive
border.width: 1
MoneroEffects.ColorTransition {
targetObj: parent
blackColor: "black"
whiteColor: "#A9FFFFFF"
}
MoneroComponents.Label {
fontSize: 20
text: isHidden ? FontAwesome.eye : FontAwesome.eyeSlash
opacity: 0.7
fontFamily: FontAwesome.fontFamily
anchors.right: parent.right
anchors.rightMargin: 15
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: 1
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
toggleIsHidden();
}
onEntered: {
parent.opacity = 0.9
parent.fontSize = 24
}
onExited: {
parent.opacity = 0.7
parent.fontSize = 20
}
}
}
}
Keys.enabled: root.visible
Keys.onEnterPressed: Keys.onReturnPressed(event)
Keys.onReturnPressed: {
root.close()
if (passwordDialogMode) {
root.accepted()
} else if (newPasswordDialogMode) {
root.acceptedNewPassword()
} else if (passphraseDialogMode) {
root.acceptedPassphrase()
}
}
Keys.onEscapePressed: {
root.close()
if (passwordDialogMode) {
root.rejected()
} else if (newPasswordDialogMode) {
root.rejectedNewPassword()
} else if (passphraseDialogMode) {
root.rejectedPassphrase()
}
}
Keys.onEnterPressed: root.onOk()
Keys.onReturnPressed: root.onOk()
Keys.onEscapePressed: root.onCancel()
}
// padding
@@ -295,81 +244,19 @@ Item {
color: MoneroComponents.Style.defaultFontColor
}
MoneroComponents.Input {
MoneroComponents.LineEdit {
id: passwordInput2
passwordLinked: passwordInput1
visible: !passwordDialogMode
Layout.topMargin: 6
Layout.fillWidth: true
horizontalAlignment: TextInput.AlignLeft
verticalAlignment: TextInput.AlignVCenter
font.family: MoneroComponents.Style.fontLight.name
font.pixelSize: 24
echoMode: TextInput.Password
KeyNavigation.tab: okButton
implicitHeight: 50
bottomPadding: 10
leftPadding: 10
topPadding: 10
color: MoneroComponents.Style.defaultFontColor
selectionColor: MoneroComponents.Style.textSelectionColor
selectedTextColor: MoneroComponents.Style.textSelectedColor
onTextChanged: capsLockTextLabel.visible = oshelper.isCapsLock();
background: Rectangle {
radius: 2
border.color: MoneroComponents.Style.inputBorderColorInActive
border.width: 1
color: MoneroComponents.Style.blackTheme ? "black" : "#A9FFFFFF"
MoneroComponents.Label {
fontSize: 20
text: isHidden ? FontAwesome.eye : FontAwesome.eyeSlash
opacity: 0.7
fontFamily: FontAwesome.fontFamily
anchors.right: parent.right
anchors.rightMargin: 15
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: 1
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
toggleIsHidden()
}
onEntered: {
parent.opacity = 0.9
parent.fontSize = 24
}
onExited: {
parent.opacity = 0.7
parent.fontSize = 20
}
}
}
}
Keys.enabled: root.visible
Keys.onEnterPressed: Keys.onReturnPressed(event)
Keys.onReturnPressed: {
if (passwordInput1.text === passwordInput2.text) {
root.close()
if (newPasswordDialogMode) {
root.acceptedNewPassword()
} else if (passphraseDialogMode) {
root.acceptedPassphrase()
}
}
}
Keys.onEscapePressed: {
root.close()
if (newPasswordDialogMode) {
root.rejectedNewPassword()
} else if (passphraseDialogMode) {
root.rejectedPassphrase()
}
}
Keys.onEnterPressed: root.onOk()
Keys.onReturnPressed: root.onOk()
Keys.onEscapePressed: root.onCancel()
}
// padding
@@ -391,37 +278,22 @@ Item {
MoneroComponents.StandardButton {
id: cancelButton
primary: false
small: true
text: qsTr("Cancel") + translationManager.emptyString
KeyNavigation.tab: passwordInput1
onClicked: {
root.close()
if (passwordDialogMode) {
root.rejected()
} else if (newPasswordDialogMode) {
root.rejectedNewPassword()
} else if (passphraseDialogMode) {
root.rejectedPassphrase()
}
}
onClicked: onCancel()
}
MoneroComponents.StandardButton {
id: okButton
fontAwesomeIcon: true
rightIcon: okButtonIcon
small: true
text: qsTr("Ok") + translationManager.emptyString
text: okButtonText ? okButtonText : qsTr("Ok") + translationManager.emptyString
KeyNavigation.tab: cancelButton
enabled: (passwordDialogMode == true) ? true : passwordInput1.text === passwordInput2.text
onClicked: {
root.close()
if (passwordDialogMode) {
root.accepted()
} else if (newPasswordDialogMode) {
root.acceptedNewPassword()
} else if (passphraseDialogMode) {
root.acceptedPassphrase()
}
}
onClicked: onOk()
}
}
}

View File

@@ -29,21 +29,23 @@
import QtQuick 2.9
import QtQuick.Window 2.1
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
Rectangle {
id: root
color: MoneroComponents.Style.blackTheme ? "white" : "transparent"
color: MoneroComponents.Style.blackTheme ? "black" : "white"
visible: false
radius: 10
border.color: MoneroComponents.Style.blackTheme ? Qt.rgba(255, 255, 255, 0.25) : Qt.rgba(0, 0, 0, 0.25)
border.width: 1
z: 11
property alias messageText: messageTitle.text
property alias heightProgressText : heightProgress.text
width: 200
height: 100
opacity: 0.7
width: 100
height: 50
function show() {
root.visible = true;
@@ -56,44 +58,55 @@ Rectangle {
ColumnLayout {
id: rootLayout
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.centerIn: parent
anchors.leftMargin: 30
anchors.rightMargin: 30
spacing: 12
spacing: 21
BusyIndicator {
running: parent.visible
Item {
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Layout.preferredHeight: 80
Image {
id: imgLogo
width: 60
height: 60
anchors.centerIn: parent
source: "qrc:///images/monero-vector.svg"
mipmap: true
}
BusyIndicator {
running: parent.visible
anchors.centerIn: imgLogo
style: BusyIndicatorStyle {
indicator: Image {
visible: control.running
source: "qrc:///images/busy-indicator.png"
RotationAnimator on rotation {
running: control.running
loops: Animation.Infinite
duration: 1000
from: 0
to: 360
}
}
}
}
}
MoneroComponents.TextPlain {
id: messageTitle
text: "Please wait..."
font {
pixelSize: 22
}
text: qsTr("Please wait...") + translationManager.emptyString
font.pixelSize: 24
horizontalAlignment: Text.AlignHCenter
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Layout.fillWidth: true
themeTransition: false
color: "black"
}
MoneroComponents.TextPlain {
id: heightProgress
font {
pixelSize: 18
}
horizontalAlignment: Text.AlignHCenter
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Layout.fillWidth: true
themeTransition: false
color: "black"
color: MoneroComponents.Style.defaultFontColor
}
}
}

View File

@@ -42,7 +42,7 @@ Rectangle {
function updateProgress(currentBlock,targetBlock, blocksToSync, statusTxt){
if(targetBlock > 0) {
var remaining = (currentBlock < targetBlock) ? targetBlock - currentBlock : 0
var progressLevel = (blocksToSync > 0 && blocksToSync != remaining) ? (100*(blocksToSync - remaining)/blocksToSync).toFixed(0) : (100*(currentBlock / targetBlock)).toFixed(0)
var progressLevel = (blocksToSync > 0 ) ? (100*(blocksToSync - remaining)/blocksToSync).toFixed(0) : 100
fillLevel = progressLevel
if(typeof statusTxt != "undefined" && statusTxt != "") {
progressText.text = statusTxt;

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2014-2018, The Monero Project
// Copyright (c) 2014-2020, The Monero Project
//
// All rights reserved.
//
@@ -53,6 +53,7 @@ Rectangle {
script: {
root.visible = true
camera.captureMode = Camera.CaptureStillImage
camera.cameraState = Camera.ActiveState
camera.start()
finder.enabled = true
}
@@ -65,6 +66,7 @@ Rectangle {
camera.stop()
root.visible = false
finder.enabled = false
camera.cameraState = Camera.UnloadedState
}
}
}
@@ -74,6 +76,7 @@ Rectangle {
id: camera
objectName: "qrCameraQML"
captureMode: Camera.CaptureStillImage
cameraState: Camera.UnloadedState
focus {
focusMode: Camera.FocusContinuous
@@ -83,9 +86,14 @@ Rectangle {
id : finder
objectName: "QrFinder"
onDecoded : {
root.qrcode_decoded(address, payment_id, amount, tx_description, recipient_name, extra_parameters)
root.state = "Stopped"
}
const parsed = walletManager.parse_uri_to_object(data);
if (!parsed.error) {
root.qrcode_decoded(parsed.address, parsed.payment_id, parsed.amount, parsed.tx_description, parsed.recipient_name, parsed.extra_parameters);
root.state = "Stopped";
} else {
onNotifyError(parsed.error);
}
}
onNotifyError : {
if( warning )
messageDialog.icon = StandardIcon.Critical

View File

@@ -0,0 +1,153 @@
// Copyright (c) 2021, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.1
import "." as MoneroComponents
MoneroComponents.Dialog {
id: root
title: (editMode ? qsTr("Edit remote node") : qsTr("Add remote node")) + translationManager.emptyString
property var callbackOnSuccess: null
property bool editMode: false
property bool success: false
onActiveFocusChanged: activeFocus && remoteNodeAddress.forceActiveFocus()
function add(callbackOnSuccess) {
root.editMode = false;
root.callbackOnSuccess = callbackOnSuccess;
open();
}
function edit(remoteNode, callbackOnSuccess) {
const hostPort = remoteNode.address.match(/^(.*?)(?:\:?(\d*))$/);
if (hostPort) {
remoteNodeAddress.daemonAddrText = hostPort[1];
remoteNodeAddress.daemonPortText = hostPort[2];
}
daemonUsername.text = remoteNode.username;
daemonPassword.text = remoteNode.password;
setTrustedDaemonCheckBox.checked = remoteNode.trusted;
root.callbackOnSuccess = callbackOnSuccess;
root.editMode = true;
open();
}
onClosed: {
if (root.success && callbackOnSuccess) {
callbackOnSuccess({
address: remoteNodeAddress.getAddress(),
username: daemonUsername.text,
password: daemonPassword.text,
trusted: setTrustedDaemonCheckBox.checked,
});
}
remoteNodeAddress.daemonAddrText = "";
remoteNodeAddress.daemonPortText = "";
daemonUsername.text = "";
daemonPassword.text = "";
setTrustedDaemonCheckBox.checked = false;
root.success = false;
}
MoneroComponents.RemoteNodeEdit {
id: remoteNodeAddress
Layout.fillWidth: true
placeholderFontSize: 15
daemonAddrLabelText: qsTr("Address") + translationManager.emptyString
daemonPortLabelText: qsTr("Port") + translationManager.emptyString
}
RowLayout {
Layout.fillWidth: true
spacing: 32
MoneroComponents.LineEdit {
id: daemonUsername
Layout.fillWidth: true
Layout.minimumWidth: 220
labelText: qsTr("Daemon username") + translationManager.emptyString
placeholderText: qsTr("(optional)") + translationManager.emptyString
placeholderFontSize: 15
labelFontSize: 14
fontSize: 15
}
MoneroComponents.LineEdit {
id: daemonPassword
Layout.fillWidth: true
Layout.minimumWidth: 220
labelText: qsTr("Daemon password") + translationManager.emptyString
placeholderText: qsTr("Password") + translationManager.emptyString
password: true
placeholderFontSize: 15
labelFontSize: 14
fontSize: 15
}
}
MoneroComponents.CheckBox {
id: setTrustedDaemonCheckBox
activeFocusOnTab: true
text: qsTr("Mark as Trusted Daemon") + translationManager.emptyString
}
RowLayout {
Layout.alignment: Qt.AlignRight
spacing: parent.spacing
MoneroComponents.StandardButton {
activeFocusOnTab: true
fontBold: false
primary: false
text: qsTr("Cancel") + translationManager.emptyString
onClicked: root.close()
}
MoneroComponents.StandardButton {
activeFocusOnTab: true
fontBold: false
enabled: remoteNodeAddress.getAddress() != ""
text: qsTr("Ok") + translationManager.emptyString
onClicked: {
root.success = true;
root.close();
}
}
}
}

View File

@@ -43,6 +43,9 @@ GridLayout {
property alias daemonAddrLabelText: daemonAddr.labelText
property alias daemonPortLabelText: daemonPort.labelText
property string initialAddress: ""
property var initialHostPort: initialAddress.match(/^(.*?)(?:\:?(\d*))$/)
// TODO: LEGACY; remove these placeHolder variables when
// the wizards get redesigned to the black-theme
property string placeholderFontFamily: MoneroComponents.Style.fontRegular.name
@@ -53,26 +56,29 @@ GridLayout {
property int labelFontSize: 14
property string lineEditBackgroundColor: "transparent"
property string lineEditBorderColor: MoneroComponents.Style.inputBorderColorInActive
property string lineEditFontColor: MoneroComponents.Style.defaultFontColor
property bool lineEditFontBold: false
property int lineEditFontSize: 15
// Author: David M. Syzdek https://github.com/syzdek https://gist.github.com/syzdek/6086792
readonly property var ipv6Regex: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe08:(:[0-9a-fA-F]{1,4}){2,2}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/
signal editingFinished()
signal textChanged()
onActiveFocusChanged: activeFocus && daemonAddr.forceActiveFocus()
function isValid() {
return daemonAddr.text.trim().length > 0 && daemonPort.acceptableInput
}
function getAddress() {
if (!isValid()) {
return "";
}
var addr = daemonAddr.text.trim();
var port = daemonPort.text.trim();
// validation
if(addr === "" || addr.length < 2) return "";
if(!Utils.isNumeric(port)) return "";
return addr + ":" + port;
}
@@ -86,13 +92,16 @@ GridLayout {
placeholderColor: root.placeholderColor
placeholderOpacity: root.placeholderOpacity
labelFontSize: root.labelFontSize
borderColor: lineEditBorderColor
backgroundColor: lineEditBackgroundColor
fontColor: lineEditFontColor
fontBold: lineEditFontBold
fontSize: lineEditFontSize
onEditingFinished: root.editingFinished()
onEditingFinished: {
text = text.replace(ipv6Regex, "[$1]");
root.editingFinished();
}
onTextChanged: root.textChanged()
text: initialHostPort[1]
}
LineEdit {
@@ -105,7 +114,6 @@ GridLayout {
placeholderColor: root.placeholderColor
placeholderOpacity: root.placeholderOpacity
labelFontSize: root.labelFontSize
borderColor: lineEditBorderColor
backgroundColor: lineEditBackgroundColor
fontColor: lineEditFontColor
fontBold: lineEditFontBold
@@ -114,5 +122,6 @@ GridLayout {
onEditingFinished: root.editingFinished()
onTextChanged: root.textChanged()
text: initialHostPort[2]
}
}

View File

@@ -0,0 +1,131 @@
// Copyright (c) 2021, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Layouts 1.1
import FontAwesome 1.0
import "." as MoneroComponents
import "effects/" as MoneroEffects
ColumnLayout {
id: remoteNodeList
spacing: 20
MoneroComponents.CheckBox {
border: false
checkedIcon: FontAwesome.minusCircle
uncheckedIcon: FontAwesome.plusCircle
fontAwesomeIcons: true
fontSize: 16
iconOnTheLeft: true
text: qsTr("Add remote node") + translationManager.emptyString
toggleOnClick: false
onClicked: remoteNodeDialog.add(remoteNodesModel.append)
}
ColumnLayout {
spacing: 0
Repeater {
model: remoteNodesModel
Rectangle {
height: 30
Layout.fillWidth: true
color: itemMouseArea.containsMouse || index === remoteNodesModel.selected ? MoneroComponents.Style.titleBarButtonHoverColor : "transparent"
Rectangle {
color: MoneroComponents.Style.appWindowBorderColor
anchors.right: parent.right
anchors.left: parent.left
anchors.top: parent.top
height: 1
visible: index > 0
MoneroEffects.ColorTransition {
targetObj: parent
blackColor: MoneroComponents.Style._b_appWindowBorderColor
whiteColor: MoneroComponents.Style._w_appWindowBorderColor
}
}
Rectangle {
anchors.fill: parent
anchors.rightMargin: 80
color: "transparent"
MoneroComponents.TextPlain {
color: index === remoteNodesModel.selected ? MoneroComponents.Style.defaultFontColor : MoneroComponents.Style.dimmedFontColor
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 6
font.pixelSize: 16
text: address
themeTransition: false
}
MouseArea {
id: itemMouseArea
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
hoverEnabled: true
onClicked: remoteNodesModel.applyRemoteNode(index)
}
}
RowLayout {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 6
height: 30
spacing: 10
MoneroComponents.InlineButton {
buttonColor: "transparent"
fontFamily: FontAwesome.fontFamily
fontPixelSize: 18
text: FontAwesome.edit
onClicked: remoteNodeDialog.edit(remoteNodesModel.get(index), function (remoteNode) {
remoteNodesModel.set(index, remoteNode)
})
}
MoneroComponents.InlineButton {
buttonColor: "transparent"
fontFamily: FontAwesome.fontFamily
text: FontAwesome.times
visible: remoteNodesModel.count > 1
onClicked: remoteNodesModel.removeSelectNextIfNeeded(index)
}
}
}
}
}
}

View File

@@ -1,41 +1,71 @@
import QtQuick 2.9
import QtQuick.Layouts 1.1
import FontAwesome 1.0
import "../components" as MoneroComponents
ColumnLayout {
property alias buttonText: button.text
property alias description: description.text
property alias title: title.text
id: settingsListItem
property alias iconText: iconLabel.text
property alias description: area.text
property alias title: header.text
property bool isLast: false
signal clicked()
id: settingsListItem
Layout.fillWidth: true
spacing: 0
Rectangle {
// divider
Layout.preferredHeight: 1
id: root
Layout.fillWidth: true
Layout.bottomMargin: 8
color: MoneroComponents.Style.dividerColor
opacity: MoneroComponents.Style.dividerOpacity
}
Layout.minimumHeight: 75
Layout.preferredHeight: rect.height + 15
color: "transparent"
RowLayout {
Layout.fillWidth: true
spacing: 0
Rectangle {
id: divider
anchors.topMargin: 0
anchors.left: parent.left
anchors.right: parent.right
height: 1
color: MoneroComponents.Style.dividerColor
opacity: MoneroComponents.Style.dividerOpacity
}
ColumnLayout {
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
spacing: 0
Rectangle {
id: rect
width: parent.width
height: header.height + area.contentHeight
color: "transparent";
anchors.left: parent.left
anchors.bottomMargin: 4
anchors.topMargin: 4
anchors.verticalCenter: parent.verticalCenter
Rectangle {
id: icon
color: "transparent"
height: 32
width: 32
anchors.left: parent.left
anchors.leftMargin: 16
anchors.verticalCenter: parent.verticalCenter
MoneroComponents.Label {
id: iconLabel
fontSize: 32
fontFamily: FontAwesome.fontFamilySolid
anchors.centerIn: parent
fontColor: MoneroComponents.Style.defaultFontColor
styleName: "Solid"
}
}
MoneroComponents.TextPlain {
id: title
Layout.fillWidth: true
Layout.preferredHeight: 20
Layout.topMargin: 8
id: header
anchors.left: icon.right
anchors.leftMargin: 16
anchors.top: parent.top
color: MoneroComponents.Style.defaultFontColor
opacity: MoneroComponents.Style.blackTheme ? 1.0 : 0.8
font.bold: true
@@ -43,23 +73,43 @@ ColumnLayout {
font.pixelSize: 16
}
MoneroComponents.TextPlainArea {
id: description
Text {
id: area
anchors.top: header.bottom
anchors.topMargin: 4
anchors.left: icon.right
anchors.leftMargin: 16
color: MoneroComponents.Style.dimmedFontColor
colorBlackTheme: MoneroComponents.Style._b_dimmedFontColor
colorWhiteTheme: MoneroComponents.Style._w_dimmedFontColor
Layout.fillWidth: true
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 15
horizontalAlignment: TextInput.AlignLeft
wrapMode: Text.WordWrap;
leftPadding: 0
topPadding: 0
width: parent.width - (icon.width + icon.anchors.leftMargin + anchors.leftMargin)
}
}
MoneroComponents.StandardButton {
id: button
small: true
Rectangle {
id: bottomDivider
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
height: 1
color: MoneroComponents.Style.dividerColor
opacity: MoneroComponents.Style.dividerOpacity
visible: settingsListItem.isLast
}
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
hoverEnabled: true
onEntered: root.color = MoneroComponents.Style.titleBarButtonHoverColor
onExited: root.color = "transparent"
onClicked: {
settingsListItem.clicked()
}
width: 135
}
}
}

68
components/Slider.qml Normal file
View File

@@ -0,0 +1,68 @@
import QtQuick 2.9
import QtQuick.Controls 2.0 as QtQuickControls
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
ColumnLayout {
property alias from: slider.from
property alias stepSize: slider.stepSize
property alias to: slider.to
property alias value: slider.value
property alias text: label.text
signal moved()
spacing: 0
Text {
id: label
color: MoneroComponents.Style.defaultFontColor
font.pixelSize: 14
Layout.fillWidth: true
}
QtQuickControls.Slider {
id: slider
leftPadding: 0
snapMode: QtQuickControls.Slider.SnapAlways
background: Rectangle {
x: parent.leftPadding
y: parent.topPadding + parent.availableHeight / 2 - height / 2
implicitWidth: 200
implicitHeight: 4
width: parent.availableWidth
height: implicitHeight
radius: 2
color: MoneroComponents.Style.progressBarBackgroundColor
Rectangle {
width: parent.visualPosition * parent.width
height: parent.height
color: MoneroComponents.Style.green
radius: 2
}
}
handle: Rectangle {
x: parent.leftPadding + parent.visualPosition * (parent.availableWidth - width)
y: parent.topPadding + parent.availableHeight / 2 - height / 2
implicitWidth: 18
implicitHeight: 18
radius: 8
color: parent.pressed ? "#f0f0f0" : "#f6f6f6"
border.color: MoneroComponents.Style.grey
}
onMoved: parent.moved()
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.NoButton
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
}
}
}

View File

@@ -29,15 +29,24 @@
import QtQuick 2.9
import QtQuick.Layouts 1.1
import FontAwesome 1.0
import "../components" as MoneroComponents
Item {
id: button
property bool fontAwesomeIcon: false
property bool primary: true
property string rightIcon: ""
property string rightIconInactive: ""
property string textColor: button.enabled? MoneroComponents.Style.buttonTextColor: MoneroComponents.Style.buttonTextColorDisabled
property color textColor: !button.enabled
? MoneroComponents.Style.buttonTextColorDisabled
: primary
? MoneroComponents.Style.buttonTextColor
: MoneroComponents.Style.buttonSecondaryTextColor;
property bool small: false
property alias text: label.text
property alias fontBold: label.font.bold
property int fontSize: {
if(small) return 14;
else return 16;
@@ -59,7 +68,7 @@ Item {
id: buttonRect
anchors.fill: parent
radius: 3
border.width: parent.focus ? 1 : 0
border.width: parent.focus && parent.enabled ? 1 : 0
state: button.enabled ? "active" : "disabled"
Component.onCompleted: state = state
@@ -67,10 +76,12 @@ Item {
states: [
State {
name: "hover"
when: buttonArea.containsMouse || button.focus
when: button.enabled && (buttonArea.containsMouse || button.focus)
PropertyChanges {
target: buttonRect
color: MoneroComponents.Style.buttonBackgroundColorHover
color: primary
? MoneroComponents.Style.buttonBackgroundColorHover
: MoneroComponents.Style.buttonSecondaryBackgroundColorHover
}
},
State {
@@ -78,7 +89,9 @@ Item {
when: button.enabled
PropertyChanges {
target: buttonRect
color: MoneroComponents.Style.buttonBackgroundColor
color: primary
? MoneroComponents.Style.buttonBackgroundColor
: MoneroComponents.Style.buttonSecondaryBackgroundColor
}
},
State {
@@ -125,7 +138,7 @@ Item {
}
Image {
visible: button.rightIcon !== ""
visible: !fontAwesomeIcon && button.rightIcon !== ""
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
width: button.small ? 16 : 20
height: button.small ? 16 : 20
@@ -136,6 +149,16 @@ Item {
return button.rightIcon;
}
}
Text {
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
color: MoneroComponents.Style.defaultFontColor
font.family: FontAwesome.fontFamilySolid
font.pixelSize: button.small ? 16 : 20
font.styleName: "Solid"
text: button.rightIcon
visible: fontAwesomeIcon && button.rightIcon !== ""
}
}
MouseArea {

View File

@@ -90,6 +90,10 @@ Rectangle {
function close() {
root.visible = false;
// reset button text
okButton.text = qsTr("OK")
cancelButton.text = qsTr("Cancel")
closeCallback();
}

View File

@@ -58,11 +58,6 @@ Item {
onExpandedChanged: if(expanded) appWindow.currentItem = dropdown
// Workaroud for suspected memory leak in 5.8 causing malloc crash on app exit
function update() {
firstColText.text = columnid.currentIndex < repeater.model.rowCount() ? qsTr(repeater.model.get(columnid.currentIndex).column1) + translationManager.emptyString : ""
}
Item {
id: head
anchors.left: parent.left
@@ -80,15 +75,17 @@ Item {
}
MoneroComponents.TextPlain {
id: firstColText
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 12
anchors.right: dropIndicator.left
anchors.rightMargin: 12
elide: Text.ElideRight
font.family: MoneroComponents.Style.fontRegular.name
font.bold: dropdown.headerFontBold
font.pixelSize: dropdown.fontHeaderSize
color: dropdown.textColor
text: columnid.currentIndex < repeater.model.count ? qsTr(repeater.model.get(columnid.currentIndex).column1) + translationManager.emptyString : ""
}
Item {
@@ -96,7 +93,8 @@ Item {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 32
anchors.rightMargin: 12
width: dropdownIcon.width
Image {
id: dropdownIcon
@@ -137,20 +135,6 @@ Item {
height: dropdown.expanded ? columnid.height : 0
color: dropdown.pressedColor
Rectangle {
anchors.left: parent.left
anchors.top: parent.top
width: 3; height: 3
color: dropdown.pressedColor
}
Rectangle {
anchors.right: parent.right
anchors.top: parent.top
width: 3; height: 3
color: dropdown.pressedColor
}
Behavior on height {
NumberAnimation { duration: 100; easing.type: Easing.InQuad }
}
@@ -228,7 +212,6 @@ Item {
popup.close()
columnid.currentIndex = index
changed();
dropdown.update()
}
}
}

View File

@@ -29,6 +29,7 @@ QtObject {
property string textSelectedColor: blackTheme ? _b_textSelectedColor : _w_textSelectedColor
property string inputBoxBackground: blackTheme ? _b_inputBoxBackground : _w_inputBoxBackground
property string inputBoxBackgroundDisabled: blackTheme ? _b_inputBoxBackgroundDisabled : _w_inputBoxBackgroundDisabled
property string inputBoxBackgroundError: blackTheme ? _b_inputBoxBackgroundError : _w_inputBoxBackgroundError
property string inputBoxColor: blackTheme ? _b_inputBoxColor : _w_inputBoxColor
property string legacy_placeholderFontColor: blackTheme ? _b_legacy_placeholderFontColor : _w_legacy_placeholderFontColor
@@ -43,6 +44,9 @@ QtObject {
property string buttonInlineBackgroundColor: blackTheme ? _b_buttonInlineBackgroundColor : _w_buttonInlineBackgroundColor
property string buttonTextColor: blackTheme ? _b_buttonTextColor : _w_buttonTextColor
property string buttonTextColorDisabled: blackTheme ? _b_buttonTextColorDisabled : _w_buttonTextColorDisabled
property string buttonSecondaryBackgroundColor: "#d9d9d9"
property string buttonSecondaryBackgroundColorHover: "#a6a6a6"
property string buttonSecondaryTextColor: "#4d4d4d"
property string dividerColor: blackTheme ? _b_dividerColor : _w_dividerColor
property real dividerOpacity: blackTheme ? _b_dividerOpacity : _w_dividerOpacity
@@ -85,6 +89,7 @@ QtObject {
property string _b_textSelectedColor: "white"
property string _b_inputBoxBackground: "black"
property string _b_inputBoxBackgroundDisabled: Qt.rgba(255, 255, 255, 0.10)
property string _b_inputBoxBackgroundError: "#FFDDDD"
property string _b_inputBoxColor: "white"
property string _b_legacy_placeholderFontColor: "#BABABA"
@@ -123,7 +128,7 @@ QtObject {
property string _b_menuButtonImageRightColor: "white"
property string _b_menuButtonImageRightSource: "qrc:///images/right.svg"
property string _b_menuButtonImageDotArrowSource: "qrc:///images/arrow-right-medium-white.png"
property string _b_inlineButtonTextColor: "black"
property string _b_inlineButtonTextColor: "white"
property string _b_inlineButtonBorderColor: "black"
property string _b_appWindowBackgroundColor: "white"
property string _b_appWindowBorderColor: "#313131"
@@ -141,6 +146,7 @@ QtObject {
property string _w_textSelectedColor: "black"
property string _w_inputBoxBackground: "white"
property string _w_inputBoxBackgroundDisabled: Qt.rgba(0, 0, 0, 0.20)
property string _w_inputBoxBackgroundError: "#FFDDDD"
property string _w_inputBoxColor: "black"
property string _w_legacy_placeholderFontColor: "#BABABA"
@@ -179,7 +185,7 @@ QtObject {
property string _w_menuButtonImageRightColorActive: "#FA6800"
property string _w_menuButtonImageRightColor: "#808080"
property string _w_menuButtonImageDotArrowSource: "qrc:///images/arrow-right-medium-white.png"
property string _w_inlineButtonTextColor: "white"
property string _w_inlineButtonTextColor: "black"
property string _w_inlineButtonBorderColor: "transparent"
property string _w_appWindowBackgroundColor: "black"
property string _w_appWindowBorderColor: "#dedede"

View File

@@ -0,0 +1,181 @@
// Copyright (c) 2014-2020, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.1
import moneroComponents.Clipboard 1.0
import "../components" as MoneroComponents
Rectangle {
id: root
x: parent.width/2 - root.width/2
y: parent.height/2 - root.height/2
// TODO: implement without hardcoding sizes
width: 580
height: 400
color: MoneroComponents.Style.blackTheme ? "black" : "white"
visible: false
radius: 10
border.color: MoneroComponents.Style.blackTheme ? Qt.rgba(255, 255, 255, 0.25) : Qt.rgba(0, 0, 0, 0.25)
border.width: 1
Keys.enabled: true
Keys.onEscapePressed: {
root.close()
root.rejected()
}
KeyNavigation.tab: doneButton
Clipboard { id: clipboard }
property var transactionID;
// same signals as Dialog has
signal accepted()
signal rejected()
function open(txid) {
root.transactionID = txid;
root.visible = true;
}
function close() {
root.visible = false;
}
ColumnLayout {
spacing: 10
anchors.fill: parent
anchors.margins: 25
ColumnLayout{
Layout.topMargin: 10
Layout.leftMargin: 0
Layout.fillWidth: true
Layout.alignment: Qt.AlignCenter
MoneroComponents.Label {
fontSize: 18
fontFamily: "Arial"
horizontalAlignment: Text.AlignHCenter
text: {
if (appWindow.viewOnly){
return qsTr("Transaction file successfully saved!") + translationManager.emptyString;
} else {
return qsTr("Transaction successfully sent!") + translationManager.emptyString;
}
}
}
}
Image {
id: successImage
Layout.alignment: Qt.AlignCenter
width: 140
height: 140
source: "qrc:///images/success.png"
SequentialAnimation{
running: successImage.visible
ScaleAnimator { target: successImage; from: 0.4; to: 1.3; duration: 125}
ScaleAnimator { target: successImage; from: 1.3; to: 1; duration: 80}
}
}
MoneroComponents.LineEditMulti {
visible: !appWindow.viewOnly
Layout.leftMargin: 25
Layout.rightMargin: 25
borderDisabled: true
readOnly: true
copyButton: true
wrapMode: Text.Wrap
labelText: qsTr("Transaction ID:") + translationManager.emptyString
text: root.transactionID ? root.transactionID : "";
fontSize: 16
}
MoneroComponents.LineEditMulti {
visible: appWindow.viewOnly
Layout.leftMargin: 25
borderDisabled: true
readOnly: true
wrapMode: Text.Wrap
labelText: qsTr("Transaction file location:") + translationManager.emptyString
text: walletManager.urlToLocalPath(saveTxDialog.fileUrl)
fontSize: 16
}
// view progress / open folder / done buttons
RowLayout {
id: buttons
spacing: 70
Layout.alignment: Qt.AlignBottom | Qt.AlignHCenter
Layout.fillWidth: true
Layout.preferredHeight: 50
MoneroComponents.StandardButton {
id: viewProgressButton
visible: !appWindow.viewOnly
text: qsTr("View progress") + translationManager.emptyString;
width: 200
primary: false
KeyNavigation.tab: doneButton
onClicked: {
doSearchInHistory(root.transactionID);
root.close()
root.rejected()
}
}
MoneroComponents.StandardButton {
id: openFolderButton
visible: appWindow.viewOnly
text: qsTr("Open folder") + translationManager.emptyString;
width: 200
KeyNavigation.tab: doneButton
onClicked: {
oshelper.openContainingFolder(walletManager.urlToLocalPath(saveTxDialog.fileUrl))
}
}
MoneroComponents.StandardButton {
id: doneButton
text: qsTr("Done") + translationManager.emptyString;
width: 200
focus: root.visible
KeyNavigation.tab: appWindow.viewOnly ? openFolderButton : viewProgressButton
onClicked: {
root.close()
root.accepted()
}
}
}
}
}

View File

@@ -12,6 +12,7 @@ Text {
property bool themeTransition: true
property string themeTransitionBlackColor: ""
property string themeTransitionWhiteColor: ""
property alias tooltip: tooltip.text
font.family: MoneroComponents.Style.fontMedium.name
font.bold: false
font.pixelSize: 14
@@ -25,4 +26,10 @@ Text {
blackColor: root.themeTransitionBlackColor !== "" ? root.themeTransitionBlackColor : MoneroComponents.Style._b_defaultFontColor
whiteColor: root.themeTransitionWhiteColor !== "" ? root.themeTransitionWhiteColor : MoneroComponents.Style._w_defaultFontColor
}
MoneroComponents.Tooltip {
id: tooltip
anchors.top: parent.top
anchors.left: parent.right
}
}

View File

@@ -173,7 +173,6 @@ Rectangle {
onExited: parent.color = "transparent"
onClicked: {
MoneroComponents.Style.blackTheme = !MoneroComponents.Style.blackTheme;
persistentSettings.blackTheme = MoneroComponents.Style.blackTheme;
}
}
}
@@ -309,8 +308,8 @@ Rectangle {
width: 16
image: MoneroComponents.Style.titleBarCloseSource
color: MoneroComponents.Style.defaultFontColor
fontAwesomeFallbackIcon: FontAwesome.timesRectangle
fontAwesomeFallbackSize: 18
fontAwesomeFallbackIcon: FontAwesome.times
fontAwesomeFallbackSize: 21
fontAwesomeFallbackOpacity: MoneroComponents.Style.blackTheme ? 0.8 : 0.6
opacity: 0.75
}

92
components/Tooltip.qml Normal file
View File

@@ -0,0 +1,92 @@
// Copyright (c) 2021, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.1
import FontAwesome 1.0
import "." as MoneroComponents
Rectangle {
property alias text: tooltip.text
color: "transparent"
height: icon.height
width: icon.width
visible: text != ""
Text {
id: icon
color: MoneroComponents.Style.orange
font.family: FontAwesome.fontFamily
font.pixelSize: 10
font.styleName: "Regular"
leftPadding: 5
rightPadding: 5
text: FontAwesome.questionCircle
opacity: mouseArea.containsMouse ? 0.7 : 1
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.WhatsThisCursor
onEntered: popup.open()
onExited: popup.close()
}
}
Popup {
id: popup
background: Rectangle {
border.color: MoneroComponents.Style.buttonInlineBackgroundColor
border.width: 1
color: MoneroComponents.Style.titleBarBackgroundGradientStart
radius: 4
}
closePolicy: Popup.NoAutoClose
padding: 10
x: icon.x + icon.width
y: icon.y - height
RowLayout {
Text {
id: tooltip
Layout.maximumWidth: 350
width: contentWidth > Layout.maximumWidth ? Layout.maximumWidth : contentWidth
color: MoneroComponents.Style.defaultFontColor
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 12
textFormat: Text.RichText
wrapMode: Text.WordWrap
}
}
}
}

View File

@@ -0,0 +1,440 @@
// Copyright (c) 2014-2020, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Controls 1.4 as QtQuickControls1
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.1
import "../components" as MoneroComponents
import FontAwesome 1.0
Rectangle {
id: root
property int margins: 25
x: parent.width/2 - root.width/2
y: parent.height/2 - root.height/2
// TODO: implement without hardcoding sizes
width: 590
height: layout.height + layout.anchors.margins * 2
color: MoneroComponents.Style.blackTheme ? "black" : "white"
visible: false
radius: 10
border.color: MoneroComponents.Style.blackTheme ? Qt.rgba(255, 255, 255, 0.25) : Qt.rgba(0, 0, 0, 0.25)
border.width: 1
Keys.enabled: true
Keys.onEscapePressed: {
root.close()
root.clearFields()
root.rejected()
}
KeyNavigation.tab: confirmButton
property var recipients: []
property var transactionAmount: ""
property var transactionDescription: ""
property var transactionFee: ""
property var transactionPriority: ""
property bool sweepUnmixable: false
property alias errorText: errorText
property alias confirmButton: confirmButton
property alias backButton: backButton
property alias bottomText: bottomText
property alias bottomTextAnimation: bottomTextAnimation
state: "default"
states: [
State {
// waiting for user action, show tx details + back and confirm buttons
name: "default";
when: errorText.text == "" && bottomText.text == ""
PropertyChanges { target: errorText; visible: false }
PropertyChanges { target: txAmountText; visible: root.transactionAmount !== "(all)" || (root.transactionAmount === "(all)" && currentWallet.isHwBacked() === true) }
PropertyChanges { target: txAmountBusyIndicator; visible: !txAmountText.visible }
PropertyChanges { target: txFiatAmountText; visible: txAmountText.visible && persistentSettings.fiatPriceEnabled && root.transactionAmount !== "(all)" }
PropertyChanges { target: txDetails; visible: true }
PropertyChanges { target: bottom; visible: true }
PropertyChanges { target: bottomMessage; visible: false }
PropertyChanges { target: buttons; visible: true }
PropertyChanges { target: backButton; visible: true; primary: false }
PropertyChanges { target: confirmButton; visible: true; focus: true }
}, State {
// error message being displayed, show only back button
name: "error";
when: errorText.text !== ""
PropertyChanges { target: dialogTitle; text: "Error" }
PropertyChanges { target: errorText; visible: true }
PropertyChanges { target: txAmountText; visible: false }
PropertyChanges { target: txAmountBusyIndicator; visible: false }
PropertyChanges { target: txFiatAmountText; visible: false }
PropertyChanges { target: txDetails; visible: false }
PropertyChanges { target: bottom; visible: true }
PropertyChanges { target: bottomMessage; visible: false }
PropertyChanges { target: buttons; visible: true }
PropertyChanges { target: backButton; visible: true; primary: true; focus: true }
PropertyChanges { target: confirmButton; visible: false }
}, State {
// creating or sending transaction, show tx details and don't show any button
name: "bottomText";
when: errorText.text == "" && bottomText.text !== ""
PropertyChanges { target: errorText; visible: false }
PropertyChanges { target: txAmountText; visible: root.transactionAmount !== "(all)" || (root.transactionAmount === "(all)" && currentWallet.isHwBacked() === true) }
PropertyChanges { target: txAmountBusyIndicator; visible: !txAmountText.visible }
PropertyChanges { target: txFiatAmountText; visible: txAmountText.visible && persistentSettings.fiatPriceEnabled && root.transactionAmount !== "(all)" }
PropertyChanges { target: txDetails; visible: true }
PropertyChanges { target: bottom; visible: true }
PropertyChanges { target: bottomMessage; visible: true }
PropertyChanges { target: buttons; visible: false }
}
]
// same signals as Dialog has
signal accepted()
signal rejected()
function open() {
root.visible = true;
//clean previous error message
errorText.text = "";
}
function close() {
root.visible = false;
}
function clearFields() {
root.recipients = [];
root.transactionAmount = "";
root.transactionDescription = "";
root.transactionFee = "";
root.transactionPriority = "";
root.sweepUnmixable = false;
}
function showFiatConversion(valueXMR) {
const fiatFee = fiatApiConvertToFiat(valueXMR);
return "%1 %2".arg(fiatFee < 0.01 ? "<0.01" : "~" + fiatFee).arg(fiatApiCurrencySymbol());
}
ColumnLayout {
id: layout
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.margins: parent.margins
spacing: 10
RowLayout {
Layout.topMargin: 10
Layout.fillWidth: true
MoneroComponents.Label {
id: dialogTitle
Layout.fillWidth: true
fontSize: 18
fontFamily: "Arial"
horizontalAlignment: Text.AlignHCenter
text: {
if (appWindow.viewOnly) {
return qsTr("Create transaction file") + translationManager.emptyString;
} else if (root.sweepUnmixable) {
return qsTr("Sweep unmixable outputs") + translationManager.emptyString;
} else {
return qsTr("Confirm send") + translationManager.emptyString;
}
}
}
}
Text {
id: errorText
Layout.fillWidth: true
Layout.fillHeight: true
color: MoneroComponents.Style.defaultFontColor
wrapMode: Text.Wrap
font.pixelSize: 15
}
ColumnLayout {
spacing: 0
Layout.fillWidth: true
Layout.preferredHeight: 71
QtQuickControls1.BusyIndicator {
id: txAmountBusyIndicator
Layout.fillHeight: true
Layout.fillWidth: true
running: root.transactionAmount == "(all)"
}
Text {
id: txAmountText
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
font.pixelSize: root.transactionAmount == "(all)" && currentWallet.isHwBacked() === true ? 32 : 42
color: MoneroComponents.Style.defaultFontColor
text: {
if (root.transactionAmount == "(all)" && currentWallet.isHwBacked() === true) {
return qsTr("All unlocked balance") + translationManager.emptyString;
} else {
return root.transactionAmount + " XMR " + translationManager.emptyString;
}
}
}
Text {
id: txFiatAmountText
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 20
color: MoneroComponents.Style.buttonSecondaryTextColor
text: showFiatConversion(transactionAmount) + translationManager.emptyString
}
}
GridLayout {
columns: 2
id: txDetails
Layout.fillWidth: true
columnSpacing: 15
rowSpacing: 16
Text {
color: MoneroComponents.Style.dimmedFontColor
text: qsTr("From") + ":" + translationManager.emptyString
font.pixelSize: 15
}
ColumnLayout {
Layout.fillWidth: true
spacing: 16
Text {
Layout.fillWidth: true
font.pixelSize: 15
color: MoneroComponents.Style.defaultFontColor
text: {
if (currentWallet) {
var walletTitle = function() {
if (currentWallet.isLedger()) {
return "Ledger";
} else if (currentWallet.isTrezor()) {
return "Trezor";
} else {
return qsTr("My wallet");
}
}
var walletName = appWindow.walletName;
if (appWindow.currentWallet.numSubaddressAccounts() > 1) {
var currentSubaddressAccount = currentWallet.currentSubaddressAccount;
var currentAccountLabel = currentWallet.getSubaddressLabel(currentWallet.currentSubaddressAccount, 0);
return walletTitle() + " (" + walletName + ")" + "<br>" + qsTr("Account #") + currentSubaddressAccount + (currentAccountLabel !== "" ? " (" + currentAccountLabel + ")" : "") + translationManager.emptyString;
} else {
return walletTitle() + " (" + walletName + ")" + translationManager.emptyString;
}
} else {
return "";
}
}
}
}
Text {
font.pixelSize: 15
color: MoneroComponents.Style.dimmedFontColor
text: qsTr("To") + ":" + translationManager.emptyString
}
Flickable {
id: flickable
property int linesInMultipleRecipientsMode: 7
Layout.fillWidth: true
Layout.preferredHeight: recipients.length > 1
? linesInMultipleRecipientsMode * (recipientsArea.contentHeight / recipientsArea.lineCount)
: recipientsArea.contentHeight
boundsBehavior: isMac ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds
clip: true
TextArea.flickable: TextArea {
id : recipientsArea
color: MoneroComponents.Style.defaultFontColor
font.family: MoneroComponents.Style.fontMonoRegular.name
font.pixelSize: 14
topPadding: 0
bottomPadding: 0
leftPadding: 0
textMargin: 0
readOnly: true
selectByKeyboard: true
selectByMouse: true
selectionColor: MoneroComponents.Style.textSelectionColor
textFormat: TextEdit.RichText
wrapMode: TextEdit.Wrap
text: {
return recipients.map(function (recipient, index) {
var addressBookName = null;
if (currentWallet) {
addressBookName = currentWallet.addressBook.getDescription(recipient.address);
}
var title;
if (addressBookName) {
title = FontAwesome.addressBook + " " + addressBookName;
} else {
title = qsTr("Monero address") + translationManager.emptyString;
}
if (recipients.length > 1) {
title = "%1. %2 - %3 XMR".arg(index + 1).arg(title).arg(recipient.amount);
if (persistentSettings.fiatPriceEnabled) {
title += " (%1)".arg(showFiatConversion(recipient.amount));
}
}
const spacedaddress = recipient.address.match(/.{1,4}/g).join(' ');
return title + "<br>" + spacedaddress;
}).join("<br><br>");
}
}
ScrollBar.vertical: ScrollBar {
policy: recipientsArea.contentHeight > flickable.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
}
}
Text {
color: MoneroComponents.Style.dimmedFontColor
text: qsTr("Fee") + ":" + translationManager.emptyString
font.pixelSize: 15
}
RowLayout {
Layout.fillWidth: true
spacing: 16
Text {
color: MoneroComponents.Style.defaultFontColor
font.pixelSize: 15
text: {
if (currentWallet) {
if (!root.transactionFee) {
if (currentWallet.isHwBacked() === true) {
return qsTr("See on device") + translationManager.emptyString;
} else {
return qsTr("Calculating fee") + "..." + translationManager.emptyString;
}
} else {
return root.transactionFee + " XMR"
}
} else {
return "";
}
}
}
Text {
Layout.fillWidth: true
Layout.leftMargin: 8
color: MoneroComponents.Style.buttonSecondaryTextColor
visible: persistentSettings.fiatPriceEnabled && root.transactionFee
font.pixelSize: 15
text: showFiatConversion(root.transactionFee)
}
}
}
ColumnLayout {
id: bottom
Layout.alignment: Qt.AlignBottom | Qt.AlignHCenter
Layout.fillWidth: true
RowLayout {
id: bottomMessage
Layout.fillWidth: true
Layout.preferredHeight: 50
QtQuickControls1.BusyIndicator {
visible: !bottomTextAnimation.running
running: !bottomTextAnimation.running
scale: .5
}
Text {
id: bottomText
color: MoneroComponents.Style.defaultFontColor
text: ""
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.Wrap
font.pixelSize: 17
opacity: 1
SequentialAnimation{
id:bottomTextAnimation
running: false
loops: Animation.Infinite
alwaysRunToEnd: true
NumberAnimation { target: bottomText; property: "opacity"; to: 0; duration: 500}
NumberAnimation { target: bottomText; property: "opacity"; to: 1; duration: 500}
}
}
}
RowLayout {
id: buttons
spacing: 70
Layout.fillWidth: true
Layout.preferredHeight: 50
MoneroComponents.StandardButton {
id: backButton
text: qsTr("Back") + translationManager.emptyString;
width: 200
primary: false
KeyNavigation.tab: confirmButton
onClicked: {
root.close()
root.clearFields()
root.rejected()
}
}
MoneroComponents.StandardButton {
id: confirmButton
text: qsTr("Confirm") + translationManager.emptyString;
rightIcon: "qrc:///images/rightArrow.png"
width: 200
KeyNavigation.tab: backButton
onClicked: {
root.close()
root.accepted()
}
}
}
}
}
}

204
components/UpdateDialog.qml Normal file
View File

@@ -0,0 +1,204 @@
// Copyright (c) 2020, The Monero Project
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification, are
// permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of
// conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
// of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be
// used to endorse or promote products derived from this software without specific
// prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.1
import moneroComponents.Downloader 1.0
import "../components" as MoneroComponents
Popup {
id: updateDialog
property bool active: false
property bool allowed: true
property string error: ""
property string filename: ""
property string hash: ""
property double progress: url && downloader.total > 0 ? downloader.loaded * 100 / downloader.total : 0
property string url: ""
property bool valid: false
property string version: ""
background: Rectangle {
border.color: MoneroComponents.Style.appWindowBorderColor
border.width: 1
color: MoneroComponents.Style.middlePanelBackgroundColor
}
closePolicy: Popup.NoAutoClose
padding: 20
visible: active && allowed
function show(version, url, hash) {
updateDialog.error = "";
updateDialog.hash = hash;
updateDialog.url = url;
updateDialog.valid = false;
updateDialog.version = version;
updateDialog.active = true;
}
ColumnLayout {
id: mainLayout
spacing: updateDialog.padding
Text {
color: MoneroComponents.Style.defaultFontColor
font.bold: true
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 18
text: qsTr("New Monero version v%1 is available.").arg(updateDialog.version)
}
Text {
id: errorText
color: "red"
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 18
text: updateDialog.error
visible: text
}
Text {
id: statusText
color: updateDialog.valid ? MoneroComponents.Style.green : MoneroComponents.Style.defaultFontColor
font.family: MoneroComponents.Style.fontRegular.name
font.pixelSize: 18
visible: !errorText.visible
text: {
if (!updateDialog.url) {
return qsTr("Please visit getmonero.org for details") + translationManager.emptyString;
}
if (downloader.active) {
return "%1 (%2%)"
.arg(qsTr("Downloading"))
.arg(updateDialog.progress.toFixed(1))
+ translationManager.emptyString;
}
if (updateDialog.valid) {
return qsTr("Update downloaded, signature verified") + translationManager.emptyString;
}
return qsTr("Do you want to download and verify new version?") + translationManager.emptyString;
}
}
Rectangle {
id: progressBar
color: MoneroComponents.Style.lightGreyFontColor
height: 3
Layout.fillWidth: true
visible: updateDialog.valid || downloader.active
Rectangle {
color: MoneroComponents.Style.buttonBackgroundColor
height: parent.height
width: parent.width * updateDialog.progress / 100
}
}
RowLayout {
Layout.alignment: Qt.AlignRight
spacing: parent.spacing
MoneroComponents.StandardButton {
id: cancelButton
fontBold: false
primary: !updateDialog.url
text: {
if (!updateDialog.url) {
return qsTr("Ok") + translationManager.emptyString;
}
if (updateDialog.valid || downloader.active || errorText.visible) {
return qsTr("Cancel") + translationManager.emptyString;
}
return qsTr("Download later") + translationManager.emptyString;
}
onClicked: {
downloader.cancel();
updateDialog.active = false;
}
}
MoneroComponents.StandardButton {
id: downloadButton
KeyNavigation.tab: cancelButton
fontBold: false
text: (updateDialog.error ? qsTr("Retry") : qsTr("Download")) + translationManager.emptyString
visible: updateDialog.url && !updateDialog.valid && !downloader.active
onClicked: {
updateDialog.error = "";
updateDialog.filename = updateDialog.url.replace(/^.*\//, '');
const downloadingStarted = downloader.get(updateDialog.url, updateDialog.hash, function(error) {
if (error) {
console.error("Download failed", error);
updateDialog.error = qsTr("Download failed") + translationManager.emptyString;
} else {
updateDialog.valid = true;
}
});
if (!downloadingStarted) {
updateDialog.error = qsTr("Failed to start download") + translationManager.emptyString;
}
}
}
MoneroComponents.StandardButton {
id: saveButton
KeyNavigation.tab: cancelButton
fontBold: false
onClicked: {
const fullPath = oshelper.openSaveFileDialog(
qsTr("Save as") + translationManager.emptyString,
oshelper.downloadLocation(),
updateDialog.filename);
if (!fullPath) {
return;
}
if (downloader.saveToFile(fullPath)) {
cancelButton.clicked();
oshelper.openContainingFolder(fullPath);
} else {
updateDialog.error = qsTr("Save operation failed") + translationManager.emptyString;
}
}
text: qsTr("Save to file") + translationManager.emptyString
visible: updateDialog.valid
}
}
}
Downloader {
id: downloader
proxyAddress: persistentSettings.getProxyAddress()
}
}

View File

@@ -1,27 +0,0 @@
android-no-sdk {
target.path = /data/user/qt
export(target.path)
INSTALLS += target
} else:android {
x86 {
target.path = /libs/x86
} else: armeabi-v7a {
target.path = /libs/armeabi-v7a
} else {
target.path = /libs/armeabi
}
export(target.path)
INSTALLS += target
} else:unix {
isEmpty(target.path) {
qnx {
target.path = /tmp/$${TARGET}/bin
} else {
target.path = /opt/$${TARGET}/bin
}
export(target.path)
}
INSTALLS += target
}
export(INSTALLS)

7
external/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,7 @@
add_library(quirc STATIC
quirc/lib/decode.c
quirc/lib/identify.c
quirc/lib/quirc.c
quirc/lib/version_db.c
)
target_include_directories(quirc PUBLIC quirc/lib)

1
external/quirc vendored Submodule

Submodule external/quirc added at 7e7ab596e4

View File

@@ -149,6 +149,7 @@ Object {
property string caretUp : "\uf0d8"
property string cartArrowDown : "\uf218"
property string cartPlus : "\uf217"
property string cashRegister: "\uf788"
property string cc : "\uf20a"
property string ccAmex : "\uf1f3"
property string ccDinersClub : "\uf24c"
@@ -402,6 +403,7 @@ Object {
property string inbox : "\uf01c"
property string indent : "\uf03c"
property string industry : "\uf275"
property string infinity : "\uf534"
property string info : "\uf129"
property string infoCircle : "\uf05a"
property string inr : "\uf156"

View File

@@ -1,259 +0,0 @@
#!/bin/bash
MONERO_URL=https://github.com/monero-project/monero.git
MONERO_BRANCH=master
pushd $(pwd)
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source $ROOT_DIR/utils.sh
INSTALL_DIR=$ROOT_DIR/wallet
MONERO_DIR=$ROOT_DIR/monero
BUILD_LIBWALLET=false
# init and update monero submodule
if [ ! -d $MONERO_DIR/src ]; then
git submodule init monero
fi
git submodule update --remote
git -C $MONERO_DIR fetch
git -C $MONERO_DIR checkout v0.15.0.1
# get monero core tag
pushd $MONERO_DIR
get_tag
popd
# create local monero branch
git -C $MONERO_DIR checkout -B $VERSIONTAG
# Merge monero PR dependencies
# Workaround for git username requirements
# Save current user settings and revert back when we are done with merging PR's
OLD_GIT_USER=$(git -C $MONERO_DIR config --local user.name)
OLD_GIT_EMAIL=$(git -C $MONERO_DIR config --local user.email)
git -C $MONERO_DIR config user.name "Monero GUI"
git -C $MONERO_DIR config user.email "gui@monero.local"
# check for PR requirements in most recent commit message (i.e requires #xxxx)
for PR in $(git log --format=%B -n 1 | grep -io "requires #[0-9]*" | sed 's/[^0-9]*//g'); do
echo "Merging monero push request #$PR"
# fetch pull request and merge
git -C $MONERO_DIR fetch origin pull/$PR/head:PR-$PR
git -C $MONERO_DIR merge --quiet PR-$PR -m "Merge monero PR #$PR"
BUILD_LIBWALLET=true
done
# revert back to old git config
$(git -C $MONERO_DIR config user.name "$OLD_GIT_USER")
$(git -C $MONERO_DIR config user.email "$OLD_GIT_EMAIL")
git -C $MONERO_DIR submodule init
git -C $MONERO_DIR submodule update
# Build libwallet if it doesnt exist
if [ ! -f $MONERO_DIR/lib/libwallet_merged.a ]; then
echo "libwallet_merged.a not found - Building libwallet"
BUILD_LIBWALLET=true
# Build libwallet if no previous version file exists
elif [ ! -f $MONERO_DIR/version.sh ]; then
echo "monero/version.h not found - Building libwallet"
BUILD_LIBWALLET=true
## Compare previously built version with submodule + merged PR's version.
else
source $MONERO_DIR/version.sh
# compare submodule version with latest build
pushd "$MONERO_DIR"
get_tag
popd
echo "latest libwallet version: $GUI_MONERO_VERSION"
echo "Installed libwallet version: $VERSIONTAG"
# check if recent
if [ "$VERSIONTAG" != "$GUI_MONERO_VERSION" ]; then
echo "Building new libwallet version $GUI_MONERO_VERSION"
BUILD_LIBWALLET=true
else
echo "latest libwallet ($GUI_MONERO_VERSION) is already built. Remove monero/lib/libwallet_merged.a to force rebuild"
fi
fi
if [ "$BUILD_LIBWALLET" != true ]; then
exit 0
fi
echo "GUI_MONERO_VERSION=\"$VERSIONTAG\"" > $MONERO_DIR/version.sh
## Continue building libwallet
# default build type
BUILD_TYPE=$1
if [ -z $BUILD_TYPE ]; then
BUILD_TYPE=release
fi
BUILD_TREZOR_FLAGS=" -DUSE_DEVICE_TREZOR=ON"
if [ "$BUILD_TREZOR" == false ]; then
BUILD_TREZOR_FLAGS=" -DUSE_DEVICE_TREZOR=OFF"
fi
BUILD_TREZOR_FLAGS=" -DUSE_DEVICE_TREZOR_UDP_RELEASE=ON ${BUILD_TREZOR_FLAGS}"
STATIC=false
ANDROID=false
if [ "$BUILD_TYPE" == "release" ]; then
echo "Building libwallet release"
CMAKE_BUILD_TYPE=Release
elif [ "$BUILD_TYPE" == "release-static" ]; then
echo "Building libwallet release-static"
CMAKE_BUILD_TYPE=Release
STATIC=true
elif [ "$BUILD_TYPE" == "release-android" ]; then
echo "Building libwallet release-static for ANDROID"
CMAKE_BUILD_TYPE=Release
STATIC=true
ANDROID=true
elif [ "$BUILD_TYPE" == "debug-android" ]; then
echo "Building libwallet debug-static for ANDROID"
CMAKE_BUILD_TYPE=Debug
STATIC=true
ANDROID=true
elif [ "$BUILD_TYPE" == "debug" ]; then
echo "Building libwallet debug"
CMAKE_BUILD_TYPE=Debug
STATIC=true
else
echo "Valid build types are release, release-static, release-android, debug-android and debug"
exit 1;
fi
echo "cleaning up existing monero build dir, libs and includes"
rm -fr $MONERO_DIR/build
rm -fr $MONERO_DIR/lib
rm -fr $MONERO_DIR/include
rm -fr $MONERO_DIR/bin
mkdir -p $MONERO_DIR/build/$BUILD_TYPE
pushd $MONERO_DIR/build/$BUILD_TYPE
# reusing function from "utils.sh"
platform=$(get_platform)
# default make executable
make_exec="make"
## OS X
if [ "$platform" == "darwin" ]; then
echo "Configuring build for MacOS.."
if [ "$STATIC" == true ]; then
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D BUILD_TAG="mac-x64" -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
else
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D BUILD_TAG="mac-x64" -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
fi
## LINUX 64
elif [ "$platform" == "linux64" ]; then
echo "Configuring build for Linux x64"
if [ "$ANDROID" == true ]; then
echo "Configuring build for Android on Linux host"
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D ARCH="armv7-a" -D ANDROID=true -D BUILD_GUI_DEPS=ON -D USE_LTO=OFF -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
elif [ "$STATIC" == true ]; then
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D BUILD_TAG="linux-x64" -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
else
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D BUILD_TAG="linux-x64" -D BUILD_GUI_DEPS=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
fi
## LINUX 32
elif [ "$platform" == "linux32" ]; then
echo "Configuring build for Linux i686"
if [ "$STATIC" == true ]; then
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
else
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D BUILD_GUI_DEPS=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
fi
## LINUX ARMv7
elif [ "$platform" == "linuxarmv7" ]; then
echo "Configuring build for Linux armv7"
if [ "$STATIC" == true ]; then
cmake -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D STATIC=ON -D BUILD_64=OFF -D BUILD_GUI_DEPS=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
else
cmake -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D -D BUILD_64=OFF -D BUILD_GUI_DEPS=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
fi
## LINUX other
elif [ "$platform" == "linux" ]; then
echo "Configuring build for Linux general"
if [ "$STATIC" == true ]; then
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
else
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D BUILD_GUI_DEPS=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
fi
## Windows 64
## Windows is always static to work outside msys2
elif [ "$platform" == "mingw64" ]; then
# Do something under Windows NT platform
echo "Configuring build for MINGW64.."
BOOST_ROOT=/mingw64/boost
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D BOOST_ROOT="$BOOST_ROOT" -D ARCH="x86-64" -D BUILD_TAG="win-x64" -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" -G "MSYS Makefiles" -D CMAKE_TOOLCHAIN_FILE=../../cmake/64-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys64 ../..
## Windows 32
elif [ "$platform" == "mingw32" ]; then
# Do something under Windows NT platform
echo "Configuring build for MINGW32.."
BOOST_ROOT=/mingw32/boost
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D Boost_DEBUG=ON -D BOOST_ROOT="$BOOST_ROOT" -D ARCH="i686" -D BUILD_64=OFF -D BUILD_GUI_DEPS=ON -D INSTALL_VENDORED_LIBUNBOUND=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" -G "MSYS Makefiles" -D CMAKE_TOOLCHAIN_FILE=../../cmake/32-bit-toolchain.cmake -D MSYS2_FOLDER=c:/msys32 ../..
make_exec="mingw32-make"
else
echo "Unknown platform, configuring general build"
if [ "$STATIC" == true ]; then
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D STATIC=ON -D BUILD_GUI_DEPS=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
else
cmake -D CMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -D BUILD_GUI_DEPS=ON $BUILD_TREZOR_FLAGS -D CMAKE_INSTALL_PREFIX="$MONERO_DIR" ../..
fi
fi
# set CPU core count
# thanks to SO: http://stackoverflow.com/a/20283965/4118915
if test -z "$CPU_CORE_COUNT"; then
CPU_CORE_COUNT=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
fi
# Build libwallet_merged
pushd $MONERO_DIR/build/$BUILD_TYPE/src/wallet
eval $make_exec version -C ../..
eval $make_exec -j$CPU_CORE_COUNT
eval $make_exec install -j$CPU_CORE_COUNT
popd
# Build monerod
# win32 need to build daemon manually with msys2 toolchain
if [ "$platform" != "mingw32" ] && [ "$ANDROID" != true ]; then
pushd $MONERO_DIR/build/$BUILD_TYPE/src/daemon
eval make -j$CPU_CORE_COUNT
eval make install -j$CPU_CORE_COUNT
popd
fi
# build install epee
eval make -C $MONERO_DIR/build/$BUILD_TYPE/contrib/epee all install
# install easylogging
eval make -C $MONERO_DIR/build/$BUILD_TYPE/external/easylogging++ all install
# install lmdb
eval make -C $MONERO_DIR/build/$BUILD_TYPE/external/db_drivers/liblmdb all install
# Install libunbound
if [ -d $MONERO_DIR/build/$BUILD_TYPE/external/unbound ]; then
echo "Installing libunbound..."
pushd $MONERO_DIR/build/$BUILD_TYPE/external/unbound
# no need to make, it was already built as dependency for libwallet
# make -j$CPU_CORE_COUNT
$make_exec install -j$CPU_CORE_COUNT
popd
fi
# install randomx
eval make -C $MONERO_DIR/build/$BUILD_TYPE/external/randomx all install
popd

BIN
images/busy-indicator.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

2
images/monero-vector.svg Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" viewBox="0 0 6000 6000" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><defs><clipPath id="a"><path d="m0 4500h4500v-4500h-4500z"/></clipPath></defs><g transform="matrix(1.3333 0 0 -1.3333 0 6e3)"><g clip-path="url(#a)"><g transform="translate(4128 2250.2)"><path d="m0 0c0-1037.2-840.79-1878.1-1878.1-1878.1-1037.2 0-1878 840.88-1878 1878.1 0 1037.3 840.8 1878.1 1878 1878.1 1037.3 0 1878.1-840.79 1878.1-1878.1" fill="#fff"/></g><g transform="translate(2250 4128.2)"><path d="m0 0c-1036.9 0-1879.1-842.06-1877.8-1878 0.262-207.26 33.308-406.63 95.342-593.12h561.88v1579.9l1220.6-1220.6 1220.6 1220.6v-1579.9h561.96c62.117 186.48 95.008 385.85 95.369 593.12 1.809 1037-840.89 1877.8-1877.9 1877.8z" fill="#f36e36"/></g><g transform="translate(1969.3 1735.8)"><path d="m0 0-532.67 532.7v-994.14h-407.26l-384.29-0.07c329.63-540.8 925.35-902.56 1604.9-902.56 679.54 0 1275.3 361.85 1605 902.65l-384.44-0.013h-407.27v994.14l-813.3-813.31-280.62 280.61z" fill="#575757"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 B

BIN
images/success.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
images/success@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="18" viewBox="0 0 10 18">
<g fill="none" fill-rule="evenodd" opacity="1">
<path fill="none" d="M-13-9h36v36h-36z" opacity="1"/>
<g fill="#000" fill-rule="nonzero">
<path d="M5 0C3.75 0 2.571.468 1.643 1.296A5.057 5.057 0 0 0 0 5.04c0 .396.321.72.714.72h.715a.72.72 0 0 0 .714-.72c0-.828.357-1.584.964-2.16A2.823 2.823 0 0 1 5 2.16c.107 0 .214 0 .321.036 1.322.144 2.358 1.224 2.5 2.52.143 1.188-.464 2.304-1.5 2.88-1.5.792-2.428 2.304-2.428 3.96v2.124c0 .396.321.72.714.72h.714a.72.72 0 0 0 .715-.72v-2.124c0-.828.5-1.62 1.285-2.052A4.98 4.98 0 0 0 9.93 4.5C9.714 2.16 7.857.288 5.57.036 5.393 0 5.18 0 5 0zM5.714 18H4.286a.358.358 0 0 1-.357-.36V16.2c0-.2.16-.36.357-.36h1.428c.198 0 .357.16.357.36v1.44c0 .2-.16.36-.357.36z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 848 B

View File

@@ -1,4 +1,4 @@
Copyright (c) 2014-2019, The Monero Project
Copyright (c) 2014-2020, The Monero Project
All rights reserved.

View File

@@ -1,5 +1,5 @@
; Monero Carbon Chamaeleon GUI Wallet Installer for Windows
; Copyright (c) 2017-2019, The Monero Project
; Monero Oxygen Orion GUI Wallet Installer for Windows
; Copyright (c) 2017-2020, The Monero Project
; See LICENSE
#define GuiVersion GetFileVersion("bin\monero-wallet-gui.exe")
@@ -11,7 +11,7 @@ AppName=Monero GUI Wallet
AppVersion={#GuiVersion}
VersionInfoVersion={#GuiVersion}
DefaultDirName={pf}\Monero GUI Wallet
DefaultDirName={commonpf}\Monero GUI Wallet
DefaultGroupName=Monero GUI Wallet
UninstallDisplayIcon={app}\monero-wallet-gui.exe
PrivilegesRequired=admin
@@ -62,7 +62,6 @@ Name: "en"; MessagesFile: "compiler:Default.isl"
; .exe/.dll file possibly with version info).
;
; This is far more robust than relying on version info or on file dates (flag "comparetimestamp").
; As of version 0.15.0.0, the Monero .exe files do not carry version info anyway in their .exe headers.
; The only small drawback seems to be somewhat longer update times because each and every file is
; copied again, even if already present with correct file date and identical content.
;
@@ -71,17 +70,18 @@ Name: "en"; MessagesFile: "compiler:Default.isl"
Source: {#file AddBackslash(SourcePath) + "ReadMe.htm"}; DestDir: "{app}"; DestName: "ReadMe.htm"; Flags: ignoreversion
Source: "FinishImage.bmp"; Flags: dontcopy
Source: "LICENSE"; DestDir: "{app}"; Flags: ignoreversion
; Monero GUI wallet exe and guide
Source: "bin\monero-wallet-gui.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-gui-wallet-guide.pdf"; DestDir: "{app}"; Flags: ignoreversion
; Monero CLI wallet
Source: "bin\monero-wallet-cli.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-gen-trusted-multisig.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-wallet-cli.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-gen-trusted-multisig.exe"; DestDir: "{app}"; Flags: ignoreversion
; Monero wallet RPC interface implementation
Source: "bin\monero-wallet-rpc.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-wallet-rpc.exe"; DestDir: "{app}"; Flags: ignoreversion
; Monero daemon
Source: "bin\monerod.exe"; DestDir: "{app}"; Flags: ignoreversion
@@ -90,16 +90,17 @@ Source: "bin\monerod.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "monero-daemon.bat"; DestDir: "{app}"; Flags: ignoreversion;
; Monero blockchain utilities
Source: "bin\monero-blockchain-export.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-import.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-mark-spent-outputs.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-usage.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-import.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-ancestry.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-depth.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-prune-known-spent-data.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-prune.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\monero-blockchain-stats.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-export.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-import.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-mark-spent-outputs.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-usage.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-import.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-ancestry.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-depth.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-prune-known-spent-data.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-prune.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-blockchain-stats.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "bin\extras\monero-gen-ssl-cert.exe"; DestDir: "{app}"; Flags: ignoreversion
; Qt Quick 2D Renderer fallback for systems / environments with "low-level graphics" i.e. without 3D support
Source: "bin\start-low-graphics-mode.bat"; DestDir: "{app}"; Flags: ignoreversion
@@ -166,6 +167,8 @@ Type: files; Name: "{app}\libssp-0.dll"
Type: files; Name: "{app}\libhidapi-0.dll"
Type: files; Name: "{app}\libeay32.dll"
Type: files; Name: "{app}\ssleay32.dll"
Type: files; Name: "{app}\start-high-dpi.bat"
Type: files; Name: "{group}\Utilities\x (Check Blockchain Folder).lnk"
[Tasks]
@@ -201,7 +204,7 @@ begin
// Additional wizard page for entering a special blockchain location
blockChainDefaultDir := ExpandConstant('{commonappdata}\bitmonero');
s := 'The default folder to store the Monero blockchain is ' + blockChainDefaultDir;
s := s + '. As this will need more than 74 GB of free space, you may want to use a folder on a different drive.';
s := s + '. As this will need more than 90 GB of free space, you may want to use a folder on a different drive.';
s := s + ' If yes, specify that folder here.';
BlockChainDirPage := CreateInputDirPage(wpSelectDir,
@@ -333,7 +336,7 @@ Name: "{group}\Utilities\Textual (CLI) Wallet"; Filename: "{app}\monero-wallet-c
; Icons for troubleshooting problems / testing / debugging
; To show that they are in some way different (not for everyday use), make them visually different
; from the others by text, and make them sort at the end by the help of "x" in front
Name: "{group}\Utilities\x (Check Blockchain Folder)"; Filename: "{win}\Explorer.exe"; Parameters: {code:BlockChainDir}
Name: "{group}\Utilities\x (Check Default Blockchain Folder)"; Filename: "{win}\Explorer.exe"; Parameters: {code:BlockChainDir}
Name: "{group}\Utilities\x (Check Daemon Log)"; Filename: "Notepad"; Parameters: {code:DaemonLog}
Name: "{group}\Utilities\x (Check Default Wallet Folder)"; Filename: "{win}\Explorer.exe"; Parameters: """{userdocs}\Monero\wallets"""
Name: "{group}\Utilities\x (Check GUI Wallet Log)"; Filename: "Notepad"; Parameters: """{userappdata}\monero-wallet-gui\monero-wallet-gui.log"""

View File

@@ -1,12 +1,12 @@
# Monero GUI Wallet Windows Installer #
Copyright (c) 2017-2019, The Monero Project
Copyright (c) 2017-2020, The Monero Project
## Introduction ##
This is a *Inno Setup* script `Monero.iss` plus some related files
that allows you to build a standalone Windows installer (.exe) for
the GUI wallet that comes with the Carbon Chamaeleon release of Monero.
the GUI wallet that comes with the Oxygen Orion release of Monero.
This turns the GUI wallet into a more or less standard Windows program,
by default installed into a subdirectory of `C:\Program Files`, a
@@ -18,7 +18,7 @@ Monero.
As the setup script in file [Monero.iss](Monero.iss) has to list many
files and directories of the GUI wallet package to install by name,
this version of the script only works with exactly the GUI wallet
for Monero release *Carbon Chamaeleon* that you find on
for Monero release *Oxygen Orion* that you find on
[the official download page](https://getmonero.org/downloads/).
It should however be easy to modify the script for future
@@ -32,15 +32,15 @@ See [LICENSE](LICENSE).
You can only build on Windows, and the result is always a
Windows .exe file that can act as a standalone installer for the
Carbon Chamaeleon GUI wallet.
GUI wallet.
Note that the installer build process is now reproducible / deterministic. For details check the file [Deterministic.md](Deterministic.md).
The build steps in detail:
1. Install *Inno Setup*. You can get it from [here](http://www.jrsoftware.org/isdl.php)
2. Get the Inno Setup script plus related files by cloning the whole [monero-gui GitHub repository](https://github.com/monero-project/monero-gui); you will only need the files in the installer directory `installers\windows` however. Depending on development state, additionally instead of simply using `master` you may have to checkout a specific branch, like `release-v0.15`.
3. The setup script is written to take the GUI wallet files from a subdirectory named `bin`; so create `installers\windows\bin`, get the zip file of the GUI wallet from [here](https://getmonero.org/downloads/), unpack it somewhere, and copy all the files and subdirectories in the single subdirectory there (currently named `monero-gui-0.15.0.0`) to this `bin` subdirectory
2. Get the Inno Setup script plus related files by cloning the whole [monero-gui GitHub repository](https://github.com/monero-project/monero-gui); you will only need the files in the installer directory `installers\windows` however. Depending on development state, additionally instead of simply using `master` you may have to checkout a specific branch, like `release-v0.17`.
3. The setup script is written to take the GUI wallet files from a subdirectory named `bin`; so create `installers\windows\bin`, get the zip file of the GUI wallet from [here](https://getmonero.org/downloads/), unpack it somewhere, and copy all the files and subdirectories in the single subdirectory there (currently named `monero-gui-0.17.0.0`) to this `bin` subdirectory
4. Start Inno Setup, load `Monero.iss` and compile it
5. The result i.e. the finished installer will be the file `mysetup.exe` in the `installers\windows\Output` subdirectory

View File

@@ -1,12 +1,12 @@
<html>
<head>
<title>Monero Carbon Chamaeleon GUI Wallet</title>
<title>Monero Oxygen Orion GUI Wallet</title>
</head>
<body style="font-family: Arial, Helvetica, sans-serif">
<h1>Monero Carbon Chamaeleon GUI Wallet</h1>
<h1>Monero Oxygen Orion GUI Wallet</h1>
<p>Copyright (c) 2014-2019, The Monero Project</p>
<p>Copyright (c) 2014-2020, The Monero Project</p>
<h2>Preface</h2>
@@ -22,7 +22,7 @@
<h2>Content of the Package</h2>
<p>You just installed the <i>Monero GUI wallet</i> for Windows, release Carbon Chamaeleon, version {#GuiVersion}.
<p>You just installed the <i>Monero GUI wallet</i> for Windows, release Oxygen Orion, version {#GuiVersion}.
The wallet enables you to send and receive Moneroj in a secure and very private way.
</p>
@@ -60,7 +60,7 @@
provides the most security and privacy possible for you.</p>
<p>However if your Internet access makes it difficult to run a full node, or if you have simply no room to store
the blockchain locally (somewhat over 74 GB in November 2019, and of course growing), you can compromise and try to connect
the blockchain locally (about 90 GB in May 2020, and of course growing), you can compromise and try to connect
to a remote node. One way of finding such a node is checking
<a href="https://moneroworld.com/#nodes">this page</a>.
</p>
@@ -104,9 +104,9 @@
<p>The Monero software and especially the GUI wallet are "work in progress", and sometimes things go wrong.</p>
<p>Please note that despite any technical problems that you may encounter your moneroj are almost always safe: You may
not be able to move them or you even may not see how many you currently have, but you most probably won't loose any.
But do remember that the seed needed to re-create the wallet <b>is</b> critical, however: <b>Never loose your
<p>Please note that despite any technical problems that you may encounter your Moneroj are almost always safe: You may
not be able to move them or you even may not see how many you currently have, but you most probably won't lose any.
But do remember that the seed needed to re-create the wallet <b>is</b> critical, however: <b>Never lose your
seed!</b></p>
<p>In the <i>Utilities</i> sub-folder there are several more icons that may help you to solve problems.

Some files were not shown because too many files have changed in this diff Show More