Compare commits
544 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ad1546f360 | |||
| c911d0166e | |||
| 4f5d81c88b | |||
| d2a96ccce9 | |||
| 426d9c32de | |||
| 60ad417b9e | |||
| 4ea34bb60d | |||
| 92bdbe8192 | |||
| 93b9b26d1d | |||
| 8b7ee2d8f0 | |||
| 099fc8e394 | |||
| 8c7c1dc9d7 | |||
| 6cfbb8559b | |||
| 8953c8c5f2 | |||
| 4df7f89c84 | |||
| e9c0de9e26 | |||
| 0371a26a56 | |||
| bc6e61c66c | |||
| 6c4c702722 | |||
| f77f96f5a9 | |||
| 53e4bde4c0 | |||
| 651a1a3169 | |||
| 91abd03fd3 | |||
| ab46af6cf9 | |||
| d08422420b | |||
| 0d801f5159 | |||
| f102dad609 | |||
| c6246962d8 | |||
|
|
f0b1b8cd08 | ||
|
|
674f69f131 | ||
|
|
5d5ac6a371 | ||
|
|
0c3e2301ed | ||
|
|
29e831ccec | ||
|
|
df291702df | ||
|
|
ef555a3d72 | ||
|
|
51a43341c5 | ||
|
|
ecec7bc4b6 | ||
|
|
d809370d8a | ||
|
|
cb3d693a26 | ||
|
|
e956b4ff15 | ||
|
|
ca6b38d25a | ||
|
|
8851e71a8b | ||
|
|
dc3441f258 | ||
|
|
7791cb08a9 | ||
|
|
6ed6d6a85e | ||
|
|
df4f68fbf2 | ||
|
|
1cc631d265 | ||
|
|
1fe6765efa | ||
|
|
f284677c17 | ||
|
|
84ea1776ae | ||
|
|
bd6e5b13cc | ||
|
|
de9c53bd8d | ||
|
|
981600c935 | ||
|
|
c692fd1605 | ||
|
|
819c2f57be | ||
|
|
06ed059cba | ||
|
|
e41f3cfd13 | ||
|
|
e9cd4588ae | ||
|
|
fdd406ac95 | ||
|
|
4a7e26b812 | ||
|
|
99d2884802 | ||
|
|
7a754a4dfc | ||
|
|
70a8086366 | ||
|
|
4d39449979 | ||
|
|
a3e05195c0 | ||
|
|
5954d6ba9a | ||
|
|
420d2baec2 | ||
|
|
664d578f30 | ||
|
|
33e3f599e9 | ||
|
|
bea3032df9 | ||
|
|
ab8ac87023 | ||
|
|
588b8435b7 | ||
|
|
8983cae468 | ||
|
|
3612866f9f | ||
|
|
beb336cb93 | ||
|
|
90cbe37846 | ||
|
|
10984a0a37 | ||
|
|
f5cb2443d1 | ||
|
|
8f7de0e9fc | ||
|
|
b60a98ae6c | ||
|
|
7040e3b72f | ||
|
|
12a0966eb9 | ||
|
|
5ff03786c7 | ||
|
|
483b825a2f | ||
|
|
ca304fc63d | ||
|
|
5a1a349977 | ||
|
|
5683f76cd0 | ||
|
|
cc7d7da346 | ||
|
|
d10e4d1e50 | ||
|
|
d338e06abd | ||
|
|
145ea10d93 | ||
|
|
d42caf1fbc | ||
|
|
705cc6573f | ||
|
|
5c3544f211 | ||
|
|
f859664443 | ||
|
|
2d25364f42 | ||
|
|
8323fb02ca | ||
|
|
d442ca38dc | ||
|
|
57409a8c47 | ||
|
|
f002987edd | ||
|
|
866a7b3a78 | ||
|
|
f342d46541 | ||
|
|
f5e016930b | ||
|
|
ac9a305543 | ||
|
|
f824aebfaa | ||
|
|
7765b8b462 | ||
|
|
a65fbee213 | ||
|
|
17e3ed6c97 | ||
|
|
b6e336dbaf | ||
|
|
ddcc17b7b8 | ||
|
|
f6549f328b | ||
|
|
4cbfa5efb2 | ||
|
|
fa2241f1a5 | ||
|
|
6bd11f2270 | ||
|
|
6c4a8fb819 | ||
|
|
ad1b53fa63 | ||
|
|
a9e0affe59 | ||
|
|
371ff6105b | ||
|
|
cad8874724 | ||
|
|
5345dcc11b | ||
|
|
33310786db | ||
|
|
6ac8e7a464 | ||
|
|
434f548a87 | ||
|
|
90c4aa4ec6 | ||
|
|
7a4052f3af | ||
|
|
f650e96363 | ||
|
|
91e3d3ae04 | ||
|
|
9f33c77a47 | ||
|
|
7d9c1284f9 | ||
|
|
84899f4884 | ||
|
|
9c9ff13bd2 | ||
|
|
b117b9be61 | ||
|
|
f0ccf29f48 | ||
|
|
3e80d563df | ||
|
|
e4bdff0a0c | ||
|
|
6b82c01891 | ||
|
|
cd1eab45d0 | ||
|
|
511e2f467a | ||
|
|
4941b494cc | ||
|
|
5e949dbc15 | ||
|
|
bdf14a2520 | ||
|
|
710e3f6948 | ||
|
|
6ec9e24f2f | ||
|
|
cb9af349cd | ||
|
|
c8687a961c | ||
|
|
8a910ad4c7 | ||
|
|
e8020c86df | ||
|
|
a50491d0b2 | ||
|
|
bdd91b053d | ||
|
|
4b23148e68 | ||
|
|
e167bbce20 | ||
|
|
3338bc3741 | ||
|
|
af368c93ce | ||
|
|
5ced4ef547 | ||
|
|
198dfb338c | ||
|
|
587ea68a99 | ||
|
|
7d2f2cacbf | ||
|
|
757bc7d7b9 | ||
|
|
500dc573e4 | ||
|
|
56a91b2d1b | ||
|
|
c437dab90f | ||
|
|
b7ba9437d8 | ||
|
|
76fa06ceab | ||
|
|
4487471ada | ||
|
|
55a0bc46e4 | ||
|
|
3e17445a4d | ||
|
|
fc077fa54e | ||
|
|
70950619b8 | ||
|
|
a01dc06a54 | ||
|
|
a3b54a942c | ||
|
|
c8127f651d | ||
|
|
4cc6bcbd7d | ||
|
|
8b682fbd2b | ||
|
|
48393db2c7 | ||
|
|
faa4473b17 | ||
|
|
9924dfe8af | ||
|
|
47f336bf33 | ||
|
|
07b75fb692 | ||
|
|
6c39e82519 | ||
|
|
f8178f2e54 | ||
|
|
75290d2454 | ||
|
|
b180ac8cab | ||
|
|
58c7c9ab76 | ||
|
|
b8e6cb221b | ||
|
|
ef2e711e15 | ||
|
|
2ade733867 | ||
|
|
1735154b81 | ||
|
|
a9b52f6752 | ||
|
|
7faec48c0a | ||
|
|
9e2ae684ed | ||
|
|
6984bb8113 | ||
|
|
c0a739c9fa | ||
|
|
2d254542f3 | ||
|
|
2fa79c670e | ||
|
|
4743e443dc | ||
|
|
43cc666e77 | ||
|
|
1215a6e5d8 | ||
|
|
499c2a47fc | ||
|
|
c390afd258 | ||
|
|
3b0e66a3d0 | ||
|
|
4cd6652825 | ||
|
|
80ade41905 | ||
|
|
83921a4bc8 | ||
|
|
acf876f4b2 | ||
|
|
7954661100 | ||
|
|
22a1509316 | ||
|
|
499eeee59a | ||
|
|
8cf76cf7c2 | ||
|
|
6441d99279 | ||
|
|
aef4a982dc | ||
|
|
f93c67740c | ||
|
|
4b8e0f36ab | ||
|
|
c247b96c4a | ||
|
|
085f4af1dc | ||
|
|
49a6c8ba9c | ||
|
|
df9b35e947 | ||
|
|
96b6e5972f | ||
|
|
b801ef594b | ||
|
|
ff0c068cb8 | ||
|
|
1b119eb8f5 | ||
|
|
6a8a123da8 | ||
|
|
6f2aafdd6c | ||
|
|
57fefba386 | ||
|
|
64a6ca7fc7 | ||
|
|
8b356605b4 | ||
|
|
131154ba80 | ||
|
|
fa55575973 | ||
|
|
0851609840 | ||
|
|
b1f1080111 | ||
|
|
6c3b1c56f8 | ||
|
|
210f3e301b | ||
|
|
c73bc32f8e | ||
|
|
62878a042c | ||
|
|
84c6d35634 | ||
|
|
0f94f1b416 | ||
|
|
0f43fbe6d4 | ||
|
|
10e28c5ba4 | ||
|
|
a3c25afb66 | ||
|
|
21831c9b24 | ||
|
|
d1f9b0eaf0 | ||
|
|
b0d5584d53 | ||
|
|
bbe4fe3763 | ||
|
|
87f9d28fea | ||
|
|
58ddd8c2bc | ||
|
|
264d3694c5 | ||
|
|
79d56af921 | ||
|
|
e668995673 | ||
|
|
8b2fe88824 | ||
|
|
80830584d1 | ||
|
|
ae21f79040 | ||
|
|
b7ab50759a | ||
|
|
91959d3e2e | ||
|
|
7184c45043 | ||
|
|
fc261502d1 | ||
|
|
f796be37ce | ||
|
|
fa3b49ca91 | ||
|
|
9e6f116bc9 | ||
|
|
b70a9842f5 | ||
|
|
064c145aa8 | ||
|
|
e197544903 | ||
|
|
ca1e66453e | ||
|
|
c795d4b2f1 | ||
|
|
cb28263cb1 | ||
|
|
d2768a4f6b | ||
|
|
c6af02353e | ||
|
|
425623d6d3 | ||
|
|
2a9c6c662f | ||
|
|
bd30c3babb | ||
|
|
aac43e8a1a | ||
|
|
b576b9e4f6 | ||
|
|
8199ef004d | ||
|
|
b26f38d37e | ||
|
|
87f25c49ad | ||
|
|
160eb8e074 | ||
|
|
39f0323a81 | ||
|
|
e9a8b042ab | ||
|
|
07e7628182 | ||
|
|
3d07d80648 | ||
|
|
887688f092 | ||
|
|
0184c3a314 | ||
|
|
b951338642 | ||
|
|
d514845e4a | ||
|
|
9bed4554eb | ||
|
|
a10d41642a | ||
|
|
c0b3789fda | ||
|
|
85d0c7575c | ||
|
|
d4de52974b | ||
|
|
96cca79b70 | ||
|
|
432650008c | ||
|
|
3f3eb643e4 | ||
|
|
6ba617d84f | ||
|
|
1c23ca3a76 | ||
|
|
17f657673f | ||
|
|
35d1546110 | ||
|
|
c4bebbf173 | ||
|
|
a67865b969 | ||
|
|
38a63ddcdb | ||
|
|
17dfd2e9ed | ||
|
|
49d8a6b91d | ||
|
|
953cb8d302 | ||
|
|
e1d3cf1b98 | ||
|
|
b1ee39cd28 | ||
|
|
3031e7c37f | ||
|
|
ab69b9c9b2 | ||
|
|
837f332ac9 | ||
|
|
59f189d264 | ||
|
|
8229979cec | ||
|
|
559106174e | ||
|
|
6e0b5e2be5 | ||
|
|
e16f8c8d07 | ||
|
|
c87482db9c | ||
|
|
7b729fc885 | ||
|
|
5977e61a02 | ||
|
|
372a591ac7 | ||
|
|
cddf3c3cdb | ||
|
|
20c4516c8e | ||
|
|
3ba976638f | ||
|
|
9b7bca6116 | ||
|
|
04c2d8437e | ||
|
|
bcaf9ba61d | ||
|
|
214ba8a34d | ||
|
|
434ac2182a | ||
|
|
1f5b22149c | ||
|
|
2e2ae5c88f | ||
|
|
2021d61d91 | ||
|
|
46d0b6b0ff | ||
|
|
8ae8019f5a | ||
|
|
1a6ea3302c | ||
|
|
4de4e82ee6 | ||
|
|
5da0d5768a | ||
|
|
58586ce2dc | ||
|
|
1cc9e8af49 | ||
|
|
37a5bdc331 | ||
|
|
cc4815a3db | ||
|
|
46eba838f5 | ||
|
|
b31cc36de2 | ||
|
|
76dd4fee2f | ||
|
|
55a4b67880 | ||
|
|
97fb3d4982 | ||
|
|
28f0645d9e | ||
|
|
85dff323c8 | ||
|
|
0468e0e43a | ||
|
|
2cc3ebd315 | ||
|
|
377a1a9680 | ||
|
|
877f822de0 | ||
|
|
0feef2268d | ||
|
|
002fe8eefa | ||
|
|
1dba06a7ff | ||
|
|
838b0179e5 | ||
|
|
b12ad939ad | ||
|
|
74fbf77f62 | ||
|
|
211ef24d18 | ||
|
|
a2e0ea4faf | ||
|
|
6ab104ead7 | ||
|
|
62748b6121 | ||
|
|
8bbf2bfcbb | ||
|
|
de81af0e8d | ||
|
|
346913f3db | ||
|
|
fd8983a7ff | ||
|
|
4ef5ca5721 | ||
|
|
119deb4e82 | ||
|
|
ea92f3f272 | ||
|
|
9c383bcc24 | ||
|
|
4fba8e654d | ||
|
|
14383a1922 | ||
|
|
1610b93975 | ||
|
|
8ece450f18 | ||
|
|
ced654707d | ||
|
|
ef561949ca | ||
|
|
da63ab2e05 | ||
|
|
ddd95f73b4 | ||
|
|
08e386f63f | ||
|
|
bf324ec2d9 | ||
|
|
e9afaa9cc8 | ||
|
|
78e3b947d1 | ||
|
|
05b4a3dd6b | ||
|
|
c2f706a28a | ||
|
|
4df925e8a8 | ||
|
|
adf88c63ec | ||
|
|
c2545e226b | ||
|
|
5c7c4dde14 | ||
|
|
2bbb6adb4f | ||
|
|
493105b457 | ||
|
|
2bf0dd840f | ||
|
|
0f67580e8f | ||
|
|
599033815a | ||
|
|
de49ddcf5b | ||
|
|
d752117ed3 | ||
|
|
fa9285a108 | ||
|
|
9194522b56 | ||
|
|
11a16952c5 | ||
|
|
a959919b8a | ||
|
|
6f88ad0a13 | ||
|
|
cb169f11d4 | ||
|
|
98b81fa1ee | ||
|
|
a6fadd2140 | ||
|
|
09bf4a1e71 | ||
|
|
f44fcb4459 | ||
|
|
c5d598f401 | ||
|
|
9476a9880c | ||
|
|
487f2ceecb | ||
|
|
d0950499da | ||
|
|
56df20ba27 | ||
|
|
41b827b65d | ||
|
|
0b6ceab25b | ||
|
|
2566f445b2 | ||
|
|
9199f95af5 | ||
|
|
f2b4e1ea3e | ||
|
|
621c11925b | ||
|
|
a4cc91cca2 | ||
|
|
db4123ccb5 | ||
|
|
98f8f194cd | ||
|
|
f8a3a26e0d | ||
|
|
f7792b72bf | ||
|
|
d160828cda | ||
|
|
e85b51e1c2 | ||
|
|
6b926b3199 | ||
|
|
008a38aae2 | ||
|
|
70e3c2d3ad | ||
|
|
817b015335 | ||
|
|
bddb9b0050 | ||
|
|
78f7b05ecb | ||
|
|
999bc21d6b | ||
|
|
901b4b0f77 | ||
|
|
69dc0b3570 | ||
|
|
0bebf412fd | ||
|
|
ce1c5aebf7 | ||
|
|
7eef4f3364 | ||
|
|
ecadd44a16 | ||
|
|
4bd7d43588 | ||
|
|
50c8f30d0b | ||
|
|
e2203a871c | ||
|
|
3e159e0ed6 | ||
|
|
d922c91071 | ||
|
|
fa35410851 | ||
|
|
23b74a3412 | ||
|
|
6e24930026 | ||
|
|
b8b96ee719 | ||
|
|
22450cb68d | ||
|
|
a4b907a668 | ||
|
|
843536c7a1 | ||
|
|
31ae9b3947 | ||
|
|
c72729fa5d | ||
|
|
a07299f64d | ||
|
|
d55a001875 | ||
|
|
917d6d4243 | ||
|
|
05e629c0eb | ||
|
|
9c901b33f0 | ||
|
|
a0ff56fbef | ||
|
|
fc8c1114b2 | ||
|
|
93e5ef883c | ||
|
|
10a36f96f6 | ||
|
|
80cd2e08a4 | ||
|
|
97755e1b34 | ||
|
|
8a8a3847d7 | ||
|
|
00a95c11a0 | ||
|
|
8f12e97b79 | ||
|
|
9961305867 | ||
|
|
9e83942920 | ||
|
|
e390b43bdc | ||
|
|
cc8ddde01b | ||
|
|
98b2727857 | ||
|
|
4d2186fb75 | ||
|
|
419a1975eb | ||
|
|
9846bff226 | ||
|
|
a37c3756b7 | ||
|
|
c844e3d179 | ||
|
|
0ded8dcf25 | ||
|
|
61d8b5efb6 | ||
|
|
ecf5c501d6 | ||
|
|
db639b96a3 | ||
|
|
e65956e910 | ||
|
|
09ce233f4b | ||
|
|
34893e169e | ||
|
|
dd171c8b49 | ||
|
|
985406e70f | ||
|
|
8bf457c864 | ||
|
|
96dab92f33 | ||
|
|
d348324f50 | ||
|
|
4f5903e7fd | ||
|
|
bdadd98622 | ||
|
|
bdad630d51 | ||
|
|
987bf920c7 | ||
|
|
f8e1b9bdb6 | ||
|
|
06fe68b56c | ||
|
|
b811d6a84f | ||
|
|
f91e1791fe | ||
|
|
49ade0d689 | ||
|
|
c970588c55 | ||
|
|
4aab43a127 | ||
|
|
c0aface962 | ||
|
|
bd7bd43504 | ||
|
|
b44d359f9e | ||
|
|
2f109d3333 | ||
|
|
7cc225039c | ||
|
|
cef9be3d02 | ||
|
|
1c31f2e481 | ||
|
|
1173dd2826 | ||
|
|
6239f949fe | ||
|
|
4ec78b35f8 | ||
|
|
87b1518023 | ||
|
|
02c55e3fd1 | ||
|
|
96762ebf09 | ||
|
|
702d3b8ec1 | ||
|
|
a3069e4a58 | ||
|
|
bd9a2d7bbb | ||
|
|
1ef9a5c2d7 | ||
|
|
3f48e3ef1c | ||
|
|
d9f7482ae8 | ||
|
|
facec65dfc | ||
|
|
dc331f0e64 | ||
|
|
67eb486e63 | ||
|
|
edb0358916 | ||
|
|
569ba16df8 | ||
|
|
d48438aeef | ||
|
|
92b3f5a2ee | ||
|
|
f430d49304 | ||
|
|
76c3b3cd1d | ||
|
|
35aee155d7 | ||
|
|
d93af5a469 | ||
|
|
051282931a | ||
|
|
d3780abe33 | ||
|
|
841f061520 | ||
|
|
f327d20deb | ||
|
|
dcc16a44be | ||
|
|
36940f07c9 | ||
|
|
b99b333b71 | ||
|
|
5fa310c961 | ||
|
|
e36b166edd | ||
|
|
27525b37e0 | ||
|
|
d3d78416d7 | ||
|
|
f30570d54b | ||
|
|
20579049fa | ||
|
|
544cff7dc1 | ||
|
|
165817ec02 | ||
|
|
95c07e1a62 | ||
|
|
2f8f7c2054 | ||
|
|
99ad8ef1ba | ||
|
|
18a76299f2 | ||
|
|
57c205206c | ||
|
|
afb88ff511 | ||
|
|
75746a8153 | ||
|
|
66d29a4d40 | ||
|
|
6dd7445938 |
50
.gitea/workflows/build.yml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Build
|
||||||
|
run-name: Build Docker Image
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
# Build image and push to container registry
|
||||||
|
docker-build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
name: Build and Push
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# Checkout Repository
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
# Install Docker
|
||||||
|
- name: Install docker
|
||||||
|
uses: papodaca/install-docker-action@main
|
||||||
|
|
||||||
|
- name: Set up Docker BuildX
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
with:
|
||||||
|
config-inline: |
|
||||||
|
[registry."git.prettyhefty.com"]
|
||||||
|
|
||||||
|
- name: Login to Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: https://git.prettyhefty.com
|
||||||
|
username: ${{ gitea.repository_owner }}
|
||||||
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
|
|
||||||
|
- name: Setup environment
|
||||||
|
run: cp Dockerfile.linux Dockerfile
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: bill/monero:test
|
||||||
|
|
||||||
|
- name: sha256sum
|
||||||
|
run: shasum -a256 /workspace/Bill/monero-gui/build/release/bin/monero-wallet-gui
|
||||||
|
|
||||||
|
- name: test qml
|
||||||
|
run: xvfb-run -a /workspace/Bill/monero-gui/build/release/bin/monero-wallet-gui --test-qml
|
||||||
177
.github/workflows/build.yml
vendored
@@ -1,177 +0,0 @@
|
|||||||
name: ci/gh-actions/gui
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-macos:
|
|
||||||
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 libsodium miniupnpc ldns expat libunwind-headers protobuf qt5 pkg-config
|
|
||||||
- name: build
|
|
||||||
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 libprotobuf-dev protobuf-compiler
|
|
||||||
- name: install monero gui dependencies
|
|
||||||
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: 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: prepare build environment
|
|
||||||
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: prepare build environment
|
|
||||||
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: prepare build environment
|
|
||||||
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 }}
|
|
||||||
104
CMakeLists.txt
@@ -3,8 +3,8 @@ project(monero-gui)
|
|||||||
|
|
||||||
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
|
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
|
||||||
|
|
||||||
set(VERSION_MAJOR "17")
|
set(VERSION_MAJOR "18")
|
||||||
set(VERSION_MINOR "2")
|
set(VERSION_MINOR "3")
|
||||||
set(VERSION_REVISION "3")
|
set(VERSION_REVISION "3")
|
||||||
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
|
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
|
||||||
|
|
||||||
@@ -12,20 +12,16 @@ option(STATIC "Link libraries statically, requires static Qt")
|
|||||||
|
|
||||||
option(USE_DEVICE_TREZOR "Trezor support compilation" ON)
|
option(USE_DEVICE_TREZOR "Trezor support compilation" ON)
|
||||||
option(WITH_SCANNER "Enable webcam QR scanner" OFF)
|
option(WITH_SCANNER "Enable webcam QR scanner" OFF)
|
||||||
|
option(WITH_DESKTOP_ENTRY "Ask to install desktop entry on first startup" ON)
|
||||||
|
option(WITH_UPDATER "Regularly check for new updates" ON)
|
||||||
option(DEV_MODE "Checkout latest monero master on build" OFF)
|
option(DEV_MODE "Checkout latest monero master on build" OFF)
|
||||||
|
|
||||||
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake")
|
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
include(CheckCCompilerFlag)
|
include(CheckCCompilerFlag)
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
include(CheckLinkerFlag)
|
include(CheckLinkerFlag)
|
||||||
include(FindCcache)
|
|
||||||
|
|
||||||
if(DEBUG)
|
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(BUILD_GUI_DEPS ON)
|
set(BUILD_GUI_DEPS ON)
|
||||||
set(ARCH "x86-64" CACHE STRING "Target architecture")
|
|
||||||
set(BUILD_64 ON CACHE BOOL "Build 64-bit binaries")
|
set(BUILD_64 ON CACHE BOOL "Build 64-bit binaries")
|
||||||
|
|
||||||
if(NOT MANUAL_SUBMODULES)
|
if(NOT MANUAL_SUBMODULES)
|
||||||
@@ -71,85 +67,35 @@ endif()
|
|||||||
|
|
||||||
if(STATIC)
|
if(STATIC)
|
||||||
message(STATUS "Initiating static build")
|
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})
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||||
add_definitions(-DMONERO_GUI_STATIC)
|
add_definitions(-DMONERO_GUI_STATIC)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
# force version update
|
|
||||||
function (monero_gui_add_library_with_deps)
|
|
||||||
cmake_parse_arguments(MONERO_ADD_LIBRARY "" "NAME" "DEPENDS;SOURCES" ${ARGN})
|
|
||||||
source_group("${MONERO_ADD_LIBRARY_NAME}" FILES ${MONERO_ADD_LIBRARY_SOURCES})
|
|
||||||
|
|
||||||
# Define a ("virtual") object library and an actual library that links those
|
|
||||||
# objects together. The virtual libraries can be arbitrarily combined to link
|
|
||||||
# any subset of objects into one library archive. This is used for releasing
|
|
||||||
# libwallet, which combines multiple components.
|
|
||||||
set(objlib obj_${MONERO_ADD_LIBRARY_NAME})
|
|
||||||
add_library(${objlib} OBJECT ${MONERO_ADD_LIBRARY_SOURCES})
|
|
||||||
add_library("${MONERO_ADD_LIBRARY_NAME}" $<TARGET_OBJECTS:${objlib}>)
|
|
||||||
if (MONERO_ADD_LIBRARY_DEPENDS)
|
|
||||||
add_dependencies(${objlib} ${MONERO_ADD_LIBRARY_DEPENDS})
|
|
||||||
endif()
|
|
||||||
set_property(TARGET "${MONERO_ADD_LIBRARY_NAME}" PROPERTY FOLDER "libs")
|
|
||||||
target_compile_definitions(${objlib}
|
|
||||||
PRIVATE $<TARGET_PROPERTY:${MONERO_ADD_LIBRARY_NAME},INTERFACE_COMPILE_DEFINITIONS>)
|
|
||||||
endfunction ()
|
|
||||||
|
|
||||||
function (monero_gui_add_library name)
|
|
||||||
monero_gui_add_library_with_deps(NAME "${name}" SOURCES ${ARGN})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
include_directories(${EASYLOGGING_INCLUDE})
|
include_directories(${EASYLOGGING_INCLUDE})
|
||||||
link_directories(${EASYLOGGING_LIBRARY_DIRS})
|
link_directories(${EASYLOGGING_LIBRARY_DIRS})
|
||||||
|
|
||||||
|
|
||||||
include(VersionGui)
|
include(VersionGui)
|
||||||
monero_gui_add_library(gui_version SOURCES version.js DEPENDS genversiongui)
|
|
||||||
|
|
||||||
message(STATUS "${CMAKE_MODULE_PATH}")
|
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}")
|
|
||||||
|
|
||||||
if(WITH_SCANNER)
|
if(WITH_SCANNER)
|
||||||
add_definitions(-DWITH_SCANNER)
|
add_definitions(-DWITH_SCANNER)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(WITH_DESKTOP_ENTRY)
|
||||||
|
add_definitions(-DWITH_DESKTOP_ENTRY)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WITH_UPDATER)
|
||||||
|
add_definitions(-DWITH_UPDATER)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Sodium
|
# Sodium
|
||||||
find_library(SODIUM_LIBRARY sodium)
|
find_library(SODIUM_LIBRARY sodium)
|
||||||
message(STATUS "libsodium: libraries at ${SODIUM_LIBRARY}")
|
message(STATUS "libsodium: libraries at ${SODIUM_LIBRARY}")
|
||||||
|
|
||||||
# Boost
|
|
||||||
if(DEBUG)
|
|
||||||
set(Boost_DEBUG ON)
|
|
||||||
endif()
|
|
||||||
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
|
|
||||||
date_time
|
|
||||||
chrono
|
|
||||||
regex
|
|
||||||
serialization
|
|
||||||
program_options
|
|
||||||
locale)
|
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
||||||
set(CMAKE_SKIP_RPATH ON)
|
set(CMAKE_SKIP_RPATH ON)
|
||||||
set(CMAKE_FIND_LIBRARY_SUFFIXES_PREV ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
set(CMAKE_FIND_LIBRARY_SUFFIXES_PREV ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||||
@@ -167,19 +113,6 @@ if(UNIX AND NOT APPLE AND NOT ANDROID)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
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")
|
|
||||||
# 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
|
|
||||||
# -lfoo arguments.
|
|
||||||
set(DEFLIB ${msys2_install_path}/mingw${ARCH_WIDTH}/lib)
|
|
||||||
list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_DIRECTORIES ${DEFLIB})
|
|
||||||
list(REMOVE_ITEM CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES ${DEFLIB})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(QT5_LIBRARIES
|
set(QT5_LIBRARIES
|
||||||
Qt5Core
|
Qt5Core
|
||||||
Qt5Quick
|
Qt5Quick
|
||||||
@@ -392,10 +325,6 @@ if(ANDROID)
|
|||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
message(STATUS "Using Boost include dir at ${Boost_INCLUDE_DIRS}")
|
|
||||||
message(STATUS "Using Boost libraries at ${Boost_LIBRARIES}")
|
|
||||||
|
|
||||||
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wa,-mbig-obj")
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wa,-mbig-obj")
|
||||||
set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi;crypt32;bcrypt)
|
set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi;crypt32;bcrypt)
|
||||||
@@ -423,14 +352,11 @@ endif()
|
|||||||
list(APPEND EXTRA_LIBRARIES ${CMAKE_DL_LIBS})
|
list(APPEND EXTRA_LIBRARIES ${CMAKE_DL_LIBS})
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
include_directories(SYSTEM /usr/include/malloc)
|
cmake_policy(SET CMP0042 NEW)
|
||||||
if(POLICY CMP0042)
|
|
||||||
cmake_policy(SET CMP0042 NEW)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (APPLE AND NOT IOS)
|
if (APPLE AND NOT IOS)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -fvisibility=default -std=c++11")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=default -std=c++11")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
@@ -438,8 +364,6 @@ if(APPLE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# warnings
|
# 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_c_flag_if_supported(-Wformat C_SECURITY_FLAGS)
|
||||||
add_cxx_flag_if_supported(-Wformat CXX_SECURITY_FLAGS)
|
add_cxx_flag_if_supported(-Wformat CXX_SECURITY_FLAGS)
|
||||||
add_c_flag_if_supported(-Wformat-security C_SECURITY_FLAGS)
|
add_c_flag_if_supported(-Wformat-security C_SECURITY_FLAGS)
|
||||||
|
|||||||
39
DEPLOY.md
@@ -8,11 +8,16 @@ Use macOS 10.12 - 10.13 for better backwards compability.
|
|||||||
|
|
||||||
3. `git clone --recursive -b v0.X.Y.Z --depth 1 https://github.com/monero-project/monero-gui`
|
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`
|
4. Compile `monero-wallet-gui.app`
|
||||||
|
|
||||||
5. `cd build/release && make deploy`
|
```bash
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH=~/Qt5.12.8/5.12.8/clang_64 ..
|
||||||
|
make
|
||||||
|
make deploy
|
||||||
|
```
|
||||||
|
|
||||||
6. Replace the `monerod` binary inside `monero-wallet-gui.app/Contents/MacOS/` with one built using deterministic builds / gitian.
|
5. Replace the `monerod` binary inside `monero-wallet-gui.app/Contents/MacOS/` with one built using deterministic builds / gitian.
|
||||||
|
|
||||||
## Codesigning and notarizing
|
## Codesigning and notarizing
|
||||||
|
|
||||||
@@ -40,3 +45,31 @@ You can check if this step worked by using `codesign -dvvv monero-wallet-gui.app
|
|||||||
5. `xcrun altool --notarization-info aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee -u 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`
|
6. `xcrun stapler staple -v monero-gui-mac-x64-v0.X.Y.Z.dmg`
|
||||||
|
|
||||||
|
## Compile Qt for Apple Silicon
|
||||||
|
|
||||||
|
Qt does not offer pre-built binaries for Apple Silicon, they have to be manually compiled.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/qt/qt5.git
|
||||||
|
cd qt5
|
||||||
|
git checkout v5.15.9-lts-lgpl
|
||||||
|
./init-repository
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
../configure -prefix /path/to/qt-build-dir/ -opensource -confirm-license -release -nomake examples -nomake tests -no-rpath -skip qtwebengine -skip qt3d -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtlocation -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 qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -skip gamepad -skip serialbus -skip location -skip webengine
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
cd ../qttools/src/linguist/lrelease
|
||||||
|
../../../../build/qtbase/bin/qmake
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
cd ../../../../qttools/src/macdeployqt/macdeployqt/
|
||||||
|
../../../../build/qtbase/bin/qmake
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
For compilation with Xcode 15 the following patch has to be applied: https://raw.githubusercontent.com/Homebrew/formula-patches/086e8cf/qt5/qt5-qmake-xcode15.patch
|
||||||
|
|
||||||
|
The `CMAKE_PREFIX_PATH` has to be set to `/path/to/qt-build-dir/` during monero-gui compilation.
|
||||||
|
|||||||
@@ -1,48 +1,52 @@
|
|||||||
FROM debian:stretch
|
FROM debian:buster
|
||||||
|
|
||||||
ARG THREADS=1
|
ARG THREADS=1
|
||||||
ARG ANDROID_NDK_REVISION=21d
|
ARG ANDROID_NDK_REVISION=21e
|
||||||
ARG ANDROID_NDK_HASH=bcf4023eb8cb6976a4c7cff0a8a8f145f162bf4d
|
ARG ANDROID_NDK_HASH=c3ebc83c96a4d7f539bd72c241b2be9dcd29bda9
|
||||||
ARG ANDROID_SDK_REVISION=4333796
|
ARG ANDROID_SDK_REVISION=7302050_latest
|
||||||
ARG ANDROID_SDK_HASH=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9
|
ARG ANDROID_SDK_HASH=7a00faadc0864f78edd8f4908a629a46d622375cbe2e5814e82934aebecdb622
|
||||||
ARG QT_VERSION=5.15.2
|
ARG QT_VERSION=v5.15.7-lts-lgpl
|
||||||
|
|
||||||
WORKDIR /opt/android
|
WORKDIR /opt/android
|
||||||
ENV WORKDIR=/opt/android
|
ENV WORKDIR=/opt/android
|
||||||
|
|
||||||
ENV ANDROID_NATIVE_API_LEVEL=28
|
ENV ANDROID_NATIVE_API_LEVEL=30
|
||||||
ENV ANDROID_API=android-${ANDROID_NATIVE_API_LEVEL}
|
ENV ANDROID_API=android-${ANDROID_NATIVE_API_LEVEL}
|
||||||
ENV ANDROID_CLANG=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang
|
ENV ANDROID_CLANG=aarch64-linux-android${ANDROID_NATIVE_API_LEVEL}-clang
|
||||||
ENV ANDROID_CLANGPP=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_NDK_ROOT=${WORKDIR}/android-ndk-r${ANDROID_NDK_REVISION}
|
||||||
ENV ANDROID_SDK_ROOT=${WORKDIR}/tools
|
ENV ANDROID_SDK_ROOT=${WORKDIR}/cmdline-tools
|
||||||
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
|
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
||||||
ENV PATH=${JAVA_HOME}/bin:${PATH}
|
ENV PATH=${JAVA_HOME}/bin:${PATH}
|
||||||
ENV PREFIX=${WORKDIR}/prefix
|
ENV PREFIX=${WORKDIR}/prefix
|
||||||
ENV TOOLCHAIN_DIR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64
|
ENV TOOLCHAIN_DIR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y ant automake build-essential ca-certificates-java file gettext git libc6 libncurses5 \
|
&& 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 \
|
libssl-dev libstdc++6 libtinfo5 libtool libz1 openjdk-11-jdk-headless openjdk-11-jre-headless pkg-config python3 \
|
||||||
unzip wget
|
unzip wget
|
||||||
|
|
||||||
RUN wget -q https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \
|
RUN PACKAGE_NAME=commandlinetools-linux-${ANDROID_SDK_REVISION}.zip \
|
||||||
&& unzip -q sdk-tools-linux-${ANDROID_SDK_REVISION}.zip \
|
&& wget -q https://dl.google.com/android/repository/${PACKAGE_NAME} \
|
||||||
&& rm -f sdk-tools-linux-${ANDROID_SDK_REVISION}.zip
|
&& echo "${ANDROID_SDK_HASH} ${PACKAGE_NAME}" | sha256sum -c \
|
||||||
|
&& unzip -q ${PACKAGE_NAME} \
|
||||||
|
&& rm -f ${PACKAGE_NAME}
|
||||||
|
|
||||||
RUN wget -q https://dl.google.com/android/repository/android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \
|
RUN PACKAGE_NAME=android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \
|
||||||
&& unzip -q android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip \
|
&& wget -q https://dl.google.com/android/repository/${PACKAGE_NAME} \
|
||||||
&& rm -f android-ndk-r${ANDROID_NDK_REVISION}-linux-x86_64.zip
|
&& echo "${ANDROID_NDK_HASH} ${PACKAGE_NAME}" | sha1sum -c \
|
||||||
|
&& unzip -q ${PACKAGE_NAME} \
|
||||||
|
&& rm -f ${PACKAGE_NAME}
|
||||||
|
|
||||||
RUN cd ${ANDROID_SDK_ROOT} && echo y | ./bin/sdkmanager "platform-tools" "platforms;${ANDROID_API}" "tools" > /dev/null
|
RUN echo y | ${ANDROID_SDK_ROOT}/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} "build-tools;28.0.3" "platforms;${ANDROID_API}" "tools" > /dev/null
|
||||||
RUN cp -r ${WORKDIR}/platforms ${WORKDIR}/platform-tools ${ANDROID_SDK_ROOT}
|
|
||||||
|
|
||||||
ENV HOST_PATH=${PATH}
|
ENV HOST_PATH=${PATH}
|
||||||
ENV PATH=${TOOLCHAIN_DIR}/aarch64-linux-android/bin:${TOOLCHAIN_DIR}/bin:${PATH}
|
ENV PATH=${TOOLCHAIN_DIR}/aarch64-linux-android/bin:${TOOLCHAIN_DIR}/bin:${PATH}
|
||||||
|
|
||||||
ARG ZLIB_VERSION=1.2.11
|
ARG ZLIB_VERSION=1.3.1
|
||||||
ARG ZLIB_HASH=c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
|
ARG ZLIB_HASH=9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
|
||||||
RUN wget -q https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \
|
RUN wget -q https://github.com/madler/zlib/releases/download/v${ZLIB_VERSION}/zlib-${ZLIB_VERSION}.tar.gz \
|
||||||
|
&& echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \
|
||||||
&& tar -xzf zlib-${ZLIB_VERSION}.tar.gz \
|
&& tar -xzf zlib-${ZLIB_VERSION}.tar.gz \
|
||||||
&& rm zlib-${ZLIB_VERSION}.tar.gz \
|
&& rm zlib-${ZLIB_VERSION}.tar.gz \
|
||||||
&& cd zlib-${ZLIB_VERSION} \
|
&& cd zlib-${ZLIB_VERSION} \
|
||||||
@@ -75,7 +79,6 @@ RUN git clone git://code.qt.io/qt/qt5.git -b ${QT_VERSION} --depth 1 \
|
|||||||
-skip qtpurchasing \
|
-skip qtpurchasing \
|
||||||
-skip qtgamepad -skip qtscript -skip qtdoc \
|
-skip qtgamepad -skip qtscript -skip qtdoc \
|
||||||
-no-warnings-are-errors \
|
-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} \
|
||||||
&& PATH=${HOST_PATH} make -j${THREADS} install \
|
&& PATH=${HOST_PATH} make -j${THREADS} install \
|
||||||
&& cd qttools/src/linguist/lrelease \
|
&& cd qttools/src/linguist/lrelease \
|
||||||
@@ -98,7 +101,7 @@ RUN wget -q http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz
|
|||||||
ARG BOOST_VERSION=1_74_0
|
ARG BOOST_VERSION=1_74_0
|
||||||
ARG BOOST_VERSION_DOT=1.74.0
|
ARG BOOST_VERSION_DOT=1.74.0
|
||||||
ARG BOOST_HASH=83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1
|
ARG BOOST_HASH=83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1
|
||||||
RUN wget -q https://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSION_DOT}/boost_${BOOST_VERSION}.tar.bz2 \
|
RUN wget -q https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \
|
||||||
&& echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
|
&& echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
|
||||||
&& tar -xf boost_${BOOST_VERSION}.tar.bz2 \
|
&& tar -xf boost_${BOOST_VERSION}.tar.bz2 \
|
||||||
&& rm -f boost_${BOOST_VERSION}.tar.bz2 \
|
&& rm -f boost_${BOOST_VERSION}.tar.bz2 \
|
||||||
@@ -114,14 +117,15 @@ RUN wget -q https://downloads.sourceforge.net/project/boost/boost/${BOOST_VERSIO
|
|||||||
install -j${THREADS} \
|
install -j${THREADS} \
|
||||||
&& rm -rf $(pwd)
|
&& rm -rf $(pwd)
|
||||||
|
|
||||||
ARG OPENSSL_VERSION=1.1.1g
|
ARG OPENSSL_VERSION=1.1.1u
|
||||||
ARG OPENSSL_HASH=ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46
|
ARG OPENSSL_HASH=e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6
|
||||||
RUN wget -q https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
|
RUN wget -q https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
|
||||||
|
&& echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
|
||||||
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
|
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
|
||||||
&& rm openssl-${OPENSSL_VERSION}.tar.gz \
|
&& rm openssl-${OPENSSL_VERSION}.tar.gz \
|
||||||
&& cd openssl-${OPENSSL_VERSION} \
|
&& cd openssl-${OPENSSL_VERSION} \
|
||||||
&& ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} ./Configure CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} \
|
&& ANDROID_NDK_HOME=${ANDROID_NDK_ROOT} ./Configure CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} \
|
||||||
android-arm64 no-asm no-shared --static \
|
android-arm64 no-shared --static \
|
||||||
--with-zlib-include=${PREFIX}/include --with-zlib-lib=${PREFIX}/lib \
|
--with-zlib-include=${PREFIX}/include --with-zlib-lib=${PREFIX}/lib \
|
||||||
--prefix=${PREFIX} --openssldir=${PREFIX} \
|
--prefix=${PREFIX} --openssldir=${PREFIX} \
|
||||||
&& sed -i 's/CNF_EX_LIBS=-ldl -pthread//g;s/BIN_CFLAGS=-pie $(CNF_CFLAGS) $(CFLAGS)//g' Makefile \
|
&& sed -i 's/CNF_EX_LIBS=-ldl -pthread//g;s/BIN_CFLAGS=-pie $(CNF_CFLAGS) $(CFLAGS)//g' Makefile \
|
||||||
@@ -129,8 +133,32 @@ RUN wget -q https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
|
|||||||
&& make -j${THREADS} install \
|
&& make -j${THREADS} install \
|
||||||
&& rm -rf $(pwd)
|
&& rm -rf $(pwd)
|
||||||
|
|
||||||
ARG ZMQ_VERSION=v4.3.3
|
ARG EXPAT_VERSION=2.4.1
|
||||||
ARG ZMQ_HASH=04f5bbedee58c538934374dc45182d8fc5926fa3
|
ARG EXPAT_HASH=2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40
|
||||||
|
RUN wget https://github.com/libexpat/libexpat/releases/download/R_2_4_1/expat-${EXPAT_VERSION}.tar.bz2 && \
|
||||||
|
echo "${EXPAT_HASH} expat-${EXPAT_VERSION}.tar.bz2" | sha256sum -c && \
|
||||||
|
tar -xf expat-${EXPAT_VERSION}.tar.bz2 && \
|
||||||
|
rm expat-${EXPAT_VERSION}.tar.bz2 && \
|
||||||
|
cd expat-${EXPAT_VERSION} && \
|
||||||
|
CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --enable-static --disable-shared --prefix=${PREFIX} --host=aarch64-linux-android && \
|
||||||
|
make -j$THREADS && \
|
||||||
|
make -j$THREADS install && \
|
||||||
|
rm -rf $(pwd)
|
||||||
|
|
||||||
|
ARG UNBOUND_VERSION=1.16.2
|
||||||
|
ARG UNBOUND_HASH=2e32f283820c24c51ca1dd8afecfdb747c7385a137abe865c99db4b257403581
|
||||||
|
RUN wget https://www.nlnetlabs.nl/downloads/unbound/unbound-${UNBOUND_VERSION}.tar.gz && \
|
||||||
|
echo "${UNBOUND_HASH} unbound-${UNBOUND_VERSION}.tar.gz" | sha256sum -c && \
|
||||||
|
tar -xzf unbound-${UNBOUND_VERSION}.tar.gz && \
|
||||||
|
rm unbound-${UNBOUND_VERSION}.tar.gz && \
|
||||||
|
cd unbound-${UNBOUND_VERSION} && \
|
||||||
|
CC=${ANDROID_CLANG} CXX=${ANDROID_CLANGPP} ./configure --disable-shared --enable-static --without-pyunbound --with-libexpat=${PREFIX} --with-ssl=${PREFIX} --with-libevent=no --without-pythonmodule --disable-flto --with-pthreads --with-libunbound-only --host=aarch64-linux-android --with-pic --prefix=${PREFIX} && \
|
||||||
|
make -j$THREADS && \
|
||||||
|
make -j$THREADS install && \
|
||||||
|
rm -rf $(pwd)
|
||||||
|
|
||||||
|
ARG ZMQ_VERSION=v4.3.4
|
||||||
|
ARG ZMQ_HASH=4097855ddaaa65ed7b5e8cb86d143842a594eebd
|
||||||
RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} --depth 1 \
|
RUN git clone https://github.com/zeromq/libzmq.git -b ${ZMQ_VERSION} --depth 1 \
|
||||||
&& cd libzmq \
|
&& cd libzmq \
|
||||||
&& git checkout ${ZMQ_HASH} \
|
&& git checkout ${ZMQ_HASH} \
|
||||||
@@ -152,38 +180,42 @@ RUN set -ex \
|
|||||||
&& make -j${THREADS} install \
|
&& make -j${THREADS} install \
|
||||||
&& rm -rf $(pwd)
|
&& rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b libgpg-error-1.38 --depth 1 git://git.gnupg.org/libgpg-error.git \
|
RUN git clone -b libgpg-error-1.41 --depth 1 git://git.gnupg.org/libgpg-error.git \
|
||||||
&& cd libgpg-error \
|
&& cd libgpg-error \
|
||||||
&& git reset --hard 71d278824c5fe61865f7927a2ed1aa3115f9e439 \
|
&& git reset --hard 98032624ae89a67ee6fe3b1db5d95032e681d163 \
|
||||||
&& ./autogen.sh \
|
&& ./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 \
|
&& 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} \
|
&& PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} make -j${THREADS} \
|
||||||
&& make -j${THREADS} install \
|
&& make -j${THREADS} install \
|
||||||
&& rm -rf $(pwd)
|
&& rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b libgcrypt-1.8.5 --depth 1 git://git.gnupg.org/libgcrypt.git \
|
RUN git clone -b libgcrypt-1.10.1 --depth 1 git://git.gnupg.org/libgcrypt.git \
|
||||||
&& cd libgcrypt \
|
&& cd libgcrypt \
|
||||||
&& git reset --hard 56606331bc2a80536db9fc11ad53695126007298 \
|
&& git reset --hard ae0e567820c37f9640440b3cff77d7c185aa6742 \
|
||||||
&& ./autogen.sh \
|
&& ./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 \
|
&& 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} \
|
&& PATH=${TOOLCHAIN_DIR}/bin:${HOST_PATH} make -j${THREADS} \
|
||||||
&& make -j${THREADS} install \
|
&& make -j${THREADS} install \
|
||||||
&& rm -rf $(pwd)
|
&& rm -rf $(pwd)
|
||||||
|
|
||||||
RUN cd tools \
|
RUN git clone -b v3.24.2 --depth 1 https://github.com/Kitware/CMake \
|
||||||
&& 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 \
|
&& cd CMake \
|
||||||
&& git reset --hard 22612dd53a46c7f9b4c3f4b7dbe5c78f9afd9581 \
|
&& git reset --hard 31f835410efeea50acd43512eb9e5646a26ea177 \
|
||||||
&& PATH=${HOST_PATH} ./bootstrap \
|
&& PATH=${HOST_PATH} ./bootstrap \
|
||||||
&& PATH=${HOST_PATH} make -j${THREADS} \
|
&& PATH=${HOST_PATH} make -j${THREADS} \
|
||||||
&& PATH=${HOST_PATH} make -j${THREADS} install \
|
&& PATH=${HOST_PATH} make -j${THREADS} install \
|
||||||
&& rm -rf $(pwd)
|
&& rm -rf $(pwd)
|
||||||
|
|
||||||
|
RUN GRADLE_VERSION=5.6.4 \
|
||||||
|
&& GRADLE_HASH=1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d \
|
||||||
|
&& wget -q https\://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip \
|
||||||
|
&& echo "${GRADLE_HASH} gradle-${GRADLE_VERSION}-bin.zip" | sha256sum -c \
|
||||||
|
&& GRADLE_LOCAL_PATH=gradle/wrapper/dists/gradle-${GRADLE_VERSION}-bin/bxirm19lnfz6nurbatndyydux \
|
||||||
|
&& mkdir -p ${GRADLE_LOCAL_PATH} \
|
||||||
|
&& mv gradle-${GRADLE_VERSION}-bin.zip ${GRADLE_LOCAL_PATH}
|
||||||
|
|
||||||
|
ENV GRADLE_USER_HOME=${WORKDIR}/gradle
|
||||||
|
|
||||||
CMD set -ex \
|
CMD set -ex \
|
||||||
&& cd /monero-gui \
|
&& cd /monero-gui \
|
||||||
&& mkdir -p build/Android/release \
|
&& mkdir -p build/Android/release \
|
||||||
@@ -200,7 +232,9 @@ CMD set -ex \
|
|||||||
-DBoost_USE_STATIC_RUNTIME=ON \
|
-DBoost_USE_STATIC_RUNTIME=ON \
|
||||||
-DLRELEASE_PATH="${PREFIX}/bin" \
|
-DLRELEASE_PATH="${PREFIX}/bin" \
|
||||||
-DQT_ANDROID_APPLICATION_BINARY="monero-wallet-gui" \
|
-DQT_ANDROID_APPLICATION_BINARY="monero-wallet-gui" \
|
||||||
|
-DANDROID_SDK="${ANDROID_SDK_ROOT}" \
|
||||||
-DWITH_SCANNER=ON \
|
-DWITH_SCANNER=ON \
|
||||||
|
-DWITH_DESKTOP_ENTRY=OFF \
|
||||||
../../.. \
|
../../.. \
|
||||||
&& PATH=${HOST_PATH} make generate_translations_header \
|
&& PATH=${HOST_PATH} make generate_translations_header \
|
||||||
&& make -j${THREADS} -C src \
|
&& make -j${THREADS} -C src \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
FROM ubuntu:16.04
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
ARG THREADS=1
|
ARG THREADS=1
|
||||||
ARG QT_VERSION=5.15.2
|
ARG QT_VERSION=v5.15.13-lts-lgpl
|
||||||
|
|
||||||
ENV CFLAGS="-fPIC"
|
ENV CFLAGS="-fPIC"
|
||||||
ENV CPPFLAGS="-fPIC"
|
ENV CPPFLAGS="-fPIC"
|
||||||
@@ -55,7 +55,7 @@ RUN git clone -b 0.4.0 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-
|
|||||||
git reset --hard acf790d7752f36e450d476ad79807d4012ec863b && \
|
git reset --hard acf790d7752f36e450d476ad79807d4012ec863b && \
|
||||||
git submodule init && \
|
git submodule init && \
|
||||||
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
||||||
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
|
git -C m4 reset --hard c617eee22ae5c285e79e81ec39ce96862fd3262f && \
|
||||||
./autogen.sh --enable-shared --disable-static && \
|
./autogen.sh --enable-shared --disable-static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
@@ -66,7 +66,7 @@ RUN git clone -b 0.4.0 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-
|
|||||||
git reset --hard d882052fb2ce439c6483fce944ba8f16f7294639 && \
|
git reset --hard d882052fb2ce439c6483fce944ba8f16f7294639 && \
|
||||||
git submodule init && \
|
git submodule init && \
|
||||||
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
||||||
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
|
git -C m4 reset --hard c617eee22ae5c285e79e81ec39ce96862fd3262f && \
|
||||||
./autogen.sh --enable-shared --disable-static && \
|
./autogen.sh --enable-shared --disable-static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
@@ -77,7 +77,7 @@ RUN git clone -b 0.4.0 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-
|
|||||||
git reset --hard 0e51ee5570a6a80bdf98770b975dfe8a57f4eeb1 && \
|
git reset --hard 0e51ee5570a6a80bdf98770b975dfe8a57f4eeb1 && \
|
||||||
git submodule init && \
|
git submodule init && \
|
||||||
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
||||||
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
|
git -C m4 reset --hard c617eee22ae5c285e79e81ec39ce96862fd3262f && \
|
||||||
./autogen.sh --enable-shared --disable-static && \
|
./autogen.sh --enable-shared --disable-static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
@@ -88,7 +88,7 @@ RUN git clone -b 0.3.9 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-
|
|||||||
git reset --hard 0317caf63de532fd7a0493ed6afa871a67253747 && \
|
git reset --hard 0317caf63de532fd7a0493ed6afa871a67253747 && \
|
||||||
git submodule init && \
|
git submodule init && \
|
||||||
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
||||||
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
|
git -C m4 reset --hard c617eee22ae5c285e79e81ec39ce96862fd3262f && \
|
||||||
./autogen.sh --enable-shared --disable-static && \
|
./autogen.sh --enable-shared --disable-static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
@@ -99,7 +99,7 @@ RUN git clone -b 0.4.1 --depth 1 https://gitlab.freedesktop.org/xorg/lib/libxcb-
|
|||||||
git reset --hard 24eb17df2e1245885e72c9d4bbb0a0f69f0700f2 && \
|
git reset --hard 24eb17df2e1245885e72c9d4bbb0a0f69f0700f2 && \
|
||||||
git submodule init && \
|
git submodule init && \
|
||||||
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
git clone --depth 1 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 m4 && \
|
||||||
git -C m4 reset --hard f662e3a93ebdec3d1c9374382dcc070093a42fed && \
|
git -C m4 reset --hard c617eee22ae5c285e79e81ec39ce96862fd3262f && \
|
||||||
./autogen.sh --enable-shared --disable-static && \
|
./autogen.sh --enable-shared --disable-static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
@@ -113,9 +113,9 @@ RUN git clone -b xkbcommon-0.5.0 --depth 1 https://github.com/xkbcommon/libxkbco
|
|||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b v1.2.11 --depth 1 https://github.com/madler/zlib && \
|
RUN git clone -b v1.3 --depth 1 https://github.com/madler/zlib && \
|
||||||
cd zlib && \
|
cd zlib && \
|
||||||
git reset --hard cacf7f1d4e3d44d871b605da3b647f07d718623f && \
|
git reset --hard 09155eaa2f9270dc4ed1fa13e2b4b2613e6e4851 && \
|
||||||
./configure --static && \
|
./configure --static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
@@ -130,11 +130,12 @@ RUN git clone -b VER-2-10-2 --depth 1 https://git.savannah.gnu.org/git/freetype/
|
|||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b R_2_2_9 --depth 1 https://github.com/libexpat/libexpat && \
|
RUN wget https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.bz2 && \
|
||||||
cd libexpat/expat && \
|
echo "a247a7f6bbb21cf2ca81ea4cbb916bfb9717ca523631675f99b3d4a5678dcd16 expat-2.4.8.tar.bz2" | sha256sum -c && \
|
||||||
git reset --hard a7bc26b69768f7fb24f0c7976fae24b157b85b13 && \
|
tar -xf expat-2.4.8.tar.bz2 && \
|
||||||
./buildconf.sh && \
|
rm expat-2.4.8.tar.bz2 && \
|
||||||
./configure --disable-shared --enable-static && \
|
cd expat-2.4.8 && \
|
||||||
|
./configure --enable-static --disable-shared --prefix=/usr && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
@@ -155,21 +156,31 @@ RUN git clone -b release-64-2 --depth 1 https://github.com/unicode-org/icu && \
|
|||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN wget https://downloads.sourceforge.net/project/boost/boost/1.73.0/boost_1_73_0.tar.gz && \
|
RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz && \
|
||||||
echo "9995e192e68528793755692917f9eb6422f3052a53c5e13ba278a228af6c7acf boost_1_73_0.tar.gz" | sha256sum -c && \
|
echo "4b2136f98bdd1f5857f1c3dea9ac2018effe65286cf251534b6ae20cc45e1847 boost_1_80_0.tar.gz" | sha256sum -c && \
|
||||||
tar -xzf boost_1_73_0.tar.gz && \
|
tar -xzf boost_1_80_0.tar.gz && \
|
||||||
rm boost_1_73_0.tar.gz && \
|
rm boost_1_80_0.tar.gz && \
|
||||||
cd boost_1_73_0 && \
|
cd boost_1_80_0 && \
|
||||||
./bootstrap.sh && \
|
./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 && \
|
./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)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz && \
|
RUN wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz && \
|
||||||
echo "ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46 openssl-1.1.1g.tar.gz" | sha256sum -c && \
|
echo "e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6 openssl-1.1.1u.tar.gz" | sha256sum -c && \
|
||||||
tar -xzf openssl-1.1.1g.tar.gz && \
|
tar -xzf openssl-1.1.1u.tar.gz && \
|
||||||
rm openssl-1.1.1g.tar.gz && \
|
rm openssl-1.1.1u.tar.gz && \
|
||||||
cd openssl-1.1.1g && \
|
cd openssl-1.1.1u && \
|
||||||
./config no-asm no-shared no-zlib-dynamic --openssldir=/usr && \
|
./config no-shared no-zlib-dynamic --prefix=/usr --openssldir=/usr && \
|
||||||
|
make -j$THREADS && \
|
||||||
|
make -j$THREADS install && \
|
||||||
|
rm -rf $(pwd)
|
||||||
|
|
||||||
|
RUN wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.16.2.tar.gz && \
|
||||||
|
echo "2e32f283820c24c51ca1dd8afecfdb747c7385a137abe865c99db4b257403581 unbound-1.16.2.tar.gz" | sha256sum -c && \
|
||||||
|
tar -xzf unbound-1.16.2.tar.gz && \
|
||||||
|
rm unbound-1.16.2.tar.gz && \
|
||||||
|
cd unbound-1.16.2 && \
|
||||||
|
./configure --disable-shared --enable-static --without-pyunbound --with-libexpat=/usr --with-ssl=/usr --with-libevent=no --without-pythonmodule --disable-flto --with-pthreads --with-libunbound-only --with-pic && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
@@ -214,62 +225,62 @@ RUN rm /usr/lib/x86_64-linux-gnu/libX11.a && \
|
|||||||
cd ../../../.. && \
|
cd ../../../.. && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b v1.0.23 --depth 1 https://github.com/libusb/libusb && \
|
RUN git clone -b v1.0.26 --depth 1 https://github.com/libusb/libusb && \
|
||||||
cd libusb && \
|
cd libusb && \
|
||||||
git reset --hard e782eeb2514266f6738e242cdcb18e3ae1ed06fa && \
|
git reset --hard 4239bc3a50014b8e6a5a2a59df1fff3b7469543b && \
|
||||||
./autogen.sh --disable-shared --enable-static && \
|
./autogen.sh --disable-shared --enable-static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b hidapi-0.9.0 --depth 1 https://github.com/libusb/hidapi && \
|
RUN git clone -b hidapi-0.13.1 --depth 1 https://github.com/libusb/hidapi && \
|
||||||
cd hidapi && \
|
cd hidapi && \
|
||||||
git reset --hard 7da5cc91fc0d2dbe4df4f08cd31f6ca1a262418f && \
|
git reset --hard 4ebce6b5059b086d05ca7e091ce04a5fd08ac3ac && \
|
||||||
./bootstrap && \
|
./bootstrap && \
|
||||||
./configure --disable-shared --enable-static && \
|
./configure --disable-shared --enable-static && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b v4.3.2 --depth 1 https://github.com/zeromq/libzmq && \
|
RUN git clone -b v4.3.4 --depth 1 https://github.com/zeromq/libzmq && \
|
||||||
cd libzmq && \
|
cd libzmq && \
|
||||||
git reset --hard a84ffa12b2eb3569ced199660bac5ad128bff1f0 && \
|
git reset --hard 4097855ddaaa65ed7b5e8cb86d143842a594eebd && \
|
||||||
./autogen.sh && \
|
./autogen.sh && \
|
||||||
./configure --disable-shared --enable-static --disable-libunwind --with-libsodium && \
|
./configure --disable-shared --enable-static --disable-libunwind --with-libsodium && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b libgpg-error-1.38 --depth 1 git://git.gnupg.org/libgpg-error.git && \
|
RUN git clone -b libgpg-error-1.45 --depth 1 git://git.gnupg.org/libgpg-error.git && \
|
||||||
cd libgpg-error && \
|
cd libgpg-error && \
|
||||||
git reset --hard 71d278824c5fe61865f7927a2ed1aa3115f9e439 && \
|
git reset --hard dbac537e5e865fb6f3aa8596d213aa8c47a9dea1 && \
|
||||||
./autogen.sh && \
|
./autogen.sh && \
|
||||||
./configure --disable-shared --enable-static --disable-doc --disable-tests && \
|
./configure --disable-shared --enable-static --disable-doc --disable-tests && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b libgcrypt-1.8.5 --depth 1 git://git.gnupg.org/libgcrypt.git && \
|
RUN git clone -b libgcrypt-1.10.1 --depth 1 git://git.gnupg.org/libgcrypt.git && \
|
||||||
cd libgcrypt && \
|
cd libgcrypt && \
|
||||||
git reset --hard 56606331bc2a80536db9fc11ad53695126007298 && \
|
git reset --hard ae0e567820c37f9640440b3cff77d7c185aa6742 && \
|
||||||
./autogen.sh && \
|
./autogen.sh && \
|
||||||
./configure --disable-shared --enable-static --disable-doc && \
|
./configure --disable-shared --enable-static --disable-doc && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b v3.10.0 --depth 1 https://github.com/protocolbuffers/protobuf && \
|
RUN git clone -b v21.5 --depth 1 https://github.com/protocolbuffers/protobuf && \
|
||||||
cd protobuf && \
|
cd protobuf && \
|
||||||
git reset --hard 6d4e7fd7966c989e38024a8ea693db83758944f1 && \
|
git reset --hard ab840345966d0fa8e7100d771c92a73bfbadd25c && \
|
||||||
./autogen.sh && \
|
./autogen.sh && \
|
||||||
./configure --enable-static --disable-shared && \
|
./configure --enable-static --disable-shared && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
rm -rf $(pwd)
|
rm -rf $(pwd)
|
||||||
|
|
||||||
RUN git clone -b v3.18.4 --depth 1 https://github.com/Kitware/CMake && \
|
RUN git clone -b v3.24.0 --depth 1 https://github.com/Kitware/CMake && \
|
||||||
cd CMake && \
|
cd CMake && \
|
||||||
git reset --hard 3cc3d42aba879fff5e85b363ae8f21386a3f9f9b && \
|
git reset --hard 4be24f031a4829db75b85062cc67125035d8831e && \
|
||||||
./bootstrap && \
|
./bootstrap && \
|
||||||
make -j$THREADS && \
|
make -j$THREADS && \
|
||||||
make -j$THREADS install && \
|
make -j$THREADS install && \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ARG THREADS=1
|
ARG THREADS=1
|
||||||
ARG QT_VERSION=5.15.2
|
ARG QT_VERSION=v5.15.13-lts-lgpl
|
||||||
ENV SOURCE_DATE_EPOCH=1397818193
|
ENV SOURCE_DATE_EPOCH=1397818193
|
||||||
|
|
||||||
RUN apt update && \
|
RUN apt update && \
|
||||||
@@ -12,9 +12,9 @@ RUN apt update && \
|
|||||||
RUN update-alternatives --set x86_64-w64-mingw32-g++ $(which x86_64-w64-mingw32-g++-posix) && \
|
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)
|
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 && \
|
RUN git clone -b v0.18.2.0 --depth 1 https://github.com/monero-project/monero && \
|
||||||
cd monero && \
|
cd monero && \
|
||||||
git reset --hard d27d4526fe89b7cdeb4b296280c4a6cf7efe21f8 && \
|
git reset --hard 99be9a044f3854f339548e2d99c539c18d7b1b01 && \
|
||||||
cp -a contrib/depends / && \
|
cp -a contrib/depends / && \
|
||||||
cd .. && \
|
cd .. && \
|
||||||
rm -rf monero
|
rm -rf monero
|
||||||
|
|||||||
2
LICENSE
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2014-2018, The Monero Project
|
Copyright (c) 2014-2024, The Monero Project
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -120,7 +120,7 @@ Rectangle {
|
|||||||
width: 260
|
width: 260
|
||||||
height: 135
|
height: 135
|
||||||
fillMode: Image.PreserveAspectFit
|
fillMode: Image.PreserveAspectFit
|
||||||
source: MoneroComponents.Style.blackTheme ? "qrc:///images/card-background-black.png" : "qrc:///images/card-background-white.png"
|
source: MoneroComponents.Style.blackTheme ? "qrc:///images/card-background-black" + (currentAccountIndex % MoneroComponents.Style.accountColors.length) + ".png" : "qrc:///images/card-background-white.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
DropShadow {
|
DropShadow {
|
||||||
@@ -360,7 +360,8 @@ Rectangle {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: qsTr("Account") + translationManager.emptyString
|
text: qsTr("Account") + translationManager.emptyString
|
||||||
symbol: qsTr("T") + translationManager.emptyString
|
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "T" + translationManager.emptyString
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
parent.previousButton.checked = false
|
parent.previousButton.checked = false
|
||||||
parent.previousButton = accountButton
|
parent.previousButton = accountButton
|
||||||
@@ -381,7 +382,7 @@ Rectangle {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: qsTr("Send") + translationManager.emptyString
|
text: qsTr("Send") + translationManager.emptyString
|
||||||
symbol: qsTr("S") + translationManager.emptyString
|
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "S" + translationManager.emptyString
|
||||||
onClicked: {
|
onClicked: {
|
||||||
parent.previousButton.checked = false
|
parent.previousButton.checked = false
|
||||||
parent.previousButton = transferButton
|
parent.previousButton = transferButton
|
||||||
@@ -403,7 +404,7 @@ Rectangle {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: qsTr("Address book") + translationManager.emptyString
|
text: qsTr("Address book") + translationManager.emptyString
|
||||||
symbol: qsTr("B") + translationManager.emptyString
|
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "B" + translationManager.emptyString
|
||||||
under: transferButton
|
under: transferButton
|
||||||
onClicked: {
|
onClicked: {
|
||||||
parent.previousButton.checked = false
|
parent.previousButton.checked = false
|
||||||
@@ -425,7 +426,7 @@ Rectangle {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: qsTr("Receive") + translationManager.emptyString
|
text: qsTr("Receive") + translationManager.emptyString
|
||||||
symbol: qsTr("R") + translationManager.emptyString
|
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "R" + translationManager.emptyString
|
||||||
onClicked: {
|
onClicked: {
|
||||||
parent.previousButton.checked = false
|
parent.previousButton.checked = false
|
||||||
parent.previousButton = receiveButton
|
parent.previousButton = receiveButton
|
||||||
@@ -447,7 +448,7 @@ Rectangle {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: qsTr("Transactions") + translationManager.emptyString
|
text: qsTr("Transactions") + translationManager.emptyString
|
||||||
symbol: qsTr("H") + translationManager.emptyString
|
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "H" + translationManager.emptyString
|
||||||
onClicked: {
|
onClicked: {
|
||||||
parent.previousButton.checked = false
|
parent.previousButton.checked = false
|
||||||
parent.previousButton = historyButton
|
parent.previousButton = historyButton
|
||||||
@@ -469,7 +470,7 @@ Rectangle {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: qsTr("Advanced") + translationManager.emptyString
|
text: qsTr("Advanced") + translationManager.emptyString
|
||||||
symbol: qsTr("D") + translationManager.emptyString
|
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "D" + translationManager.emptyString
|
||||||
onClicked: {
|
onClicked: {
|
||||||
parent.previousButton.checked = false
|
parent.previousButton.checked = false
|
||||||
parent.previousButton = advancedButton
|
parent.previousButton = advancedButton
|
||||||
@@ -490,7 +491,7 @@ Rectangle {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
text: qsTr("Settings") + translationManager.emptyString
|
text: qsTr("Settings") + translationManager.emptyString
|
||||||
symbol: qsTr("E") + translationManager.emptyString
|
symbol: (isMac ? "⌃" : qsTr("Ctrl+")) + "E" + translationManager.emptyString
|
||||||
onClicked: {
|
onClicked: {
|
||||||
parent.previousButton.checked = false
|
parent.previousButton.checked = false
|
||||||
parent.previousButton = settingsButton
|
parent.previousButton = settingsButton
|
||||||
|
|||||||
17
Makefile
@@ -29,7 +29,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
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)
|
mkdir -p build && cd build && cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
|
||||||
debug:
|
debug:
|
||||||
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
|
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
|
||||||
|
|
||||||
@@ -38,19 +38,20 @@ depends:
|
|||||||
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)
|
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:
|
devmode:
|
||||||
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)
|
mkdir -p build && cd build && cmake -D DEV_MODE=$(or ${DEV_MODE},ON) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release .. && $(MAKE)
|
||||||
clean:
|
clean:
|
||||||
mkdir -p build && cd build && rm -rf *
|
mkdir -p build && cd build && rm -rf *
|
||||||
scanner:
|
scanner:
|
||||||
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)
|
mkdir -p build && cd build && cmake -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:
|
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)
|
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-linux-armv8:
|
release-linux-armv8:
|
||||||
mkdir -p $(builddir)/release
|
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)
|
||||||
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-linux-ppc64le:
|
||||||
|
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -DMANUAL_SUBMODULES=${MANUAL_SUBMODULES} -D ARCH="ppc64le" -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static:
|
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)
|
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)
|
||||||
@@ -60,7 +61,7 @@ debug-static-win64:
|
|||||||
|
|
||||||
debug-static-mac64:
|
debug-static-mac64:
|
||||||
mkdir -p $(builddir)/debug
|
mkdir -p $(builddir)/debug
|
||||||
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)
|
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=Debug -D BUILD_TAG="mac-x64" $(topdir) && $(MAKE)
|
||||||
|
|
||||||
release-static-win64:
|
release-static-win64:
|
||||||
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)
|
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)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -66,7 +66,7 @@ Rectangle {
|
|||||||
signal paymentClicked(var recipients, string paymentId, int mixinCount, int priority, string description)
|
signal paymentClicked(var recipients, string paymentId, int mixinCount, int priority, string description)
|
||||||
signal sweepUnmixableClicked()
|
signal sweepUnmixableClicked()
|
||||||
signal generatePaymentIdInvoked()
|
signal generatePaymentIdInvoked()
|
||||||
signal getProofClicked(string txid, string address, string message);
|
signal getProofClicked(string txid, string address, string message, string amount);
|
||||||
signal checkProofClicked(string txid, string address, string message, string signature);
|
signal checkProofClicked(string txid, string address, string message, string signature);
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
|||||||
45
README.md
@@ -1,6 +1,6 @@
|
|||||||
# Monero GUI
|
# Monero GUI
|
||||||
|
|
||||||
Copyright (c) 2014-2019, The Monero Project
|
Copyright (c) 2014-2024, The Monero Project
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
* [Development resources](#development-resources)
|
* [Development resources](#development-resources)
|
||||||
@@ -75,9 +75,10 @@ See [LICENSE](LICENSE).
|
|||||||
|
|
||||||
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.
|
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)
|
If you need help/support or any info you can contact the localization workgroup on the IRC channel #monero-translations (relayed on [Matrix](https://matrix.to/#/!BKMbQLMDzHKzmtrBfg:matrix.org?via=monero.social&via=matrix.org&via=libera.chat)) 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:
|
Status of the translations:
|
||||||
|
|
||||||
<a href="https://translate.getmonero.org/engage/monero/?utm_source=widget">
|
<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" />
|
<img src="https://translate.getmonero.org/widgets/monero/-/gui-wallet/horizontal-auto.svg" alt="Translation status" />
|
||||||
</a>
|
</a>
|
||||||
@@ -85,9 +86,9 @@ Status of the translations:
|
|||||||
## Installing the Monero GUI from a package
|
## Installing the Monero GUI from a package
|
||||||
|
|
||||||
Packages are available for
|
Packages are available for
|
||||||
* Arch Linux: [monero-gui](https://www.archlinux.org/packages/community/x86_64/monero-gui/)
|
* Arch Linux: [monero-gui](https://archlinux.org/packages/extra/x86_64/monero-gui/)
|
||||||
* Debian: See the [whonix/monero-gui repository](https://gitlab.com/whonix/monero-gui#how-to-install-monero-using-apt-get)
|
* NixOS: `nix-shell -p monero-gui`
|
||||||
* Void Linux: `xbps-install -S monero-gui`
|
* Flatpak: [Monero GUI](https://flathub.org/apps/details/org.getmonero.Monero)
|
||||||
* GuixSD: `guix package -i monero-gui`
|
* GuixSD: `guix package -i monero-gui`
|
||||||
* macOS (homebrew): `brew install --cask monero-wallet`
|
* macOS (homebrew): `brew install --cask monero-wallet`
|
||||||
|
|
||||||
@@ -97,6 +98,8 @@ Packaging for your favorite distribution would be a welcome contribution!
|
|||||||
|
|
||||||
*Note*: Qt 5.9.7 is the minimum version required to build the GUI.
|
*Note*: Qt 5.9.7 is the minimum version required to build the GUI.
|
||||||
|
|
||||||
|
*Note*: Official GUI releases use monero-wallet-gui from this process alongside the supporting binaries (monerod, etc) from the [CLI deterministic builds](https://github.com/monero-project/monero/blob/master/contrib/gitian/README.md).
|
||||||
|
|
||||||
### Building Reproducible Windows static binaries with Docker (any OS)
|
### Building Reproducible Windows static binaries with Docker (any OS)
|
||||||
|
|
||||||
1. Install Docker [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
|
1. Install Docker [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
|
||||||
@@ -104,7 +107,7 @@ Packaging for your favorite distribution would be a welcome contribution!
|
|||||||
```
|
```
|
||||||
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
|
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.
|
\* `master` - replace with the desired version tag (e.g. `v0.18.3.3`) to build the release binaries.
|
||||||
3. Prepare build environment
|
3. Prepare build environment
|
||||||
```
|
```
|
||||||
cd monero-gui
|
cd monero-gui
|
||||||
@@ -127,7 +130,7 @@ Packaging for your favorite distribution would be a welcome contribution!
|
|||||||
```
|
```
|
||||||
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
|
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.
|
\* `master` - replace with the desired version tag (e.g. `v0.18.3.3`) to build the release binaries.
|
||||||
3. Prepare build environment
|
3. Prepare build environment
|
||||||
```
|
```
|
||||||
cd monero-gui
|
cd monero-gui
|
||||||
@@ -205,11 +208,11 @@ Packaging for your favorite distribution would be a welcome contribution!
|
|||||||
|
|
||||||
- For Debian distributions (Debian, Ubuntu, Mint, Tails...)
|
- 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 libprotobuf-dev protobuf-compiler libgcrypt20-dev`
|
`sudo apt install build-essential cmake 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 libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev`
|
||||||
|
|
||||||
- For Gentoo
|
- 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 dev-libs/libgcrypt`
|
`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/miniupnpc net-libs/zeromq sys-libs/libunwind dev-libs/libsodium dev-libs/hidapi dev-libs/libgcrypt`
|
||||||
|
|
||||||
- For Fedora
|
- For Fedora
|
||||||
|
|
||||||
@@ -217,29 +220,30 @@ Packaging for your favorite distribution would be a welcome contribution!
|
|||||||
|
|
||||||
2. Install Qt:
|
2. Install Qt:
|
||||||
|
|
||||||
*Note*: The Qt 5.9.7 or newer requirement makes **some** distributions (mostly based on debian, like Ubuntu 16.x or Linux Mint 18.x) obsolete due to their repositories containing an older Qt version.
|
*Note*: The Qt 5.9.7 or newer requirement makes **some** distributions (mostly based on Debian, like Ubuntu 16.x or Linux Mint 18.x) obsolete due to their repositories containing an older Qt version.
|
||||||
|
|
||||||
The recommended way is to install 5.9.7 from the [official Qt installer](https://www.qt.io/download-qt-installer) or [compiling it yourself](https://wiki.qt.io/Install_Qt_5_on_Ubuntu). This ensures you have the correct version. Higher versions *can* work but as it differs from our production build target, slight differences may occur.
|
The recommended way is to install 5.9.7 from the [official Qt installer](https://www.qt.io/download-qt-installer) or [compiling it yourself](https://wiki.qt.io/Install_Qt_5_on_Ubuntu). This ensures you have the correct version. Higher versions *can* work but as it differs from our production build target, slight differences may occur.
|
||||||
|
|
||||||
The following instructions will fetch Qt from your distribution's repositories instead. Take note of what version it installs. Your mileage may vary.
|
The following instructions will fetch Qt from your distribution's repositories instead. Take note of what version it installs. Your mileage may vary.
|
||||||
|
|
||||||
- For Ubuntu 17.10+
|
- For Debian distributions (Debian, Ubuntu, Mint, Tails...)
|
||||||
|
|
||||||
`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`
|
`sudo apt install qtbase5-dev 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
|
- For Gentoo
|
||||||
|
|
||||||
|
|
||||||
|
The *qml* USE flag must be enabled.
|
||||||
|
|
||||||
`sudo emerge dev-qt/qtcore:5 dev-qt/qtdeclarative:5 dev-qt/qtquickcontrols:5 dev-qt/qtquickcontrols2:5 dev-qt/qtgraphicaleffects:5`
|
`sudo emerge dev-qt/qtcore:5 dev-qt/qtdeclarative:5 dev-qt/qtquickcontrols:5 dev-qt/qtquickcontrols2:5 dev-qt/qtgraphicaleffects:5`
|
||||||
|
|
||||||
- Optional : To build the flag `WITH_SCANNER`
|
- Optional : To build the flag `WITH_SCANNER`
|
||||||
|
|
||||||
- For Ubuntu
|
- For Debian distributions (Debian, Ubuntu, Mint, Tails...)
|
||||||
|
|
||||||
`sudo apt install qtmultimedia5-dev qml-module-qtmultimedia`
|
`sudo apt install qtmultimedia5-dev qml-module-qtmultimedia`
|
||||||
|
|
||||||
- For Gentoo
|
- For Gentoo
|
||||||
|
|
||||||
The *qml* USE flag must be enabled.
|
|
||||||
|
|
||||||
`emerge dev-qt/qtmultimedia:5`
|
`emerge dev-qt/qtmultimedia:5`
|
||||||
|
|
||||||
@@ -256,8 +260,9 @@ The following instructions will fetch Qt from your distribution's repositories i
|
|||||||
```
|
```
|
||||||
make release -j4
|
make release -j4
|
||||||
```
|
```
|
||||||
|
|
||||||
\* `4` - number of CPU threads to use
|
\* `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`
|
\* Add `CMAKE_PREFIX_PATH` environment 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.
|
The executable can be found in the build/release/bin folder.
|
||||||
|
|
||||||
@@ -269,7 +274,7 @@ The executable can be found in the build/release/bin folder.
|
|||||||
|
|
||||||
3. Install [monero](https://github.com/monero-project/monero) dependencies:
|
3. Install [monero](https://github.com/monero-project/monero) dependencies:
|
||||||
|
|
||||||
`brew install boost hidapi zmq libpgm libsodium miniupnpc ldns expat libunwind-headers protobuf libgcrypt`
|
`brew install cmake pkg-config openssl boost unbound hidapi zmq libpgm libsodium miniupnpc expat libunwind-headers protobuf libgcrypt`
|
||||||
|
|
||||||
4. Install Qt:
|
4. Install Qt:
|
||||||
|
|
||||||
@@ -288,7 +293,7 @@ The executable can be found in the build/release/bin folder.
|
|||||||
make release -j4
|
make release -j4
|
||||||
```
|
```
|
||||||
\* `4` - number of CPU threads to use
|
\* `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`
|
\* Add `CMAKE_PREFIX_PATH` environment 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.
|
The executable can be found in the `build/release/bin` folder.
|
||||||
|
|
||||||
@@ -305,7 +310,7 @@ 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
|
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 mingw-w64-x86_64-libgcrypt
|
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 mingw-w64-x86_64-unbound mingw-w64-x86_64-pcre
|
||||||
```
|
```
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2019, The Monero Project
|
# Copyright (c) 2014-2024, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2019, The Monero Project
|
# Copyright (c) 2014-2024, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -17,7 +17,33 @@ if(APPLE OR (WIN32 AND NOT STATIC))
|
|||||||
add_custom_command(TARGET deploy
|
add_custom_command(TARGET deploy
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${_qt_svg_dylib} $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/
|
COMMAND ${CMAKE_COMMAND} -E copy ${_qt_svg_dylib} $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/
|
||||||
COMMENT "Copying libqsvg.dylib"
|
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "${CMAKE_PREFIX_PATH}/lib/QtGui.framework/Versions/5/QtGui" "@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/QtWidgets.framework/Versions/5/QtWidgets" "@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets" $<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/QtSvg.framework/Versions/5/QtSvg" $<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/QtCore.framework/Versions/5/QtCore" $<TARGET_FILE_DIR:monero-wallet-gui>/../PlugIns/imageformats/libqsvg.dylib
|
||||||
|
COMMENT "Copying libqsvg.dylib, running install_name_tool"
|
||||||
|
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# libbost_filesyste-mt.dylib has a dependency on libboost_atomic-mt.dylib, maydeployqt does not copy it by itself
|
||||||
|
find_package(Boost COMPONENTS atomic)
|
||||||
|
get_target_property(BOOST_ATOMIC_LIB_PATH Boost::atomic LOCATION)
|
||||||
|
if(EXISTS ${BOOST_ATOMIC_LIB_PATH})
|
||||||
|
add_custom_command(TARGET deploy
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy "${BOOST_ATOMIC_LIB_PATH}" "$<TARGET_FILE_DIR:monero-wallet-gui>/../Frameworks/"
|
||||||
|
COMMENT "Copying libboost_atomic-mt.dylib"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Apple Silicon requires all binaries to be codesigned
|
||||||
|
find_program(CODESIGN_EXECUTABLE NAMES codesign)
|
||||||
|
if(CODESIGN_EXECUTABLE)
|
||||||
|
add_custom_command(TARGET deploy
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CODESIGN_EXECUTABLE}" --force --deep --sign - "$<TARGET_FILE_DIR:monero-wallet-gui>/../.."
|
||||||
|
COMMENT "Running codesign..."
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -42,7 +68,7 @@ if(APPLE OR (WIN32 AND NOT STATIC))
|
|||||||
zlib1.dll
|
zlib1.dll
|
||||||
libzstd.dll
|
libzstd.dll
|
||||||
libwinpthread-1.dll
|
libwinpthread-1.dll
|
||||||
libtiff-5.dll
|
libtiff-6.dll
|
||||||
libstdc++-6.dll
|
libstdc++-6.dll
|
||||||
libpng16-16.dll
|
libpng16-16.dll
|
||||||
libpcre16-0.dll
|
libpcre16-0.dll
|
||||||
@@ -58,37 +84,25 @@ if(APPLE OR (WIN32 AND NOT STATIC))
|
|||||||
libglib-2.0-0.dll
|
libglib-2.0-0.dll
|
||||||
libfreetype-6.dll
|
libfreetype-6.dll
|
||||||
libbz2-1.dll
|
libbz2-1.dll
|
||||||
libssp-0.dll
|
|
||||||
libpcre2-16-0.dll
|
libpcre2-16-0.dll
|
||||||
libhidapi-0.dll
|
libhidapi-0.dll
|
||||||
libdouble-conversion.dll
|
libdouble-conversion.dll
|
||||||
libgcrypt-20.dll
|
libgcrypt-20.dll
|
||||||
libgpg-error-0.dll
|
libgpg-error-0.dll
|
||||||
libsodium-23.dll
|
libsodium-26.dll
|
||||||
libzmq.dll
|
libzmq.dll
|
||||||
#platform files
|
#platform files
|
||||||
libgcc_s_seh-1.dll
|
libgcc_s_seh-1.dll
|
||||||
#openssl files
|
#openssl files
|
||||||
libssl-1_1-x64.dll
|
libssl-3-x64.dll
|
||||||
libcrypto-1_1-x64.dll
|
libcrypto-3-x64.dll
|
||||||
|
#icu
|
||||||
|
libicudt74.dll
|
||||||
|
libicuin74.dll
|
||||||
|
libicuio74.dll
|
||||||
|
libicutu74.dll
|
||||||
|
libicuuc74.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/")
|
list(TRANSFORM WIN_DEPLOY_DLLS PREPEND "$ENV{MSYSTEM_PREFIX}/bin/")
|
||||||
add_custom_command(TARGET deploy
|
add_custom_command(TARGET deploy
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
# 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.
|
|
||||||
# - 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
|
|
||||||
|
|
||||||
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()
|
|
||||||
@@ -1,67 +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
|
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
||||||
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()
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2014-2019, The Monero Project
|
# Copyright (c) 2014-2024, The Monero Project
|
||||||
#
|
#
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
#
|
#
|
||||||
@@ -26,7 +26,8 @@
|
|||||||
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
# 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.
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
function (write_static_version_header VERSION_TAG_GUI)
|
function (write_static_version_header tag)
|
||||||
|
set(VERSION_TAG_GUI "${tag}" CACHE STRING "The tag portion of the Monero GUI software version" FORCE)
|
||||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.js.in" "${CMAKE_CURRENT_SOURCE_DIR}/version.js")
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/version.js.in" "${CMAKE_CURRENT_SOURCE_DIR}/version.js")
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
@@ -36,11 +37,8 @@ if ("$Format:$" STREQUAL "")
|
|||||||
write_static_version_header("release")
|
write_static_version_header("release")
|
||||||
elseif (GIT_FOUND OR Git_FOUND)
|
elseif (GIT_FOUND OR Git_FOUND)
|
||||||
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
||||||
|
get_version_tag_from_git("${GIT_EXECUTABLE}")
|
||||||
include(GitGetVersionTag)
|
write_static_version_header(${VERSIONTAG})
|
||||||
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()
|
else()
|
||||||
message(STATUS "WARNING: Git was not found!")
|
message(STATUS "WARNING: Git was not found!")
|
||||||
write_static_version_header("unknown")
|
write_static_version_header("unknown")
|
||||||
|
|||||||
@@ -37,27 +37,30 @@ RowLayout {
|
|||||||
Layout.fillWidth: false
|
Layout.fillWidth: false
|
||||||
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
|
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
|
||||||
spacing: 4
|
spacing: 4
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Layout.fillWidth: false
|
Layout.fillWidth: false
|
||||||
spacing: 12
|
spacing: 12
|
||||||
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
|
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
|
||||||
|
|
||||||
StandardButton {
|
StandardButton {
|
||||||
id: button1
|
id: button1
|
||||||
small: true
|
small: true
|
||||||
|
primary: false
|
||||||
visible: button1.text
|
visible: button1.text
|
||||||
}
|
}
|
||||||
|
|
||||||
StandardButton {
|
StandardButton {
|
||||||
id: button2
|
id: button2
|
||||||
small: true
|
small: true
|
||||||
|
primary: false
|
||||||
visible: button2.text
|
visible: button2.text
|
||||||
}
|
}
|
||||||
|
|
||||||
StandardButton {
|
StandardButton {
|
||||||
id: button3
|
id: button3
|
||||||
small: true
|
small: true
|
||||||
|
primary: false
|
||||||
visible: button3.text
|
visible: button3.text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2015, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -5,14 +5,21 @@ import FontAwesome 1.0
|
|||||||
import "../components" as MoneroComponents
|
import "../components" as MoneroComponents
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
|
signal cut()
|
||||||
|
signal copy()
|
||||||
signal paste()
|
signal paste()
|
||||||
|
signal remove()
|
||||||
|
signal selectAll()
|
||||||
|
|
||||||
id: root
|
id: root
|
||||||
acceptedButtons: Qt.RightButton
|
acceptedButtons: Qt.RightButton
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (mouse.button === Qt.RightButton)
|
if (mouse.button === Qt.RightButton) {
|
||||||
|
root.parent.persistentSelection = true;
|
||||||
contextMenu.open()
|
contextMenu.open()
|
||||||
|
root.parent.cursorVisible = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Menu {
|
Menu {
|
||||||
@@ -22,19 +29,50 @@ MouseArea {
|
|||||||
border.color: MoneroComponents.Style.buttonBackgroundColorDisabledHover
|
border.color: MoneroComponents.Style.buttonBackgroundColorDisabledHover
|
||||||
border.width: 1
|
border.width: 1
|
||||||
radius: 2
|
radius: 2
|
||||||
color: MoneroComponents.Style.buttonBackgroundColorDisabled
|
color: MoneroComponents.Style.blackTheme ? MoneroComponents.Style.buttonBackgroundColorDisabled : "#E5E5E5"
|
||||||
}
|
}
|
||||||
|
|
||||||
padding: 1
|
padding: 1
|
||||||
width: 100
|
width: 110
|
||||||
x: root.mouseX
|
x: root.mouseX
|
||||||
y: root.mouseY
|
y: root.mouseY
|
||||||
|
|
||||||
|
onClosed: {
|
||||||
|
if (!root.parent.activeFocus) {
|
||||||
|
root.parent.cursorVisible = false;
|
||||||
|
}
|
||||||
|
root.parent.persistentSelection = false;
|
||||||
|
root.parent.forceActiveFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
MoneroComponents.ContextMenuItem {
|
||||||
|
enabled: root.parent.selectedText != "" && !root.parent.readOnly
|
||||||
|
onTriggered: root.cut()
|
||||||
|
text: qsTr("Cut") + translationManager.emptyString
|
||||||
|
}
|
||||||
|
|
||||||
|
MoneroComponents.ContextMenuItem {
|
||||||
|
enabled: root.parent.selectedText != ""
|
||||||
|
onTriggered: root.copy()
|
||||||
|
text: qsTr("Copy") + translationManager.emptyString
|
||||||
|
}
|
||||||
|
|
||||||
MoneroComponents.ContextMenuItem {
|
MoneroComponents.ContextMenuItem {
|
||||||
enabled: root.parent.canPaste === true
|
enabled: root.parent.canPaste === true
|
||||||
glyphIcon: FontAwesome.paste
|
|
||||||
onTriggered: root.paste()
|
onTriggered: root.paste()
|
||||||
text: qsTr("Paste") + translationManager.emptyString
|
text: qsTr("Paste") + translationManager.emptyString
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MoneroComponents.ContextMenuItem {
|
||||||
|
enabled: root.parent.selectedText != "" && !root.parent.readOnly
|
||||||
|
onTriggered: root.remove()
|
||||||
|
text: qsTr("Delete") + translationManager.emptyString
|
||||||
|
}
|
||||||
|
|
||||||
|
MoneroComponents.ContextMenuItem {
|
||||||
|
enabled: root.parent.text != ""
|
||||||
|
onTriggered: root.selectAll()
|
||||||
|
text: qsTr("Select All") + translationManager.emptyString
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,21 +13,31 @@ MenuItem {
|
|||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
color: MoneroComponents.Style.buttonBackgroundColorDisabledHover
|
color: MoneroComponents.Style.buttonBackgroundColorDisabledHover
|
||||||
opacity: mouse.containsMouse ? 1 : 0
|
opacity: 0
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: mouse
|
id: mouse
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
onClicked: menuItem.triggered()
|
onEntered: {
|
||||||
visible: menuItem.enabled
|
parent.opacity = 1;
|
||||||
|
}
|
||||||
|
onExited: {
|
||||||
|
parent.opacity = 0;
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
if (menuItem.enabled) {
|
||||||
|
menuItem.triggered();
|
||||||
|
parent.opacity = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contentItem: RowLayout {
|
contentItem: RowLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.leftMargin: 10
|
anchors.leftMargin: 20
|
||||||
anchors.rightMargin: 10
|
anchors.rightMargin: 10
|
||||||
opacity: menuItem.enabled ? 1 : 0.4
|
opacity: menuItem.enabled ? 1 : 0.4
|
||||||
spacing: 8
|
spacing: 8
|
||||||
@@ -42,7 +52,7 @@ MenuItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
color: MoneroComponents.Style.buttonTextColor
|
color: MoneroComponents.Style.blackTheme ? MoneroComponents.Style.buttonTextColor : MoneroComponents.Style.defaultFontColor
|
||||||
font.family: MoneroComponents.Style.fontRegular.name
|
font.family: MoneroComponents.Style.fontRegular.name
|
||||||
font.pixelSize: 14
|
font.pixelSize: 14
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -32,6 +32,7 @@ import QtQuick.Dialogs 1.2
|
|||||||
import QtQuick.Layouts 1.1
|
import QtQuick.Layouts 1.1
|
||||||
import QtQuick.Controls.Styles 1.4
|
import QtQuick.Controls.Styles 1.4
|
||||||
import QtQuick.Window 2.0
|
import QtQuick.Window 2.0
|
||||||
|
import moneroComponents.Wallet 1.0
|
||||||
|
|
||||||
import "../components" as MoneroComponents
|
import "../components" as MoneroComponents
|
||||||
|
|
||||||
@@ -79,6 +80,10 @@ Window {
|
|||||||
running: false;
|
running: false;
|
||||||
repeat: true
|
repeat: true
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
|
if (currentWallet.connected() == Wallet.ConnectionStatus_Connected) {
|
||||||
|
running = false;
|
||||||
|
root.close();
|
||||||
|
}
|
||||||
countDown--;
|
countDown--;
|
||||||
if(countDown < 0){
|
if(countDown < 0){
|
||||||
running = false;
|
running = false;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021, The Monero Project
|
// Copyright (c) 2021-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -64,9 +64,9 @@ Item {
|
|||||||
Rectangle{
|
Rectangle{
|
||||||
id: rect
|
id: rect
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: MoneroComponents.Style.buttonInlineBackgroundColor
|
color: buttonArea.containsMouse ? MoneroComponents.Style.buttonInlineBackgroundColorHover : MoneroComponents.Style.buttonInlineBackgroundColor
|
||||||
radius: 4
|
radius: 4
|
||||||
|
border.width: parent.focus && parent.enabled ? 1 : 0
|
||||||
|
|
||||||
MoneroComponents.TextPlain {
|
MoneroComponents.TextPlain {
|
||||||
id: inlineText
|
id: inlineText
|
||||||
@@ -101,13 +101,9 @@ Item {
|
|||||||
}
|
}
|
||||||
onEntered: {
|
onEntered: {
|
||||||
tooltip.text ? tooltip.tooltipPopup.open() : ""
|
tooltip.text ? tooltip.tooltipPopup.open() : ""
|
||||||
rect.color = buttonColor ? buttonColor : "#707070";
|
|
||||||
rect.opacity = 0.8;
|
|
||||||
}
|
}
|
||||||
onExited: {
|
onExited: {
|
||||||
tooltip.text ? tooltip.tooltipPopup.close() : ""
|
tooltip.text ? tooltip.tooltipPopup.close() : ""
|
||||||
rect.opacity = 1.0;
|
|
||||||
rect.color = buttonColor ? buttonColor : "#808080";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -48,9 +48,16 @@ TextField {
|
|||||||
|
|
||||||
MoneroComponents.ContextMenu {
|
MoneroComponents.ContextMenu {
|
||||||
cursorShape: Qt.IBeamCursor
|
cursorShape: Qt.IBeamCursor
|
||||||
|
onCut: textField.cut();
|
||||||
|
onCopy: textField.copy();
|
||||||
onPaste: {
|
onPaste: {
|
||||||
textField.clear();
|
var previoustextFieldLength = textField.length
|
||||||
|
var previousCursorPosition = textField.cursorPosition;
|
||||||
textField.paste();
|
textField.paste();
|
||||||
|
textField.forceActiveFocus()
|
||||||
|
textField.cursorPosition = previousCursorPosition + (textField.length - previoustextFieldLength);
|
||||||
}
|
}
|
||||||
|
onRemove: textField.remove(selectionStart, selectionEnd);
|
||||||
|
onSelectAll: textField.selectAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2015, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -71,9 +71,16 @@ TextArea {
|
|||||||
|
|
||||||
MoneroComponents.ContextMenu {
|
MoneroComponents.ContextMenu {
|
||||||
cursorShape: Qt.IBeamCursor
|
cursorShape: Qt.IBeamCursor
|
||||||
|
onCut: textArea.cut();
|
||||||
|
onCopy: textArea.copy();
|
||||||
onPaste: {
|
onPaste: {
|
||||||
textArea.clear();
|
var previoustextFieldLength = textArea.length
|
||||||
|
var previousCursorPosition = textArea.cursorPosition;
|
||||||
textArea.paste();
|
textArea.paste();
|
||||||
|
textArea.forceActiveFocus()
|
||||||
|
textArea.cursorPosition = previousCursorPosition + (textArea.length - previoustextFieldLength);
|
||||||
}
|
}
|
||||||
|
onRemove: textArea.remove(selectionStart, selectionEnd);
|
||||||
|
onSelectAll: textArea.selectAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2015, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2015, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -34,6 +34,7 @@ import "../components/effects/" as MoneroEffects
|
|||||||
Label {
|
Label {
|
||||||
id: item
|
id: item
|
||||||
fontSize: 18
|
fontSize: 18
|
||||||
|
tooltipIconVisible: true
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.top: item.bottom
|
anchors.top: item.bottom
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2020, The Monero Project
|
// Copyright (c) 2020-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -40,6 +40,8 @@ ColumnLayout {
|
|||||||
default property alias content: inlineButtons.children
|
default property alias content: inlineButtons.children
|
||||||
|
|
||||||
property alias input: input
|
property alias input: input
|
||||||
|
property bool inputHasFocus: input.activeFocus
|
||||||
|
property bool tabNavigationEnabled: true
|
||||||
property alias text: input.text
|
property alias text: input.text
|
||||||
|
|
||||||
property int inputPaddingLeft: 10
|
property int inputPaddingLeft: 10
|
||||||
@@ -109,6 +111,8 @@ ColumnLayout {
|
|||||||
signal editingFinished();
|
signal editingFinished();
|
||||||
signal accepted();
|
signal accepted();
|
||||||
signal textUpdated();
|
signal textUpdated();
|
||||||
|
signal backtabPressed();
|
||||||
|
signal tabPressed();
|
||||||
|
|
||||||
onActiveFocusChanged: activeFocus && input.forceActiveFocus()
|
onActiveFocusChanged: activeFocus && input.forceActiveFocus()
|
||||||
onTextUpdated: {
|
onTextUpdated: {
|
||||||
@@ -212,13 +216,23 @@ ColumnLayout {
|
|||||||
|
|
||||||
MoneroComponents.Input {
|
MoneroComponents.Input {
|
||||||
id: input
|
id: input
|
||||||
KeyNavigation.backtab: item.KeyNavigation.backtab
|
Keys.onBacktabPressed: {
|
||||||
KeyNavigation.tab: item.KeyNavigation.tab
|
item.backtabPressed();
|
||||||
|
if (item.KeyNavigation.backtab) {
|
||||||
|
item.KeyNavigation.backtab.forceActiveFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Keys.onTabPressed: {
|
||||||
|
item.tabPressed();
|
||||||
|
if (item.KeyNavigation.tab) {
|
||||||
|
item.KeyNavigation.tab.forceActiveFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: inputHeight
|
Layout.preferredHeight: inputHeight
|
||||||
|
|
||||||
leftPadding: item.inputPaddingLeft
|
leftPadding: item.inputPaddingLeft
|
||||||
rightPadding: (inlineButtons.width > 0 ? inlineButtons.width + inlineButtons.spacing : 0) + inputPaddingRight
|
rightPadding: (inlineButtons.width > 0 ? inlineButtons.width + inlineButtons.spacing : 0) + inputPaddingRight + (password || passwordLinked ? 45 : 0)
|
||||||
topPadding: item.inputPaddingTop
|
topPadding: item.inputPaddingTop
|
||||||
bottomPadding: item.inputPaddingBottom
|
bottomPadding: item.inputPaddingBottom
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -92,7 +92,7 @@ Rectangle {
|
|||||||
anchors.leftMargin: 20
|
anchors.leftMargin: 20
|
||||||
height: parent.height
|
height: parent.height
|
||||||
width: 2
|
width: 2
|
||||||
color: button.checked ? MoneroComponents.Style.buttonBackgroundColor : "transparent"
|
color: button.checked ? MoneroComponents.Style.accountColors[currentAccountIndex % MoneroComponents.Style.accountColors.length] : "transparent"
|
||||||
|
|
||||||
// button text
|
// button text
|
||||||
MoneroComponents.TextPlain {
|
MoneroComponents.TextPlain {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2021, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -32,6 +32,8 @@ import "." as MoneroComponents
|
|||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
default property list<MoneroComponents.NavbarItem> items
|
default property list<MoneroComponents.NavbarItem> items
|
||||||
|
property alias currentIndex: repeater.currentIndex
|
||||||
|
property alias previousIndex: repeater.previousIndex
|
||||||
|
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
height: grid.height
|
height: grid.height
|
||||||
@@ -100,7 +102,10 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
|
id: repeater
|
||||||
model: items.length
|
model: items.length
|
||||||
|
property int currentIndex: 0
|
||||||
|
property int previousIndex: 0
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: 0
|
spacing: 0
|
||||||
@@ -149,7 +154,11 @@ Rectangle {
|
|||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
cursorShape: Qt.PointingHandCursor
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
onClicked: items[index].selected()
|
onClicked: {
|
||||||
|
repeater.previousIndex = repeater.currentIndex;
|
||||||
|
repeater.currentIndex = index;
|
||||||
|
items[index].selected()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021, The Monero Project
|
// Copyright (c) 2021-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -52,6 +52,8 @@ Rectangle {
|
|||||||
case Wallet.ConnectionStatus_Connected:
|
case Wallet.ConnectionStatus_Connected:
|
||||||
if (!appWindow.daemonSynced)
|
if (!appWindow.daemonSynced)
|
||||||
return qsTr("Synchronizing");
|
return qsTr("Synchronizing");
|
||||||
|
if (persistentSettings.useRemoteNode && persistentSettings.allowRemoteNodeMining && appWindow.isMining)
|
||||||
|
return qsTr("Remote node") + " + " + qsTr("Mining");
|
||||||
if (persistentSettings.useRemoteNode)
|
if (persistentSettings.useRemoteNode)
|
||||||
return qsTr("Remote node");
|
return qsTr("Remote node");
|
||||||
return appWindow.isMining ? qsTr("Connected") + " + " + qsTr("Mining"): qsTr("Connected");
|
return appWindow.isMining ? qsTr("Connected") + " + " + qsTr("Mining"): qsTr("Connected");
|
||||||
@@ -199,6 +201,7 @@ Rectangle {
|
|||||||
daemonManager.sendCommandAsync(
|
daemonManager.sendCommandAsync(
|
||||||
["set_bootstrap_daemon", "auto"],
|
["set_bootstrap_daemon", "auto"],
|
||||||
appWindow.currentWallet.nettype,
|
appWindow.currentWallet.nettype,
|
||||||
|
persistentSettings.blockchainDataDir,
|
||||||
callback);
|
callback);
|
||||||
|
|
||||||
refreshMouseArea.visible = false;
|
refreshMouseArea.visible = false;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -108,7 +108,11 @@ Item {
|
|||||||
leftPanel.enabled = true
|
leftPanel.enabled = true
|
||||||
middlePanel.enabled = true
|
middlePanel.enabled = true
|
||||||
wizard.enabled = true
|
wizard.enabled = true
|
||||||
titleBar.state = "default"
|
if (rootItem.state == "wizard") {
|
||||||
|
titleBar.state = "essentials"
|
||||||
|
} else {
|
||||||
|
titleBar.state = "default"
|
||||||
|
}
|
||||||
|
|
||||||
root.visible = false;
|
root.visible = false;
|
||||||
appWindow.hideBalanceForced = false;
|
appWindow.hideBalanceForced = false;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021, The Monero Project
|
// Copyright (c) 2021-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -42,6 +42,13 @@ MoneroComponents.Dialog {
|
|||||||
|
|
||||||
onActiveFocusChanged: activeFocus && remoteNodeAddress.forceActiveFocus()
|
onActiveFocusChanged: activeFocus && remoteNodeAddress.forceActiveFocus()
|
||||||
|
|
||||||
|
function onOk() {
|
||||||
|
root.success = true;
|
||||||
|
root.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCancel() { root.close(); }
|
||||||
|
|
||||||
function add(callbackOnSuccess) {
|
function add(callbackOnSuccess) {
|
||||||
root.editMode = false;
|
root.editMode = false;
|
||||||
root.callbackOnSuccess = callbackOnSuccess;
|
root.callbackOnSuccess = callbackOnSuccess;
|
||||||
@@ -89,6 +96,11 @@ MoneroComponents.Dialog {
|
|||||||
|
|
||||||
daemonAddrLabelText: qsTr("Address") + translationManager.emptyString
|
daemonAddrLabelText: qsTr("Address") + translationManager.emptyString
|
||||||
daemonPortLabelText: qsTr("Port") + translationManager.emptyString
|
daemonPortLabelText: qsTr("Port") + translationManager.emptyString
|
||||||
|
|
||||||
|
Keys.enabled: root.visible
|
||||||
|
Keys.onEnterPressed: root.onOk()
|
||||||
|
Keys.onReturnPressed: root.onOk()
|
||||||
|
Keys.onEscapePressed: root.onCancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
@@ -116,6 +128,11 @@ MoneroComponents.Dialog {
|
|||||||
placeholderFontSize: 15
|
placeholderFontSize: 15
|
||||||
labelFontSize: 14
|
labelFontSize: 14
|
||||||
fontSize: 15
|
fontSize: 15
|
||||||
|
|
||||||
|
Keys.enabled: root.visible
|
||||||
|
Keys.onEnterPressed: root.onOk()
|
||||||
|
Keys.onReturnPressed: root.onOk()
|
||||||
|
Keys.onEscapePressed: root.onCancel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021, The Monero Project
|
// Copyright (c) 2021-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -89,7 +89,7 @@ ColumnLayout {
|
|||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.rightMargin: 80
|
anchors.rightMargin: 80
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
property var trusted: remoteNodesModel.get(index).trusted
|
property var trusted: remoteNodesModel.get(index) ? remoteNodesModel.get(index).trusted : false
|
||||||
|
|
||||||
MoneroComponents.TextPlain {
|
MoneroComponents.TextPlain {
|
||||||
id: addressText
|
id: addressText
|
||||||
@@ -107,8 +107,9 @@ ColumnLayout {
|
|||||||
MoneroComponents.Label {
|
MoneroComponents.Label {
|
||||||
id: trustedDaemonCheckMark
|
id: trustedDaemonCheckMark
|
||||||
anchors.left: addressText.right
|
anchors.left: addressText.right
|
||||||
anchors.leftMargin: 6
|
anchors.leftMargin: 3
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.verticalCenterOffset: 2
|
||||||
z: itemMouseArea.z + 1
|
z: itemMouseArea.z + 1
|
||||||
fontSize: 16
|
fontSize: 16
|
||||||
fontFamily: FontAwesome.fontFamilySolid
|
fontFamily: FontAwesome.fontFamilySolid
|
||||||
@@ -144,6 +145,9 @@ ColumnLayout {
|
|||||||
tooltipLeft: true
|
tooltipLeft: true
|
||||||
onClicked: remoteNodeDialog.edit(remoteNodesModel.get(index), function (remoteNode) {
|
onClicked: remoteNodeDialog.edit(remoteNodesModel.get(index), function (remoteNode) {
|
||||||
remoteNodesModel.set(index, remoteNode)
|
remoteNodesModel.set(index, remoteNode)
|
||||||
|
if (index === remoteNodesModel.selected) {
|
||||||
|
remoteNodesModel.applyRemoteNode(index)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,11 @@ import "../components" as MoneroComponents
|
|||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: settingsListItem
|
id: settingsListItem
|
||||||
property alias iconText: iconLabel.text
|
property alias iconText: iconLabel.text
|
||||||
|
property alias symbol: symbolText.text
|
||||||
property alias description: area.text
|
property alias description: area.text
|
||||||
property alias title: header.text
|
property alias title: header.text
|
||||||
property bool isLast: false
|
property bool isLast: false
|
||||||
|
property bool enabled: true
|
||||||
signal clicked()
|
signal clicked()
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -37,6 +39,7 @@ ColumnLayout {
|
|||||||
width: parent.width
|
width: parent.width
|
||||||
height: header.height + area.contentHeight
|
height: header.height + area.contentHeight
|
||||||
color: "transparent";
|
color: "transparent";
|
||||||
|
opacity: settingsListItem.enabled ? 1 : 0.25
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.bottomMargin: 4
|
anchors.bottomMargin: 4
|
||||||
anchors.topMargin: 4
|
anchors.topMargin: 4
|
||||||
@@ -102,6 +105,7 @@ ColumnLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
|
visible: settingsListItem.enabled
|
||||||
cursorShape: Qt.PointingHandCursor
|
cursorShape: Qt.PointingHandCursor
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
@@ -111,5 +115,17 @@ ColumnLayout {
|
|||||||
settingsListItem.clicked()
|
settingsListItem.clicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MoneroComponents.TextPlain {
|
||||||
|
id: symbolText
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: 44
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
font.pixelSize: 12
|
||||||
|
font.bold: true
|
||||||
|
color: MoneroComponents.Style.menuButtonTextColor
|
||||||
|
visible: appWindow.ctrlPressed
|
||||||
|
themeTransition: false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -39,16 +39,12 @@ Item {
|
|||||||
property bool primary: true
|
property bool primary: true
|
||||||
property string rightIcon: ""
|
property string rightIcon: ""
|
||||||
property string rightIconInactive: ""
|
property string rightIconInactive: ""
|
||||||
property color textColor: !button.enabled
|
property color textColor: primary ? MoneroComponents.Style.buttonTextColor : MoneroComponents.Style.buttonSecondaryTextColor;
|
||||||
? MoneroComponents.Style.buttonTextColorDisabled
|
|
||||||
: primary
|
|
||||||
? MoneroComponents.Style.buttonTextColor
|
|
||||||
: MoneroComponents.Style.buttonSecondaryTextColor;
|
|
||||||
property bool small: false
|
property bool small: false
|
||||||
property alias text: label.text
|
property alias text: label.text
|
||||||
property alias fontBold: label.font.bold
|
property alias fontBold: label.font.bold
|
||||||
property int fontSize: {
|
property int fontSize: {
|
||||||
if(small) return 14;
|
if(small) return 13.5;
|
||||||
else return 16;
|
else return 16;
|
||||||
}
|
}
|
||||||
property alias label: label
|
property alias label: label
|
||||||
@@ -72,6 +68,7 @@ Item {
|
|||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: 3
|
radius: 3
|
||||||
border.width: parent.focus && parent.enabled ? 1 : 0
|
border.width: parent.focus && parent.enabled ? 1 : 0
|
||||||
|
opacity: 1
|
||||||
|
|
||||||
state: button.enabled ? "active" : "disabled"
|
state: button.enabled ? "active" : "disabled"
|
||||||
Component.onCompleted: state = state
|
Component.onCompleted: state = state
|
||||||
@@ -102,7 +99,14 @@ Item {
|
|||||||
when: !button.enabled
|
when: !button.enabled
|
||||||
PropertyChanges {
|
PropertyChanges {
|
||||||
target: buttonRect
|
target: buttonRect
|
||||||
color: MoneroComponents.Style.buttonBackgroundColorDisabled
|
opacity: 0.5
|
||||||
|
color: primary
|
||||||
|
? MoneroComponents.Style.buttonBackgroundColor
|
||||||
|
: MoneroComponents.Style.buttonSecondaryBackgroundColor
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: label
|
||||||
|
opacity: 0.5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -122,7 +126,7 @@ Item {
|
|||||||
MoneroComponents.TextPlain {
|
MoneroComponents.TextPlain {
|
||||||
id: label
|
id: label
|
||||||
font.family: MoneroComponents.Style.fontBold.name
|
font.family: MoneroComponents.Style.fontBold.name
|
||||||
font.bold: true
|
font.bold: button.primary ? true : false
|
||||||
font.pixelSize: button.fontSize
|
font.pixelSize: button.fontSize
|
||||||
color: !buttonArea.pressed ? button.textColor : "transparent"
|
color: !buttonArea.pressed ? button.textColor : "transparent"
|
||||||
visible: text !== ""
|
visible: text !== ""
|
||||||
@@ -145,6 +149,7 @@ Item {
|
|||||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
|
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
|
||||||
width: button.small ? 16 : 20
|
width: button.small ? 16 : 20
|
||||||
height: button.small ? 16 : 20
|
height: button.small ? 16 : 20
|
||||||
|
opacity: buttonRect.opacity
|
||||||
source: {
|
source: {
|
||||||
if (fontAwesomeIcon) return "";
|
if (fontAwesomeIcon) return "";
|
||||||
if(button.rightIconInactive !== "" && !button.enabled) {
|
if(button.rightIconInactive !== "" && !button.enabled) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -191,7 +191,7 @@ ColumnLayout {
|
|||||||
anchors.leftMargin: 12
|
anchors.leftMargin: 12
|
||||||
anchors.rightMargin: 0
|
anchors.rightMargin: 0
|
||||||
font.family: MoneroComponents.Style.fontRegular.name
|
font.family: MoneroComponents.Style.fontRegular.name
|
||||||
font.bold: true
|
font.bold: false
|
||||||
font.pixelSize: fontItemSize
|
font.pixelSize: fontItemSize
|
||||||
color: itemArea.containsMouse || index === columnid.currentIndex || itemArea.containsMouse ? "#FA6800" : "#FFFFFF"
|
color: itemArea.containsMouse || index === columnid.currentIndex || itemArea.containsMouse ? "#FA6800" : "#FFFFFF"
|
||||||
text: qsTr(column1) + translationManager.emptyString
|
text: qsTr(column1) + translationManager.emptyString
|
||||||
|
|||||||
@@ -42,11 +42,12 @@ QtObject {
|
|||||||
property string buttonBackgroundColorDisabled: blackTheme ? _b_buttonBackgroundColorDisabled : _w_buttonBackgroundColorDisabled
|
property string buttonBackgroundColorDisabled: blackTheme ? _b_buttonBackgroundColorDisabled : _w_buttonBackgroundColorDisabled
|
||||||
property string buttonBackgroundColorDisabledHover: blackTheme ? _b_buttonBackgroundColorDisabledHover : _w_buttonBackgroundColorDisabledHover
|
property string buttonBackgroundColorDisabledHover: blackTheme ? _b_buttonBackgroundColorDisabledHover : _w_buttonBackgroundColorDisabledHover
|
||||||
property string buttonInlineBackgroundColor: blackTheme ? _b_buttonInlineBackgroundColor : _w_buttonInlineBackgroundColor
|
property string buttonInlineBackgroundColor: blackTheme ? _b_buttonInlineBackgroundColor : _w_buttonInlineBackgroundColor
|
||||||
|
property string buttonInlineBackgroundColorHover: blackTheme ? _b_buttonInlineBackgroundColorHover : _w_buttonInlineBackgroundColorHover
|
||||||
property string buttonTextColor: blackTheme ? _b_buttonTextColor : _w_buttonTextColor
|
property string buttonTextColor: blackTheme ? _b_buttonTextColor : _w_buttonTextColor
|
||||||
property string buttonTextColorDisabled: blackTheme ? _b_buttonTextColorDisabled : _w_buttonTextColorDisabled
|
property string buttonTextColorDisabled: blackTheme ? _b_buttonTextColorDisabled : _w_buttonTextColorDisabled
|
||||||
property string buttonSecondaryBackgroundColor: "#d9d9d9"
|
property string buttonSecondaryBackgroundColor: blackTheme ? _b_buttonSecondaryBackgroundColor : _w_buttonSecondaryBackgroundColor
|
||||||
property string buttonSecondaryBackgroundColorHover: "#a6a6a6"
|
property string buttonSecondaryBackgroundColorHover: blackTheme ? _b_buttonSecondaryBackgroundColorHover : _w_buttonSecondaryBackgroundColorHover
|
||||||
property string buttonSecondaryTextColor: "#4d4d4d"
|
property string buttonSecondaryTextColor: blackTheme ? _b_buttonSecondaryTextColor : _w_buttonSecondaryTextColor
|
||||||
property string dividerColor: blackTheme ? _b_dividerColor : _w_dividerColor
|
property string dividerColor: blackTheme ? _b_dividerColor : _w_dividerColor
|
||||||
property real dividerOpacity: blackTheme ? _b_dividerOpacity : _w_dividerOpacity
|
property real dividerOpacity: blackTheme ? _b_dividerOpacity : _w_dividerOpacity
|
||||||
|
|
||||||
@@ -80,6 +81,7 @@ QtObject {
|
|||||||
property string leftPanelBackgroundGradientStart: blackTheme ? _b_leftPanelBackgroundGradientStart : _w_leftPanelBackgroundGradientStart
|
property string leftPanelBackgroundGradientStart: blackTheme ? _b_leftPanelBackgroundGradientStart : _w_leftPanelBackgroundGradientStart
|
||||||
property string leftPanelBackgroundGradientStop: blackTheme ? _b_leftPanelBackgroundGradientStop : _w_leftPanelBackgroundGradientStop
|
property string leftPanelBackgroundGradientStop: blackTheme ? _b_leftPanelBackgroundGradientStop : _w_leftPanelBackgroundGradientStop
|
||||||
property string historyHeaderTextColor: blackTheme ? _b_historyHeaderTextColor : _w_historyHeaderTextColor
|
property string historyHeaderTextColor: blackTheme ? _b_historyHeaderTextColor : _w_historyHeaderTextColor
|
||||||
|
property var accountColors: blackTheme ? _b_accountColors : _w_accountColors
|
||||||
|
|
||||||
property string _b_defaultFontColor: "white"
|
property string _b_defaultFontColor: "white"
|
||||||
property string _b_dimmedFontColor: "#BBBBBB"
|
property string _b_dimmedFontColor: "#BBBBBB"
|
||||||
@@ -102,8 +104,12 @@ QtObject {
|
|||||||
property string _b_buttonBackgroundColorDisabled: "#707070"
|
property string _b_buttonBackgroundColorDisabled: "#707070"
|
||||||
property string _b_buttonBackgroundColorDisabledHover: "#808080"
|
property string _b_buttonBackgroundColorDisabledHover: "#808080"
|
||||||
property string _b_buttonInlineBackgroundColor: "#707070"
|
property string _b_buttonInlineBackgroundColor: "#707070"
|
||||||
|
property string _b_buttonInlineBackgroundColorHover: "#808080"
|
||||||
property string _b_buttonTextColor: "white"
|
property string _b_buttonTextColor: "white"
|
||||||
property string _b_buttonTextColorDisabled: "black"
|
property string _b_buttonTextColorDisabled: "black"
|
||||||
|
property string _b_buttonSecondaryBackgroundColor: "#707070"
|
||||||
|
property string _b_buttonSecondaryBackgroundColorHover: "#808080"
|
||||||
|
property string _b_buttonSecondaryTextColor: "white"
|
||||||
property string _b_dividerColor: "white"
|
property string _b_dividerColor: "white"
|
||||||
property real _b_dividerOpacity: 0.20
|
property real _b_dividerOpacity: 0.20
|
||||||
|
|
||||||
@@ -137,6 +143,7 @@ QtObject {
|
|||||||
property string _b_leftPanelBackgroundGradientStart: "#222222"
|
property string _b_leftPanelBackgroundGradientStart: "#222222"
|
||||||
property string _b_leftPanelBackgroundGradientStop: "#1a1a1a"
|
property string _b_leftPanelBackgroundGradientStop: "#1a1a1a"
|
||||||
property string _b_historyHeaderTextColor: "#C0C0C0"
|
property string _b_historyHeaderTextColor: "#C0C0C0"
|
||||||
|
property var _b_accountColors: ["#6E513C", "#842129", "#458421", "#742184", "#291DBE", "#846F21", "#217F84", "#696969"]
|
||||||
|
|
||||||
property string _w_defaultFontColor: "black"
|
property string _w_defaultFontColor: "black"
|
||||||
property string _w_dimmedFontColor: "#3f3f3f"
|
property string _w_dimmedFontColor: "#3f3f3f"
|
||||||
@@ -158,9 +165,13 @@ QtObject {
|
|||||||
property string _w_buttonBackgroundColorHover: "#E65E00"
|
property string _w_buttonBackgroundColorHover: "#E65E00"
|
||||||
property string _w_buttonBackgroundColorDisabled: "#bbbbbb"
|
property string _w_buttonBackgroundColorDisabled: "#bbbbbb"
|
||||||
property string _w_buttonBackgroundColorDisabledHover: "#D1D1D1"
|
property string _w_buttonBackgroundColorDisabledHover: "#D1D1D1"
|
||||||
property string _w_buttonInlineBackgroundColor: "#bbbbbb"
|
property string _w_buttonInlineBackgroundColor: "#d9d9d9"
|
||||||
|
property string _w_buttonInlineBackgroundColorHover: "#C8C8C8"
|
||||||
property string _w_buttonTextColor: "white"
|
property string _w_buttonTextColor: "white"
|
||||||
property string _w_buttonTextColorDisabled: "black"
|
property string _w_buttonTextColorDisabled: "black"
|
||||||
|
property string _w_buttonSecondaryBackgroundColor: "#d9d9d9"
|
||||||
|
property string _w_buttonSecondaryBackgroundColorHover: "#C8C8C8"
|
||||||
|
property string _w_buttonSecondaryTextColor: "#4d4d4d"
|
||||||
property string _w_dividerColor: "black"
|
property string _w_dividerColor: "black"
|
||||||
property real _w_dividerOpacity: 0.20
|
property real _w_dividerOpacity: 0.20
|
||||||
|
|
||||||
@@ -185,7 +196,7 @@ QtObject {
|
|||||||
property string _w_menuButtonImageRightColorActive: "#FA6800"
|
property string _w_menuButtonImageRightColorActive: "#FA6800"
|
||||||
property string _w_menuButtonImageRightColor: "#808080"
|
property string _w_menuButtonImageRightColor: "#808080"
|
||||||
property string _w_menuButtonImageDotArrowSource: "qrc:///images/arrow-right-medium-white.png"
|
property string _w_menuButtonImageDotArrowSource: "qrc:///images/arrow-right-medium-white.png"
|
||||||
property string _w_inlineButtonTextColor: "black"
|
property string _w_inlineButtonTextColor: "#4d4d4d"
|
||||||
property string _w_inlineButtonBorderColor: "transparent"
|
property string _w_inlineButtonBorderColor: "transparent"
|
||||||
property string _w_appWindowBackgroundColor: "black"
|
property string _w_appWindowBackgroundColor: "black"
|
||||||
property string _w_appWindowBorderColor: "#dedede"
|
property string _w_appWindowBorderColor: "#dedede"
|
||||||
@@ -194,4 +205,5 @@ QtObject {
|
|||||||
property string _w_leftPanelBackgroundGradientStart: "white"
|
property string _w_leftPanelBackgroundGradientStart: "white"
|
||||||
property string _w_leftPanelBackgroundGradientStop: "#f5f5f5"
|
property string _w_leftPanelBackgroundGradientStop: "#f5f5f5"
|
||||||
property string _w_historyHeaderTextColor: "#515151"
|
property string _w_historyHeaderTextColor: "#515151"
|
||||||
|
property var _w_accountColors: ["#6E513C", "#6E513C", "#842129", "#458421", "#742184", "#291DBE", "#846F21", "#217F84", "#696969"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -21,6 +21,14 @@ Text {
|
|||||||
font.pixelSize: 14
|
font.pixelSize: 14
|
||||||
textFormat: Text.PlainText
|
textFormat: Text.PlainText
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: root.contentWidth
|
||||||
|
height: root.height
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.top: parent.top
|
||||||
|
color: root.focus ? MoneroComponents.Style.titleBarButtonHoverColor : "transparent"
|
||||||
|
}
|
||||||
|
|
||||||
MoneroEffects.ColorTransition {
|
MoneroEffects.ColorTransition {
|
||||||
enabled: root.themeTransition
|
enabled: root.themeTransition
|
||||||
themeTransition: root.themeTransition
|
themeTransition: root.themeTransition
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2018, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -57,17 +57,20 @@ Rectangle {
|
|||||||
signal minimizeClicked
|
signal minimizeClicked
|
||||||
signal languageClicked
|
signal languageClicked
|
||||||
signal closeWalletClicked
|
signal closeWalletClicked
|
||||||
|
signal lockWalletClicked
|
||||||
|
|
||||||
state: "default"
|
state: "default"
|
||||||
states: [
|
states: [
|
||||||
State {
|
State {
|
||||||
name: "default";
|
name: "default";
|
||||||
PropertyChanges { target: btnCloseWallet; visible: true}
|
PropertyChanges { target: btnCloseWallet; visible: true}
|
||||||
|
PropertyChanges { target: btnLockWallet; visible: true}
|
||||||
PropertyChanges { target: btnLanguageToggle; visible: true}
|
PropertyChanges { target: btnLanguageToggle; visible: true}
|
||||||
}, State {
|
}, State {
|
||||||
// show only theme switcher and window controls
|
// show only theme switcher and window controls
|
||||||
name: "essentials";
|
name: "essentials";
|
||||||
PropertyChanges { target: btnCloseWallet; visible: false}
|
PropertyChanges { target: btnCloseWallet; visible: false}
|
||||||
|
PropertyChanges { target: btnLockWallet; visible: false}
|
||||||
PropertyChanges { target: btnLanguageToggle; visible: false}
|
PropertyChanges { target: btnLanguageToggle; visible: false}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -91,6 +94,46 @@ Rectangle {
|
|||||||
spacing: 0
|
spacing: 0
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
|
// lock wallet
|
||||||
|
Rectangle {
|
||||||
|
id: btnLockWallet
|
||||||
|
color: "transparent"
|
||||||
|
Layout.preferredWidth: parent.height
|
||||||
|
Layout.preferredHeight: parent.height
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: FontAwesome.lock
|
||||||
|
font.family: FontAwesome.fontFamilySolid
|
||||||
|
font.pixelSize: 16
|
||||||
|
color: MoneroComponents.Style.defaultFontColor
|
||||||
|
font.styleName: "Solid"
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
opacity: 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
MoneroComponents.Tooltip {
|
||||||
|
id: btnLockWalletTooltip
|
||||||
|
anchors.fill: parent
|
||||||
|
text: qsTr("Lock this wallet") + translationManager.emptyString
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onEntered: {
|
||||||
|
parent.color = MoneroComponents.Style.titleBarButtonHoverColor
|
||||||
|
btnLockWalletTooltip.tooltipPopup.open()
|
||||||
|
}
|
||||||
|
onExited: {
|
||||||
|
parent.color = "transparent"
|
||||||
|
btnLockWalletTooltip.tooltipPopup.close()
|
||||||
|
}
|
||||||
|
onClicked: root.lockWalletClicked(leftPanel.visible)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// collapse sidebar
|
// collapse sidebar
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: btnCloseWallet
|
id: btnCloseWallet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021, The Monero Project
|
// Copyright (c) 2021-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -48,7 +48,7 @@ Rectangle {
|
|||||||
Text {
|
Text {
|
||||||
id: icon
|
id: icon
|
||||||
visible: tooltipIconVisible
|
visible: tooltipIconVisible
|
||||||
color: MoneroComponents.Style.orange
|
color: MoneroComponents.Style.defaultFontColor
|
||||||
font.family: FontAwesome.fontFamily
|
font.family: FontAwesome.fontFamily
|
||||||
font.pixelSize: 10
|
font.pixelSize: 10
|
||||||
font.styleName: "Regular"
|
font.styleName: "Regular"
|
||||||
@@ -95,11 +95,12 @@ Rectangle {
|
|||||||
delay: 200
|
delay: 200
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Layout.maximumWidth: 350
|
Layout.maximumWidth: 370
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
id: tooltip
|
id: tooltip
|
||||||
width: contentWidth
|
width: contentWidth
|
||||||
|
Layout.maximumWidth: 370
|
||||||
color: MoneroComponents.Style.defaultFontColor
|
color: MoneroComponents.Style.defaultFontColor
|
||||||
font.family: MoneroComponents.Style.fontRegular.name
|
font.family: MoneroComponents.Style.fontRegular.name
|
||||||
font.pixelSize: 12
|
font.pixelSize: 12
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2020, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
@@ -338,8 +338,9 @@ Rectangle {
|
|||||||
spacing: 16
|
spacing: 16
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
color: MoneroComponents.Style.defaultFontColor
|
property bool maliciousTxFee: parseFloat(root.transactionFee) > 0.01
|
||||||
font.pixelSize: 15
|
color: maliciousTxFee ? "red" : MoneroComponents.Style.defaultFontColor
|
||||||
|
font.pixelSize: maliciousTxFee ? 20 : 15
|
||||||
text: {
|
text: {
|
||||||
if (currentWallet) {
|
if (currentWallet) {
|
||||||
if (!root.transactionFee) {
|
if (!root.transactionFee) {
|
||||||
@@ -349,7 +350,7 @@ Rectangle {
|
|||||||
return qsTr("Calculating fee") + "..." + translationManager.emptyString;
|
return qsTr("Calculating fee") + "..." + translationManager.emptyString;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return root.transactionFee + " XMR"
|
return root.transactionFee + " XMR" + (maliciousTxFee ? " (HIGH FEE)" : "")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return "";
|
return "";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2020, The Monero Project
|
// Copyright (c) 2020-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2014-2019, The Monero Project
|
// Copyright (c) 2014-2024, The Monero Project
|
||||||
//
|
//
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ Object {
|
|||||||
property string arrowLeft : "\uf060"
|
property string arrowLeft : "\uf060"
|
||||||
property string arrowRight : "\uf061"
|
property string arrowRight : "\uf061"
|
||||||
property string cashRegister: "\uf788"
|
property string cashRegister: "\uf788"
|
||||||
|
property string checkCircle: "\uf058"
|
||||||
property string clipboard : "\uf0ea"
|
property string clipboard : "\uf0ea"
|
||||||
property string clockO : "\uf017"
|
property string clockO : "\uf017"
|
||||||
property string cloud : "\uf0c2"
|
property string cloud : "\uf0c2"
|
||||||
@@ -52,6 +53,8 @@ Object {
|
|||||||
property string info : "\uf129"
|
property string info : "\uf129"
|
||||||
property string key : "\uf084"
|
property string key : "\uf084"
|
||||||
property string language : "\uf1ab"
|
property string language : "\uf1ab"
|
||||||
|
property string lock : "\uf023"
|
||||||
|
property string magnifyingGlass : "\uf002"
|
||||||
property string minus : "\uf068"
|
property string minus : "\uf068"
|
||||||
property string minusCircle : "\uf056"
|
property string minusCircle : "\uf056"
|
||||||
property string moonO : "\uf186"
|
property string moonO : "\uf186"
|
||||||
|
|||||||
BIN
images/appicon.icns
Executable file → Normal file
0
images/card-background-black.png → images/card-background-black0.png
Executable file → Normal file
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
0
images/card-background-black@2x.png → images/card-background-black0@2x.png
Executable file → Normal file
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
BIN
images/card-background-black1.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
images/card-background-black1@2x.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
images/card-background-black2.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
images/card-background-black2@2x.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
images/card-background-black3.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
images/card-background-black3@2x.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
images/card-background-black4.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
images/card-background-black4@2x.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
images/card-background-black5.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
images/card-background-black5@2x.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
images/card-background-black6.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
images/card-background-black6@2x.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
images/card-background-black7.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
images/card-background-black7@2x.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
images/ledgerNanoSPlus.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
images/ledgerStax.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
images/open-wallet-from-file-mainnet.png
Normal file
|
After Width: | Height: | Size: 640 B |
BIN
images/open-wallet-from-file-mainnet@2x.png
Normal file
|
After Width: | Height: | Size: 937 B |
BIN
images/open-wallet-from-file-stagenet.png
Normal file
|
After Width: | Height: | Size: 569 B |
BIN
images/open-wallet-from-file-stagenet@2x.png
Normal file
|
After Width: | Height: | Size: 717 B |
BIN
images/open-wallet-from-file-testnet.png
Normal file
|
After Width: | Height: | Size: 608 B |