mirror of
https://github.com/monero-project/monero-gui.git
synced 2026-04-08 14:37:26 -04:00
Compare commits
60 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
1215a6e5d8 | ||
|
|
499c2a47fc | ||
|
|
3b0e66a3d0 | ||
|
|
4cd6652825 |
4
.github/verify_p2pool.py
vendored
4
.github/verify_p2pool.py
vendored
@@ -15,6 +15,10 @@ p2pool_files = [{
|
|||||||
"os": "LINUX",
|
"os": "LINUX",
|
||||||
"filename": "linux-x64.tar.gz"
|
"filename": "linux-x64.tar.gz"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"os": "MACOS_AARCH64",
|
||||||
|
"filename": "macos-aarch64.tar.gz",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"os": "MACOS",
|
"os": "MACOS",
|
||||||
"filename": "macos-x64.tar.gz",
|
"filename": "macos-x64.tar.gz",
|
||||||
|
|||||||
13
.github/workflows/build.yml
vendored
13
.github/workflows/build.yml
vendored
@@ -75,19 +75,22 @@ jobs:
|
|||||||
run: python3 monero-gui/.github/qt_helper.py mac_x64 desktop 5.15.2 clang_64 c384008156fe63cc183bade0316828c598ff3e5074397c0c9ccc588d6cdc5aca
|
run: python3 monero-gui/.github/qt_helper.py mac_x64 desktop 5.15.2 clang_64 c384008156fe63cc183bade0316828c598ff3e5074397c0c9ccc588d6cdc5aca
|
||||||
working-directory: ../
|
working-directory: ../
|
||||||
- name: build
|
- name: build
|
||||||
run: CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 make release -j3
|
run: |
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 ..
|
||||||
|
make
|
||||||
- name: deploy
|
- name: deploy
|
||||||
run: make deploy
|
run: make deploy
|
||||||
working-directory: build/release
|
working-directory: build
|
||||||
- name: test qml
|
- name: test qml
|
||||||
run: build/release/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
|
run: build/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml
|
||||||
- name: create .tar
|
- name: create .tar
|
||||||
run: tar -cf monero-wallet-gui.tar monero-wallet-gui.app
|
run: tar -cf monero-wallet-gui.tar monero-wallet-gui.app
|
||||||
working-directory: build/release/bin
|
working-directory: build/bin
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: ${{ github.job }}
|
name: ${{ github.job }}
|
||||||
path: build/release/bin/monero-wallet-gui.tar
|
path: build/bin/monero-wallet-gui.tar
|
||||||
|
|
||||||
docker-linux-static:
|
docker-linux-static:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
|||||||
174
.github/workflows/flatpak.yml
vendored
Normal file
174
.github/workflows/flatpak.yml
vendored
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
name: Flatpak
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: released
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
part1:
|
||||||
|
name: Part 1/3
|
||||||
|
if: github.repository == 'monero-project/monero-gui'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
|
||||||
|
options: --privileged
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
arch: [x86_64, aarch64]
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install deps
|
||||||
|
run: dnf -y install docker
|
||||||
|
|
||||||
|
- name: Setup QEMU
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
with:
|
||||||
|
platforms: arm64
|
||||||
|
|
||||||
|
- name: Build flatpak
|
||||||
|
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||||
|
env:
|
||||||
|
FLATPAK_BUILDER_N_JOBS: 3
|
||||||
|
with:
|
||||||
|
manifest-path: share/org.getmonero.Monero.yaml
|
||||||
|
arch: ${{ matrix.arch }}
|
||||||
|
cache: false
|
||||||
|
stop-at-module: boost
|
||||||
|
|
||||||
|
- name: Tar flatpak-builder
|
||||||
|
run: tar -cvf flatpak-builder.tar .flatpak-builder
|
||||||
|
|
||||||
|
- name: Save flatpak-builder
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: flatpak-builder-${{ matrix.arch }}
|
||||||
|
path: flatpak-builder.tar
|
||||||
|
|
||||||
|
part2:
|
||||||
|
name: Part 2/3
|
||||||
|
if: github.repository == 'monero-project/monero-gui'
|
||||||
|
needs: part1
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
|
||||||
|
options: --privileged
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
arch: [x86_64, aarch64]
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install deps
|
||||||
|
run: dnf -y install docker
|
||||||
|
|
||||||
|
- name: Setup QEMU
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
with:
|
||||||
|
platforms: arm64
|
||||||
|
|
||||||
|
- name: Restore flatpak-builder
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: flatpak-builder-${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Untar flatpak-builder
|
||||||
|
run: tar -xvf flatpak-builder.tar
|
||||||
|
|
||||||
|
- name: Build flatpak
|
||||||
|
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||||
|
env:
|
||||||
|
FLATPAK_BUILDER_N_JOBS: 3
|
||||||
|
with:
|
||||||
|
manifest-path: share/org.getmonero.Monero.yaml
|
||||||
|
arch: ${{ matrix.arch }}
|
||||||
|
cache: false
|
||||||
|
stop-at-module: monero-gui
|
||||||
|
|
||||||
|
- name: Tar flatpak-builder
|
||||||
|
run: tar -cvf flatpak-builder.tar .flatpak-builder
|
||||||
|
|
||||||
|
- name: Save flatpak-builder
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: flatpak-builder-${{ matrix.arch }}
|
||||||
|
path: flatpak-builder.tar
|
||||||
|
|
||||||
|
part3:
|
||||||
|
name: Part 3/3
|
||||||
|
if: github.repository == 'monero-project/monero-gui'
|
||||||
|
needs: [part1, part2]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
|
||||||
|
options: --privileged
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
arch: [x86_64, aarch64]
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Add version and date
|
||||||
|
run: |
|
||||||
|
sed -i 's/<version>/${{ github.event.release.tag_name }}/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml
|
||||||
|
sed -i 's/<date>/'"$(date '+%F')"'/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml
|
||||||
|
|
||||||
|
- name: Install deps
|
||||||
|
run: dnf -y install docker
|
||||||
|
|
||||||
|
- name: Setup QEMU
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
with:
|
||||||
|
platforms: arm64
|
||||||
|
|
||||||
|
- name: Restore flatpak-builder
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: flatpak-builder-${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Untar flatpak-builder
|
||||||
|
run: tar -xvf flatpak-builder.tar
|
||||||
|
|
||||||
|
- name: Build flatpak
|
||||||
|
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||||
|
env:
|
||||||
|
FLATPAK_BUILDER_N_JOBS: 3
|
||||||
|
with:
|
||||||
|
manifest-path: share/org.getmonero.Monero.yaml
|
||||||
|
arch: ${{ matrix.arch }}
|
||||||
|
cache: false
|
||||||
|
|
||||||
|
- name: Validate AppData
|
||||||
|
working-directory: flatpak_app/files/share/appdata
|
||||||
|
run: appstream-util validate org.getmonero.Monero.appdata.xml
|
||||||
|
|
||||||
|
- name: Delete flatpak-builder
|
||||||
|
uses: geekyeggo/delete-artifact@v2
|
||||||
|
with:
|
||||||
|
name: flatpak-builder-${{ matrix.arch }}
|
||||||
|
|
||||||
|
- name: Print hashes
|
||||||
|
working-directory: flatpak_app/files/bin
|
||||||
|
run: |
|
||||||
|
echo "Hashes of the ${{ matrix.arch }} binaries:" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
for bin in monero-blockchain-ancestry monero-blockchain-depth monero-blockchain-export monero-blockchain-import monero-blockchain-mark-spent-outputs monero-blockchain-prune monero-blockchain-prune-known-spent-data monero-blockchain-stats monero-blockchain-usage monerod monero-gen-ssl-cert monero-gen-trusted-multisig monero-wallet-cli monero-wallet-gui monero-wallet-rpc p2pool; do sha256sum $bin; done >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "An example command to check hashes:" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "$ flatpak run --command=sha256sum org.getmonero.Monero /app/bin/monero-wallet-gui" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
|
- name: Publish to Flathub Beta
|
||||||
|
uses: flatpak/flatpak-github-actions/flat-manager@v6
|
||||||
|
with:
|
||||||
|
flat-manager-url: https://hub.flathub.org
|
||||||
|
repository: beta
|
||||||
|
token: ${{ secrets.FLATHUB_ }}
|
||||||
@@ -4,8 +4,8 @@ project(monero-gui)
|
|||||||
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
|
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
|
||||||
|
|
||||||
set(VERSION_MAJOR "18")
|
set(VERSION_MAJOR "18")
|
||||||
set(VERSION_MINOR "2")
|
set(VERSION_MINOR "3")
|
||||||
set(VERSION_REVISION "2")
|
set(VERSION_REVISION "1")
|
||||||
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
|
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
|
||||||
|
|
||||||
option(STATIC "Link libraries statically, requires static Qt")
|
option(STATIC "Link libraries statically, requires static Qt")
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ RUN echo y | ${ANDROID_SDK_ROOT}/bin/sdkmanager --sdk_root=${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.13
|
ARG ZLIB_VERSION=1.3
|
||||||
ARG ZLIB_HASH=b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30
|
ARG ZLIB_HASH=ff0ba4c292013dbc27530b3a81e1f9a813cd39de01ca5e0f8bf355702efa593e
|
||||||
RUN wget -q https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \
|
RUN wget -q https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz \
|
||||||
&& echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \
|
&& echo "${ZLIB_HASH} zlib-${ZLIB_VERSION}.tar.gz" | sha256sum -c \
|
||||||
&& tar -xzf zlib-${ZLIB_VERSION}.tar.gz \
|
&& tar -xzf zlib-${ZLIB_VERSION}.tar.gz \
|
||||||
@@ -117,8 +117,8 @@ RUN wget -q https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION_D
|
|||||||
install -j${THREADS} \
|
install -j${THREADS} \
|
||||||
&& rm -rf $(pwd)
|
&& rm -rf $(pwd)
|
||||||
|
|
||||||
ARG OPENSSL_VERSION=1.1.1q
|
ARG OPENSSL_VERSION=1.1.1u
|
||||||
ARG OPENSSL_HASH=d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca
|
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 \
|
&& echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
|
||||||
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
|
&& tar -xzf openssl-${OPENSSL_VERSION}.tar.gz \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
FROM ubuntu:16.04
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
ARG THREADS=1
|
ARG THREADS=1
|
||||||
ARG QT_VERSION=v5.15.8-lts-lgpl
|
ARG QT_VERSION=v5.15.10-lts-lgpl
|
||||||
|
|
||||||
ENV CFLAGS="-fPIC"
|
ENV CFLAGS="-fPIC"
|
||||||
ENV CPPFLAGS="-fPIC"
|
ENV CPPFLAGS="-fPIC"
|
||||||
@@ -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 && \
|
||||||
@@ -165,11 +165,11 @@ RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_
|
|||||||
./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.1q.tar.gz && \
|
RUN wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz && \
|
||||||
echo "d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca openssl-1.1.1q.tar.gz" | sha256sum -c && \
|
echo "e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6 openssl-1.1.1u.tar.gz" | sha256sum -c && \
|
||||||
tar -xzf openssl-1.1.1q.tar.gz && \
|
tar -xzf openssl-1.1.1u.tar.gz && \
|
||||||
rm openssl-1.1.1q.tar.gz && \
|
rm openssl-1.1.1u.tar.gz && \
|
||||||
cd openssl-1.1.1q && \
|
cd openssl-1.1.1u && \
|
||||||
./config no-asm no-shared no-zlib-dynamic --prefix=/usr --openssldir=/usr && \
|
./config no-asm no-shared no-zlib-dynamic --prefix=/usr --openssldir=/usr && \
|
||||||
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=v5.15.8-lts-lgpl
|
ARG QT_VERSION=v5.15.10-lts-lgpl
|
||||||
ENV SOURCE_DATE_EPOCH=1397818193
|
ENV SOURCE_DATE_EPOCH=1397818193
|
||||||
|
|
||||||
RUN apt update && \
|
RUN apt update && \
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -86,7 +86,7 @@ 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/)
|
||||||
* Void Linux: `xbps-install -S monero-gui`
|
* Void Linux: `xbps-install -S monero-gui`
|
||||||
* Flatpak: [Monero GUI](https://flathub.org/apps/details/org.getmonero.Monero)
|
* Flatpak: [Monero GUI](https://flathub.org/apps/details/org.getmonero.Monero)
|
||||||
* GuixSD: `guix package -i monero-gui`
|
* GuixSD: `guix package -i monero-gui`
|
||||||
@@ -107,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.18.2.2`) to build the release binaries.
|
\* `master` - replace with the desired version tag (e.g. `v0.18.3.1`) to build the release binaries.
|
||||||
3. Prepare build environment
|
3. Prepare build environment
|
||||||
```
|
```
|
||||||
cd monero-gui
|
cd monero-gui
|
||||||
@@ -130,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.18.2.2`) to build the release binaries.
|
\* `master` - replace with the desired version tag (e.g. `v0.18.3.1`) to build the release binaries.
|
||||||
3. Prepare build environment
|
3. Prepare build environment
|
||||||
```
|
```
|
||||||
cd monero-gui
|
cd monero-gui
|
||||||
@@ -257,18 +257,10 @@ The following instructions will fetch Qt from your distribution's repositories i
|
|||||||
|
|
||||||
4. Build
|
4. Build
|
||||||
|
|
||||||
If on x86-64:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
make release -j4
|
make release -j4
|
||||||
```
|
```
|
||||||
|
|
||||||
If on ppc64le:
|
|
||||||
|
|
||||||
```
|
|
||||||
make release-linux-ppc64le -j4
|
|
||||||
```
|
|
||||||
|
|
||||||
\* `4` - number of CPU threads to use
|
\* `4` - number of CPU threads to use
|
||||||
\* 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`
|
\* 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`
|
||||||
|
|
||||||
@@ -318,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 mingw-w64-x86_64-unbound
|
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.
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
@@ -58,7 +84,6 @@ 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
|
||||||
@@ -74,19 +99,19 @@ if(APPLE OR (WIN32 AND NOT STATIC))
|
|||||||
)
|
)
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
list(APPEND WIN_DEPLOY_DLLS
|
list(APPEND WIN_DEPLOY_DLLS
|
||||||
libicudtd72.dll
|
libicudtd73.dll
|
||||||
libicuind72.dll
|
libicuind73.dll
|
||||||
libicuiod72.dll
|
libicuiod73.dll
|
||||||
libicutud72.dll
|
libicutud73.dll
|
||||||
libicuucd72.dll
|
libicuucd73.dll
|
||||||
)
|
)
|
||||||
else() # assume release
|
else() # assume release
|
||||||
list(APPEND WIN_DEPLOY_DLLS
|
list(APPEND WIN_DEPLOY_DLLS
|
||||||
libicudt72.dll
|
libicudt73.dll
|
||||||
libicuin72.dll
|
libicuin73.dll
|
||||||
libicuio72.dll
|
libicuio73.dll
|
||||||
libicutu72.dll
|
libicutu73.dll
|
||||||
libicuuc72.dll
|
libicuuc73.dll
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
list(TRANSFORM WIN_DEPLOY_DLLS PREPEND "$ENV{MSYSTEM_PREFIX}/bin/")
|
list(TRANSFORM WIN_DEPLOY_DLLS PREPEND "$ENV{MSYSTEM_PREFIX}/bin/")
|
||||||
|
|||||||
BIN
images/ledgerStax.png
Normal file
BIN
images/ledgerStax.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
@@ -167,7 +167,6 @@ Type: files; Name: "{app}\libstdc++-6.dll"
|
|||||||
Type: files; Name: "{app}\libtiff-5.dll"
|
Type: files; Name: "{app}\libtiff-5.dll"
|
||||||
Type: files; Name: "{app}\libwinpthread-1.dll"
|
Type: files; Name: "{app}\libwinpthread-1.dll"
|
||||||
Type: files; Name: "{app}\zlib1.dll"
|
Type: files; Name: "{app}\zlib1.dll"
|
||||||
Type: files; Name: "{app}\libssp-0.dll"
|
|
||||||
Type: files; Name: "{app}\libhidapi-0.dll"
|
Type: files; Name: "{app}\libhidapi-0.dll"
|
||||||
Type: files; Name: "{app}\libeay32.dll"
|
Type: files; Name: "{app}\libeay32.dll"
|
||||||
Type: files; Name: "{app}\ssleay32.dll"
|
Type: files; Name: "{app}\ssleay32.dll"
|
||||||
|
|||||||
@@ -56,11 +56,14 @@
|
|||||||
i.e. let it download the blockchain and store it locally on your computer, or you can configure your wallet to
|
i.e. let it download the blockchain and store it locally on your computer, or you can configure your wallet to
|
||||||
access a remote <i>open node</i> to get indirect access to the blockchain.</p>
|
access a remote <i>open node</i> to get indirect access to the blockchain.</p>
|
||||||
|
|
||||||
<p>Working with your own copy of the blockchain is <b>preferred</b>: It strengthens the Monero network, and it
|
<p>You can also <i>Prune</i> the blockchain in order to save 2/3 of storage space while keeping the full transaction history.
|
||||||
|
More information regarding how pruning works can be found <a href="https://www.getmonero.org/resources/moneropedia/pruning.html">here</a>.</p>
|
||||||
|
|
||||||
|
<p>Working with your own copy of the blockchain, even pruned, is <b>preferred</b>: It strengthens the Monero network, and it
|
||||||
provides the most security and privacy possible for you.</p>
|
provides the most security and privacy possible for you.</p>
|
||||||
|
|
||||||
<p>However if your Internet access makes it difficult to run a full node, or if you have simply no room to store
|
<p>However if your Internet access makes it difficult to run a full node, or if you have simply no room to store
|
||||||
the blockchain locally (about 90 GB in May 2020, and of course growing), you can compromise and try to connect
|
the blockchain locally (about 160 GB in June 2023, and of course growing), you can compromise and try to connect
|
||||||
to a remote node. One way of finding such a node is checking
|
to a remote node. One way of finding such a node is checking
|
||||||
<a href="https://moneroworld.com/#nodes">this page</a>.
|
<a href="https://moneroworld.com/#nodes">this page</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -76,3 +76,34 @@ function isValidOpenAliasAddress(address) {
|
|||||||
// make sure it is not some kind of floating number
|
// make sure it is not some kind of floating number
|
||||||
return address.length > 2 && isNaN(parseFloat(address)) && address.indexOf('.') >= 0
|
return address.length > 2 && isNaN(parseFloat(address)) && address.indexOf('.') >= 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleOpenAliasResolution(address, descriptionText) {
|
||||||
|
const result = walletManager.resolveOpenAlias(address);
|
||||||
|
if (!result) {
|
||||||
|
return { message: qsTr("No address found") };
|
||||||
|
}
|
||||||
|
|
||||||
|
const [isDnssecValid, resolvedAddress] = result.split("|");
|
||||||
|
const isAddressValid = walletManager.addressValid(resolvedAddress, appWindow.persistentSettings.nettype);
|
||||||
|
let updatedDescriptionText = descriptionText;
|
||||||
|
|
||||||
|
if (isDnssecValid === "true") {
|
||||||
|
if (isAddressValid) {
|
||||||
|
updatedDescriptionText = descriptionText ? `${address} ${descriptionText}` : address;
|
||||||
|
return { address: resolvedAddress, description: updatedDescriptionText };
|
||||||
|
} else {
|
||||||
|
return { message: qsTr("No valid address found at this OpenAlias address") };
|
||||||
|
}
|
||||||
|
} else if (isDnssecValid === "false") {
|
||||||
|
if (isAddressValid) {
|
||||||
|
return {
|
||||||
|
address: resolvedAddress,
|
||||||
|
message: qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"),
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return { message: qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed") };
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return { message: qsTr("Internal error") };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
4
main.qml
4
main.qml
@@ -379,7 +379,7 @@ ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function isTrustedDaemon() {
|
function isTrustedDaemon() {
|
||||||
return !persistentSettings.useRemoteNode || remoteNodesModel.currentRemoteNode().trusted;
|
return appWindow.walletMode >= 2 && (!persistentSettings.useRemoteNode || remoteNodesModel.currentRemoteNode().trusted);
|
||||||
}
|
}
|
||||||
|
|
||||||
function usefulName(path) {
|
function usefulName(path) {
|
||||||
@@ -2186,7 +2186,7 @@ ApplicationWindow {
|
|||||||
|
|
||||||
function getBuildTag() {
|
function getBuildTag() {
|
||||||
if (isMac) {
|
if (isMac) {
|
||||||
return "mac-x64";
|
return isARM ? "mac-armv8" : "mac-x64";
|
||||||
}
|
}
|
||||||
if (isWindows) {
|
if (isWindows) {
|
||||||
return oshelper.installed ? "install-win-x64" : "win-x64";
|
return oshelper.installed ? "install-win-x64" : "win-x64";
|
||||||
|
|||||||
2
monero
2
monero
Submodule monero updated: e06129bb4d...2656cdf505
@@ -387,34 +387,17 @@ Rectangle {
|
|||||||
visible: TxUtils.isValidOpenAliasAddress(addressLine.text)
|
visible: TxUtils.isValidOpenAliasAddress(addressLine.text)
|
||||||
enabled : visible
|
enabled : visible
|
||||||
onClicked: {
|
onClicked: {
|
||||||
var result = walletManager.resolveOpenAlias(addressLine.text)
|
const response = TxUtils.handleOpenAliasResolution(addressLine.text, descriptionLine.text);
|
||||||
if (result) {
|
if (response) {
|
||||||
var parts = result.split("|")
|
if (response.message) {
|
||||||
if (parts.length === 2) {
|
oa_message(response.message);
|
||||||
var address_ok = walletManager.addressValid(parts[1], appWindow.persistentSettings.nettype)
|
}
|
||||||
if (parts[0] === "true") {
|
if (response.address) {
|
||||||
if (address_ok) {
|
addressLine.text = response.address;
|
||||||
// prepend openalias to description
|
}
|
||||||
descriptionLine.text = descriptionLine.text ? addressLine.text + " " + descriptionLine.text : addressLine.text
|
if (response.description) {
|
||||||
addressLine.text = parts[1]
|
descriptionLine.text = response.description;
|
||||||
} else {
|
|
||||||
root.oa_message(qsTr("No valid address found at this OpenAlias address"))
|
|
||||||
}
|
|
||||||
} else if (parts[0] === "false") {
|
|
||||||
if (address_ok) {
|
|
||||||
addressLine.text = parts[1]
|
|
||||||
root.oa_message(qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"))
|
|
||||||
} else {
|
|
||||||
root.oa_message(qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed"))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
root.oa_message(qsTr("Internal error"))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
root.oa_message(qsTr("Internal error"))
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
root.oa_message(qsTr("No address found"))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ ColumnLayout {
|
|||||||
property int panelHeight: 900
|
property int panelHeight: 900
|
||||||
property alias miningView: stateView.miningView
|
property alias miningView: stateView.miningView
|
||||||
property alias signView: stateView.signView
|
property alias signView: stateView.signView
|
||||||
|
property alias prooveView: stateView.prooveView
|
||||||
property alias state: stateView.state
|
property alias state: stateView.state
|
||||||
|
|
||||||
MoneroComponents.Navbar {
|
MoneroComponents.Navbar {
|
||||||
@@ -151,6 +152,7 @@ ColumnLayout {
|
|||||||
|
|
||||||
function clearFields() {
|
function clearFields() {
|
||||||
signView.clearFields();
|
signView.clearFields();
|
||||||
|
prooveView.clearFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -641,10 +641,25 @@ allArgs = allArgs.filter( ( el ) => !defaultArgs.includes( el.split(" ")[0] ) )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function p2poolDownloadFailed() {
|
function p2poolDownloadFailed(errorCode) {
|
||||||
statusMessage.visible = false
|
statusMessage.visible = false
|
||||||
errorPopup.title = qsTr("P2Pool Installation Failed") + translationManager.emptyString;
|
errorPopup.title = qsTr("P2Pool Installation Failed") + translationManager.emptyString;
|
||||||
errorPopup.text = qsTr("P2Pool installation failed.") + isWindows ? (" " + qsTr("Try starting the program with administrator privileges.")) : ""
|
switch (errorCode) {
|
||||||
|
case P2PoolManager.HashVerificationFailed:
|
||||||
|
errorPopup.text = qsTr("Hash verification failed.") + translationManager.emptyString;
|
||||||
|
break;
|
||||||
|
case P2PoolManager.BinaryNotAvailable:
|
||||||
|
errorPopup.text = qsTr("P2Pool download is not available.") + translationManager.emptyString;
|
||||||
|
break;
|
||||||
|
case P2PoolManager.ConnectionIssue:
|
||||||
|
errorPopup.text = qsTr("P2Pool download failed due to a connection issue.") + translationManager.emptyString;
|
||||||
|
break;
|
||||||
|
case P2PoolManager.InstallationFailed:
|
||||||
|
errorPopup.text = qsTr("P2Pool installation failed.") + (isWindows ? (" " + qsTr("Try starting the program with administrator privileges.")) : "")
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
errorPopup.text = qsTr("Unknown error.") + translationManager.emptyString;
|
||||||
|
}
|
||||||
errorPopup.icon = StandardIcon.Critical
|
errorPopup.icon = StandardIcon.Critical
|
||||||
errorPopup.open()
|
errorPopup.open()
|
||||||
update()
|
update()
|
||||||
|
|||||||
@@ -415,41 +415,18 @@ Rectangle {
|
|||||||
text: qsTr("Resolve") + translationManager.emptyString
|
text: qsTr("Resolve") + translationManager.emptyString
|
||||||
visible: TxUtils.isValidOpenAliasAddress(address)
|
visible: TxUtils.isValidOpenAliasAddress(address)
|
||||||
onClicked: {
|
onClicked: {
|
||||||
var result = walletManager.resolveOpenAlias(address)
|
const response = TxUtils.handleOpenAliasResolution(address, descriptionLine.text);
|
||||||
if (result) {
|
if (response) {
|
||||||
var parts = result.split("|")
|
if (response.message) {
|
||||||
if (parts.length == 2) {
|
oa_message(response.message);
|
||||||
var address_ok = walletManager.addressValid(parts[1], appWindow.persistentSettings.nettype)
|
|
||||||
if (parts[0] === "true") {
|
|
||||||
if (address_ok) {
|
|
||||||
// prepend openalias to description
|
|
||||||
descriptionLine.text = descriptionLine.text ? address + " " + descriptionLine.text : address
|
|
||||||
descriptionCheckbox.checked = true
|
|
||||||
recipientRepeater.itemAt(index).children[1].children[0].text = parts[1];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
oa_message(qsTr("No valid address found at this OpenAlias address"))
|
|
||||||
}
|
|
||||||
else if (parts[0] === "false") {
|
|
||||||
if (address_ok) {
|
|
||||||
recipientRepeater.itemAt(index).children[1].children[0].text = parts[1];
|
|
||||||
oa_message(qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed"))
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
oa_message(qsTr("No valid address found at this OpenAlias address, but the DNSSEC signatures could not be verified, so this may be spoofed"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
oa_message(qsTr("Internal error"))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
if (response.address) {
|
||||||
oa_message(qsTr("Internal error"))
|
recipientRepeater.itemAt(index).children[1].children[0].text = response.address;
|
||||||
|
}
|
||||||
|
if (response.description) {
|
||||||
|
descriptionLine.text = response.description;
|
||||||
|
descriptionCheckbox.checked = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
oa_message(qsTr("No address found"))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,6 +259,17 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clearFields() {
|
||||||
|
checkProofAddressLine.text = ""
|
||||||
|
checkProofMessageLine.text = ""
|
||||||
|
checkProofSignatureLine.text = ""
|
||||||
|
checkProofTxIdLine.text = ""
|
||||||
|
getProofAddressLine.text = ""
|
||||||
|
getProofMessageLine.text = ""
|
||||||
|
getProofTxIdLine.text = ""
|
||||||
|
getReserveProofAmtLine.text = ""
|
||||||
|
}
|
||||||
|
|
||||||
function onPageCompleted() {
|
function onPageCompleted() {
|
||||||
console.log("TxKey page loaded");
|
console.log("TxKey page loaded");
|
||||||
|
|
||||||
|
|||||||
@@ -138,9 +138,19 @@ Rectangle {
|
|||||||
inputDialog.onAcceptedCallback = function() {
|
inputDialog.onAcceptedCallback = function() {
|
||||||
var txid = inputDialog.inputText.trim();
|
var txid = inputDialog.inputText.trim();
|
||||||
if (currentWallet.scanTransactions([txid])) {
|
if (currentWallet.scanTransactions([txid])) {
|
||||||
|
updateBalance();
|
||||||
appWindow.showStatusMessage(qsTr("Transaction successfully scanned"), 3);
|
appWindow.showStatusMessage(qsTr("Transaction successfully scanned"), 3);
|
||||||
} else {
|
} else {
|
||||||
appWindow.showStatusMessage(qsTr("Failed to scan transaction") + ": " + currentWallet.errorString, 5);
|
console.error("Error: ", currentWallet.errorString);
|
||||||
|
if (currentWallet.errorString == "The wallet has already seen 1 or more recent transactions than the scanned tx") {
|
||||||
|
informationPopup.title = qsTr("Error") + translationManager.emptyString;
|
||||||
|
informationPopup.text = qsTr("The wallet has already seen 1 or more recent transactions than the scanned transaction.\n\nIn order to rescan the transaction, you can re-sync your wallet by resetting the wallet restore height in the Settings > Info page. Make sure to use a restore height from before your wallet's earliest transaction.") + translationManager.emptyString;
|
||||||
|
informationPopup.icon = StandardIcon.Critical
|
||||||
|
informationPopup.onCloseCallback = null
|
||||||
|
informationPopup.open();
|
||||||
|
} else {
|
||||||
|
appWindow.showStatusMessage(qsTr("Failed to scan transaction") + ": " + currentWallet.errorString, 5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inputDialog.onRejectedCallback = null;
|
inputDialog.onRejectedCallback = null;
|
||||||
|
|||||||
1
qml.qrc
1
qml.qrc
@@ -281,6 +281,7 @@
|
|||||||
<file>images/ledgerNanoS.png</file>
|
<file>images/ledgerNanoS.png</file>
|
||||||
<file>images/ledgerNanoSPlus.png</file>
|
<file>images/ledgerNanoSPlus.png</file>
|
||||||
<file>images/ledgerNanoX.png</file>
|
<file>images/ledgerNanoX.png</file>
|
||||||
|
<file>images/ledgerStax.png</file>
|
||||||
<file>images/trezor.png</file>
|
<file>images/trezor.png</file>
|
||||||
<file>images/trezor@2x.png</file>
|
<file>images/trezor@2x.png</file>
|
||||||
<file>qtquickcontrols2.conf</file>
|
<file>qtquickcontrols2.conf</file>
|
||||||
|
|||||||
10
share/org.getmonero.Monero.desktop
Normal file
10
share/org.getmonero.Monero.desktop
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Monero GUI
|
||||||
|
GenericName=Monero-GUI
|
||||||
|
Comment=Monero GUI
|
||||||
|
Exec=monero-wallet-gui
|
||||||
|
Type=Application
|
||||||
|
Terminal=false
|
||||||
|
Categories=Network;Qt;Finance;Office;
|
||||||
|
Icon=org.getmonero.Monero
|
||||||
|
StartupNotify=true
|
||||||
65
share/org.getmonero.Monero.metainfo.xml
Normal file
65
share/org.getmonero.Monero.metainfo.xml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<component type="desktop-application">
|
||||||
|
<id>org.getmonero.Monero</id>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<project_license>BSD-3-Clause</project_license>
|
||||||
|
<content_rating type="oars-1.1"/>
|
||||||
|
<developer_name>The Monero Project</developer_name>
|
||||||
|
<categories>
|
||||||
|
<category>Network</category>
|
||||||
|
<category>Qt</category>
|
||||||
|
<category>Finance</category>
|
||||||
|
<category>Office</category>
|
||||||
|
</categories>
|
||||||
|
<name>Monero GUI</name>
|
||||||
|
<summary>Monero: the secure, private, untraceable cryptocurrency</summary>
|
||||||
|
|
||||||
|
<description>
|
||||||
|
<p>Monero is a private, secure, untraceable, decentralised digital currency. You
|
||||||
|
are your bank, you control your funds, and nobody can trace your transfers
|
||||||
|
unless you allow them to do so.</p>
|
||||||
|
|
||||||
|
<p>Privacy: Monero uses a cryptographically sound system to allow you to send
|
||||||
|
and receive funds without your transactions being easily revealed on the
|
||||||
|
blockchain (the ledger of transactions that everyone has). This ensures that
|
||||||
|
your purchases, receipts, and all transfers remain absolutely private by
|
||||||
|
default.</p>
|
||||||
|
|
||||||
|
<p>Security: Using the power of a distributed peer-to-peer consensus network,
|
||||||
|
every transaction on the network is cryptographically secured. Individual
|
||||||
|
wallets have a 25 word mnemonic seed that is only displayed once, and can be
|
||||||
|
written down to backup the wallet. Wallet files are encrypted with a passphrase
|
||||||
|
to ensure they are useless if stolen.</p>
|
||||||
|
|
||||||
|
<p>Untraceability: By taking advantage of ring signatures, a special property of
|
||||||
|
a certain type of cryptography, Monero is able to ensure that transactions are
|
||||||
|
not only untraceable, but have an optional measure of ambiguity that ensures
|
||||||
|
that transactions cannot easily be tied back to an individual user or computer.</p>
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<launchable type="desktop-id">org.getmonero.Monero.desktop</launchable>
|
||||||
|
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">
|
||||||
|
<caption>A screenshot of the Monero GUI wallet</caption>
|
||||||
|
<image>https://raw.githubusercontent.com/monero-project/monero-site/master/img/downloads/gui.png</image>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
|
||||||
|
<url type="homepage">https://getmonero.org</url>
|
||||||
|
<url type="bugtracker">https://github.com/monero-project/monero-gui/issues</url>
|
||||||
|
<url type="donation">https://getmonero.org/get-started/contributing</url>
|
||||||
|
<url type="faq">https://getmonero.org/get-started/faq</url>
|
||||||
|
<url type="help">https://getmonero.org/resources/user-guides</url>
|
||||||
|
<url type="translate">https://translate.getmonero.org</url>
|
||||||
|
<url type="contact">https://getmonero.org/community/hangouts</url>
|
||||||
|
<url type="contribute">https://getmonero.org/get-started/contributing</url>
|
||||||
|
|
||||||
|
<releases>
|
||||||
|
<release version="<version>" date="<date>"/>
|
||||||
|
</releases>
|
||||||
|
|
||||||
|
<custom>
|
||||||
|
<value key="flathub::manifest">https://github.com/monero-project/monero-gui/tree/master/share/org.getmonero.Monero.yaml</value>
|
||||||
|
</custom>
|
||||||
|
</component>
|
||||||
133
share/org.getmonero.Monero.yaml
Normal file
133
share/org.getmonero.Monero.yaml
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
app-id: org.getmonero.Monero
|
||||||
|
runtime: org.kde.Platform
|
||||||
|
runtime-version: 5.15-22.08
|
||||||
|
sdk: org.kde.Sdk
|
||||||
|
finish-args:
|
||||||
|
- --share=network
|
||||||
|
- --share=ipc
|
||||||
|
- --socket=x11
|
||||||
|
- --socket=wayland
|
||||||
|
- --device=all
|
||||||
|
- --filesystem=~/Monero:create
|
||||||
|
- --persist=.bitmonero
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
- /include
|
||||||
|
- /etc
|
||||||
|
- /share/man
|
||||||
|
- /lib/pkgconfig
|
||||||
|
- /lib/cmake
|
||||||
|
- '*.a'
|
||||||
|
- '*.la'
|
||||||
|
|
||||||
|
command: monero-wallet-gui
|
||||||
|
modules:
|
||||||
|
- name: protobuf
|
||||||
|
buildsystem: cmake-ninja
|
||||||
|
config-opts:
|
||||||
|
- -DCMAKE_BUILD_TYPE=Release
|
||||||
|
sources:
|
||||||
|
- type: git
|
||||||
|
url: https://github.com/protocolbuffers/protobuf
|
||||||
|
tag: v22.4
|
||||||
|
commit: 40e1daca18708c21c7edf07c489a688355bd297b
|
||||||
|
|
||||||
|
- name: boost
|
||||||
|
buildsystem: simple
|
||||||
|
build-commands:
|
||||||
|
- ./bootstrap.sh --prefix=$FLATPAK_DEST --with-libraries=chrono,date_time,filesystem,locale,program_options,regex,serialization,system,thread
|
||||||
|
- ./b2 headers
|
||||||
|
- ./b2 -j$FLATPAK_BUILDER_N_JOBS install variant=release --layout=system
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz
|
||||||
|
sha256: 66a469b6e608a51f8347236f4912e27dc5c60c60d7d53ae9bfe4683316c6f04c
|
||||||
|
|
||||||
|
- name: libunbound
|
||||||
|
config-opts:
|
||||||
|
- --with-libunbound-only
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://nlnetlabs.nl/downloads/unbound/unbound-1.17.1.tar.gz
|
||||||
|
sha256: ee4085cecce12584e600f3d814a28fa822dfaacec1f94c84bfd67f8a5571a5f4
|
||||||
|
|
||||||
|
- name: libsodium
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz
|
||||||
|
sha256: 6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1
|
||||||
|
|
||||||
|
- name: libusb
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2
|
||||||
|
sha256: 12ce7a61fc9854d1d2a1ffe095f7b5fac19ddba095c259e6067a46500381b5a5
|
||||||
|
|
||||||
|
- name: hidapi
|
||||||
|
buildsystem: cmake-ninja
|
||||||
|
config-opts:
|
||||||
|
- -DCMAKE_BUILD_TYPE=Release
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://github.com/libusb/hidapi/archive/hidapi-0.13.1.tar.gz
|
||||||
|
sha256: 476a2c9a4dc7d1fc97dd223b84338dbea3809a84caea2dcd887d9778725490e3
|
||||||
|
|
||||||
|
- name: libzmq
|
||||||
|
config-opts:
|
||||||
|
- --with-libsodium
|
||||||
|
- --disable-Werror
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://github.com/zeromq/libzmq/releases/download/v4.3.4/zeromq-4.3.4.tar.gz
|
||||||
|
sha256: c593001a89f5a85dd2ddf564805deb860e02471171b3f204944857336295c3e5
|
||||||
|
|
||||||
|
- name: libgss
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://ftp.gnu.org/gnu/gss/gss-1.0.4.tar.gz
|
||||||
|
sha256: ecceabdef4cae3fce7218b2ecb83eb4227dba44b53b61b8c2b2e88ae02419c73
|
||||||
|
|
||||||
|
- name: libuv
|
||||||
|
buildsystem: cmake-ninja
|
||||||
|
config-opts:
|
||||||
|
- -DCMAKE_BUILD_TYPE=Release
|
||||||
|
sources:
|
||||||
|
- type: archive
|
||||||
|
url: https://github.com/libuv/libuv/archive/v1.44.2.tar.gz
|
||||||
|
sha256: e6e2ba8b4c349a4182a33370bb9be5e23c51b32efb9b9e209d0e8556b73a48da
|
||||||
|
|
||||||
|
- name: p2pool
|
||||||
|
buildsystem: cmake-ninja
|
||||||
|
config-opts:
|
||||||
|
- -DCMAKE_BUILD_TYPE=Release
|
||||||
|
- -DWITH_LTO=OFF
|
||||||
|
sources:
|
||||||
|
- type: git
|
||||||
|
url: https://github.com/SChernykh/p2pool
|
||||||
|
tag: v3.2
|
||||||
|
commit: 92827035e07ff15da6b7645a332f3e59aa0ab1c4
|
||||||
|
post-install:
|
||||||
|
- install -Dm755 p2pool $FLATPAK_DEST/bin/p2pool
|
||||||
|
|
||||||
|
- name: monero-gui
|
||||||
|
buildsystem: cmake-ninja
|
||||||
|
config-opts:
|
||||||
|
- -DCMAKE_BUILD_TYPE=Release
|
||||||
|
- -DWITH_DESKTOP_ENTRY=OFF
|
||||||
|
- -DWITH_UPDATER=OFF
|
||||||
|
build-options:
|
||||||
|
arch:
|
||||||
|
aarch64:
|
||||||
|
config-opts:
|
||||||
|
- -DARCH=armv8-a
|
||||||
|
- -DBUILD_TAG=linux-armv8
|
||||||
|
x86_64:
|
||||||
|
config-opts:
|
||||||
|
- -DARCH=default
|
||||||
|
sources:
|
||||||
|
- type: dir
|
||||||
|
path: ../
|
||||||
|
post-install:
|
||||||
|
- install -Dpm644 share/org.getmonero.Monero.desktop $FLATPAK_DEST/share/applications/$FLATPAK_ID.desktop
|
||||||
|
- install -Dpm644 share/org.getmonero.Monero.metainfo.xml $FLATPAK_DEST/share/metainfo/$FLATPAK_ID.metainfo.xml
|
||||||
|
- for x in 16 24 32 48 64 96 128 256; do install -Dpm644 images/appicons/${x}x${x}.png $FLATPAK_DEST/share/icons/hicolor/${x}x${x}/apps/$FLATPAK_ID.png; done
|
||||||
@@ -117,8 +117,17 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const
|
|||||||
connect(m_daemon.get(), SIGNAL(readyReadStandardOutput()), this, SLOT(printOutput()));
|
connect(m_daemon.get(), SIGNAL(readyReadStandardOutput()), this, SLOT(printOutput()));
|
||||||
connect(m_daemon.get(), SIGNAL(readyReadStandardError()), this, SLOT(printError()));
|
connect(m_daemon.get(), SIGNAL(readyReadStandardError()), this, SLOT(printError()));
|
||||||
|
|
||||||
// Start monerod
|
#if defined(Q_OS_MAC) && defined(__aarch64__)
|
||||||
bool started = m_daemon->startDetached(m_monerod, arguments);
|
// RandomX crashes with JIT enabled when started as a detached process, disable it for now
|
||||||
|
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||||
|
env.insert("MONERO_RANDOMX_UMASK", "8");
|
||||||
|
m_daemon->setProcessEnvironment(env);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m_daemon->setProgram(m_monerod);
|
||||||
|
m_daemon->setArguments(arguments);
|
||||||
|
bool started = m_daemon->startDetached();
|
||||||
|
|
||||||
|
|
||||||
// add state changed listener
|
// add state changed listener
|
||||||
connect(m_daemon.get(), SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(stateChanged(QProcess::ProcessState)));
|
connect(m_daemon.get(), SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(stateChanged(QProcess::ProcessState)));
|
||||||
|
|||||||
@@ -156,6 +156,7 @@ bool isLinux = false;
|
|||||||
bool isTails = false;
|
bool isTails = false;
|
||||||
bool isDesktop = false;
|
bool isDesktop = false;
|
||||||
bool isOpenGL = true;
|
bool isOpenGL = true;
|
||||||
|
bool isARM = false;
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@@ -177,6 +178,9 @@ int main(int argc, char *argv[])
|
|||||||
#elif defined(Q_OS_MAC)
|
#elif defined(Q_OS_MAC)
|
||||||
bool isMac = true;
|
bool isMac = true;
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(__aarch64__)
|
||||||
|
bool isARM = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
// detect low graphics mode (start-low-graphics-mode.bat)
|
// detect low graphics mode (start-low-graphics-mode.bat)
|
||||||
if(qgetenv("QMLSCENE_DEVICE") == "softwarecontext")
|
if(qgetenv("QMLSCENE_DEVICE") == "softwarecontext")
|
||||||
@@ -483,6 +487,7 @@ Verify update binary using 'shasum'-compatible (SHA256 algo) output signed by tw
|
|||||||
engine.rootContext()->setContextProperty("isAndroid", isAndroid);
|
engine.rootContext()->setContextProperty("isAndroid", isAndroid);
|
||||||
engine.rootContext()->setContextProperty("isOpenGL", isOpenGL);
|
engine.rootContext()->setContextProperty("isOpenGL", isOpenGL);
|
||||||
engine.rootContext()->setContextProperty("isTails", isTails);
|
engine.rootContext()->setContextProperty("isTails", isTails);
|
||||||
|
engine.rootContext()->setContextProperty("isARM", isARM);
|
||||||
|
|
||||||
engine.rootContext()->setContextProperty("screenAvailableWidth", screenAvailableSize.width());
|
engine.rootContext()->setContextProperty("screenAvailableWidth", screenAvailableSize.width());
|
||||||
engine.rootContext()->setContextProperty("screenAvailableHeight", screenAvailableSize.height());
|
engine.rootContext()->setContextProperty("screenAvailableHeight", screenAvailableSize.height());
|
||||||
|
|||||||
@@ -43,23 +43,31 @@
|
|||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QCryptographicHash>
|
#include <QCryptographicHash>
|
||||||
|
|
||||||
|
#if defined(Q_OS_MACOS) && defined(__aarch64__) && !defined(Q_OS_MACOS_AARCH64)
|
||||||
|
#define Q_OS_MACOS_AARCH64
|
||||||
|
#endif
|
||||||
|
|
||||||
void P2PoolManager::download() {
|
void P2PoolManager::download() {
|
||||||
m_scheduler.run([this] {
|
m_scheduler.run([this] {
|
||||||
QUrl url;
|
QUrl url;
|
||||||
QString fileName;
|
QString fileName;
|
||||||
QString validHash;
|
QString validHash;
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
url = "https://github.com/SChernykh/p2pool/releases/download/v3.2/p2pool-v3.2-windows-x64.zip";
|
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-windows-x64.zip";
|
||||||
fileName = m_p2poolPath + "/p2pool-v3.2-windows-x64.zip";
|
fileName = m_p2poolPath + "/p2pool-v3.7-windows-x64.zip";
|
||||||
validHash = "5c3c7a43782b2d468c37f8d559ef3095902ffec9a2bab39128412979fc245702";
|
validHash = "9888afb51a206f1d2c6efc414dd1f498f82de58c689fbb73aceecd88ecdf6c43";
|
||||||
#elif defined(Q_OS_LINUX)
|
#elif defined(Q_OS_LINUX)
|
||||||
url = "https://github.com/SChernykh/p2pool/releases/download/v3.2/p2pool-v3.2-linux-x64.tar.gz";
|
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-linux-x64.tar.gz";
|
||||||
fileName = m_p2poolPath + "/p2pool-v3.2-linux-x64.tar.gz";
|
fileName = m_p2poolPath + "/p2pool-v3.7-linux-x64.tar.gz";
|
||||||
validHash = "d3f47b8300bb693880308f410294593b823fdd4bbe4c6863408167ee3def29d9";
|
validHash = "d5b932053f56f85b119450e64b1a7765c632f16c6226c8762b00e48f50e7e421";
|
||||||
|
#elif defined(Q_OS_MACOS_AARCH64)
|
||||||
|
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-macos-aarch64.tar.gz";
|
||||||
|
fileName = m_p2poolPath + "/p2pool-v3.7-macos-aarch64.tar.gz";
|
||||||
|
validHash = "d2b483a10c01f4a84faacbb8e2eedafef451ca4e6a4128e44800018556bb2c62";
|
||||||
#elif defined(Q_OS_MACOS)
|
#elif defined(Q_OS_MACOS)
|
||||||
url = "https://github.com/SChernykh/p2pool/releases/download/v3.2/p2pool-v3.2-macos-x64.tar.gz";
|
url = "https://github.com/SChernykh/p2pool/releases/download/v3.7/p2pool-v3.7-macos-x64.tar.gz";
|
||||||
fileName = m_p2poolPath + "/p2pool-v3.2-macos-x64.tar.gz";
|
fileName = m_p2poolPath + "/p2pool-v3.7-macos-x64.tar.gz";
|
||||||
validHash = "1cc573038d4234afc77464410061587e2b2bd57a4785607de3488a6a5c8ded97";
|
validHash = "444ded858b18a9ecba7d08a2d333188d1758a3da358817887d28d0827dc4287b";
|
||||||
#endif
|
#endif
|
||||||
QFile file(fileName);
|
QFile file(fileName);
|
||||||
epee::net_utils::http::http_simple_client http_client;
|
epee::net_utils::http::http_simple_client http_client;
|
||||||
@@ -68,7 +76,10 @@ void P2PoolManager::download() {
|
|||||||
std::chrono::milliseconds timeout = std::chrono::seconds(10);
|
std::chrono::milliseconds timeout = std::chrono::seconds(10);
|
||||||
http_client.set_server(url.host().toStdString(), "443", {});
|
http_client.set_server(url.host().toStdString(), "443", {});
|
||||||
bool success = http_client.invoke_get(url.path().toStdString(), timeout, {}, std::addressof(response), {{"User-Agent", userAgent}});
|
bool success = http_client.invoke_get(url.path().toStdString(), timeout, {}, std::addressof(response), {{"User-Agent", userAgent}});
|
||||||
if (response->m_response_code == 302) {
|
if (success && response->m_response_code == 404) {
|
||||||
|
emit p2poolDownloadFailure(BinaryNotAvailable);
|
||||||
|
return;
|
||||||
|
} else if (success && response->m_response_code == 302) {
|
||||||
epee::net_utils::http::fields_list fields = response->m_header_info.m_etc_fields;
|
epee::net_utils::http::fields_list fields = response->m_header_info.m_etc_fields;
|
||||||
for (std::pair<std::string, std::string> i : fields) {
|
for (std::pair<std::string, std::string> i : fields) {
|
||||||
if (i.first == "Location") {
|
if (i.first == "Location") {
|
||||||
@@ -82,7 +93,7 @@ void P2PoolManager::download() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!success) {
|
if (!success) {
|
||||||
emit p2poolDownloadFailure();
|
emit p2poolDownloadFailure(ConnectionIssue);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
std::string stringData = response->m_body;
|
std::string stringData = response->m_body;
|
||||||
@@ -90,7 +101,7 @@ void P2PoolManager::download() {
|
|||||||
QByteArray hashData = QCryptographicHash::hash(data, QCryptographicHash::Sha256);
|
QByteArray hashData = QCryptographicHash::hash(data, QCryptographicHash::Sha256);
|
||||||
QString hash = hashData.toHex();
|
QString hash = hashData.toHex();
|
||||||
if (hash != validHash) {
|
if (hash != validHash) {
|
||||||
emit p2poolDownloadFailure();
|
emit p2poolDownloadFailure(HashVerificationFailed);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
file.open(QIODevice::WriteOnly);
|
file.open(QIODevice::WriteOnly);
|
||||||
@@ -102,7 +113,7 @@ void P2PoolManager::download() {
|
|||||||
emit p2poolDownloadSuccess();
|
emit p2poolDownloadSuccess();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
emit p2poolDownloadFailure();
|
emit p2poolDownloadFailure(InstallationFailed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,13 +51,22 @@ public:
|
|||||||
Q_INVOKABLE bool isInstalled();
|
Q_INVOKABLE bool isInstalled();
|
||||||
Q_INVOKABLE void getStatus();
|
Q_INVOKABLE void getStatus();
|
||||||
Q_INVOKABLE void download();
|
Q_INVOKABLE void download();
|
||||||
|
|
||||||
|
enum DownloadError {
|
||||||
|
BinaryNotAvailable,
|
||||||
|
ConnectionIssue,
|
||||||
|
HashVerificationFailed,
|
||||||
|
InstallationFailed,
|
||||||
|
};
|
||||||
|
Q_ENUM(DownloadError)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool running(NetworkType::Type nettype) const;
|
bool running(NetworkType::Type nettype) const;
|
||||||
signals:
|
signals:
|
||||||
void p2poolStartFailure() const;
|
void p2poolStartFailure() const;
|
||||||
void p2poolStatus(bool isMining, int hashrate) const;
|
void p2poolStatus(bool isMining, int hashrate) const;
|
||||||
void p2poolDownloadFailure() const;
|
void p2poolDownloadFailure(int errorCode) const;
|
||||||
void p2poolDownloadSuccess() const;
|
void p2poolDownloadSuccess() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -171,6 +171,8 @@ Rectangle {
|
|||||||
return "qrc:///images/ledgerNanoSPlus.png";
|
return "qrc:///images/ledgerNanoSPlus.png";
|
||||||
} else if (ledgerType == "Ledger Nano X") {
|
} else if (ledgerType == "Ledger Nano X") {
|
||||||
return "qrc:///images/ledgerNanoX.png";
|
return "qrc:///images/ledgerNanoX.png";
|
||||||
|
} else if (ledgerType == "Ledger Stax") {
|
||||||
|
return "qrc:///images/ledgerStax.png";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ ColumnLayout {
|
|||||||
WizardSummaryItem {
|
WizardSummaryItem {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
header: qsTr("Mnemonic seed language") + translationManager.emptyString
|
header: qsTr("Mnemonic seed language") + translationManager.emptyString
|
||||||
value: persistentSettings.language
|
value: persistentSettings.language_wallet
|
||||||
|
visible: wizardStateView.state === "wizardCreateWallet5" && !wizardController.walletOptionsIsRecoveringFromDevice
|
||||||
}
|
}
|
||||||
|
|
||||||
WizardSummaryItem {
|
WizardSummaryItem {
|
||||||
|
|||||||
Reference in New Issue
Block a user