Compare commits

...

33 Commits

Author SHA1 Message Date
J62 d18dbd8335 btcp changes 2019-12-24 20:30:17 -08:00
J62 ee7c6c7813 update to btcp params 2019-12-24 20:11:00 -08:00
J62 36a5ce2f08 btcp icons 2019-12-24 03:36:38 -08:00
J62 853ba9a715
Update README.rst 2019-12-24 03:31:33 -08:00
J62 252d491a22 more btcpify 2019-12-24 03:28:22 -08:00
root 8b03f62439 more btcpify 2019-12-24 11:26:21 +00:00
J62 9a7843d0f1 btcp-ify 2019-12-24 03:21:35 -08:00
Parth Oberoi 932bb07250 Update electrum servers list (#24) 2019-12-08 16:37:14 +05:30
Parth Oberoi 1da999ed19
Merge pull request #21 from ZclassicCommunity/dependabot/pip/contrib/deterministic-build/ecdsa-0.13.3
Bump ecdsa from 0.13 to 0.13.3 in /contrib/deterministic-build
2019-12-08 16:06:48 +05:30
Parth Oberoi 01863a9703
Merge pull request #19 from ZclassicCommunity/dependabot/pip/contrib/zclassic/ecdsa-0.13.3
Bump ecdsa from 0.13 to 0.13.3 in /contrib/zclassic
2019-12-08 16:06:14 +05:30
dependabot[bot] 4313a20be6
Bump ecdsa from 0.13 to 0.13.3 in /contrib/deterministic-build
Bumps [ecdsa](https://github.com/warner/python-ecdsa) from 0.13 to 0.13.3.
- [Release notes](https://github.com/warner/python-ecdsa/releases)
- [Changelog](https://github.com/warner/python-ecdsa/blob/master/NEWS)
- [Commits](https://github.com/warner/python-ecdsa/compare/python-ecdsa-0.13...python-ecdsa-0.13.3)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-03 06:30:03 +00:00
dependabot[bot] a43af684ba
Bump ecdsa from 0.13 to 0.13.3 in /contrib/zclassic
Bumps [ecdsa](https://github.com/warner/python-ecdsa) from 0.13 to 0.13.3.
- [Release notes](https://github.com/warner/python-ecdsa/releases)
- [Changelog](https://github.com/warner/python-ecdsa/blob/master/NEWS)
- [Commits](https://github.com/warner/python-ecdsa/compare/python-ecdsa-0.13...python-ecdsa-0.13.3)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-21 18:30:13 +00:00
Parth Oberoi 2a5b295f94 Patch electrum to support Bubbles network upgrade (#17)
* Patch electrum to support Bubbles network upgrade
Summary
=======
- Handle dynamic header size
- Update the branch id used for signing the transaction
- Handle verification of blocks following the difficulty adjustment
- Update block explorers link
- Add new electrum server ip
2019-09-13 18:13:27 +05:30
Parth Oberoi e9655d3084 v3.2.3 (#15)
* Udate DifficultyAdjustment BRANCH, fix header check

* update electrum server list
2019-09-09 23:23:20 +05:30
cryptoprofutonium 184558db20
Merge pull request #12 from hTrap/master
Fix header length check for 192_7 and update bubbles network branch id
2019-09-08 02:45:26 +05:30
Parth Oberoi d874102488 Fix header length check for 192_7 and update bubbles network upgrade branch 2019-09-08 02:18:10 +05:30
Parth Oberoi ab2ba94bbe update oauth keys 2019-07-16 02:23:20 +05:30
VictorLux be41d9bf15
Merge pull request #11 from hTrap/master
Update travis builds
2019-07-15 22:22:13 +02:00
Parth Oberoi a909f6553a update zclassic logo 2019-07-15 15:43:17 +05:30
Parth Oberoi 1ecc620be5 update test hash values 2019-07-15 14:54:08 +05:30
Parth Oberoi f32306beec Update travis builds
update windows python to python36
update version to v3.2.1a
2019-07-13 22:20:11 +05:30
VictorLux cd1c9aa48b
Merge pull request #9 from justjamesdev/master
Sapling - Ledger, Ledger X
2019-07-03 23:40:01 +02:00
James ad30b46ec2 Correct derivation for ZCL based on SLIP44 2019-06-29 15:01:16 +02:00
James 9b394bea7f Add support for sapling in Ledger plugin. Precursor to Ledger change. Also add Ledger X Support 2019-06-29 11:35:49 +02:00
James 8a7a390f76
Merge pull request #5 from ZclassicCommunity/dev
updated servers.json
2019-03-18 23:59:43 +01:00
skellers af6ed3a069 updated servers.json 2019-03-18 22:39:18 +00:00
James 57f93e2b61
Merge pull request #4 from ZclassicCommunity/dev
update to 3.2.0
2019-03-18 23:19:39 +01:00
skellers 2faea7b5bd Bitcoin to ZClassic 2019-03-16 19:05:28 +00:00
skellers 2924ef7e30 windows builder 2019-03-16 18:31:17 +00:00
skellers eadda6ea0f version 3.2.0 2019-03-16 18:30:19 +00:00
skellers 053c50418a update servers.json 2019-03-16 18:29:33 +00:00
James fe4e5696f0
Merge pull request #1 from mexican1973/patch-1
Update servers.json
2019-03-06 11:39:29 +01:00
mexican1973 f1b23b5699
Update servers.json
added additional electrumx server
2019-03-01 09:49:31 +01:00
187 changed files with 2065 additions and 1036 deletions

2
.gitignore vendored
View File

@ -26,5 +26,5 @@ bin/
electrum_data/
gui/kivy/theming/light-0.png
gui/kivy/theming/light.atlas
Electrum_Zclassic.egg-info/
Electrum_bitcoinprivate.egg-info/
.pytest_cache

View File

@ -12,56 +12,64 @@ matrix:
language: ruby
osx_image: xcode7.3
- os: linux
python: '3.4'
python: "3.4"
services:
- docker
- if: NOT tag =~ .+
os: linux
python: '3.5'
python: "3.5"
- if: NOT tag =~ .+
os: linux
python: '3.6'
python: "3.6"
before_install:
- source contrib/zclassic/travis/electrum_zclassic_version_env.sh
- echo electrum-zclassic version is $ELECTRUM_ZCL_VERSION
- mkdir -p build && cp contrib/zclassic/travis/* ./build/
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then ./build/before_install-osx.sh;
- source contrib/bitcoinprivate/travis/electrum_bitcoinprivate_version_env.sh
- echo electrum-bitcoinprivate version is $ELECTRUM_BTCP_VERSION
- mkdir -p build && cp contrib/bitcoinprivate/travis/* ./build/
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then
./build/before_install-osx.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.4' ]]; then
./build/before_install-linux.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.5' ]]; then
./build/before_install-linux-apk.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.4' ]]; then ./build/before_install-linux.sh; fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.5' ]]; then ./build/before_install-linux-apk.sh; fi
install:
- if [[ -z $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]]; then pip install tox;
pip install tox-travis; fi
- if [[ -z $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]]; then
pip install tox; pip install tox-travis;
fi
script:
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then ./build/travis-build-osx.sh
; fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.4' ]]; then ./build/travis-build-linux.sh; fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.5' ]]; then ./build/travis-build-linux-apk.sh; fi
- if [[ -z $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]];then
tox;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then
./build/travis-build-osx.sh ;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.4' ]]; then
./build/travis-build-linux.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.5' ]]; then
./build/travis-build-linux-apk.sh;
fi
deploy:
- provider: releases
api_key:
secure: n0KT+T49e1mOIV64wpVmf4bYga4KArHQnY9ZQ3u2DImLRGmhMkpa/OC6/oboDdzdyC+IhpcdwX7uCu2lxlsFBfP2zyuprEQThxeW8gL6pFaTMoJJ201lNjppFmCpbS2VqxDJWIap3E+RHwoQZpo+b8Lt2xoOzB1VZFdxm4qVCb/I4jl5ZWouibYxMwb9IsqdakTK7ZTmCN+YMthsbgvRpjbb1s5vuE5I3AjVx3dFOR2YYvfdwjfknSY9Ej7xfUqmkraRdd4kRQrznVDdB5i9gvPTF1hxtGGusxsDHEYAe6pUdDKk6XZ6esM/MhZDHnxWMt0wUKNrdIIlL9gI767AHiP+VQ5SAfbbVZrkCVIQ4d8s7dH4AbFlW0dsj5OuLb00Mp99FPxYpmMkdz6agWQmFky83Hc++DiGaRGZQr3eQUnKUkuGsWjueXCh5AC4uYNNYnXlaz2mkrKxenWgXscAa7XlyVcdZMAilMeOVOjZdjkjhN0bPz905NOm0sCSkOiR6v0iJmFsw2KKZwGNBG/DQV4bBWzbEu3G5ehCP4WkbXh0Cfjxqi56LkZt4YXbkFIHY+qj0gE6tRQbc42lad8+aLGbi4mKnttCuLZbN70E+c1Y++VAaYAOCqF9VlDD5/4OIizeRYW9hC18wD0+T3GWK+mezpWKrWdkdIEEVvt1SyQ=
secure: FuH5P/nqCXNTfgCCrK+34+InbCO7U14DhGPxhKyJl4KuimuRdsmcyD/IPTIyTJ7mkElg/x/wkj7g1r6ajajZPncYd7CoV3wlTSC/XN5EyotIFOw4dz6YssqhrkDGsms07sTTzeMdoXWqS02eiMYb3FzJn0Fd3Gk0YtF3PgqmQEkB0eh83G7cQSqUpcxcs2hOkQ0bDDsSad3AdJSG0dFDqrbdxEu1hzQZJ8v59cxiV4Wo7ya6MpNrX2egWpJR14vuEjI8rFh1ixx4gpw+RcQIi7KlAz/EOb9nE8CsumoDUOjql6COZotD4oqT6Q7puj84iz5OFD7XwJ3cedJkWSmz8eQBXrqOu2TVsfUcL3NPZ61tXcfKo2LEVZzj5NenZJ4I+3QvywyNpJsAIf/VtIi0KYMQd6I4J2C1Tdxg2zXR0bDDKF1DBMRyUdl5Twk+oRs+B2vXlgiCq/GE+FU4EhgPKSav8tZEYMvbX5ec2c/iX00GeIXtz8yXvf/KZAlUzJvvbYjYqH4OJTGq2RwwsPQ6HD7DvBDRtTo2+9lmtG0VQgyK/F+bNTIqBvWc/gQeV7BwpI/7SjWrWyIsN5n/J9b+bU1N1Q9NPqUw/070mgdJ147cOMFV9c/wWO2VoZKeYijIjWNtNQIusrPPyu2+4/ZfC8mOAvX9o3w5dqZdK2CVlNw=
file:
- build/electrum-zclassic/dist/electrum-zclassic-$ELECTRUM_ZCL_VERSION-macosx.dmg
- build/electrum-bitcoinprivate/dist/electrum-bitcoinprivate-$ELECTRUM_BTCP_VERSION-macosx.dmg
on:
repo: ZclassicCommunity/electrum-zclassic
tags: false
repo: BTCPrivate/electrum-bitcoinprivate
tags: true
condition: "$TRAVIS_OS_NAME = osx"
draft: true
- provider: releases
api_key:
secure: n0KT+T49e1mOIV64wpVmf4bYga4KArHQnY9ZQ3u2DImLRGmhMkpa/OC6/oboDdzdyC+IhpcdwX7uCu2lxlsFBfP2zyuprEQThxeW8gL6pFaTMoJJ201lNjppFmCpbS2VqxDJWIap3E+RHwoQZpo+b8Lt2xoOzB1VZFdxm4qVCb/I4jl5ZWouibYxMwb9IsqdakTK7ZTmCN+YMthsbgvRpjbb1s5vuE5I3AjVx3dFOR2YYvfdwjfknSY9Ej7xfUqmkraRdd4kRQrznVDdB5i9gvPTF1hxtGGusxsDHEYAe6pUdDKk6XZ6esM/MhZDHnxWMt0wUKNrdIIlL9gI767AHiP+VQ5SAfbbVZrkCVIQ4d8s7dH4AbFlW0dsj5OuLb00Mp99FPxYpmMkdz6agWQmFky83Hc++DiGaRGZQr3eQUnKUkuGsWjueXCh5AC4uYNNYnXlaz2mkrKxenWgXscAa7XlyVcdZMAilMeOVOjZdjkjhN0bPz905NOm0sCSkOiR6v0iJmFsw2KKZwGNBG/DQV4bBWzbEu3G5ehCP4WkbXh0Cfjxqi56LkZt4YXbkFIHY+qj0gE6tRQbc42lad8+aLGbi4mKnttCuLZbN70E+c1Y++VAaYAOCqF9VlDD5/4OIizeRYW9hC18wD0+T3GWK+mezpWKrWdkdIEEVvt1SyQ=
secure: FuH5P/nqCXNTfgCCrK+34+InbCO7U14DhGPxhKyJl4KuimuRdsmcyD/IPTIyTJ7mkElg/x/wkj7g1r6ajajZPncYd7CoV3wlTSC/XN5EyotIFOw4dz6YssqhrkDGsms07sTTzeMdoXWqS02eiMYb3FzJn0Fd3Gk0YtF3PgqmQEkB0eh83G7cQSqUpcxcs2hOkQ0bDDsSad3AdJSG0dFDqrbdxEu1hzQZJ8v59cxiV4Wo7ya6MpNrX2egWpJR14vuEjI8rFh1ixx4gpw+RcQIi7KlAz/EOb9nE8CsumoDUOjql6COZotD4oqT6Q7puj84iz5OFD7XwJ3cedJkWSmz8eQBXrqOu2TVsfUcL3NPZ61tXcfKo2LEVZzj5NenZJ4I+3QvywyNpJsAIf/VtIi0KYMQd6I4J2C1Tdxg2zXR0bDDKF1DBMRyUdl5Twk+oRs+B2vXlgiCq/GE+FU4EhgPKSav8tZEYMvbX5ec2c/iX00GeIXtz8yXvf/KZAlUzJvvbYjYqH4OJTGq2RwwsPQ6HD7DvBDRtTo2+9lmtG0VQgyK/F+bNTIqBvWc/gQeV7BwpI/7SjWrWyIsN5n/J9b+bU1N1Q9NPqUw/070mgdJ147cOMFV9c/wWO2VoZKeYijIjWNtNQIusrPPyu2+4/ZfC8mOAvX9o3w5dqZdK2CVlNw=
file:
- build/electrum-zclassic/dist/Electrum-Zclassic-$ELECTRUM_ZCL_VERSION.tar.gz
- build/electrum-zclassic/dist/electrum-zclassic-$ELECTRUM_ZCL_VERSION-setup-win32.exe
- build/electrum-zclassic/dist/electrum-zclassic-$ELECTRUM_ZCL_VERSION-setup-win64.exe
- build/electrum-zclassic/bin/Electrum_Zclassic-$ELECTRUM_ZCL_APK_VERSION-release-unsigned.apk
- build/electrum-bitcoinprivate/dist/Electrum-bitcoinprivate-$ELECTRUM_BTCP_VERSION.tar.gz
- build/electrum-bitcoinprivate/dist/electrum-bitcoinprivate-$ELECTRUM_BTCP_VERSION-setup-win32.exe
- build/electrum-bitcoinprivate/dist/electrum-bitcoinprivate-$ELECTRUM_BTCP_VERSION-setup-win64.exe
- build/electrum-bitcoinprivate/bin/Electrum_bitcoinprivate-$ELECTRUM_BTCP_APK_VERSION-release-unsigned.apk
on:
repo: ZclassicCommunity/electrum-zclassic
tags: false
repo: BTCPrivate/electrum-bitcoinprivate
tags: true
condition: "$TRAVIS_OS_NAME = linux"
draft: true

View File

@ -1,9 +1,9 @@
include LICENCE RELEASE-NOTES AUTHORS
include README.rst
include electrum-zclassic.conf.sample
include electrum-zclassic.desktop
include electrum-bitcoinprivate.conf.sample
include electrum-bitcoinprivate.desktop
include *.py
include electrum-zclassic
include electrum-bitcoinprivate
include contrib/requirements/requirements.txt
include contrib/requirements/requirements-hw.txt
recursive-include lib *.py

View File

@ -1,4 +1,4 @@
Electrum-Zclassic - Lightweight Zclassic client
Electrum-bitcoinprivate - Lightweight Bitcoin Private client
=====================================
::
@ -6,11 +6,11 @@ Electrum-Zclassic - Lightweight Zclassic client
Licence: MIT Licence
Author: Thomas Voegtlin
Language: Python
Homepage: https://github.com/ZclassicCommunity/electrum-zcl
Homepage: https://github.com/BTCPrivate/electrum-bitcoinprivate
.. image:: https://travis-ci.org/ZclassicCommunity/electrum-zcl.svg?branch=master
:target: https://travis-ci.org/ZclassicCommunity/electrum-zcl
.. image:: https://travis-ci.org/BTCPrivate/electrum-bitcoinprivate.svg?branch=master
:target: https://travis-ci.org/BTCPrivate/electrum-bitcoinprivate
:alt: Build Status
@ -20,30 +20,30 @@ Electrum-Zclassic - Lightweight Zclassic client
Getting started
===============
Electrum-Zclassic is a pure python application. If you want to use the
Electrum-bitcoinprivate is a pure python application. If you want to use the
Qt interface, install the Qt dependencies::
sudo apt-get install python3-pyqt5
If you downloaded the official package (tar.gz), you can run
Electrum-Zclassic from its root directory, without installing it on your
Electrum-bitcoinprivate from its root directory, without installing it on your
system; all the python dependencies are included in the 'packages'
directory. To run Electrum-Zclassic from its root directory, just do::
directory. To run Electrum-bitcoinprivate from its root directory, just do::
./electrum-zclassic
./electrum-bitcoinprivate
You can also install Electrum-Zclassic on your system, by running this command::
You can also install Electrum-bitcoinprivate on your system, by running this command::
sudo apt-get install python3-setuptools
pip3 install .[full]
This will download and install the Python dependencies used by
Electrum-Zclassic, instead of using the 'packages' directory.
Electrum-bitcoinprivate, instead of using the 'packages' directory.
The 'full' extra contains some optional dependencies that we think
are often useful but they are not strictly needed.
If you cloned the git repository, you need to compile extra files
before you can run Electrum-Zclassic. Read the next section, "Development
before you can run Electrum-bitcoinprivate. Read the next section, "Development
Version".
@ -53,8 +53,8 @@ Development version
Check out the code from GitHub::
git clone git://github.com/ZclassicCommunity/electrum-zclassic.git
cd electrum-zclassic
git clone git://github.com/BTCPrivate/electrum-bitcoinprivate.git
cd electrum-bitcoinprivate
Run install (this should install dependencies)::
@ -86,7 +86,7 @@ To create binaries, create the 'packages' directory::
./contrib/make_packages
This directory contains the python dependencies used by Electrum-Zclassic.
This directory contains the python dependencies used by Electrum-bitcoinprivate.
Android
-------

View File

@ -149,7 +149,7 @@ issue #3374. Users should upgrade to 3.0.5.
# Release 2.9 - Independence (July 27th, 2017)
* Multiple Chain Validation: Electrum will download and validate
block headers sent by servers that may follow different branches
of a fork in the Bitcoin blockchain. Instead of a linear sequence,
of a fork in the bitcoinprivate blockchain. Instead of a linear sequence,
block headers are organized in a tree structure. Branching points
are located efficiently using binary search. The purpose of MCV is
to detect and handle blockchain forks that are invisible to the
@ -311,7 +311,7 @@ issue #3374. Users should upgrade to 3.0.5.
wallet that has several accounts. Make sure that you have saved
your seed phrase before you upgrade Electrum.
* This version introduces a separation between wallets types and
keystores types. 'Wallet type' defines the type of Bitcoin contract
keystores types. 'Wallet type' defines the type of bitcoinprivate contract
used in the wallet, while 'keystore type' refers to the method used
to store private keys. Therefore, so-called 'hardware wallets' will
be referred to as 'hardware keystores'.
@ -444,13 +444,13 @@ issue #3374. Users should upgrade to 3.0.5.
* Various GUI improvements
# Release 2.4
* Payment to DNS names storing a Bitcoin addresses (OpenAlias) is
* Payment to DNS names storing a bitcoinprivate addresses (OpenAlias) is
supported directly, without activating a plugin. The verification
uses DNSSEC.
* The DNSSEC verification code was rewritten. The previous code,
which was part of the OpenAlias plugin, is vulnerable and should
not be trusted (Electrum 2.0 to 2.3).
* Payment requests can be signed using Bitcoin addresses stored
* Payment requests can be signed using bitcoinprivate addresses stored
in DNS (OpenAlias). The identity of the requestor is verified using
DNSSEC.
* Payment requests signed with OpenAlias keys can be shared as

View File

@ -0,0 +1,38 @@
Windows Binary Builds
=====================
These scripts can be used for cross-compilation of Windows Electrum executables from Linux/Wine.
Produced binaries are deterministic, so you should be able to generate binaries that match the official releases.
Usage:
1. Install the following dependencies:
- dirmngr
- gpg
- 7Zip
- Wine (>= v2)
For example:
```
$ sudo apt-get install wine-development dirmngr gnupg2 p7zip-full
$ wine --version
wine-2.0 (Debian 2.0-3+b2)
```
or
```
$ pacman -S wine gnupg
$ wine --version
wine-2.21
```
2. Make sure `/opt` is writable by the current user.
3. Run `build.sh`.
4. The generated binaries are in `./dist`.

View File

@ -0,0 +1,89 @@
#!/bin/bash
NAME_ROOT=electrum-bitcoinprivate
PYTHON_VERSION=3.5.4
# These settings probably don't need any change
export WINEPREFIX=/opt/wine64
export PYTHONDONTWRITEBYTECODE=1
export PYTHONHASHSEED=22
PYHOME=c:/python$PYTHON_VERSION
PYTHON="wine $PYHOME/python.exe -OO -B"
# Let's begin!
cd `dirname $0`
set -e
mkdir -p tmp
cd tmp
for repo in electrum-bitcoinprivate electrum-locale electrum-icons; do
if [ -d $repo ]; then
cd $repo
git pull
git checkout master
cd ..
else
URL=https://github.com/BTCPrivate/$repo.git
git clone -b master $URL $repo
fi
done
pushd electrum-locale
for i in ./locale/*; do
dir=$i/LC_MESSAGES
mkdir -p $dir
msgfmt --output-file=$dir/electrum.mo $i/electrum.po || true
done
popd
pushd electrum-bitcoinprivate
if [ ! -z "$1" ]; then
git checkout $1
fi
#VERSION=`git describe --tags`
VERSION=3.2.0
echo "Last commit: $VERSION"
find -exec touch -d '2000-11-11T11:11:11+00:00' {} +
popd
rm -rf $WINEPREFIX/drive_c/electrum_bitcoinprivate
cp -r electrum-bitcoinprivate $WINEPREFIX/drive_c/electrum_bitcoinprivate
cp electrum-bitcoinprivate/LICENCE .
cp -r electrum-locale/locale $WINEPREFIX/drive_c/electrum_bitcoinprivate/lib/
cp electrum-icons/icons_rc.py $WINEPREFIX/drive_c/electrum_bitcoinprivate/gui/qt/
# Install frozen dependencies
$PYTHON -m pip install -r ../../deterministic-build/requirements.txt
$PYTHON -m pip install -r ../../deterministic-build/requirements-hw.txt
pushd $WINEPREFIX/drive_c/electrum_bitcoinprivate
$PYTHON setup.py install
popd
cd ..
rm -rf dist/
# build standalone and portable versions
wine "C:/python$PYTHON_VERSION/scripts/pyinstaller.exe" --noconfirm --ascii --name $NAME_ROOT-$VERSION -w deterministic.spec
# set timestamps in dist, in order to make the installer reproducible
pushd dist
find -exec touch -d '2000-11-11T11:11:11+00:00' {} +
popd
# build NSIS installer
# $VERSION could be passed to the electrum.nsi script, but this would require some rewriting in the script iself.
wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" /DPRODUCT_VERSION=$VERSION electrum.nsi
cd dist
mv electrum-setup.exe $NAME_ROOT-$VERSION-setup.exe
cd ..
echo "Done."
md5sum dist/electrum*exe

26
contrib/build-wine/build.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# Lucky number
export PYTHONHASHSEED=22
if [ ! -z "$1" ]; then
to_build="$1"
fi
here=$(dirname "$0")
test -n "$here" -a -d "$here" || exit
echo "Clearing $here/build and $here/dist..."
rm "$here"/build/* -rf
rm "$here"/dist/* -rf
$here/prepare-wine.sh || exit 1
echo "Resetting modification time in C:\Python..."
# (Because of some bugs in pyinstaller)
pushd /opt/wine64/drive_c/python*
find -exec touch -d '2000-11-11T11:11:11+00:00' {} +
popd
ls -l /opt/wine64/drive_c/python*
$here/build-electrum-git.sh $to_build && \
echo "Done."

View File

@ -0,0 +1,133 @@
# -*- mode: python -*-
from PyInstaller.utils.hooks import collect_data_files, collect_submodules, collect_dynamic_libs
import sys
for i, x in enumerate(sys.argv):
if x == '--name':
cmdline_name = sys.argv[i+1]
break
else:
raise BaseException('no name')
home = 'C:\\electrum_bitcoinprivate\\'
# see https://github.com/pyinstaller/pyinstaller/issues/2005
hiddenimports = []
hiddenimports += collect_submodules('trezorlib')
hiddenimports += collect_submodules('btchip')
hiddenimports += collect_submodules('keepkeylib')
hiddenimports += collect_submodules('websocket')
# Add libusb binary
binaries = [("c:/python3.5.4/libusb-1.0.dll", ".")]
# Workaround for "Retro Look":
binaries += [b for b in collect_dynamic_libs('PyQt5') if 'qwindowsvista' in b[0]]
datas = [
(home+'lib/currencies.json', 'electrum_bitcoinprivate'),
(home+'lib/servers.json', 'electrum_bitcoinprivate'),
# (home+'lib/checkpoints.json', 'electrum_bitcoinprivate'),
(home+'lib/servers_testnet.json', 'electrum_bitcoinprivate'),
# (home+'lib/checkpoints_testnet.json', 'electrum_bitcoinprivate'),
(home+'lib/wordlist/english.txt', 'electrum_bitcoinprivate/wordlist'),
(home+'lib/locale', 'electrum_bitcoinprivate/locale'),
(home+'plugins', 'electrum_plugins'),
('C:\\Program Files (x86)\\ZBar\\bin\\', '.')
]
datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
# We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports
a = Analysis([home+'electrum-bitcoinprivate',
home+'gui/qt/main_window.py',
home+'gui/text.py',
home+'lib/util.py',
home+'lib/wallet.py',
home+'lib/simple_config.py',
home+'lib/bitcoin.py',
home+'lib/dnssec.py',
home+'lib/commands.py',
home+'plugins/cosigner_pool/qt.py',
home+'plugins/email_requests/qt.py',
home+'plugins/trezor/client.py',
home+'plugins/trezor/qt.py',
home+'plugins/keepkey/qt.py',
home+'plugins/ledger/qt.py',
#home+'packages/requests/utils.py'
],
binaries=binaries,
datas=datas,
#pathex=[home+'lib', home+'gui', home+'plugins'],
hiddenimports=hiddenimports,
hookspath=[])
# http://stackoverflow.com/questions/19055089/pyinstaller-onefile-warning-pyconfig-h-when-importing-scipy-or-scipy-signal
for d in a.datas:
if 'pyconfig' in d[0]:
a.datas.remove(d)
break
# hotfix for #3171 (pre-Win10 binaries)
a.binaries = [x for x in a.binaries if not x[1].lower().startswith(r'c:\windows')]
pyz = PYZ(a.pure)
#####
# "standalone" exe with all dependencies packed into it
exe_standalone = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
name=os.path.join('build\\pyi.win32\\electrum_bitcoinprivate', cmdline_name + ".exe"),
debug=False,
strip=None,
upx=False,
icon=home+'icons/electrum-bitcoinprivate.ico',
console=False)
# console=True makes an annoying black box pop up, but it does make Electrum output command line commands, with this turned off no output will be given but commands can still be used
exe_portable = EXE(
pyz,
a.scripts,
a.binaries,
a.datas + [ ('is_portable', 'README.md', 'DATA' ) ],
name=os.path.join('build\\pyi.win32\\electrum_bitcoinprivate', cmdline_name + "-portable.exe"),
debug=False,
strip=None,
upx=False,
icon=home+'icons/electrum-bitcoinprivate.ico',
console=False)
#####
# exe and separate files that NSIS uses to build installer "setup" exe
exe_dependent = EXE(
pyz,
a.scripts,
exclude_binaries=True,
name=os.path.join('build\\pyi.win32\\electrum_bitcoinprivate', cmdline_name),
debug=False,
strip=None,
upx=False,
icon=home+'icons/electrum-bitcoinprivate.ico',
console=False)
coll = COLLECT(
exe_dependent,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
debug=False,
icon=home+'icons/electrum-bitcoinprivate.ico',
console=False,
name=os.path.join('dist', 'electrum-bitcoinprivate'))

View File

@ -0,0 +1,173 @@
;--------------------------------
;Include Modern UI
!include "TextFunc.nsh" ;Needed for the $GetSize fuction. I know, doesn't sound logical, it isn't.
!include "MUI2.nsh"
;--------------------------------
;Variables
!define PRODUCT_NAME "bitcoinprivate Electrum"
!define PRODUCT_WEB_SITE "https://github.com/BTCPrivate/electrum-bitcoinprivate"
!define PRODUCT_PUBLISHER "bitcoinprivate Electrum Technologies"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
;--------------------------------
;General
;Name and file
Name "${PRODUCT_NAME}"
OutFile "dist/electrum-setup.exe"
;Default installation folder
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\${PRODUCT_NAME}" ""
;Request application privileges for Windows Vista
RequestExecutionLevel admin
;Specifies whether or not the installer will perform a CRC on itself before allowing an install
CRCCheck on
;Sets whether or not the details of the install are shown. Can be 'hide' (the default) to hide the details by default, allowing the user to view them, or 'show' to show them by default, or 'nevershow', to prevent the user from ever seeing them.
ShowInstDetails show
;Sets whether or not the details of the uninstall are shown. Can be 'hide' (the default) to hide the details by default, allowing the user to view them, or 'show' to show them by default, or 'nevershow', to prevent the user from ever seeing them.
ShowUninstDetails show
;Sets the colors to use for the install info screen (the default is 00FF00 000000. Use the form RRGGBB (in hexadecimal, as in HTML, only minus the leading '#', since # can be used for comments). Note that if "/windows" is specified as the only parameter, the default windows colors will be used.
InstallColors /windows
;This command sets the compression algorithm used to compress files/data in the installer. (http://nsis.sourceforge.net/Reference/SetCompressor)
SetCompressor /SOLID lzma
;Sets the dictionary size in megabytes (MB) used by the LZMA compressor (default is 8 MB).
SetCompressorDictSize 64
;Sets the text that is shown (by default it is 'Nullsoft Install System vX.XX') in the bottom of the install window. Setting this to an empty string ("") uses the default; to set the string to blank, use " " (a space).
BrandingText "${PRODUCT_NAME} Installer v${PRODUCT_VERSION}"
;Sets what the titlebars of the installer will display. By default, it is 'Name Setup', where Name is specified with the Name command. You can, however, override it with 'MyApp Installer' or whatever. If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
Caption "${PRODUCT_NAME}"
;Adds the Product Version on top of the Version Tab in the Properties of the file.
VIProductVersion 1.0.0.0
;VIAddVersionKey - Adds a field in the Version Tab of the File Properties. This can either be a field provided by the system or a user defined field.
VIAddVersionKey ProductName "${PRODUCT_NAME} Installer"
VIAddVersionKey Comments "The installer for ${PRODUCT_NAME}"
VIAddVersionKey CompanyName "${PRODUCT_NAME}"
VIAddVersionKey LegalCopyright "2013-2016 ${PRODUCT_PUBLISHER}"
VIAddVersionKey FileDescription "${PRODUCT_NAME} Installer"
VIAddVersionKey FileVersion ${PRODUCT_VERSION}
VIAddVersionKey ProductVersion ${PRODUCT_VERSION}
VIAddVersionKey InternalName "${PRODUCT_NAME} Installer"
VIAddVersionKey LegalTrademarks "${PRODUCT_NAME} is a trademark of ${PRODUCT_PUBLISHER}"
VIAddVersionKey OriginalFilename "${PRODUCT_NAME}.exe"
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
!define MUI_ABORTWARNING_TEXT "Are you sure you wish to abort the installation of ${PRODUCT_NAME}?"
!define MUI_ICON "tmp\electrum-bitcoinprivate\icons\electrum-bitcoinprivate.ico"
;--------------------------------
;Pages
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Installer Sections
;Check if we have Administrator rights
Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
FunctionEnd
Section
SetOutPath $INSTDIR
;Uninstall previous version files
RMDir /r "$INSTDIR\*.*"
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*"
;Files to pack into the installer
File /r "dist\electrum-bitcoinprivate\*.*"
File "..\..\icons\electrum-bitcoinprivate.ico"
;Store installation folder
WriteRegStr HKCU "Software\${PRODUCT_NAME}" "" $INSTDIR
;Create uninstaller
DetailPrint "Creating uninstaller..."
WriteUninstaller "$INSTDIR\Uninstall.exe"
;Create desktop shortcut
DetailPrint "Creating desktop shortcut..."
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" ""
;Create start-menu items
DetailPrint "Creating start-menu items..."
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" 0
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" 0
;Links bitcoinprivatecoin: URI's to Electrum
WriteRegStr HKCU "Software\Classes\bitcoin" "" "URL:bitcoin Protocol"
WriteRegStr HKCU "Software\Classes\bitcoin" "URL Protocol" ""
WriteRegStr HKCU "Software\Classes\bitcoin" "DefaultIcon" "$\"$INSTDIR\electrum-bitcoinprivate.ico, 0$\""
WriteRegStr HKCU "Software\Classes\bitcoin\shell\open\command" "" "$\"$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe$\" $\"%1$\""
;Adds an uninstaller possibilty to Windows Uninstall or change a program section
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\electrum-bitcoinprivate.ico"
;Fixes Windows broken size estimates
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $0 "0x%08X" $0
WriteRegDWORD HKCU "${PRODUCT_UNINST_KEY}" "EstimatedSize" "$0"
SectionEnd
;--------------------------------
;Descriptions
;--------------------------------
;Uninstaller Section
Section "Uninstall"
RMDir /r "$INSTDIR\*.*"
RMDir "$INSTDIR"
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*"
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
DeleteRegKey HKCU "Software\Classes\bitcoin"
DeleteRegKey HKCU "Software\${PRODUCT_NAME}"
DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}"
SectionEnd

View File

@ -0,0 +1,154 @@
#!/bin/bash
# Please update these carefully, some versions won't work under Wine
NSIS_FILENAME=nsis-3.03-setup.exe
NSIS_URL=https://prdownloads.sourceforge.net/nsis/$NSIS_FILENAME?download
NSIS_SHA256=bd3b15ab62ec6b0c7a00f46022d441af03277be893326f6fea8e212dc2d77743
ZBAR_FILENAME=zbarw-20121031-setup.exe
ZBAR_URL=https://sourceforge.net/projects/zbarw/files/$ZBAR_FILENAME/download
ZBAR_SHA256=177e32b272fa76528a3af486b74e9cb356707be1c5ace4ed3fcee9723e2c2c02
LIBUSB_FILENAME=libusb-1.0.22.7z
LIBUSB_URL=https://prdownloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.22/$LIBUSB_FILENAME?download
LIBUSB_SHA256=671f1a420757b4480e7fadc8313d6fb3cbb75ca00934c417c1efa6e77fb8779b
PYTHON_VERSION=3.5.4
## These settings probably don't need change
export WINEPREFIX=/opt/wine64
#export WINEARCH='win32'
PYHOME=c:/python$PYTHON_VERSION
PYTHON="wine $PYHOME/python.exe -OO -B"
# based on https://superuser.com/questions/497940/script-to-verify-a-signature-with-gpg
verify_signature() {
local file=$1 keyring=$2 out=
if out=$(gpg --no-default-keyring --keyring "$keyring" --status-fd 1 --verify "$file" 2>/dev/null) &&
echo "$out" | grep -qs "^\[GNUPG:\] VALIDSIG "; then
return 0
else
echo "$out" >&2
exit 1
fi
}
verify_hash() {
local file=$1 expected_hash=$2
actual_hash=$(sha256sum $file | awk '{print $1}')
if [ "$actual_hash" == "$expected_hash" ]; then
return 0
else
echo "$file $actual_hash (unexpected hash)" >&2
rm "$file"
exit 1
fi
}
download_if_not_exist() {
local file_name=$1 url=$2
if [ ! -e $file_name ] ; then
wget -O $PWD/$file_name "$url"
fi
}
# https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/templates/header.sh
retry() {
local result=0
local count=1
while [ $count -le 3 ]; do
[ $result -ne 0 ] && {
echo -e "\nThe command \"$@\" failed. Retrying, $count of 3.\n" >&2
}
! { "$@"; result=$?; }
[ $result -eq 0 ] && break
count=$(($count + 1))
sleep 1
done
[ $count -gt 3 ] && {
echo -e "\nThe command \"$@\" failed 3 times.\n" >&2
}
return $result
}
# Let's begin!
here=$(dirname $(readlink -e $0))
set -e
# Clean up Wine environment
echo "Cleaning $WINEPREFIX"
rm -rf $WINEPREFIX
echo "done"
wine 'wineboot'
mkdir -p /tmp/electrum-build
cd /tmp/electrum-build
# Install Python
# note: you might need "sudo apt-get install dirmngr" for the following
# keys from https://www.python.org/downloads/#pubkeys
KEYLIST_PYTHON_DEV="531F072D39700991925FED0C0EDDC5F26A45C816 26DEA9D4613391EF3E25C9FF0A5B101836580288 CBC547978A3964D14B9AB36A6AF053F07D9DC8D2 C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF 12EF3DC38047DA382D18A5B999CDEA9DA4135B38 8417157EDBE73D9EAC1E539B126EB563A74B06BF DBBF2EEBF925FAADCF1F3FFFD9866941EA5BBD71 2BA0DB82515BBB9EFFAC71C5C9BE28DEE6DF025C 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D C9B104B3DD3AA72D7CCB1066FB9921286F5E1540 97FC712E4C024BBEA48A61ED3A5CA953F73C700D 7ED10B6531D7C8E1BC296021FC624643487034E5"
KEYRING_PYTHON_DEV="keyring-electrum-build-python-dev.gpg"
for server in $(shuf -e ha.pool.sks-keyservers.net \
hkp://p80.pool.sks-keyservers.net:80 \
keyserver.ubuntu.com \
hkp://keyserver.ubuntu.com:80) ; do
retry gpg --no-default-keyring --keyring $KEYRING_PYTHON_DEV --keyserver "$server" --recv-keys $KEYLIST_PYTHON_DEV \
&& break || : ;
done
for msifile in core dev exe lib pip tools; do
echo "Installing $msifile..."
wget -nc "https://www.python.org/ftp/python/$PYTHON_VERSION/win32/${msifile}.msi"
wget -nc "https://www.python.org/ftp/python/$PYTHON_VERSION/win32/${msifile}.msi.asc"
verify_signature "${msifile}.msi.asc" $KEYRING_PYTHON_DEV
wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/python$PYTHON_VERSION
done
# upgrade pip
$PYTHON -m pip install pip --upgrade
# Install pywin32-ctypes (needed by pyinstaller)
$PYTHON -m pip install pywin32-ctypes==0.1.2
# install PySocks
$PYTHON -m pip install win_inet_pton==1.0.1
$PYTHON -m pip install -r $here/../deterministic-build/requirements-binaries.txt
# Install PyInstaller
$PYTHON -m pip install https://github.com/ecdsa/pyinstaller/archive/fix_2952.zip
# Install ZBar
download_if_not_exist $ZBAR_FILENAME "$ZBAR_URL"
verify_hash $ZBAR_FILENAME "$ZBAR_SHA256"
wine "$PWD/$ZBAR_FILENAME" /S
# Upgrade setuptools (so Electrum can be installed later)
$PYTHON -m pip install setuptools --upgrade
# Install NSIS installer
download_if_not_exist $NSIS_FILENAME "$NSIS_URL"
verify_hash $NSIS_FILENAME "$NSIS_SHA256"
wine "$PWD/$NSIS_FILENAME" /S
download_if_not_exist $LIBUSB_FILENAME "$LIBUSB_URL"
verify_hash $LIBUSB_FILENAME "$LIBUSB_SHA256"
7z x -olibusb $LIBUSB_FILENAME -aos
cp libusb/MS32/dll/libusb-1.0.dll $WINEPREFIX/drive_c/python$PYTHON_VERSION/
# Install UPX
#wget -O upx.zip "https://downloads.sourceforge.net/project/upx/upx/3.08/upx308w.zip"
#unzip -o upx.zip
#cp upx*/upx.exe .
# add dlls needed for pyinstaller:
cp $WINEPREFIX/drive_c/python$PYTHON_VERSION/Lib/site-packages/PyQt5/Qt/bin/* $WINEPREFIX/drive_c/python$PYTHON_VERSION/
echo "Wine is configured."

View File

@ -1,5 +1,5 @@
btchip-python==0.1.26 \
--hash=sha256:427d67c5b4f4709605c51dd91d5d44a2ad8f541693673817765271e4b3a1461e
btchip-python==0.1.28 \
--hash=sha256:da09d0d7a6180d428833795ea9a233c3b317ddfcccea8cc6f0eba59435e5dd83
certifi==2018.1.18 \
--hash=sha256:14131608ad2fd56836d33a71ee60fa1c82bc9d2c8d98b7bdbc631fe1b3cd1296 \
--hash=sha256:edbc3f203427eef571f79a7692bb160a2b0f7ccaa31953e99bd17e307cf63f7d
@ -40,9 +40,9 @@ Cython==0.28.1 \
--hash=sha256:e47bbe74d6c87fab2e22f1580aa3e4a8e7482b4265b1fc76685fc49f90e18f99 \
--hash=sha256:ea113ff58e96152738e646b8ee77b41d3994735df77bee0a26cd413a67e03c0f \
--hash=sha256:ea22d79133583b5b0f856dbfda097363228ae0a3d77431deaba90634e5d4853a
ecdsa==0.13 \
--hash=sha256:40d002cf360d0e035cf2cb985e1308d41aaa087cbfc135b2dc2d844296ea546c \
--hash=sha256:64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa
ecdsa==0.13.3 \
--hash=sha256:9814e700890991abeceeb2242586024d4758c8fc18445b194a49bd62d85861db \
--hash=sha256:163c80b064a763ea733870feb96f9dd9b92216cfcacd374837af18e4e8ec3d4d
hidapi==0.7.99.post21 \
--hash=sha256:1ac170f4d601c340f2cd52fd06e85c5e77bad7ceac811a7bb54b529f7dc28c24 \
--hash=sha256:8d3be666f464347022e2b47caf9132287885d9eacc7895314fc8fefcb4e42946 \

View File

@ -7,9 +7,9 @@ chardet==3.0.4 \
dnspython==1.15.0 \
--hash=sha256:40f563e1f7a7b80dc5a4e76ad75c23da53d62f1e15e6e517293b04e1f84ead7c \
--hash=sha256:861e6e58faa730f9845aaaa9c6c832851fbf89382ac52915a51f89c71accdd31
ecdsa==0.13 \
--hash=sha256:40d002cf360d0e035cf2cb985e1308d41aaa087cbfc135b2dc2d844296ea546c \
--hash=sha256:64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa
ecdsa==0.13.3 \
--hash=sha256:9814e700890991abeceeb2242586024d4758c8fc18445b194a49bd62d85861db \
--hash=sha256:163c80b064a763ea733870feb96f9dd9b92216cfcacd374837af18e4e8ec3d4d
idna==2.6 \
--hash=sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f \
--hash=sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4

View File

@ -2,3 +2,5 @@ Cython>=0.27
trezor>=0.9.0
keepkey
btchip-python
libusb1

View File

@ -27,9 +27,9 @@ Manual signing:
jarsigner -verbose \
-tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp \
-sigalg SHA1withRSA -digestalg SHA1 \
-sigfile zclassic-electrum \
-sigfile bitcoinprivate-electrum \
-keystore ~/.jks/keystore \
Electrum_Zclassic-3.0.6.1-release-unsigned.apk \
Electrum_bitcoinprivate-3.0.6.1-release-unsigned.apk \
electrum.z.cash
Zipalign from Android SDK build tools is also required (set path to bin in
@ -48,8 +48,8 @@ settings file or with key -z). To install:
Manual zip aligning:
android-sdk-linux/build-tools/27.0.3/zipalign -v 4 \
Electrum_Zclassic-3.0.6.1-release-unsigned.apk \
Electrum_Zclassic-3.0.6.1-release.apk
Electrum_bitcoinprivate-3.0.6.1-release-unsigned.apk \
Electrum_bitcoinprivate-3.0.6.1-release.apk
@ -143,9 +143,9 @@ PEP440_PUBVER_PATTERN = re.compile('^((\d+)!)?'
'([a-zA-Z]+\d+)?'
'((\.[a-zA-Z]+\d+)*)$')
REL_NOTES_PATTERN = re.compile('^#.+?(^[^#].+?)^#.+?', re.M | re.S)
SDIST_NAME_PATTERN = re.compile('^Electrum-Zclassic-(.*).tar.gz$')
SDIST_DIR_TEMPLATE = 'Electrum-Zclassic-{version}'
PPA_SOURCE_NAME = 'electrum-zclassic'
SDIST_NAME_PATTERN = re.compile('^Electrum-bitcoinprivate-(.*).tar.gz$')
SDIST_DIR_TEMPLATE = 'Electrum-bitcoinprivate-{version}'
PPA_SOURCE_NAME = 'electrum-bitcoinprivate'
PPA_ORIG_NAME_TEMPLATE = '%s_{version}.orig.tar.gz' % PPA_SOURCE_NAME
CHANGELOG_TEMPLATE = """%s ({ppa_version}) {series}; urgency=medium
{changes} -- {uid} {time}""" % PPA_SOURCE_NAME
@ -164,12 +164,12 @@ JARSIGNER_ARGS = [
'jarsigner', '-verbose',
'-tsa', 'http://sha256timestamp.ws.symantec.com/sha256/timestamp',
'-sigalg', 'SHA1withRSA', '-digestalg', 'SHA1',
'-sigfile', 'zclassic-electrum',
'-sigfile', 'bitcoinprivate-electrum',
'-storepass:env', JKS_STOREPASS,
'-keypass:env', JKS_KEYPASS,
]
UNSIGNED_APK_PATTERN = re.compile('^Electrum_Zclassic-(.*)-release-unsigned.apk$')
SIGNED_APK_TEMPLATE = 'Electrum_Zclassic-{version}-release.apk'
UNSIGNED_APK_PATTERN = re.compile('^Electrum_bitcoinprivate-(.*)-release-unsigned.apk$')
SIGNED_APK_TEMPLATE = 'Electrum_bitcoinprivate-{version}-release.apk'
os.environ['QUILT_PATCHES'] = 'debian/patches'

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Search and replaces BTC addresses and private keys in WIF to Zclassic variant"""
"""Search and replaces BTC addresses and private keys in WIF to bitcoinprivate variant"""
import click
import imp

View File

@ -38,19 +38,19 @@ hiddenimports += [
]
datas = [
('lib/servers.json', 'electrum_zclassic'),
('lib/servers_testnet.json', 'electrum_zclassic'),
('lib/servers_regtest.json', 'electrum_zclassic'),
('lib/currencies.json', 'electrum_zclassic'),
('lib/locale', 'electrum_zclassic/locale'),
('lib/wordlist', 'electrum_zclassic/wordlist'),
('lib/servers.json', 'electrum_bitcoinprivate'),
('lib/servers_testnet.json', 'electrum_bitcoinprivate'),
('lib/servers_regtest.json', 'electrum_bitcoinprivate'),
('lib/currencies.json', 'electrum_bitcoinprivate'),
('lib/locale', 'electrum_bitcoinprivate/locale'),
('lib/wordlist', 'electrum_bitcoinprivate/wordlist'),
('C:\\zbarw', '.'),
]
datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
binaries = [('C:/Python34/libusb-1.0.dll', '.')]
binaries = [('C:/Python36/libusb-1.0.dll', '.')]
# https://github.com/pyinstaller/pyinstaller/wiki/Recipe-remove-tkinter-tcl
sys.modules['FixTk'] = None
@ -88,7 +88,7 @@ excludes += [
'PyQt5.QtWinExtras',
]
a = Analysis(['electrum-zclassic'],
a = Analysis(['electrum-bitcoinprivate'],
pathex=['plugins'],
hiddenimports=hiddenimports,
datas=datas,
@ -102,14 +102,14 @@ for d in a.datas:
a.datas.remove(d)
break
# Add TOC to electrum_zclassic, electrum_zclassic_gui, electrum_zclassic_plugins
# Add TOC to electrum_bitcoinprivate, electrum_bitcoinprivate_gui, electrum_bitcoinprivate_plugins
for p in sorted(a.pure):
if p[0].startswith('lib') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic%s' % p[0][3:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate%s' % p[0][3:] , p[1], p[2])]
if p[0].startswith('gui') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic_gui%s' % p[0][3:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate_gui%s' % p[0][3:] , p[1], p[2])]
if p[0].startswith('plugins') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic_plugins%s' % p[0][7:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate_plugins%s' % p[0][7:] , p[1], p[2])]
pyz = PYZ(a.pure)
@ -120,7 +120,7 @@ exe = EXE(pyz,
strip=False,
upx=False,
console=False,
icon='icons/electrum-zclassic.ico',
icon='icons/electrum-bitcoinprivate.ico',
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name))
# exe with console output
@ -131,12 +131,12 @@ conexe = EXE(pyz,
strip=False,
upx=False,
console=True,
icon='icons/electrum-zclassic.ico',
icon='icons/electrum-bitcoinprivate.ico',
name=os.path.join('build\\pyi.win32\\electrum',
'console-%s' % cmdline_name))
# trezorctl separate executable
tctl_a = Analysis(['C:/Python34/Scripts/trezorctl'],
tctl_a = Analysis(['C:/Python36/Scripts/trezorctl'],
hiddenimports=['pkgutil'],
excludes=excludes,
runtime_hooks=['pyi_tctl_runtimehook.py'])
@ -157,4 +157,4 @@ coll = COLLECT(exe, conexe, tctl_exe,
a.datas,
strip=False,
upx=False,
name=os.path.join('dist', 'electrum-zclassic'))
name=os.path.join('dist', 'electrum-bitcoinprivate'))

View File

@ -7,8 +7,8 @@
;--------------------------------
;Variables
!define PRODUCT_NAME "Electrum-Zclassic"
!define PRODUCT_WEB_SITE "https://github.com/ZclassicCommunity/electrum-zclassic"
!define PRODUCT_NAME "Electrum-bitcoinprivate"
!define PRODUCT_WEB_SITE "https://github.com/BTCPrivate/electrum-bitcoinprivate"
!define PRODUCT_PUBLISHER "Electrum Technologies GmbH"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define BUILD_ARCH "${WINEARCH}"
@ -18,7 +18,7 @@
;Name and file
Name "${PRODUCT_NAME}"
OutFile "dist/electrum-zclassic-${PRODUCT_VERSION}-setup-${BUILD_ARCH}.exe"
OutFile "dist/electrum-bitcoinprivate-${PRODUCT_VERSION}-setup-${BUILD_ARCH}.exe"
;Default installation folder
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
@ -74,7 +74,7 @@
!define MUI_ABORTWARNING
!define MUI_ABORTWARNING_TEXT "Are you sure you wish to abort the installation of ${PRODUCT_NAME}?"
!define MUI_ICON "icons\electrum-zclassic.ico"
!define MUI_ICON "icons\electrum-bitcoinprivate.ico"
;--------------------------------
;Pages
@ -122,8 +122,8 @@ Section
Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*"
;Files to pack into the installer
File /r "dist\electrum-zclassic\*.*"
File "icons\electrum-zclassic.ico"
File /r "dist\electrum-bitcoinprivate\*.*"
File "icons\electrum-bitcoinprivate.ico"
;Store installation folder
WriteRegStr HKCU "Software\${PRODUCT_NAME}" "" $INSTDIR
@ -134,21 +134,21 @@ Section
;Create desktop shortcut
DetailPrint "Creating desktop shortcut..."
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-zclassic-${PRODUCT_VERSION}.exe" ""
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" ""
;Create start-menu items
DetailPrint "Creating start-menu items..."
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-zclassic-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-zclassic-${PRODUCT_VERSION}.exe" 0
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-zclassic-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-zclassic-${PRODUCT_VERSION}.exe" 0
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" 0
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe" 0
;Links zclassic: URI's to Electrum
WriteRegStr HKCU "Software\Classes\zclassic" "" "URL:zclassic Protocol"
WriteRegStr HKCU "Software\Classes\zclassic" "URL Protocol" ""
WriteRegStr HKCU "Software\Classes\zclassic" "DefaultIcon" "$\"$INSTDIR\electrum-zclassic.ico, 0$\""
WriteRegStr HKCU "Software\Classes\zclassic\shell\open\command" "" "$\"$INSTDIR\electrum-zclassic-${PRODUCT_VERSION}.exe$\" $\"%1$\""
;Links bitcoinprivate: URI's to Electrum
WriteRegStr HKCU "Software\Classes\bitcoinprivate" "" "URL:bitcoinprivate Protocol"
WriteRegStr HKCU "Software\Classes\bitcoinprivate" "URL Protocol" ""
WriteRegStr HKCU "Software\Classes\bitcoinprivate" "DefaultIcon" "$\"$INSTDIR\electrum-bitcoinprivate.ico, 0$\""
WriteRegStr HKCU "Software\Classes\bitcoinprivate\shell\open\command" "" "$\"$INSTDIR\electrum-bitcoinprivate-${PRODUCT_VERSION}.exe$\" $\"%1$\""
;Adds an uninstaller possibility to Windows Uninstall or change a program section
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
@ -156,7 +156,7 @@ Section
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\electrum-zclassic.ico"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\electrum-bitcoinprivate.ico"
;Fixes Windows broken size estimates
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
@ -179,7 +179,7 @@ Section "Uninstall"
Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*"
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
DeleteRegKey HKCU "Software\Classes\zclassic"
DeleteRegKey HKCU "Software\Classes\bitcoinprivate"
DeleteRegKey HKCU "Software\${PRODUCT_NAME}"
DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}"
SectionEnd

View File

@ -42,12 +42,12 @@ hiddenimports += [
]
datas = [
('lib/servers.json', 'electrum_zclassic'),
('lib/servers_testnet.json', 'electrum_zclassic'),
('lib/servers_regtest.json', 'electrum_zclassic'),
('lib/currencies.json', 'electrum_zclassic'),
('lib/locale', 'electrum_zclassic/locale'),
('lib/wordlist', 'electrum_zclassic/wordlist'),
('lib/servers.json', 'electrum_bitcoinprivate'),
('lib/servers_testnet.json', 'electrum_bitcoinprivate'),
('lib/servers_regtest.json', 'electrum_bitcoinprivate'),
('lib/currencies.json', 'electrum_bitcoinprivate'),
('lib/locale', 'electrum_bitcoinprivate/locale'),
('lib/wordlist', 'electrum_bitcoinprivate/wordlist'),
]
datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
@ -91,7 +91,7 @@ excludes += [
'PyQt5.QtWinExtras',
]
a = Analysis(['electrum-zclassic'],
a = Analysis(['electrum-bitcoinprivate'],
pathex=['plugins'],
hiddenimports=hiddenimports,
datas=datas,
@ -105,14 +105,14 @@ for d in a.datas:
a.datas.remove(d)
break
# Add TOC to electrum_zclassic, electrum_zclassic_gui, electrum_zclassic_plugins
# Add TOC to electrum_bitcoinprivate, electrum_bitcoinprivate_gui, electrum_bitcoinprivate_plugins
for p in sorted(a.pure):
if p[0].startswith('lib') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic%s' % p[0][3:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate%s' % p[0][3:] , p[1], p[2])]
if p[0].startswith('gui') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic_gui%s' % p[0][3:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate_gui%s' % p[0][3:] , p[1], p[2])]
if p[0].startswith('plugins') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic_plugins%s' % p[0][7:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate_plugins%s' % p[0][7:] , p[1], p[2])]
pyz = PYZ(a.pure)
@ -123,8 +123,8 @@ exe = EXE(pyz,
strip=False,
upx=False,
console=False,
icon='icons/electrum-zclassic.ico',
name=os.path.join('build/electrum-zclassic/electrum-zclassic', cmdline_name))
icon='icons/electrum-bitcoinprivate.ico',
name=os.path.join('build/electrum-bitcoinprivate/electrum-bitcoinprivate', cmdline_name))
# trezorctl separate bin
tctl_a = Analysis([os.path.join(PY36BINDIR, 'trezorctl')],
@ -141,17 +141,17 @@ tctl_exe = EXE(tctl_pyz,
strip=False,
upx=False,
console=True,
name=os.path.join('build/electrum-zclassic/electrum-zclassic', 'trezorctl.bin'))
name=os.path.join('build/electrum-bitcoinprivate/electrum-bitcoinprivate', 'trezorctl.bin'))
coll = COLLECT(exe, tctl_exe,
a.binaries,
a.datas,
strip=False,
upx=False,
name=os.path.join('dist', 'electrum-zclassic'))
name=os.path.join('dist', 'electrum-bitcoinprivate'))
app = BUNDLE(coll,
name=os.path.join('dist', 'Electrum-Zclassic.app'),
appname="Electrum-Zclassic",
icon='electrum-zclassic.icns',
name=os.path.join('dist', 'Electrum-bitcoinprivate.app'),
appname="Electrum-bitcoinprivate",
icon='electrum-bitcoinprivate.icns',
version = 'ELECTRUM_VERSION')

View File

@ -23,7 +23,7 @@ def _new_load_module(name, file, pathname, description):
imp.load_module = _new_load_module
PLUGINS_PREFIX = 'electrum_zclassic_plugins'
PLUGINS_PREFIX = 'electrum_bitcoinprivate_plugins'
KEYSTORE_PLUGINS = [
'hw_wallet',

View File

@ -1,7 +1,7 @@
certifi==2017.11.5
chardet==3.0.4
dnspython==1.15.0
ecdsa==0.13
ecdsa==0.13.3
idna==2.6
jsonrpclib-pelix==0.3.1
pbkdf2==1.3

View File

@ -1,10 +1,13 @@
FROM debian:stretch-slim
FROM ubuntu:18.04
LABEL maintainer "Andriy Khavryuchenko <akhavr@khavr.com>"
USER root
WORKDIR /root
RUN dpkg --add-architecture i386 \
&& apt-get update \
&& apt-get install -y --no-install-recommends software-properties-common \
&& apt-add-repository -y ppa:zebra-lucky/ed-bdeps \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
wine-development wine32-development wine64-development libwine-development libwine-development:i386 \
@ -13,75 +16,72 @@ RUN dpkg --add-architecture i386 \
&& chmod +x winetricks && mv winetricks /usr/local/bin \
&& rm -rf /var/lib/apt/lists/*
ENV WINEPATH c:/git/cmd
ENV WINEPATH c:/git/cmd;c:/Python36;c:/Python36/Scripts
ENV WINEDEBUG -all
ENV WINEPREFIX /root/.wine-32
ENV WINEARCH win32
ENV PYHOME $WINEPREFIX/drive_c/Python34
ENV PYHOME $WINEPREFIX/drive_c/Python36
RUN echo 'download and install 32-bit Python/mingwpy/pywin32/PyQt/git/NSIS/PyInstaller' \
RUN echo 'download and install 32-bit Python/pywin32/PyQt/git/NSIS' \
&& wineboot -i \
&& xvfb-run -a winetricks -q vcrun2010 \
&& xvfb-run -a winetricks -q vcrun2015 && winetricks win10 \
\
&& wget -nv -O python.msi https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi \
&& msiexec /q /i python.msi && rm python.msi \
&& wget -nv -O python.exe https://www.python.org/ftp/python/3.6.6/python-3.6.6.exe \
&& xvfb-run -a wine python.exe /quiet InstallAllUsers=1 TargetDir=$PYHOME && rm python.exe \
&& wine python -m pip install -U pip \
\
&& wget -nv -O libusb.7z https://prdownloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.22/libusb-1.0.22.7z?download \
&& 7z x -olibusb libusb.7z -aos && rm libusb.7z \
&& cp libusb/MS32/dll/libusb-1.0.dll $PYHOME/ \
\
&& wine pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy \
&& /bin/echo -e '[build]\ncompiler=mingw32\n' > $PYHOME/Lib/distutils/distutils.cfg \
\
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b221/pywin32-221.win32-py3.4.exe \
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b223/pywin32-223.win32-py3.6.exe \
&& unzip -qq -d pywin32 pywin32.exe; echo && rm pywin32.exe \
&& cp -r pywin32/PLATLIB/* $PYHOME/Lib/site-packages/ \
&& cp -r pywin32/SCRIPTS/* $PYHOME/Scripts/ && rm -rf pywin32 \
&& wine python $PYHOME/Scripts/pywin32_postinstall.py -install \
\
&& wget -nv -O PyQt.exe "https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe/download" \
&& wine PyQt.exe /S && rm PyQt.exe \
&& wine pip install PyQt5==5.11.2 \
\
&& wget -nv -O git.zip https://github.com/git-for-windows/git/releases/download/v2.16.3.windows.1/MinGit-2.16.3-32-bit.zip \
&& unzip -qq -d git git.zip && rm git.zip && mv git $WINEPREFIX/drive_c/ \
\
&& wget -nv -O nsis.exe "https://sourceforge.net/projects/nsis/files/NSIS%202/2.51/nsis-2.51-setup.exe/download" \
&& wine nsis.exe /S && rm nsis.exe \
&& wget -nv -O nsis.exe "https://prdownloads.sourceforge.net/nsis/nsis-3.03-setup.exe?download" \
&& wine nsis.exe /S \
\
&& wine pip install PyInstaller==3.2.1 \
&& rm -rf /tmp/.wine-0
ENV WINEPREFIX /root/.wine-64
ENV WINEARCH win64
ENV PYHOME $WINEPREFIX/drive_c/Python34
ENV PYHOME $WINEPREFIX/drive_c/Python36
RUN echo 'download and install 64-bit Python/mingwpy/pywin32/PyQt/git/NSIS/PyInstaller' \
&& wineboot -i \
&& xvfb-run -a winetricks -q vcrun2010 \
RUN echo 'download and install 64-bit Python/pywin32/PyQt/git/NSIS' \
&& wineboot -i && winetricks win10 \
&& wget -nv https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe \
&& cabextract -d ex vc_redist.x64.exe && rm vc_redist.x64.exe \
&& cabextract -d ex/a10ex ex/a10 && cabextract -d ex/a11ex ex/a11 \
&& for f in ex/a10ex/api_ms_win_*; do mv $f $(echo "$f" | sed s/_/-/g); done \
&& cp ex/a10ex/* $WINEPREFIX/drive_c/windows/system32 \
&& cp ex/a11ex/* $WINEPREFIX/drive_c/windows/system32 \
&& rm -rf ex \
\
&& wget -nv -O python.msi https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64.msi \
&& msiexec /q /i python.msi && rm python.msi \
&& wget -nv -O python.exe https://www.python.org/ftp/python/3.6.6/python-3.6.6-amd64.exe \
&& xvfb-run -a wine python.exe /quiet InstallAllUsers=1 TargetDir=$PYHOME && rm python.exe \
&& wine python -m pip install -U pip \
\
&& cp libusb/MS64/dll/libusb-1.0.dll $PYHOME/ && rm -rf libusb \
\
&& wine pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy \
&& /bin/echo -e '[build]\ncompiler=mingw32\n' > $PYHOME/Lib/distutils/distutils.cfg \
\
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b221/pywin32-221.win-amd64-py3.4.exe \
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b223/pywin32-223.win-amd64-py3.6.exe \
&& unzip -qq -d pywin32 pywin32.exe; echo && rm pywin32.exe \
&& cp -r pywin32/PLATLIB/* $PYHOME/Lib/site-packages/ \
&& cp -r pywin32/SCRIPTS/* $PYHOME/Scripts/ && rm -rf pywin32 \
&& wine python $PYHOME/Scripts/pywin32_postinstall.py -install \
\
&& wget -nv -O PyQt.exe "https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x64.exe/download" \
&& wine PyQt.exe /S && rm PyQt.exe \
&& wine pip install PyQt5==5.11.2 \
\
&& wget -nv -O git.zip https://github.com/git-for-windows/git/releases/download/v2.16.3.windows.1/MinGit-2.16.3-64-bit.zip \
&& unzip -qq -d git git.zip && rm git.zip && mv git $WINEPREFIX/drive_c/ \
\
&& wget -nv -O nsis.exe "https://sourceforge.net/projects/nsis/files/NSIS%202/2.51/nsis-2.51-setup.exe/download" \
&& wine nsis.exe /S && rm nsis.exe \
\
&& wine pip install PyInstaller==3.2.1 \
&& rm -rf /tmp/.wine-0

View File

@ -7,4 +7,4 @@ if [[ -z $TRAVIS_TAG ]]; then
fi
docker pull zebralucky/electrum-dash-winebuild:Linux
docker pull zebralucky/electrum-dash-winebuild:Wine
docker pull zebralucky/electrum-dash-winebuild:WinePy36

View File

@ -9,7 +9,8 @@ fi
cd build
brew update
brew install zebra-lucky/qt5/qt5
brew tap zebra-lucky/qt5
brew install zebra-lucky/qt5/qt
brew install gettext
curl -O https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.6.pkg

View File

@ -1,40 +1,36 @@
#!/bin/bash
source ./contrib/zclassic/travis/electrum_zclassic_version_env.sh;
echo wine build version is $ELECTRUM_ZCL_VERSION
source ./contrib/bitcoinprivate/travis/electrum_bitcoinprivate_version_env.sh;
echo wine build version is $ELECTRUM_BTCP_VERSION
mv /opt/zbarw $WINEPREFIX/drive_c/
cd $WINEPREFIX/drive_c/electrum-zclassic
cd $WINEPREFIX/drive_c/electrum-bitcoinprivate
rm -rf build
rm -rf dist/electrum-zclassic
rm -rf dist/electrum-bitcoinprivate
cp contrib/zclassic/deterministic.spec .
cp contrib/zclassic/pyi_runtimehook.py .
cp contrib/zclassic/pyi_tctl_runtimehook.py .
cp contrib/bitcoinprivate/deterministic.spec .
cp contrib/bitcoinprivate/pyi_runtimehook.py .
cp contrib/bitcoinprivate/pyi_tctl_runtimehook.py .
wine pip install --upgrade pip
export PYINSTALLER_TAG=dev180610
wget https://github.com/zebra-lucky/pyinstaller/archive/$PYINSTALLER_TAG.tar.gz
wine pip install $PYINSTALLER_TAG.tar.gz
rm $PYINSTALLER_TAG.tar.gz
wine pip install -r contrib/bitcoinprivate/requirements.txt
wine pip install --upgrade pip==18.1
wine pip install PyInstaller==3.4
wine pip install eth-hash==0.1.2
wine pip install -r contrib/zclassic/requirements.txt
wine pip install x11_hash
wine pip install cython
wine pip install cython=0.29.3
wine pip install hidapi
wine pip install pycryptodomex==3.6.0
wine pip install btchip-python==0.1.26
wine pip install btchip-python==0.1.28
wine pip install keepkey==4.0.2
wine pip install rlp==0.6.0
wine pip install trezor==0.9.1
mkdir $WINEPREFIX/drive_c/Qt
ln -s $PYHOME/Lib/site-packages/PyQt5/ $WINEPREFIX/drive_c/Qt/5.5.1
wine pyinstaller -y \
--name electrum-zclassic-$ELECTRUM_ZCL_VERSION.exe \
--name electrum-bitcoinprivate-$ELECTRUM_BTCP_VERSION.exe \
deterministic.spec
if [[ $WINEARCH == win32 ]]; then
@ -44,6 +40,6 @@ else
fi
wine "$NSIS_EXE" /NOCD -V3 \
/DPRODUCT_VERSION=$ELECTRUM_ZCL_VERSION \
/DPRODUCT_VERSION=$ELECTRUM_BTCP_VERSION \
/DWINEARCH=$WINEARCH \
contrib/zclassic/electrum-zclassic.nsi
contrib/bitcoinprivate/electrum-bitcoinprivate.nsi

View File

@ -1,14 +1,14 @@
#!/bin/bash
VERSION_STRING=(`grep ELECTRUM_VERSION lib/version.py`)
ELECTRUM_ZCL_VERSION=${VERSION_STRING[2]}
ELECTRUM_ZCL_VERSION=${ELECTRUM_ZCL_VERSION#\'}
ELECTRUM_ZCL_VERSION=${ELECTRUM_ZCL_VERSION%\'}
DOTS=`echo $ELECTRUM_ZCL_VERSION | grep -o "\." | wc -l`
ELECTRUM_BTCP_VERSION=${VERSION_STRING[2]}
ELECTRUM_BTCP_VERSION=${ELECTRUM_BTCP_VERSION#\'}
ELECTRUM_BTCP_VERSION=${ELECTRUM_BTCP_VERSION%\'}
DOTS=`echo $ELECTRUM_BTCP_VERSION | grep -o "\." | wc -l`
if [[ $DOTS -lt 3 ]]; then
ELECTRUM_ZCL_APK_VERSION=$ELECTRUM_ZCL_VERSION.0
ELECTRUM_BTCP_APK_VERSION=$ELECTRUM_BTCP_VERSION.0
else
ELECTRUM_ZCL_APK_VERSION=$ELECTRUM_ZCL_VERSION
ELECTRUM_BTCP_APK_VERSION=$ELECTRUM_BTCP_VERSION
fi
export ELECTRUM_ZCL_VERSION
export ELECTRUM_ZCL_APK_VERSION
export ELECTRUM_BTCP_VERSION
export ELECTRUM_BTCP_APK_VERSION

View File

@ -6,23 +6,23 @@ if [[ -z $TRAVIS_TAG ]]; then
exit 1
fi
BUILD_REPO_URL=https://github.com/ZclassicCommunity/electrum-zclassic
BUILD_REPO_URL=https://github.com/BTCPrivate/electrum-bitcoinprivate
cd build
git clone --branch $TRAVIS_TAG $BUILD_REPO_URL electrum-zclassic
git clone --branch $TRAVIS_TAG $BUILD_REPO_URL electrum-bitcoinprivate
docker run --rm \
-v $(pwd):/opt \
-w /opt/electrum-zclassic \
-w /opt/electrum-bitcoinprivate \
-t zebralucky/electrum-dash-winebuild:Linux /opt/build_linux.sh
sudo find . -name '*.po' -delete
sudo find . -name '*.pot' -delete
sudo chown -R 1000 electrum-zclassic
sudo chown -R 1000 electrum-bitcoinprivate
docker run --rm \
-v $(pwd)/electrum-zclassic:/home/buildozer/build \
-v $(pwd)/electrum-bitcoinprivate:/home/buildozer/build \
-t zebralucky/electrum-dash-winebuild:Kivy bash -c \
'rm -rf packages && ./contrib/make_packages && ./contrib/make_apk'

View File

@ -6,24 +6,23 @@ if [[ -z $TRAVIS_TAG ]]; then
exit 1
fi
BUILD_REPO_URL=https://github.com/ZclassicCommunity/electrum-zclassic
BUILD_REPO_URL=https://github.com/BTCPrivate/electrum-bitcoinprivate
cd build
git clone --branch $TRAVIS_TAG $BUILD_REPO_URL electrum-zclassic
git clone --branch $TRAVIS_TAG $BUILD_REPO_URL electrum-bitcoinprivate
docker run --rm \
-v $(pwd):/opt \
-w /opt/electrum-zclassic \
-w /opt/electrum-bitcoinprivate \
-t zebralucky/electrum-dash-winebuild:Linux /opt/build_linux.sh
sudo find . -name '*.po' -delete
sudo find . -name '*.pot' -delete
export WINEARCH=win32
export WINEPREFIX=/root/.wine-32
export PYHOME=$WINEPREFIX/drive_c/Python34
export PYHOME=$WINEPREFIX/drive_c/Python36
wget https://github.com/zebra-lucky/zbarw/releases/download/20180620/zbarw-zbarcam-0.10-win32.zip
unzip zbarw-zbarcam-0.10-win32.zip && rm zbarw-zbarcam-0.10-win32.zip
@ -33,13 +32,13 @@ docker run --rm \
-e WINEPREFIX=$WINEPREFIX \
-e PYHOME=$PYHOME \
-v $(pwd):/opt \
-v $(pwd)/electrum-zclassic/:$WINEPREFIX/drive_c/electrum-zclassic \
-w /opt/electrum-zclassic \
-t zebralucky/electrum-dash-winebuild:Wine /opt/build_wine.sh
-v $(pwd)/electrum-bitcoinprivate/:$WINEPREFIX/drive_c/electrum-bitcoinprivate \
-w /opt/electrum-bitcoinprivate \
-t zebralucky/electrum-dash-winebuild:WinePy36 /opt/build_wine.sh
export WINEARCH=win64
export WINEPREFIX=/root/.wine-64
export PYHOME=$WINEPREFIX/drive_c/Python34
export PYHOME=$WINEPREFIX/drive_c/Python36
wget https://github.com/zebra-lucky/zbarw/releases/download/20180620/zbarw-zbarcam-0.10-win64.zip
unzip zbarw-zbarcam-0.10-win64.zip && rm zbarw-zbarcam-0.10-win64.zip
@ -49,6 +48,6 @@ docker run --rm \
-e WINEPREFIX=$WINEPREFIX \
-e PYHOME=$PYHOME \
-v $(pwd):/opt \
-v $(pwd)/electrum-zclassic/:$WINEPREFIX/drive_c/electrum-zclassic \
-w /opt/electrum-zclassic \
-t zebralucky/electrum-dash-winebuild:Wine /opt/build_wine.sh
-v $(pwd)/electrum-bitcoinprivate/:$WINEPREFIX/drive_c/electrum-bitcoinprivate \
-w /opt/electrum-bitcoinprivate \
-t zebralucky/electrum-dash-winebuild:WinePy36 /opt/build_wine.sh

View File

@ -6,25 +6,24 @@ if [[ -z $TRAVIS_TAG ]]; then
exit 1
fi
BUILD_REPO_URL=https://github.com/ZclassicCommunity/electrum-zclassic
BUILD_REPO_URL=https://github.com/BTCPrivate/electrum-bitcoinprivate
cd build
git clone --branch $TRAVIS_TAG $BUILD_REPO_URL electrum-zclassic
git clone --branch $TRAVIS_TAG $BUILD_REPO_URL electrum-bitcoinprivate
cd electrum-zclassic
cd electrum-bitcoinprivate
export PY36BINDIR=/Library/Frameworks/Python.framework/Versions/3.6/bin/
export PATH=$PATH:$PY36BINDIR
source ./contrib/zclassic/travis/electrum_zclassic_version_env.sh;
echo wine build version is $ELECTRUM_ZCL_VERSION
source ./contrib/bitcoinprivate/travis/electrum_bitcoinprivate_version_env.sh;
echo wine build version is $ELECTRUM_BTCP_VERSION
sudo pip3 install --upgrade pip
sudo pip3 install -r contrib/deterministic-build/requirements.txt
sudo pip3 install \
x11_hash>=1.4 \
pycryptodomex==3.6.0 \
btchip-python==0.1.26 \
btchip-python==0.1.28 \
keepkey==4.0.2 \
trezor==0.9.1
@ -35,15 +34,15 @@ export PATH="/usr/local/opt/gettext/bin:$PATH"
find . -name '*.po' -delete
find . -name '*.pot' -delete
cp contrib/zclassic/osx.spec .
cp contrib/zclassic/pyi_runtimehook.py .
cp contrib/zclassic/pyi_tctl_runtimehook.py .
cp contrib/bitcoinprivate/osx.spec .
cp contrib/bitcoinprivate/pyi_runtimehook.py .
cp contrib/bitcoinprivate/pyi_tctl_runtimehook.py .
pyinstaller \
-y \
--name electrum-zclassic-$ELECTRUM_ZCL_VERSION.bin \
--name electrum-bitcoinprivate-$ELECTRUM_BTCP_VERSION.bin \
osx.spec
sudo hdiutil create -fs HFS+ -volname "Electrum-Zclassic" \
-srcfolder dist/Electrum-Zclassic.app \
dist/electrum-zclassic-$ELECTRUM_ZCL_VERSION-macosx.dmg
sudo hdiutil create -fs HFS+ -volname "Electrum-bitcoinprivate" \
-srcfolder dist/Electrum-bitcoinprivate.app \
dist/electrum-bitcoinprivate-$ELECTRUM_BTCP_VERSION-macosx.dmg

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
electrum-zclassic (3.1.3~rc2-0ppa1~ubuntu18.04.1) bionic; urgency=medium
electrum-bitcoinprivate (3.1.3~rc2-0ppa1~ubuntu18.04.1) bionic; urgency=medium
* Port to ppa

40
debian/control vendored
View File

@ -1,4 +1,4 @@
Source: electrum-zclassic
Source: electrum-bitcoinprivate
Section: utils
Priority: optional
Maintainer: Maksym Yuzhakov <zebra.lucky@gmail.com>
@ -19,10 +19,10 @@ Build-Depends:
python3-socks (>= 1.6.5),
python3-pyblake2 (>=0.9.3),
Standards-Version: 4.1.3
Homepage: https://github.com/ZclassicCommunity/electrum-zclassic
Homepage: https://github.com/BTCPrivate/electrum-bitcoinprivate
X-Python3-Version: >= 3.4
Package: python3-electrum-zclassic
Package: python3-electrum-bitcoinprivate
Architecture: all
Section: python
Depends:
@ -33,29 +33,29 @@ Depends:
python3-btchip (>= 0.1.26),
${misc:Depends},
${python3:Depends},
Description: Easy to use Zclassic client - Python module
This package provides a lightweight Zclassic client which protects
you from losing your Zclassic coins in a backup mistake or computer
failure. Also, Electrum-Zclassic does not require waiting time because it does
not download the Zclassic blockchain.
Description: Easy to use bitcoinprivate client - Python module
This package provides a lightweight bitcoinprivate client which protects
you from losing your bitcoinprivate coins in a backup mistake or computer
failure. Also, Electrum-bitcoinprivate does not require waiting time because it does
not download the bitcoinprivate blockchain.
.
This package provides the "electrum_zclassic" Python 3 module which can be used
to access a Zclassic wallet from Python programs.
This package provides the "electrum_bitcoinprivate" Python 3 module which can be used
to access a bitcoinprivate wallet from Python programs.
Package: electrum-zclassic
Package: electrum-bitcoinprivate
Architecture: all
Depends:
${misc:Depends},
${python3:Depends},
python3-electrum-zclassic (= ${binary:Version}),
python3-electrum-bitcoinprivate (= ${binary:Version}),
Recommends: python3-pyqt5
Description: Easy to use Zclassic client
This package provides a lightweight Zclassic client which protects
you from losing your Zclassic coins in a backup mistake or computer
failure. Also, Electrum-Zclassic does not require waiting time because it does
not download the Zclassic blockchain.
Description: Easy to use bitcoinprivate client
This package provides a lightweight bitcoinprivate client which protects
you from losing your bitcoinprivate coins in a backup mistake or computer
failure. Also, Electrum-bitcoinprivate does not require waiting time because it does
not download the bitcoinprivate blockchain.
.
Features of Electrum-Zclassic:
Features of Electrum-bitcoinprivate:
.
* Instant on: Your client does not download the blockchain. It uses a
network of specialized servers that index the blockchain.
@ -70,7 +70,7 @@ Description: Easy to use Zclassic client
will synchronize automatically.
* Cold Storage: Sign transactions from a computer that is always
offline. Broadcast them using a machine that does not have your keys.
* Reachable: You can export your private keys into other Zclassic
* Reachable: You can export your private keys into other bitcoinprivate
clients.
* Established: Electrum-Zclassic is open source and was first released in
* Established: Electrum-bitcoinprivate is open source and was first released in
November 2011.

4
debian/copyright vendored
View File

@ -1,6 +1,6 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: electrum-zclassic
Source: https://github.com/ZclassicCommunity/electrum-zclassic/
Upstream-Name: electrum-bitcoinprivate
Source: https://github.com/BTCPrivate/electrum-bitcoinprivate/
Files: *
Copyright: Electrum Team

View File

@ -1,17 +1,17 @@
.TH electrum-zclassic 1 "23 June 2013" "electrum-zclassic"
.TH electrum-bitcoinprivate 1 "23 June 2013" "electrum-bitcoinprivate"
.SH NAME
electrum-zclassic \- Lightweight Zclassic client
electrum-bitcoinprivate \- Lightweight bitcoinprivate client
.SH SYNOPSIS
.B electrum-zclassic [options] command [options]
.B electrum-bitcoinprivate [options] command [options]
.SH DESCRIPTION
.PP
Electrum-Zclassic is a lightweight Zclassic client.
Electrum-bitcoinprivate is a lightweight bitcoinprivate client.
.br
Electrum-Zclassic protects from losing zclassic coins in a backup mistake or computer
Electrum-bitcoinprivate protects from losing bitcoinprivate coins in a backup mistake or computer
failure. It allows recovery of wallet from a passphrase which you can
learn by heart or write it down on a paper.
.br
Since electrum-zclassic does not download the entire blockchain there
Since electrum-bitcoinprivate does not download the entire blockchain there
is no waiting time when the client is started.
.TP
@ -66,7 +66,7 @@ default language used in GUI
\fB\-u, \-\-usb\fR
Turn on support for hardware wallets (EXPERIMENTAL).
.SH AUTHORS
Electrum-Zclassic client was initially written by ThomasV
Electrum-bitcoinprivate client was initially written by ThomasV
<\fIthomasv@gitorious\fR>
.br
This manual page was written by Vasudev Kamath

View File

@ -1 +1 @@
debian/electrum-zclassic.1
debian/electrum-bitcoinprivate.1

View File

@ -1,7 +1,7 @@
Index: electrum-zclassic/electrum-zclassic
Index: electrum-bitcoinprivate/electrum-bitcoinprivate
===================================================================
--- electrum-zclassic.orig/electrum-zclassic 2018-06-12 22:15:35.699293303 +0300
+++ electrum-zclassic/electrum-zclassic 2018-06-12 22:20:02.122480853 +0300
--- electrum-bitcoinprivate.orig/electrum-bitcoinprivate 2018-06-12 22:15:35.699293303 +0300
+++ electrum-bitcoinprivate/electrum-bitcoinprivate 2018-06-12 22:20:02.122480853 +0300
@@ -26,6 +26,8 @@
import os
import sys
@ -10,4 +10,4 @@ Index: electrum-zclassic/electrum-zclassic
+
script_dir = os.path.dirname(os.path.realpath(__file__))
is_bundle = getattr(sys, 'frozen', False)
is_local = not is_bundle and os.path.exists(os.path.join(script_dir, "electrum-zclassic.desktop"))
is_local = not is_bundle and os.path.exists(os.path.join(script_dir, "electrum-bitcoinprivate.desktop"))

18
debian/rules vendored
View File

@ -1,6 +1,6 @@
#!/usr/bin/make -f
export PYBUILD_NAME=electrum-zclassic
export PYBUILD_NAME=electrum-bitcoinprivate
%:
dh $@ --with python3 --buildsystem=pybuild
@ -14,11 +14,11 @@ override_dh_auto_build::
override_dh_auto_install::
dh_auto_install
mkdir -p debian/electrum-zclassic/usr/bin \
debian/electrum-zclassic/usr/share
mv debian/python3-electrum-zclassic/usr/bin \
debian/electrum-zclassic/usr
mv debian/python3-electrum-zclassic/usr/share/applications \
debian/electrum-zclassic/usr/share
mv debian/python3-electrum-zclassic/usr/share/pixmaps \
debian/electrum-zclassic/usr/share
mkdir -p debian/electrum-bitcoinprivate/usr/bin \
debian/electrum-bitcoinprivate/usr/share
mv debian/python3-electrum-bitcoinprivate/usr/bin \
debian/electrum-bitcoinprivate/usr
mv debian/python3-electrum-bitcoinprivate/usr/share/applications \
debian/electrum-bitcoinprivate/usr/share
mv debian/python3-electrum-bitcoinprivate/usr/share/pixmaps \
debian/electrum-bitcoinprivate/usr/share

View File

@ -38,19 +38,19 @@ hiddenimports += [
]
datas = [
('lib/servers.json', 'electrum_zclassic'),
('lib/servers_testnet.json', 'electrum_zclassic'),
('lib/servers_regtest.json', 'electrum_zclassic'),
('lib/currencies.json', 'electrum_zclassic'),
('lib/locale', 'electrum_zclassic/locale'),
('lib/wordlist', 'electrum_zclassic/wordlist'),
('lib/servers.json', 'electrum_bitcoinprivate'),
('lib/servers_testnet.json', 'electrum_bitcoinprivate'),
('lib/servers_regtest.json', 'electrum_bitcoinprivate'),
('lib/currencies.json', 'electrum_bitcoinprivate'),
('lib/locale', 'electrum_bitcoinprivate/locale'),
('lib/wordlist', 'electrum_bitcoinprivate/wordlist'),
('C:\\zbarw', '.'),
]
datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
binaries = [('C:/Python34/libusb-1.0.dll', '.')]
binaries = [('C:/Python36/libusb-1.0.dll', '.')]
# https://github.com/pyinstaller/pyinstaller/wiki/Recipe-remove-tkinter-tcl
sys.modules['FixTk'] = None
@ -88,7 +88,7 @@ excludes += [
'PyQt5.QtWinExtras',
]
a = Analysis(['electrum-zclassic'],
a = Analysis(['electrum-bitcoinprivate'],
pathex=['plugins'],
hiddenimports=hiddenimports,
datas=datas,
@ -102,14 +102,14 @@ for d in a.datas:
a.datas.remove(d)
break
# Add TOC to electrum_zclassic, electrum_zclassic_gui, electrum_zclassic_plugins
# Add TOC to electrum_bitcoinprivate, electrum_bitcoinprivate_gui, electrum_bitcoinprivate_plugins
for p in sorted(a.pure):
if p[0].startswith('lib') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic%s' % p[0][3:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate%s' % p[0][3:] , p[1], p[2])]
if p[0].startswith('gui') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic_gui%s' % p[0][3:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate_gui%s' % p[0][3:] , p[1], p[2])]
if p[0].startswith('plugins') and p[2] == 'PYMODULE':
a.pure += [('electrum_zclassic_plugins%s' % p[0][7:] , p[1], p[2])]
a.pure += [('electrum_bitcoinprivate_plugins%s' % p[0][7:] , p[1], p[2])]
pyz = PYZ(a.pure)
@ -120,7 +120,7 @@ exe = EXE(pyz,
strip=False,
upx=False,
console=False,
icon='icons/electrum-zclassic.ico',
icon='icons/electrum-bitcoinprivate.ico',
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name))
# exe with console output
@ -131,12 +131,12 @@ conexe = EXE(pyz,
strip=False,
upx=False,
console=True,
icon='icons/electrum-zclassic.ico',
icon='icons/electrum-bitcoinprivate.ico',
name=os.path.join('build\\pyi.win32\\electrum',
'console-%s' % cmdline_name))
# trezorctl separate executable
tctl_a = Analysis(['C:/Python34/Scripts/trezorctl'],
tctl_a = Analysis(['C:/Python36/Scripts/trezorctl'],
hiddenimports=['pkgutil'],
excludes=excludes,
runtime_hooks=['pyi_tctl_runtimehook.py'])
@ -157,4 +157,4 @@ coll = COLLECT(exe, conexe, tctl_exe,
a.datas,
strip=False,
upx=False,
name=os.path.join('dist', 'electrum-zclassic'))
name=os.path.join('dist', 'electrum-bitcoinprivate'))

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# -*- mode: python -*-
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2011 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person
@ -28,7 +28,7 @@ import sys
script_dir = os.path.dirname(os.path.realpath(__file__))
is_bundle = getattr(sys, 'frozen', False)
is_local = not is_bundle and os.path.exists(os.path.join(script_dir, "electrum-zclassic.desktop"))
is_local = not is_bundle and os.path.exists(os.path.join(script_dir, "electrum-bitcoinprivate.desktop"))
is_android = 'ANDROID_DATA' in os.environ
# move this back to gui/kivy/__init.py once plugins are moved
@ -67,24 +67,24 @@ if not is_android:
# load local module as electrum
if is_local or is_android:
import imp
imp.load_module('electrum_zclassic', *imp.find_module('lib'))
imp.load_module('electrum_zclassic_gui', *imp.find_module('gui'))
imp.load_module('electrum_zclassic_plugins', *imp.find_module('plugins'))
imp.load_module('electrum_bitcoinprivate', *imp.find_module('lib'))
imp.load_module('electrum_bitcoinprivate_gui', *imp.find_module('gui'))
imp.load_module('electrum_bitcoinprivate_plugins', *imp.find_module('plugins'))
from electrum_zclassic import bitcoin, util
from electrum_zclassic import constants
from electrum_zclassic import SimpleConfig, Network
from electrum_zclassic.wallet import Wallet, Imported_Wallet
from electrum_zclassic.storage import WalletStorage, get_derivation_used_for_hw_device_encryption
from electrum_zclassic.util import print_msg, print_stderr, json_encode, json_decode, UserCancelled
from electrum_zclassic.util import set_verbosity, InvalidPassword
from electrum_zclassic.commands import get_parser, known_commands, Commands, config_variables
from electrum_zclassic import daemon
from electrum_zclassic import keystore
from electrum_zclassic.mnemonic import Mnemonic
import electrum_zclassic_plugins
from electrum_bitcoinprivate import bitcoin, util
from electrum_bitcoinprivate import constants
from electrum_bitcoinprivate import SimpleConfig, Network
from electrum_bitcoinprivate.wallet import Wallet, Imported_Wallet
from electrum_bitcoinprivate.storage import WalletStorage, get_derivation_used_for_hw_device_encryption
from electrum_bitcoinprivate.util import print_msg, print_stderr, json_encode, json_decode, UserCancelled
from electrum_bitcoinprivate.util import set_verbosity, InvalidPassword
from electrum_bitcoinprivate.commands import get_parser, known_commands, Commands, config_variables
from electrum_bitcoinprivate import daemon
from electrum_bitcoinprivate import keystore
from electrum_bitcoinprivate.mnemonic import Mnemonic
import electrum_bitcoinprivate_plugins
# get password routine
def prompt_password(prompt, confirm=True):
@ -178,7 +178,7 @@ def init_daemon(config_options):
storage = WalletStorage(config.get_wallet_path())
if not storage.file_exists():
print_msg("Error: Wallet file not found.")
print_msg("Type 'electrum-zclassic create' to create a new wallet, or provide a path to a wallet with the -w option")
print_msg("Type 'electrum-bitcoinprivate create' to create a new wallet, or provide a path to a wallet with the -w option")
sys.exit(0)
if storage.is_encrypted():
if storage.is_encrypted_with_hw_device():
@ -216,7 +216,7 @@ def init_cmdline(config_options, server):
if cmd.requires_wallet and not storage.file_exists():
print_msg("Error: Wallet file not found.")
print_msg("Type 'electrum-zclassic create' to create a new wallet, or provide a path to a wallet with the -w option")
print_msg("Type 'electrum-bitcoinprivate create' to create a new wallet, or provide a path to a wallet with the -w option")
sys.exit(0)
# important warning
@ -329,7 +329,7 @@ def run_offline_command(config, config_options, plugins):
return result
def init_plugins(config, gui_name):
from electrum_zclassic.plugins import Plugins
from electrum_bitcoinprivate.plugins import Plugins
return Plugins(config, is_local or is_android, gui_name)
@ -390,7 +390,7 @@ if __name__ == '__main__':
# check uri
uri = config_options.get('url')
if uri:
if not uri.startswith('zclassic:'):
if not uri.startswith('bitcoinprivate:'):
print_stderr('unknown command:', uri)
sys.exit(1)
config_options['url'] = uri
@ -437,7 +437,7 @@ if __name__ == '__main__':
d = daemon.Daemon(config, fd, False)
d.start()
if config.get('websocket_server'):
from electrum_zclassic import websockets
from electrum_bitcoinprivate import websockets
websockets.WebSocketServer(config, d.network).start()
if config.get('requests_dir'):
path = os.path.join(config.get('requests_dir'), 'index.html')
@ -465,7 +465,7 @@ if __name__ == '__main__':
else:
cmd = known_commands[cmdname]
if cmd.requires_network:
print_msg("Daemon not running; try 'electrum-zclassic daemon start'")
print_msg("Daemon not running; try 'electrum-bitcoinprivate daemon start'")
sys.exit(1)
else:
plugins = init_plugins(config, 'cmdline')

View File

@ -22,6 +22,6 @@ fi
export PYTHONPATH="/usr/local/lib/python${PYTHON_VER}/site-packages:$PYTHONPATH"
./electrum-zclassic "$@"
./electrum-bitcoinprivate "$@"
deactivate

View File

@ -1,7 +1,7 @@
# Configuration file for the Electrum-Zclassic client
# Configuration file for the Electrum-bitcoinprivate client
# Settings defined here are shared across wallets
#
# copy this file to /etc/electrum-zclassic.conf if you want read-only settings
# copy this file to /etc/electrum-bitcoinprivate.conf if you want read-only settings
[client]
server = electrum.novit.ro:50001:t

View File

@ -0,0 +1,21 @@
# If you want Electrum-bitcoinprivate to appear in a Linux app launcher ("start menu"), install this by doing:
# sudo desktop-file-install electrum-bitcoinprivate.desktop
[Desktop Entry]
Comment=Lightweight bitcoinprivate Client
Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\" electrum-bitcoinprivate %u"
GenericName[en_US]=bitcoinprivate Wallet
GenericName=bitcoinprivate Wallet
Icon=electrum-bitcoinprivate.png
Name[en_US]=Electrum-bitcoinprivate Wallet
Name=Electrum-bitcoinprivate Wallet
Categories=Finance;Network;
StartupNotify=false
Terminal=false
Type=Application
MimeType=x-scheme-handler/bitcoinprivate;
Actions=Testnet;
[Desktop Action Testnet]
Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\" electrum-bitcoinprivate --testnet %u"
Name=Testnet mode

Binary file not shown.

View File

@ -1,21 +0,0 @@
# If you want Electrum-Zclassic to appear in a Linux app launcher ("start menu"), install this by doing:
# sudo desktop-file-install electrum-zclassic.desktop
[Desktop Entry]
Comment=Lightweight Zclassic Client
Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\" electrum-zclassic %u"
GenericName[en_US]=Zclassic Wallet
GenericName=Zclassic Wallet
Icon=electrum-zclassic.png
Name[en_US]=Electrum-Zclassic Bitcoin Wallet
Name=Electrum-Zclassic Bitcoin Wallet
Categories=Finance;Network;
StartupNotify=false
Terminal=false
Type=Application
MimeType=x-scheme-handler/zclassic;
Actions=Testnet;
[Desktop Action Testnet]
Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\" electrum-zclassic --testnet %u"
Name=Testnet mode

Binary file not shown.

View File

@ -1,10 +1,10 @@
# Kivy GUI
The Kivy GUI is used with Electrum-Zclassic on Android devices. To generate an APK file, follow these instructions.
The Kivy GUI is used with Electrum-bitcoinprivate on Android devices. To generate an APK file, follow these instructions.
## 1. Install python-for-android (p4a)
p4a is used to package Electrum-Zclassic, Python, SDL and a bootstrap Java app into an APK file.
We patched p4a to add some functionality we need for Electrum-Zclassic. Until those changes are
p4a is used to package Electrum-bitcoinprivate, Python, SDL and a bootstrap Java app into an APK file.
We patched p4a to add some functionality we need for Electrum-bitcoinprivate. Until those changes are
merged into p4a, you need to merge them locally (into the master branch):
1.1 [kivy/python-for-android#1217](https://github.com/kivy/python-for-android/pull/1217)
@ -60,9 +60,9 @@ Extract into `/opt/crystax-ndk-10.3.2`
## 5. Create the UI Atlas
In the `gui/kivy` directory of Electrum-Zclassic, run `make theming`.
In the `gui/kivy` directory of Electrum-bitcoinprivate, run `make theming`.
## 6. Download Electrum-Zclassic dependencies
## 6. Download Electrum-bitcoinprivate dependencies
Run `contrib/make_packages`.
## 7. Build the APK

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2012 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person

View File

@ -36,7 +36,7 @@ class _(str):
@staticmethod
def switch_lang(lang):
# get the right locales directory, and instanciate a gettext
from electrum_zclassic.i18n import LOCALE_DIR
from electrum_bitcoinprivate.i18n import LOCALE_DIR
locales = gettext.translation('electrum', LOCALE_DIR, languages=[lang], fallback=True)
_.lang = locales.gettext
for label in _.observers:

View File

@ -1,7 +1,7 @@
#:import Clock kivy.clock.Clock
#:import Window kivy.core.window.Window
#:import Factory kivy.factory.Factory
#:import _ electrum_zclassic_gui.kivy.i18n._
#:import _ electrum_bitcoinprivate_gui.kivy.i18n._
###########################

View File

@ -7,15 +7,15 @@ import traceback
from decimal import Decimal
import threading
import electrum_zclassic
from electrum_zclassic.bitcoin import TYPE_ADDRESS
from electrum_zclassic import WalletStorage, Wallet
from electrum_zclassic_gui.kivy.i18n import _
from electrum_zclassic.paymentrequest import InvoiceStore
from electrum_zclassic.util import profiler, InvalidPassword
from electrum_zclassic.plugins import run_hook
from electrum_zclassic.util import format_satoshis, format_satoshis_plain
from electrum_zclassic.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
import electrum_bitcoinprivate
from electrum_bitcoinprivate.bitcoin import TYPE_ADDRESS
from electrum_bitcoinprivate import WalletStorage, Wallet
from electrum_bitcoinprivate_gui.kivy.i18n import _
from electrum_bitcoinprivate.paymentrequest import InvoiceStore
from electrum_bitcoinprivate.util import profiler, InvalidPassword
from electrum_bitcoinprivate.plugins import run_hook
from electrum_bitcoinprivate.util import format_satoshis, format_satoshis_plain
from electrum_bitcoinprivate.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
from kivy.app import App
from kivy.core.window import Window
@ -30,10 +30,10 @@ from kivy.metrics import inch
from kivy.lang import Builder
## lazy imports for factory so that widgets can be used in kv
#Factory.register('InstallWizard', module='electrum_zclassic_gui.kivy.uix.dialogs.installwizard')
#Factory.register('InfoBubble', module='electrum_zclassic_gui.kivy.uix.dialogs')
#Factory.register('OutputList', module='electrum_zclassic_gui.kivy.uix.dialogs')
#Factory.register('OutputItem', module='electrum_zclassic_gui.kivy.uix.dialogs')
#Factory.register('InstallWizard', module='electrum_bitcoinprivate_gui.kivy.uix.dialogs.installwizard')
#Factory.register('InfoBubble', module='electrum_bitcoinprivate_gui.kivy.uix.dialogs')
#Factory.register('OutputList', module='electrum_bitcoinprivate_gui.kivy.uix.dialogs')
#Factory.register('OutputItem', module='electrum_bitcoinprivate_gui.kivy.uix.dialogs')
from .uix.dialogs.installwizard import InstallWizard
from .uix.dialogs import InfoBubble
@ -48,14 +48,14 @@ util = False
# register widget cache for keeping memory down timeout to forever to cache
# the data
Cache.register('electrum_zclassic_widgets', timeout=0)
Cache.register('electrum_bitcoinprivate_widgets', timeout=0)
from kivy.uix.screenmanager import Screen
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.label import Label
from kivy.core.clipboard import Clipboard
Factory.register('TabbedCarousel', module='electrum_zclassic_gui.kivy.uix.screens')
Factory.register('TabbedCarousel', module='electrum_bitcoinprivate_gui.kivy.uix.screens')
# Register fonts without this you won't be able to use bold/italic...
# inside markup.
@ -67,7 +67,7 @@ Label.register('Roboto',
'gui/kivy/data/fonts/Roboto-Bold.ttf')
from electrum_zclassic.util import base_units
from electrum_bitcoinprivate.util import base_units
class ElectrumWindow(App):
@ -99,7 +99,7 @@ class ElectrumWindow(App):
from .uix.dialogs.choice_dialog import ChoiceDialog
protocol = 's'
def cb2(host):
from electrum_zclassic import constants
from electrum_bitcoinprivate import constants
pp = servers.get(host, constants.net.DEFAULT_PORTS)
port = pp.get(protocol, '')
popup.ids.host.text = host
@ -132,7 +132,7 @@ class ElectrumWindow(App):
self.send_screen.set_URI(uri)
def on_new_intent(self, intent):
if intent.getScheme() != 'zclassic':
if intent.getScheme() != 'bitcoinprivate':
return
uri = intent.getDataString()
self.set_URI(uri)
@ -154,7 +154,7 @@ class ElectrumWindow(App):
self._trigger_update_history()
def _get_bu(self):
return self.electrum_config.get('base_unit', 'ZCL')
return self.electrum_config.get('base_unit', 'BTCP')
def _set_bu(self, value):
assert value in base_units.keys()
@ -244,7 +244,7 @@ class ElectrumWindow(App):
App.__init__(self)#, **kwargs)
title = _('Electrum-Zclassic App')
title = _('Electrum-bitcoinprivate App')
self.electrum_config = config = kwargs.get('config', None)
self.language = config.get('language', 'en')
self.network = network = kwargs.get('network', None)
@ -298,17 +298,17 @@ class ElectrumWindow(App):
self.send_screen.do_clear()
def on_qr(self, data):
from electrum_zclassic.bitcoin import base_decode, is_address
from electrum_bitcoinprivate.bitcoin import base_decode, is_address
data = data.strip()
if is_address(data):
self.set_URI(data)
return
if data.startswith('zclassic:'):
if data.startswith('bitcoinprivate:'):
self.set_URI(data)
return
# try to decode transaction
from electrum_zclassic.transaction import Transaction
from electrum_zclassic.util import bh2u
from electrum_bitcoinprivate.transaction import Transaction
from electrum_bitcoinprivate.util import bh2u
try:
text = bh2u(base_decode(data, None, base=43))
tx = Transaction(text)
@ -345,7 +345,7 @@ class ElectrumWindow(App):
self.receive_screen.screen.address = addr
def show_pr_details(self, req, status, is_invoice):
from electrum_zclassic.util import format_time
from electrum_bitcoinprivate.util import format_time
requestor = req.get('requestor')
exp = req.get('exp')
memo = req.get('memo')
@ -367,7 +367,7 @@ class ElectrumWindow(App):
popup.open()
def show_addr_details(self, req, status):
from electrum_zclassic.util import format_time
from electrum_bitcoinprivate.util import format_time
fund = req.get('fund')
isaddr = 'y'
popup = Builder.load_file('gui/kivy/uix/ui_screens/invoice.kv')
@ -450,7 +450,7 @@ class ElectrumWindow(App):
self.fiat_unit = self.fx.ccy if self.fx.is_enabled() else ''
# default tab
self.switch_to('history')
# bind intent for zclassic: URI scheme
# bind intent for bitcoinprivate: URI scheme
if platform == 'android':
from android import activity
from jnius import autoclass
@ -497,7 +497,7 @@ class ElectrumWindow(App):
else:
self.load_wallet(wallet)
else:
Logger.debug('Electrum-Zclassic: Wallet not found. Launching install wizard')
Logger.debug('Electrum-bitcoinprivate: Wallet not found. Launching install wizard')
storage = WalletStorage(path)
wizard = Factory.InstallWizard(self.electrum_config, storage)
wizard.bind(on_wizard_complete=self.on_wizard_complete)
@ -573,13 +573,13 @@ class ElectrumWindow(App):
#setup lazy imports for mainscreen
Factory.register('AnimatedPopup',
module='electrum_zclassic_gui.kivy.uix.dialogs')
module='electrum_bitcoinprivate_gui.kivy.uix.dialogs')
Factory.register('QRCodeWidget',
module='electrum_zclassic_gui.kivy.uix.qrcodewidget')
module='electrum_bitcoinprivate_gui.kivy.uix.qrcodewidget')
# preload widgets. Remove this if you want to load the widgets on demand
#Cache.append('electrum_zclassic_widgets', 'AnimatedPopup', Factory.AnimatedPopup())
#Cache.append('electrum_zclassic_widgets', 'QRCodeWidget', Factory.QRCodeWidget())
#Cache.append('electrum_bitcoinprivate_widgets', 'AnimatedPopup', Factory.AnimatedPopup())
#Cache.append('electrum_bitcoinprivate_widgets', 'QRCodeWidget', Factory.QRCodeWidget())
# load and focus the ui
self.root.manager = self.root.ids['manager']
@ -591,7 +591,7 @@ class ElectrumWindow(App):
self.receive_screen = None
self.requests_screen = None
self.address_screen = None
self.icon = "icons/electrum-zclassic.png"
self.icon = "icons/electrum-bitcoinprivate.png"
self.tabs = self.root.ids['tabs']
def update_interfaces(self, dt):
@ -684,7 +684,7 @@ class ElectrumWindow(App):
from plyer import notification
icon = (os.path.dirname(os.path.realpath(__file__))
+ '/../../' + self.icon)
notification.notify('Electrum-Zclassic', message,
notification.notify('Electrum-bitcoinprivate', message,
app_icon=icon, app_name='Electrum')
except ImportError:
Logger.Error('Notification: needs plyer; `sudo pip install plyer`')

View File

@ -41,4 +41,4 @@ class NFCBase(Widget):
NFCScanner = core_select_lib('nfc_manager', (
# keep the dummy implementation as the last one to make it the fallback provider.NFCScanner = core_select_lib('nfc_scanner', (
('android', 'scanner_android', 'ScannerAndroid'),
('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'electrum_zclassic_gui.kivy')
('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'electrum_bitcoinprivate_gui.kivy')

View File

@ -10,7 +10,7 @@ if platform != 'android':
raise ImportError
import threading
from electrum_zclassic_gui.kivy.nfc_scanner import NFCBase
from electrum_bitcoinprivate_gui.kivy.nfc_scanner import NFCBase
from jnius import autoclass, cast
from android.runnable import run_on_ui_thread
from android import activity

View File

@ -1,6 +1,6 @@
''' Dummy NFC Provider to be used on desktops in case no other provider is found
'''
from electrum_zclassic_gui.kivy.nfc_scanner import NFCBase
from electrum_bitcoinprivate_gui.kivy.nfc_scanner import NFCBase
from kivy.clock import Clock
from kivy.logger import Logger

View File

@ -3,5 +3,5 @@
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="zclassic" />
<data android:scheme="bitcoinprivate" />
</intent-filter>

View File

@ -1,10 +1,10 @@
[app]
# (str) Title of your application
title = Electrum-Zclassic
title = Electrum-bitcoinprivate
# (str) Package name
package.name = Electrum-Zclassic
package.name = Electrum-bitcoinprivate
# (str) Package domain (needed for android/ios packaging)
package.domain = cash.z.electrum

View File

@ -8,7 +8,7 @@ from kivy.lang import Builder
from kivy.factory import Factory
from kivy.clock import Clock
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _
Builder.load_string('''
<MenuItem@Button>

View File

@ -4,7 +4,7 @@ from kivy.factory import Factory
from kivy.properties import NumericProperty, StringProperty, BooleanProperty
from kivy.core.window import Window
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _

View File

@ -93,8 +93,8 @@ Builder.load_string('''
''')
from electrum_zclassic_gui.kivy.i18n import _
from electrum_zclassic_gui.kivy.uix.context_menu import ContextMenu
from electrum_bitcoinprivate_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.uix.context_menu import ContextMenu
class EmptyLabel(Factory.Label):

View File

@ -3,7 +3,7 @@ from kivy.factory import Factory
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _
Builder.load_string('''
<FeeDialog@Popup>

View File

@ -66,7 +66,7 @@ from kivy.uix.checkbox import CheckBox
from kivy.uix.widget import Widget
from kivy.clock import Clock
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _
from functools import partial
class FxDialog(Factory.Popup):

View File

@ -14,7 +14,7 @@ from kivy.core.window import Window
from kivy.clock import Clock
from kivy.utils import platform
from electrum_zclassic.base_wizard import BaseWizard
from electrum_bitcoinprivate.base_wizard import BaseWizard
from . import EventsDialog
@ -28,7 +28,7 @@ test_xpub = "xpub661MyMwAqRbcEbvVtRRSjqxVnaWVUMewVzMiURAKyYratih4TtBpMypzzefmv8z
Builder.load_string('''
#:import Window kivy.core.window.Window
#:import _ electrum_zclassic_gui.kivy.i18n._
#:import _ electrum_bitcoinprivate_gui.kivy.i18n._
<WizardTextInput@TextInput>
@ -559,8 +559,8 @@ class RestoreSeedDialog(WizardDialog):
def __init__(self, wizard, **kwargs):
super(RestoreSeedDialog, self).__init__(wizard, **kwargs)
self._test = kwargs['test']
from electrum_zclassic.mnemonic import Mnemonic
from electrum_zclassic.old_mnemonic import words as old_wordlist
from electrum_bitcoinprivate.mnemonic import Mnemonic
from electrum_bitcoinprivate.old_mnemonic import words as old_wordlist
self.words = set(Mnemonic('en').wordlist).union(set(old_wordlist))
self.ids.text_input_seed.text = test_seed if is_test else ''
self.message = _('Please type your seed phrase using the virtual keyboard.')

View File

@ -76,10 +76,10 @@ Builder.load_string('''
''')
from kivy.properties import BooleanProperty
from electrum_zclassic_gui.kivy.i18n import _
from electrum_zclassic.util import format_time
from electrum_zclassic.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
from electrum_zclassic_gui.kivy.uix.context_menu import ContextMenu
from electrum_bitcoinprivate_gui.kivy.i18n import _
from electrum_bitcoinprivate.util import format_time
from electrum_bitcoinprivate.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
from electrum_bitcoinprivate_gui.kivy.uix.context_menu import ContextMenu
invoice_text = {
PR_UNPAID:_('Pending'),

View File

@ -8,7 +8,7 @@ class NFCTransactionDialog(AnimatedPopup):
# Delayed Init
global NFCSCanner
if NFCSCanner is None:
from electrum_zclassic_gui.kivy.nfc_scanner import NFCScanner
from electrum_bitcoinprivate_gui.kivy.nfc_scanner import NFCScanner
self.scanner = NFCSCanner
super(NFCTransactionDialog, self).__init__(**kwargs)

View File

@ -5,14 +5,14 @@ from kivy.lang import Builder
from decimal import Decimal
from kivy.clock import Clock
from electrum_zclassic.util import InvalidPassword
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate.util import InvalidPassword
from electrum_bitcoinprivate_gui.kivy.i18n import _
Builder.load_string('''
<PasswordDialog@Popup>
id: popup
title: 'Electrum-Zclassic'
title: 'Electrum-bitcoinprivate'
message: ''
BoxLayout:
size_hint: 1, 1
@ -82,7 +82,7 @@ class PasswordDialog(Factory.Popup):
self.is_change = is_change
self.pw = None
self.new_password = None
self.title = 'Electrum-Zclassic' + (' - ' + self.wallet.basename() if self.wallet else '')
self.title = 'Electrum-bitcoinprivate' + (' - ' + self.wallet.basename() if self.wallet else '')
def check_password(self, password):
if self.is_change > 1:

View File

@ -2,7 +2,7 @@ from kivy.app import App
from kivy.factory import Factory
from kivy.lang import Builder
Factory.register('QRScanner', module='electrum_zclassic_gui.kivy.qr_scanner')
Factory.register('QRScanner', module='electrum_bitcoinprivate_gui.kivy.qr_scanner')
class QrScannerDialog(Factory.AnimatedPopup):

View File

@ -6,7 +6,7 @@ from kivy.uix.checkbox import CheckBox
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _
Builder.load_string('''
<Question@Popup>

View File

@ -74,10 +74,10 @@ Builder.load_string('''
''')
from kivy.properties import BooleanProperty
from electrum_zclassic_gui.kivy.i18n import _
from electrum_zclassic.util import format_time
from electrum_zclassic.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
from electrum_zclassic_gui.kivy.uix.context_menu import ContextMenu
from electrum_bitcoinprivate_gui.kivy.i18n import _
from electrum_bitcoinprivate.util import format_time
from electrum_bitcoinprivate.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
from electrum_bitcoinprivate_gui.kivy.uix.context_menu import ContextMenu
pr_icon = {
PR_UNPAID: 'atlas://gui/kivy/theming/light/important',

View File

@ -3,21 +3,21 @@ from kivy.factory import Factory
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from electrum_zclassic.util import base_units
from electrum_zclassic.i18n import languages
from electrum_zclassic_gui.kivy.i18n import _
from electrum_zclassic.plugins import run_hook
from electrum_zclassic import coinchooser
from electrum_bitcoinprivate.util import base_units
from electrum_bitcoinprivate.i18n import languages
from electrum_bitcoinprivate_gui.kivy.i18n import _
from electrum_bitcoinprivate.plugins import run_hook
from electrum_bitcoinprivate import coinchooser
from .choice_dialog import ChoiceDialog
Builder.load_string('''
#:import partial functools.partial
#:import _ electrum_zclassic_gui.kivy.i18n._
#:import _ electrum_bitcoinprivate_gui.kivy.i18n._
<SettingsDialog@Popup>
id: settings
title: _('Electrum-Zclassic Settings')
title: _('Electrum-bitcoinprivate Settings')
disable_pin: False
use_encryption: False
BoxLayout:
@ -44,7 +44,7 @@ Builder.load_string('''
SettingsItem:
bu: app.base_unit
title: _('Denomination') + ': ' + self.bu
description: _("Base unit for Zclassic amounts.")
description: _("Base unit for bitcoinprivate amounts.")
action: partial(root.unit_dialog, self)
CardSeparator
SettingsItem:

View File

@ -5,9 +5,9 @@ from kivy.lang import Builder
from kivy.clock import Clock
from kivy.uix.label import Label
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _
from datetime import datetime
from electrum_zclassic.util import InvalidPassword
from electrum_bitcoinprivate.util import InvalidPassword
Builder.load_string('''
@ -148,7 +148,7 @@ class TxDialog(Factory.Popup):
self.app.broadcast(self.tx)
def show_qr(self):
from electrum_zclassic.bitcoin import base_encode, bfh
from electrum_bitcoinprivate.bitcoin import base_encode, bfh
text = bfh(str(self.tx))
text = base_encode(text, base=43)
self.app.qr_dialog(_("Raw Transaction"), text)

View File

@ -5,7 +5,7 @@ from kivy.factory import Factory
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from electrum_zclassic.util import base_units
from electrum_bitcoinprivate.util import base_units
from ...i18n import _
from .label_dialog import LabelDialog

View File

@ -7,7 +7,7 @@ from kivy.uix.bubble import Bubble, BubbleButton
from kivy.properties import ListProperty
from kivy.uix.widget import Widget
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _
class ContextMenuItem(Widget):
'''abstract class

View File

@ -17,15 +17,15 @@ from kivy.lang import Builder
from kivy.factory import Factory
from kivy.utils import platform
from electrum_zclassic.util import profiler, parse_URI, format_time, InvalidPassword, NotEnoughFunds, Fiat
from electrum_zclassic import bitcoin
from electrum_zclassic.util import timestamp_to_datetime
from electrum_zclassic.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
from electrum_bitcoinprivate.util import profiler, parse_URI, format_time, InvalidPassword, NotEnoughFunds, Fiat
from electrum_bitcoinprivate import bitcoin
from electrum_bitcoinprivate.util import timestamp_to_datetime
from electrum_bitcoinprivate.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
from .context_menu import ContextMenu
from electrum_zclassic_gui.kivy.i18n import _
from electrum_bitcoinprivate_gui.kivy.i18n import _
class CScreen(Factory.Screen):
@ -170,11 +170,11 @@ class SendScreen(CScreen):
payment_request = None
def set_URI(self, text):
import electrum_zclassic
import electrum_bitcoinprivate
try:
uri = electrum_zclassic.util.parse_URI(text, self.app.on_pr)
uri = electrum_bitcoinprivate.util.parse_URI(text, self.app.on_pr)
except:
self.app.show_info(_("Not a Zclassic URI"))
self.app.show_info(_("Not a bitcoinprivate URI"))
return
amount = uri.get('amount')
self.screen.address = uri.get('address', '')
@ -212,7 +212,7 @@ class SendScreen(CScreen):
# it should be already saved
return
# save address as invoice
from electrum_zclassic.paymentrequest import make_unsigned_request, PaymentRequest
from electrum_bitcoinprivate.paymentrequest import make_unsigned_request, PaymentRequest
req = {'address':self.screen.address, 'memo':self.screen.message}
amount = self.app.get_amount(self.screen.amount) if self.screen.amount else 0
req['amount'] = amount
@ -243,10 +243,10 @@ class SendScreen(CScreen):
else:
address = str(self.screen.address)
if not address:
self.app.show_error(_('Recipient not specified.') + ' ' + _('Please scan a Zclassic address or a payment request'))
self.app.show_error(_('Recipient not specified.') + ' ' + _('Please scan a bitcoinprivate address or a payment request'))
return
if not bitcoin.is_address(address):
self.app.show_error(_('Invalid Zclassic Address') + ':\n' + address)
self.app.show_error(_('Invalid bitcoinprivate Address') + ':\n' + address)
return
try:
amount = self.app.get_amount(self.screen.amount)
@ -340,7 +340,7 @@ class ReceiveScreen(CScreen):
Clock.schedule_once(lambda dt: self.update_qr())
def get_URI(self):
from electrum_zclassic.util import create_URI
from electrum_bitcoinprivate.util import create_URI
amount = self.screen.amount
if amount:
a, u = self.screen.amount.split()
@ -356,7 +356,7 @@ class ReceiveScreen(CScreen):
def do_share(self):
uri = self.get_URI()
self.app.do_share(uri, _("Share Zclassic Request"))
self.app.do_share(uri, _("Share bitcoinprivate Request"))
def do_copy(self):
uri = self.get_URI()

View File

@ -1,7 +1,7 @@
#:import VERSION electrum_zclassic.version.ELECTRUM_VERSION
#:import VERSION electrum_bitcoinprivate.version.ELECTRUM_VERSION
Popup:
title: _("About Electrum-Zclassic")
title: _("About Electrum-bitcoinprivate")
BoxLayout:
orientation: 'vertical'
spacing: '10dp'

View File

@ -1,4 +1,4 @@
#:import _ electrum_zclassic_gui.kivy.i18n._
#:import _ electrum_bitcoinprivate_gui.kivy.i18n._
#:import Factory kivy.factory.Factory
#:set font_light 'gui/kivy/data/fonts/Roboto-Condensed.ttf'
#:set btc_symbol chr(171)

View File

@ -13,7 +13,7 @@ Popup:
SettingsItem:
value: _("{} connections.").format(app.num_nodes) if app.num_nodes else _("Not connected")
title: _("Status") + ': ' + self.value
description: _("Connections with Electrum-Zclassic servers")
description: _("Connections with Electrum-bitcoinprivate servers")
action: lambda x: None
CardSeparator

View File

@ -1,4 +1,4 @@
#:import _ electrum_zclassic_gui.kivy.i18n._
#:import _ electrum_bitcoinprivate_gui.kivy.i18n._
#:import Decimal decimal.Decimal
#:set btc_symbol chr(171)
#:set mbtc_symbol chr(187)
@ -68,7 +68,7 @@ ReceiveScreen:
pos_hint: {'center_y': .5}
BlueButton:
id: address_label
text: s.address if s.address else _('Zclassic Address')
text: s.address if s.address else _('bitcoinprivate Address')
shorten: True
on_release: Clock.schedule_once(lambda dt: app.addresses_dialog(s))
CardSeparator:

View File

@ -1,4 +1,4 @@
#:import _ electrum_zclassic_gui.kivy.i18n._
#:import _ electrum_bitcoinprivate_gui.kivy.i18n._
#:import Decimal decimal.Decimal
#:set btc_symbol chr(171)
#:set mbtc_symbol chr(187)

View File

@ -6,7 +6,7 @@ Popup:
padding: '10dp'
spacing: '10dp'
TopLabel:
text: _("Electrum-Zclassic requests your transaction history from a single server. The returned history is checked against blockchain headers sent by other nodes, using Simple Payment Verification (SPV).")
text: _("Electrum-bitcoinprivate requests your transaction history from a single server. The returned history is checked against blockchain headers sent by other nodes, using Simple Payment Verification (SPV).")
font_size: '6pt'
Widget:
size_hint: 1, 0.8

View File

@ -1,5 +1,5 @@
Popup:
title: "Electrum-Zclassic"
title: "Electrum-bitcoinprivate"
confirmed: 0
unconfirmed: 0
unmatured: 0

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2012 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person
@ -38,15 +38,15 @@ from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import PyQt5.QtCore as QtCore
from electrum_zclassic.i18n import _, set_language
from electrum_zclassic.plugins import run_hook
from electrum_zclassic import WalletStorage
# from electrum_zclassic.synchronizer import Synchronizer
# from electrum_zclassic.verifier import SPV
# from electrum_zclassic.util import DebugMem
from electrum_zclassic.util import (UserCancelled, print_error,
from electrum_bitcoinprivate.i18n import _, set_language
from electrum_bitcoinprivate.plugins import run_hook
from electrum_bitcoinprivate import WalletStorage
# from electrum_bitcoinprivate.synchronizer import Synchronizer
# from electrum_bitcoinprivate.verifier import SPV
# from electrum_bitcoinprivate.util import DebugMem
from electrum_bitcoinprivate.util import (UserCancelled, print_error,
WalletFileException, BitcoinException)
# from electrum_zclassic.wallet import Abstract_Wallet
# from electrum_bitcoinprivate.wallet import Abstract_Wallet
from .installwizard import InstallWizard, GoBack
@ -56,7 +56,7 @@ try:
except Exception as e:
print(e)
print("Error: Could not find icons file.")
print("Please run 'pyrcc5 icons.qrc -o gui/qt/icons_rc.py', and reinstall Electrum-Zclassic")
print("Please run 'pyrcc5 icons.qrc -o gui/qt/icons_rc.py', and reinstall Electrum-bitcoinprivate")
sys.exit(1)
from .util import * # * needed for plugins
@ -97,7 +97,7 @@ class ElectrumGui:
if hasattr(QtCore.Qt, "AA_ShareOpenGLContexts"):
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)
if hasattr(QGuiApplication, 'setDesktopFileName'):
QGuiApplication.setDesktopFileName('electrum-zclassic.desktop')
QGuiApplication.setDesktopFileName('electrum-bitcoinprivate.desktop')
self.config = config
self.daemon = daemon
self.plugins = plugins
@ -111,7 +111,7 @@ class ElectrumGui:
# init tray
self.dark_icon = self.config.get("dark_icon", False)
self.tray = QSystemTrayIcon(self.tray_icon(), None)
self.tray.setToolTip('Electrum-Zclassic')
self.tray.setToolTip('Electrum-bitcoinprivate')
self.tray.activated.connect(self.tray_activated)
self.build_tray_menu()
self.tray.show()
@ -133,7 +133,7 @@ class ElectrumGui:
submenu.addAction(_("Close"), window.close)
m.addAction(_("Dark/Light"), self.toggle_tray_icon)
m.addSeparator()
m.addAction(_("Exit Electrum-Zclassic"), self.close)
m.addAction(_("Exit Electrum-bitcoinprivate"), self.close)
def tray_icon(self):
if self.dark_icon:
@ -165,7 +165,7 @@ class ElectrumGui:
def show_network_dialog(self, parent):
if not self.daemon.network:
parent.show_warning(_('You are using Electrum-Zclassic in offline mode; restart Electrum-Zclassic if you want to get connected'), title=_('Offline'))
parent.show_warning(_('You are using Electrum-bitcoinprivate in offline mode; restart Electrum-bitcoinprivate if you want to get connected'), title=_('Offline'))
return
if self.nd:
self.nd.on_update()

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2012 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person
@ -23,7 +23,7 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from electrum_zclassic.i18n import _
from electrum_bitcoinprivate.i18n import _
from PyQt5.QtCore import *
from PyQt5.QtGui import *

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2015 Thomas Voegtlin
#
# Permission is hereby granted, free of charge, to any person
@ -24,10 +24,10 @@
# SOFTWARE.
import webbrowser
from electrum_zclassic.i18n import _
from electrum_zclassic.util import block_explorer_URL
from electrum_zclassic.plugins import run_hook
from electrum_zclassic.bitcoin import is_address
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.util import block_explorer_URL
from electrum_bitcoinprivate.plugins import run_hook
from electrum_bitcoinprivate.bitcoin import is_address
from .util import *
@ -138,7 +138,7 @@ class AddressList(MyTreeWidget):
self.setCurrentItem(address_item)
def create_menu(self, position):
from electrum_zclassic.wallet import Multisig_Wallet
from electrum_bitcoinprivate.wallet import Multisig_Wallet
is_multisig = isinstance(self.wallet, Multisig_Wallet)
can_delete = self.wallet.can_delete_address()
selected = self.selectedItems()

View File

@ -5,7 +5,7 @@ from PyQt5.QtGui import *
from PyQt5.QtWidgets import (QLineEdit, QStyle, QStyleOptionFrame)
from decimal import Decimal
from electrum_zclassic.util import format_satoshis_plain
from electrum_bitcoinprivate.util import format_satoshis_plain
class MyLineEdit(QLineEdit):
@ -82,11 +82,11 @@ class BTCAmountEdit(AmountEdit):
def _base_unit(self):
p = self.decimal_point()
if p == 8:
return 'ZCL'
return 'BTCP'
if p == 5:
return 'mZCL'
return 'mBTCP'
if p == 2:
return 'uZCL'
return 'uBTCP'
raise Exception('Unknown base unit')
def get_amount(self):

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2018 The Electrum developers
#
# Permission is hereby granted, free of charge, to any person

View File

@ -6,7 +6,7 @@ import traceback, platform
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets
from electrum_zclassic import util
from electrum_bitcoinprivate import util
if platform.system() == 'Windows':

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2015 Thomas Voegtlin
#
# Permission is hereby granted, free of charge, to any person
@ -24,10 +24,10 @@
# SOFTWARE.
import webbrowser
from electrum_zclassic.i18n import _
from electrum_zclassic.bitcoin import is_address
from electrum_zclassic.util import block_explorer_URL
from electrum_zclassic.plugins import run_hook
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.bitcoin import is_address
from electrum_bitcoinprivate.util import block_explorer_URL
from electrum_bitcoinprivate.plugins import run_hook
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import (

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@ -35,8 +35,8 @@ import PyQt5.QtCore as QtCore
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import *
from electrum_zclassic.i18n import _
from electrum_zclassic import ELECTRUM_VERSION, bitcoin, constants
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate import ELECTRUM_VERSION, bitcoin, constants
from .util import MessageBoxMixin
@ -47,7 +47,7 @@ issue_template = """<h2>Traceback</h2>
<h2>Additional information</h2>
<ul>
<li>Electrum-Zclassic version: {app_version}</li>
<li>Electrum-bitcoinprivate version: {app_version}</li>
<li>Operating system: {os}</li>
<li>Wallet type: {wallet_type}</li>
<li>Locale: {locale}</li>
@ -63,14 +63,14 @@ class Exception_Window(QWidget, MessageBoxMixin):
self.exc_args = (exctype, value, tb)
self.main_window = main_window
QWidget.__init__(self)
self.setWindowTitle('Electrum-Zclassic - ' + _('An Error Occurred'))
self.setWindowTitle('Electrum-bitcoinprivate - ' + _('An Error Occurred'))
self.setMinimumSize(600, 300)
main_box = QVBoxLayout()
heading = QLabel('<h2>' + _('Sorry!') + '</h2>')
main_box.addWidget(heading)
main_box.addWidget(QLabel(_('Something went wrong while executing Electrum-Zclassic.')))
main_box.addWidget(QLabel(_('Something went wrong while executing Electrum-bitcoinprivate.')))
main_box.addWidget(QLabel(
_('To help us diagnose and fix the problem, you can send us a bug report that contains useful debug '

View File

@ -1,4 +1,4 @@
from electrum_zclassic.i18n import _
from electrum_bitcoinprivate.i18n import _
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QSlider, QToolTip

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2015 Thomas Voegtlin
#
# Permission is hereby granted, free of charge, to any person
@ -26,13 +26,13 @@
import webbrowser
import datetime
from electrum_zclassic.wallet import AddTransactionException, TX_HEIGHT_LOCAL
from electrum_bitcoinprivate.wallet import AddTransactionException, TX_HEIGHT_LOCAL
from .util import *
from electrum_zclassic.i18n import _
from electrum_zclassic.util import block_explorer_URL, profiler
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.util import block_explorer_URL, profiler
try:
from electrum_zclassic.plot import plot_history, NothingToPlotException
from electrum_bitcoinprivate.plot import plot_history, NothingToPlotException
except:
plot_history = None
@ -376,7 +376,7 @@ class HistoryList(MyTreeWidget, AcceptFileDragDrop):
d = WindowModalDialog(self, _('Export History'))
d.setMinimumSize(400, 200)
vbox = QVBoxLayout(d)
defaultname = os.path.expanduser('~/electrum-zclassic-history.csv')
defaultname = os.path.expanduser('~/electrum-bitcoinprivate-history.csv')
select_msg = _('Select file to export your wallet transactions to')
hbox, filename_e, csv_button = filename_field(self, self.config, defaultname, select_msg)
vbox.addLayout(hbox)
@ -393,7 +393,7 @@ class HistoryList(MyTreeWidget, AcceptFileDragDrop):
try:
self.do_export_history(self.wallet, filename, csv_button.isChecked())
except (IOError, os.error) as reason:
export_error_label = _("Electrum-Zclassic was unable to produce a transaction export.")
export_error_label = _("Electrum-bitcoinprivate was unable to produce a transaction export.")
self.parent.show_critical(export_error_label + "\n" + str(reason), title=_("Unable to export history"))
return
self.parent.show_message(_("Your wallet history has been successfully exported."))
@ -414,5 +414,5 @@ class HistoryList(MyTreeWidget, AcceptFileDragDrop):
for line in lines:
transaction.writerow(line)
else:
from electrum_zclassic.util import json_encode
from electrum_bitcoinprivate.util import json_encode
f.write(json_encode(history))

View File

@ -8,10 +8,10 @@ from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from electrum_zclassic import Wallet, WalletStorage
from electrum_zclassic.util import UserCancelled, InvalidPassword
from electrum_zclassic.base_wizard import BaseWizard, HWD_SETUP_DECRYPT_WALLET
from electrum_zclassic.i18n import _
from electrum_bitcoinprivate import Wallet, WalletStorage
from electrum_bitcoinprivate.util import UserCancelled, InvalidPassword
from electrum_bitcoinprivate.base_wizard import BaseWizard, HWD_SETUP_DECRYPT_WALLET
from electrum_bitcoinprivate.i18n import _
from .seed_dialog import SeedLayout, KeysLayout
from .network_dialog import NetworkChoiceLayout
@ -97,7 +97,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
def __init__(self, config, app, plugins, storage):
BaseWizard.__init__(self, config, storage)
QDialog.__init__(self, None)
self.setWindowTitle('Electrum-Zclassic - ' + _('Install Wizard'))
self.setWindowTitle('Electrum-bitcoinprivate - ' + _('Install Wizard'))
self.app = app
self.config = config
# Set for base base class
@ -142,7 +142,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
hbox.setStretchFactor(scroll, 1)
outer_vbox.addLayout(hbox)
outer_vbox.addLayout(Buttons(self.back_button, self.next_button))
self.set_icon(':icons/electrum-zclassic.png')
self.set_icon(':icons/electrum-bitcoinprivate.png')
self.show()
self.raise_()
self.refresh_gui() # Need for QT on MacOSX. Lame.
@ -169,7 +169,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
hbox2.addWidget(self.pw_e)
hbox2.addStretch()
vbox.addLayout(hbox2)
self.set_layout(vbox, title=_('Electrum-Zclassic wallet'))
self.set_layout(vbox, title=_('Electrum-bitcoinprivate wallet'))
wallet_folder = os.path.dirname(self.storage.path)
@ -276,7 +276,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
path = self.storage.path
if self.storage.requires_split():
self.hide()
msg = _("The wallet '{}' contains multiple accounts, which are no longer supported since Electrum-Zclassic 2.7.\n\n"
msg = _("The wallet '{}' contains multiple accounts, which are no longer supported since Electrum-bitcoinprivate 2.7.\n\n"
"Do you want to split your wallet into multiple files?").format(path)
if not self.question(msg):
return
@ -540,10 +540,10 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
return None
def init_network(self, network):
message = _("Electrum-Zclassic communicates with remote servers to get "
message = _("Electrum-bitcoinprivate communicates with remote servers to get "
"information about your transactions and addresses. The "
"servers all fulfill the same purpose only differing in "
"hardware. In most cases you simply want to let Electrum-Zclassic "
"hardware. In most cases you simply want to let Electrum-bitcoinprivate "
"pick one at random. However if you prefer feel free to "
"select a server manually.")
choices = [_("Auto connect"), _("Select server manually")]

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2015 Thomas Voegtlin
#
# Permission is hereby granted, free of charge, to any person
@ -23,8 +23,8 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from electrum_zclassic.i18n import _
from electrum_zclassic.util import format_time
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.util import format_time
from .util import *

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2012 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person
@ -39,19 +39,19 @@ import PyQt5.QtCore as QtCore
from .exception_window import Exception_Hook
from PyQt5.QtWidgets import *
from electrum_zclassic import keystore, simple_config
from electrum_zclassic.bitcoin import COIN, is_address, TYPE_ADDRESS
from electrum_zclassic import constants
from electrum_zclassic.plugins import run_hook
from electrum_zclassic.i18n import _
from electrum_zclassic.util import (format_time, format_satoshis, PrintError,
from electrum_bitcoinprivate import keystore, simple_config
from electrum_bitcoinprivate.bitcoin import COIN, is_address, TYPE_ADDRESS
from electrum_bitcoinprivate import constants
from electrum_bitcoinprivate.plugins import run_hook
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.util import (format_time, format_satoshis, PrintError,
format_satoshis_plain, NotEnoughFunds,
UserCancelled, NoDynamicFeeEstimates, profiler,
export_meta, import_meta, bh2u, bfh, InvalidPassword)
from electrum_zclassic import Transaction
from electrum_zclassic import util, bitcoin, commands, coinchooser
from electrum_zclassic import paymentrequest
from electrum_zclassic.wallet import Multisig_Wallet, AddTransactionException
from electrum_bitcoinprivate import Transaction
from electrum_bitcoinprivate import util, bitcoin, commands, coinchooser
from electrum_bitcoinprivate import paymentrequest
from electrum_bitcoinprivate.wallet import Multisig_Wallet, AddTransactionException
from .amountedit import AmountEdit, BTCAmountEdit, MyLineEdit, FeerateEdit
from .qrcodewidget import QRCodeWidget, QRDialog
@ -80,7 +80,7 @@ class StatusBarButton(QPushButton):
self.func()
from electrum_zclassic.paymentrequest import PR_PAID
from electrum_bitcoinprivate.paymentrequest import PR_PAID
class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
@ -160,7 +160,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
if self.config.get("is_maximized"):
self.showMaximized()
self.setWindowIcon(QIcon(":icons/electrum-zclassic.png"))
self.setWindowIcon(QIcon(":icons/electrum-bitcoinprivate.png"))
self.init_menubar()
wrtabs = weakref.proxy(tabs)
@ -375,7 +375,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.setGeometry(100, 100, 840, 400)
def watching_only_changed(self):
name = "Electrum-Zclassic Testnet" if constants.net.TESTNET else "Electrum-Zclassic"
name = "Electrum-bitcoinprivate Testnet" if constants.net.TESTNET else "Electrum-bitcoinprivate"
title = '%s %s - %s' % (name, self.wallet.electrum_version,
self.wallet.basename())
extra = [self.wallet.storage.get('wallet_type', '?')]
@ -393,8 +393,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
if self.wallet.is_watching_only():
msg = ' '.join([
_("This wallet is watching-only."),
_("This means you will not be able to spend Zclassic coins with it."),
_("Make sure you own the seed phrase or the private keys, before you request Zclassic coins to be sent to this wallet.")
_("This means you will not be able to spend bitcoinprivate coins with it."),
_("Make sure you own the seed phrase or the private keys, before you request bitcoinprivate coins to be sent to this wallet.")
])
self.show_warning(msg, title=_('Information'))
@ -422,7 +422,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
shutil.copy2(path, new_path)
self.show_message(_("A copy of your wallet file was created in")+" '%s'" % str(new_path), title=_("Wallet backup created"))
except BaseException as reason:
self.show_critical(_("Electrum-Zclassic was unable to copy your wallet file to the specified location.") + "\n" + str(reason), title=_("Unable to create backup"))
self.show_critical(_("Electrum-bitcoinprivate was unable to copy your wallet file to the specified location.") + "\n" + str(reason), title=_("Unable to create backup"))
def update_recently_visited(self, filename):
recent = self.config.get('recently_open', [])
@ -521,7 +521,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
tools_menu = menubar.addMenu(_("&Tools"))
# Settings / Preferences are all reserved keywords in macOS using this as work around
tools_menu.addAction(_("Electrum-Zclassic preferences") if sys.platform == 'darwin' else _("Preferences"), self.settings_dialog)
tools_menu.addAction(_("Electrum-bitcoinprivate preferences") if sys.platform == 'darwin' else _("Preferences"), self.settings_dialog)
tools_menu.addAction(_("&Network"), lambda: self.gui_object.show_network_dialog(self))
tools_menu.addAction(_("&Plugins"), self.plugins_dialog)
tools_menu.addSeparator()
@ -541,9 +541,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
help_menu = menubar.addMenu(_("&Help"))
help_menu.addAction(_("&About"), self.show_about)
#help_menu.addAction(_("&Official website"), lambda: webbrowser.open("https://github.com/ZclassicCommunity/electrum-zclassic"))
#help_menu.addAction(_("&Official website"), lambda: webbrowser.open("https://github.com/BTCPrivate/electrum-bitcoinprivate"))
help_menu.addSeparator()
#help_menu.addAction(_("&Documentation"), lambda: webbrowser.open("http://github.com/ZclassicCommunity/electrum-zclassic")).setShortcut(QKeySequence.HelpContents)
#help_menu.addAction(_("&Documentation"), lambda: webbrowser.open("http://github.com/BTCPrivate/electrum-bitcoinprivate")).setShortcut(QKeySequence.HelpContents)
#self._auto_crash_reports = QAction(_("&Automated Crash Reports"), self, checkable=True)
#self._auto_crash_reports.setChecked(self.config.get("show_crash_reporter", default=False))
#self._auto_crash_reports.triggered.connect(self.auto_crash_reports)
@ -562,24 +562,24 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
d = self.network.get_donation_address()
if d:
host = self.network.get_parameters()[0]
self.pay_to_URI('zclassic:%s?message=donation for %s'%(d, host))
self.pay_to_URI('bitcoinprivate:%s?message=donation for %s'%(d, host))
else:
self.show_error(_('No donation address for this server'))
def show_about(self):
QMessageBox.about(self, "Electrum-Zclassic",
QMessageBox.about(self, "Electrum-bitcoinprivate",
_("Version")+" %s" % (self.wallet.electrum_version) + "\n\n" +
_("Electrum-Zclassic focus is speed, with low resource usage and simplifying Bitcoin. You do not need to perform regular backups, because your wallet can be recovered from a secret phrase that you can memorize or write on paper. Startup times are instant because it operates in conjunction with high-performance servers that handle the most complicated parts of the Bitcoin system." + "\n\n" +
_("Electrum-bitcoinprivate focus is speed, with low resource usage and simplifying bitcoinprivate. You do not need to perform regular backups, because your wallet can be recovered from a secret phrase that you can memorize or write on paper. Startup times are instant because it operates in conjunction with high-performance servers that handle the most complicated parts of the bitcoinprivate system." + "\n\n" +
_("Uses icons from the Icons8 icon pack (icons8.com).")))
def show_report_bug(self):
msg = ' '.join([
_("Please report any bugs as issues on github:<br/>"),
"<a href=\"https://github.com/ZclassicCommunity/electrum-zclassic/issues\">https://github.com/ZclassicCommunity/electrum-zclassic/issues</a><br/><br/>",
_("Before reporting a bug, upgrade to the most recent version of Electrum-Zclassic (latest release or git HEAD), and include the version number in your report."),
"<a href=\"https://github.com/BTCPrivate/electrum-bitcoinprivate/issues\">https://github.com/BTCPrivate/electrum-bitcoinprivate/issues</a><br/><br/>",
_("Before reporting a bug, upgrade to the most recent version of Electrum-bitcoinprivate (latest release or git HEAD), and include the version number in your report."),
_("Try to explain not only what the bug is, but how it occurs.")
])
self.show_message(msg, title="Electrum-Zclassic - " + _("Reporting Bugs"))
self.show_message(msg, title="Electrum-bitcoinprivate - " + _("Reporting Bugs"))
def notify_transactions(self):
if not self.network or not self.network.is_connected():
@ -609,9 +609,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
if self.tray:
try:
# this requires Qt 5.9
self.tray.showMessage("Electrum-Zclassic", message, QIcon(":icons/electrum_dark_icon"), 20000)
self.tray.showMessage("Electrum-bitcoinprivate", message, QIcon(":icons/electrum_dark_icon"), 20000)
except TypeError:
self.tray.showMessage("Electrum-Zclassic", message, QSystemTrayIcon.Information, 20000)
self.tray.showMessage("Electrum-bitcoinprivate", message, QSystemTrayIcon.Information, 20000)
@ -666,11 +666,11 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
def base_unit(self):
assert self.decimal_point in [2, 5, 8]
if self.decimal_point == 2:
return 'uZCL'
return 'uBTCP'
if self.decimal_point == 5:
return 'mZCL'
return 'mBTCP'
if self.decimal_point == 8:
return 'ZCL'
return 'BTCP'
raise Exception('Unknown base unit')
def connect_fields(self, window, btc_e, fiat_e, fee_e):
@ -798,7 +798,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.receive_address_e = ButtonsLineEdit()
self.receive_address_e.addCopyButton(self.app)
self.receive_address_e.setReadOnly(True)
msg = _('Zclassic address where the payment should be received. Note that each payment request uses a different Zclassic address.')
msg = _('bitcoinprivate address where the payment should be received. Note that each payment request uses a different bitcoinprivate address.')
self.receive_address_label = HelpLabel(_('Receiving address'), msg)
self.receive_address_e.textChanged.connect(self.update_receive_qr)
self.receive_address_e.setFocusPolicy(Qt.ClickFocus)
@ -828,8 +828,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
msg = ' '.join([
_('Expiration date of your request.'),
_('This information is seen by the recipient if you send them a signed payment request.'),
_('Expired requests have to be deleted manually from your list, in order to free the corresponding Zclassic addresses.'),
_('The Zclassic address never expires and will always be part of this electrum-zclassic wallet.'),
_('Expired requests have to be deleted manually from your list, in order to free the corresponding bitcoinprivate addresses.'),
_('The bitcoinprivate address never expires and will always be part of this electrum-bitcoinprivate wallet.'),
])
grid.addWidget(HelpLabel(_('Request expires'), msg), 3, 0)
grid.addWidget(self.expires_combo, 3, 1)
@ -1055,7 +1055,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.amount_e = BTCAmountEdit(self.get_decimal_point)
self.payto_e = PayToEdit(self)
msg = _('Recipient of the funds.') + '\n\n'\
+ _('You may enter a Zclassic address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a Zclassic address)')
+ _('You may enter a bitcoinprivate address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a bitcoinprivate address)')
payto_label = HelpLabel(_('Pay to'), msg)
grid.addWidget(payto_label, 1, 0)
grid.addWidget(self.payto_e, 1, 1, 1, -1)
@ -1102,7 +1102,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
hbox.addStretch(1)
grid.addLayout(hbox, 4, 4)
msg = _('Zclassic transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\
msg = _('bitcoinprivate transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\
+ _('The amount of fee can be decided freely by the sender. However, transactions with low fees take more time to be processed.') + '\n\n'\
+ _('A suggested fee is automatically added to this field. You may override it. The suggested fee increases with the size of the transaction.')
self.fee_e_label = HelpLabel(_('Fee'), msg)
@ -1163,7 +1163,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
def feerounding_onclick():
text = (self.feerounding_text + '\n\n' +
_('To somewhat protect your privacy, Electrum-Zclassic tries to create change with similar precision to other outputs.') + ' ' +
_('To somewhat protect your privacy, Electrum-bitcoinprivate tries to create change with similar precision to other outputs.') + ' ' +
_('At most 100 satoshis might be lost due to this rounding.') + ' ' +
_("You can disable this setting in '{}'.").format(_('Preferences')) + '\n' +
_('Also, dust is not kept as change, but added to the fee.'))
@ -1486,10 +1486,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
for _type, addr, amount in outputs:
if addr is None:
self.show_error(_('Zclassic Address is None'))
self.show_error(_('bitcoinprivate Address is None'))
return
if _type == TYPE_ADDRESS and not bitcoin.is_address(addr):
self.show_error(_('Invalid Zclassic Address'))
self.show_error(_('Invalid bitcoinprivate Address'))
return
if amount is None:
self.show_error(_('Invalid Amount'))
@ -1705,7 +1705,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
try:
out = util.parse_URI(URI, self.on_pr)
except BaseException as e:
self.show_error(_('Invalid zclassic URI:') + '\n' + str(e))
self.show_error(_('Invalid bitcoinprivate URI:') + '\n' + str(e))
return
self.show_send_tab()
r = out.get('r')
@ -1964,7 +1964,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.send_button.setVisible(not self.wallet.is_watching_only())
def change_password_dialog(self):
from electrum_zclassic.storage import STO_EV_XPUB_PW
from electrum_bitcoinprivate.storage import STO_EV_XPUB_PW
if self.wallet.get_available_storage_encryption_version() == STO_EV_XPUB_PW:
from .password_dialog import ChangePasswordDialogForHW
d = ChangePasswordDialogForHW(self, self.wallet)
@ -2154,7 +2154,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
address = address.text().strip()
message = message.toPlainText().strip()
if not bitcoin.is_address(address):
self.show_message(_('Invalid Zclassic address.'))
self.show_message(_('Invalid bitcoinprivate address.'))
return
if self.wallet.is_watching_only():
self.show_message(_('This is a watching-only wallet.'))
@ -2182,7 +2182,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
address = address.text().strip()
message = message.toPlainText().strip().encode('utf-8')
if not bitcoin.is_address(address):
self.show_message(_('Invalid Zclassic address.'))
self.show_message(_('Invalid bitcoinprivate address.'))
return
try:
# This can throw on invalid base64
@ -2305,16 +2305,16 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
return d.run()
def tx_from_text(self, txt):
from electrum_zclassic.transaction import tx_from_str
from electrum_bitcoinprivate.transaction import tx_from_str
try:
tx = tx_from_str(txt)
return Transaction(tx)
except BaseException as e:
self.show_critical(_("Electrum-Zclassic was unable to parse your transaction") + ":\n" + str(e))
self.show_critical(_("Electrum-bitcoinprivate was unable to parse your transaction") + ":\n" + str(e))
return
def read_tx_from_qrcode(self):
from electrum_zclassic import qrscanner
from electrum_bitcoinprivate import qrscanner
try:
data = qrscanner.scan_barcode(self.config.get_video_device())
except BaseException as e:
@ -2322,8 +2322,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
return
if not data:
return
# if the user scanned a zclassic URI
if str(data).startswith("zclassic:"):
# if the user scanned a bitcoinprivate URI
if str(data).startswith("bitcoinprivate:"):
self.pay_to_URI(data)
return
# else if the user scanned an offline signed tx
@ -2345,7 +2345,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
with open(fileName, "r") as f:
file_content = f.read()
except (ValueError, IOError, os.error) as reason:
self.show_critical(_("Electrum-Zclassic was unable to open your transaction file") + "\n" + str(reason), title=_("Unable to read file or no transaction found"))
self.show_critical(_("Electrum-bitcoinprivate was unable to open your transaction file") + "\n" + str(reason), title=_("Unable to read file or no transaction found"))
return
return self.tx_from_text(file_content)
@ -2363,7 +2363,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.show_transaction(tx)
def do_process_from_txid(self):
from electrum_zclassic import transaction
from electrum_bitcoinprivate import transaction
txid, ok = QInputDialog.getText(self, _('Lookup transaction'), _('Transaction ID') + ':')
if ok and txid:
txid = str(txid).strip()
@ -2398,7 +2398,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
e.setReadOnly(True)
vbox.addWidget(e)
defaultname = 'electrum-zclassic-private-keys.csv'
defaultname = 'electrum-bitcoinprivate-private-keys.csv'
select_msg = _('Select file to export your private keys to')
hbox, filename_e, csv_button = filename_field(self, self.config, defaultname, select_msg)
vbox.addLayout(hbox)
@ -2456,7 +2456,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.do_export_privkeys(filename, private_keys, csv_button.isChecked())
except (IOError, os.error) as reason:
txt = "\n".join([
_("Electrum-Zclassic was unable to produce a private key-export."),
_("Electrum-bitcoinprivate was unable to produce a private key-export."),
str(reason)
])
self.show_critical(txt, title=_("Unable to create csv"))
@ -2538,7 +2538,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
address_e.textChanged.connect(on_address)
if not d.exec_():
return
from electrum_zclassic.wallet import sweep_preparations
from electrum_bitcoinprivate.wallet import sweep_preparations
try:
self.do_clear()
coins, keypairs = sweep_preparations(get_pk(), self.network)
@ -2611,7 +2611,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
lang_help = _('Select which language is used in the GUI (after restart).')
lang_label = HelpLabel(_('Language') + ':', lang_help)
lang_combo = QComboBox()
from electrum_zclassic.i18n import languages
from electrum_bitcoinprivate.i18n import languages
lang_combo.addItems(list(languages.values()))
try:
index = languages.keys().index(self.config.get("language",''))
@ -2720,9 +2720,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
SSL_id_e.setReadOnly(True)
id_widgets.append((SSL_id_label, SSL_id_e))
units = ['ZCL', 'mZCL', 'uZCL']
units = ['BTCP', 'mBTCP', 'uBTCP']
msg = (_('Base unit of your wallet.')
+ '\n1 ZCL = 1000 mZCL. 1 mZCL = 1000 uZCL.\n'
+ '\n1 BTCP = 1000 mBTCP. 1 mBTCP = 1000 uBTCP.\n'
+ _('This setting affects the Send tab, and all balance related fields.'))
unit_label = HelpLabel(_('Base unit') + ':', msg)
unit_combo = QComboBox()
@ -2734,11 +2734,11 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
return
edits = self.amount_e, self.fee_e, self.receive_amount_e
amounts = [edit.get_amount() for edit in edits]
if unit_result == 'ZCL':
if unit_result == 'BTCP':
self.decimal_point = 8
elif unit_result == 'mZCL':
elif unit_result == 'mBTCP':
self.decimal_point = 5
elif unit_result == 'uZCL':
elif unit_result == 'uBTCP':
self.decimal_point = 2
else:
raise Exception('Unknown base unit')
@ -2765,7 +2765,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
block_ex_combo.currentIndexChanged.connect(on_be)
gui_widgets.append((block_ex_label, block_ex_combo))
from electrum_zclassic import qrscanner
from electrum_bitcoinprivate import qrscanner
system_cameras = qrscanner._find_system_cameras()
qr_combo = QComboBox()
qr_combo.addItem("Default","default")
@ -2986,7 +2986,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
run_hook('close_settings_dialog')
if self.need_restart:
self.show_warning(_('Please restart Electrum-Zclassic to activate the new GUI settings'), title=_('Success'))
self.show_warning(_('Please restart Electrum-bitcoinprivate to activate the new GUI settings'), title=_('Success'))
def closeEvent(self, event):
@ -3013,7 +3013,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.gui_object.close_window(self)
def plugins_dialog(self):
self.pluginsdialog = d = WindowModalDialog(self, _('Electrum-Zclassic Plugins'))
self.pluginsdialog = d = WindowModalDialog(self, _('Electrum-bitcoinprivate Plugins'))
plugins = self.gui_object.plugins

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2012 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person
@ -30,10 +30,10 @@ from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import PyQt5.QtCore as QtCore
from electrum_zclassic.i18n import _
from electrum_zclassic import constants
from electrum_zclassic.util import print_error
from electrum_zclassic.network import serialize_server, deserialize_server
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate import constants
from electrum_bitcoinprivate.util import print_error
from electrum_bitcoinprivate.network import serialize_server, deserialize_server
from .util import *
@ -214,8 +214,8 @@ class NetworkChoiceLayout(object):
self.autoconnect_cb.clicked.connect(self.update)
msg = ' '.join([
_("If auto-connect is enabled, Electrum-Zclassic will always use a server that is on the longest blockchain."),
_("If it is disabled, you have to choose a server you want to use. Electrum-Zclassic will warn you if your server is lagging.")
_("If auto-connect is enabled, Electrum-bitcoinprivate will always use a server that is on the longest blockchain."),
_("If it is disabled, you have to choose a server you want to use. Electrum-bitcoinprivate will warn you if your server is lagging.")
])
grid.addWidget(self.autoconnect_cb, 0, 0, 1, 3)
grid.addWidget(HelpButton(msg), 0, 4)
@ -270,7 +270,7 @@ class NetworkChoiceLayout(object):
grid.addWidget(self.tor_cb, 1, 0, 1, 3)
grid.addWidget(self.proxy_cb, 2, 0, 1, 3)
grid.addWidget(HelpButton(_('Proxy settings apply to all connections: with Electrum-Zclassic servers, but also with third-party services.')), 2, 4)
grid.addWidget(HelpButton(_('Proxy settings apply to all connections: with Electrum-bitcoinprivate servers, but also with third-party services.')), 2, 4)
grid.addWidget(self.proxy_mode, 4, 1)
grid.addWidget(self.proxy_host, 4, 2)
grid.addWidget(self.proxy_port, 4, 3)
@ -281,7 +281,7 @@ class NetworkChoiceLayout(object):
# Blockchain Tab
grid = QGridLayout(blockchain_tab)
msg = ' '.join([
_("Electrum-Zclassic connects to several nodes in order to download block headers and find out the longest blockchain."),
_("Electrum-bitcoinprivate connects to several nodes in order to download block headers and find out the longest blockchain."),
_("This blockchain is used to verify the transactions sent by your transaction server.")
])
self.status_label = QLabel('')
@ -290,7 +290,7 @@ class NetworkChoiceLayout(object):
grid.addWidget(HelpButton(msg), 0, 4)
self.server_label = QLabel('')
msg = _("Electrum-Zclassic sends your wallet addresses to a single server, in order to receive your transaction history.")
msg = _("Electrum-bitcoinprivate sends your wallet addresses to a single server, in order to receive your transaction history.")
grid.addWidget(QLabel(_('Server') + ':'), 1, 0)
grid.addWidget(self.server_label, 1, 1, 1, 3)
grid.addWidget(HelpButton(msg), 1, 4)

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2013 ecdsa@github
#
# Permission is hereby granted, free of charge, to any person
@ -26,12 +26,12 @@
from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from electrum_zclassic.i18n import _
from electrum_bitcoinprivate.i18n import _
from .util import *
import re
import math
from electrum_zclassic.plugins import run_hook
from electrum_bitcoinprivate.plugins import run_hook
def check_password_strength(password):
@ -248,7 +248,7 @@ class ChangePasswordDialogForSW(ChangePasswordDialogBase):
msg += ' ' + _('Use this dialog to add a password to your wallet.')
else:
if not is_encrypted:
msg = _('Your Zclassic coins are password protected. However, your wallet file is not encrypted.')
msg = _('Your bitcoinprivate coins are password protected. However, your wallet file is not encrypted.')
else:
msg = _('Your wallet is password protected and encrypted.')
msg += ' ' + _('Use this dialog to change your password.')

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2012 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person
@ -28,8 +28,8 @@ from PyQt5.QtWidgets import QLineEdit
import re
from decimal import Decimal
from electrum_zclassic import bitcoin
from electrum_zclassic.util import bfh
from electrum_bitcoinprivate import bitcoin
from electrum_bitcoinprivate.util import bfh
from .qrtextedit import ScanQRTextEdit
from .completion_text_edit import CompletionTextEdit
@ -90,7 +90,7 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit):
return bitcoin.TYPE_SCRIPT, script
def parse_script(self, x):
from electrum_zclassic.transaction import opcodes, push_script
from electrum_bitcoinprivate.transaction import opcodes, push_script
script = ''
for word in x.split():
if word[0:3] == 'OP_':
@ -127,7 +127,7 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit):
self.payto_address = None
if len(lines) == 1:
data = lines[0]
if data.startswith("zclassic:"):
if data.startswith("bitcoinprivate:"):
self.scan_f(data)
return
try:
@ -202,7 +202,7 @@ class PayToEdit(CompletionTextEdit, ScanQRTextEdit):
def qr_input(self):
data = super(PayToEdit,self).qr_input()
if data.startswith("zclassic:"):
if data.startswith("bitcoinprivate:"):
self.scan_f(data)
# TODO: update fee

View File

@ -8,8 +8,8 @@ from PyQt5.QtWidgets import (
import os
import qrcode
import electrum_zclassic
from electrum_zclassic.i18n import _
import electrum_bitcoinprivate
from electrum_bitcoinprivate.i18n import _
from .util import WindowModalDialog
@ -102,7 +102,7 @@ class QRDialog(WindowModalDialog):
hbox = QHBoxLayout()
hbox.addStretch(1)
config = electrum_zclassic.get_config()
config = electrum_bitcoinprivate.get_config()
if config:
filename = os.path.join(config.path, "qrcode.png")

View File

@ -1,6 +1,6 @@
from electrum_zclassic.i18n import _
from electrum_zclassic.plugins import run_hook
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.plugins import run_hook
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QFileDialog
@ -55,7 +55,7 @@ class ScanQRTextEdit(ButtonsTextEdit, MessageBoxMixin):
self.setText(data)
def qr_input(self):
from electrum_zclassic import qrscanner, get_config
from electrum_bitcoinprivate import qrscanner, get_config
try:
data = qrscanner.scan_barcode(get_config().get_video_device())
except BaseException as e:

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2014 Thomas Voegtlin
#
# Permission is hereby granted, free of charge, to any person
@ -29,8 +29,8 @@ from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, QLabel, QWidget
from electrum_zclassic_gui.qt.qrcodewidget import QRCodeWidget
from electrum_zclassic.i18n import _
from electrum_bitcoinprivate_gui.qt.qrcodewidget import QRCodeWidget
from electrum_bitcoinprivate.i18n import _
if platform.system() == 'Windows':
MONOSPACE_FONT = 'Lucida Console'
@ -46,7 +46,7 @@ class QR_Window(QWidget):
def __init__(self, win):
QWidget.__init__(self)
self.win = win
self.setWindowTitle('Electrum-Zclassic - '+_('Payment Request'))
self.setWindowTitle('Electrum-bitcoinprivate - '+_('Payment Request'))
self.setMinimumSize(800, 250)
self.address = ''
self.label = ''

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2015 Thomas Voegtlin
#
# Permission is hereby granted, free of charge, to any person
@ -23,10 +23,10 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from electrum_zclassic.i18n import _
from electrum_zclassic.util import format_time, age
from electrum_zclassic.plugins import run_hook
from electrum_zclassic.paymentrequest import PR_UNKNOWN
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.util import format_time, age
from electrum_bitcoinprivate.plugins import run_hook
from electrum_bitcoinprivate.paymentrequest import PR_UNKNOWN
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QTreeWidgetItem, QMenu

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2013 ecdsa@github
#
# Permission is hereby granted, free of charge, to any person
@ -23,9 +23,9 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from electrum_zclassic.i18n import _
from electrum_zclassic.mnemonic import Mnemonic
import electrum_zclassic.old_mnemonic
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.mnemonic import Mnemonic
import electrum_bitcoinprivate.old_mnemonic
from .util import *
from .qrtextedit import ShowQRTextEdit, ScanQRTextEdit
@ -68,10 +68,10 @@ class SeedLayout(QVBoxLayout):
if b:
msg = ' '.join([
'<b>' + _('Warning') + ':</b> ',
_('BIP39 seeds can be imported in Electrum-Zclassic, so that users can access funds locked in other wallets.'),
_('BIP39 seeds can be imported in Electrum-bitcoinprivate, so that users can access funds locked in other wallets.'),
_('However, we do not generate BIP39 seeds, because they do not meet our safety standard.'),
_('BIP39 seeds do not include a version number, which compromises compatibility with future software.'),
_('We do not guarantee that BIP39 imports will always be supported in Electrum-Zclassic.'),
_('We do not guarantee that BIP39 imports will always be supported in Electrum-bitcoinprivate.'),
])
else:
msg = ''
@ -136,7 +136,7 @@ class SeedLayout(QVBoxLayout):
def initialize_completer(self):
english_list = Mnemonic('en').wordlist
old_list = electrum_zclassic.old_mnemonic.words
old_list = electrum_bitcoinprivate.old_mnemonic.words
self.wordlist = english_list + list(set(old_list) - set(english_list)) #concat both lists
self.wordlist.sort()
self.completer = QCompleter(self.wordlist)
@ -147,14 +147,14 @@ class SeedLayout(QVBoxLayout):
return ' '.join(text.split())
def on_edit(self):
from electrum_zclassic.bitcoin import seed_type
from electrum_bitcoinprivate.bitcoin import seed_type
s = self.get_seed()
b = self.is_seed(s)
if not self.is_bip39:
t = seed_type(s)
label = _('Seed Type') + ': ' + t if t else ''
else:
from electrum_zclassic.keystore import bip39_is_checksum_valid
from electrum_bitcoinprivate.keystore import bip39_is_checksum_valid
is_checksum, is_wordlist = bip39_is_checksum_valid(s)
status = ('checksum: ' + ('ok' if is_checksum else 'failed')) if is_wordlist else 'unknown wordlist'
label = 'BIP39' + ' (%s)'%status
@ -189,7 +189,7 @@ class KeysLayout(QVBoxLayout):
class SeedDialog(WindowModalDialog):
def __init__(self, parent, seed, passphrase):
WindowModalDialog.__init__(self, parent, ('Electrum-Zclassic - ' + _('Seed')))
WindowModalDialog.__init__(self, parent, ('Electrum-bitcoinprivate - ' + _('Seed')))
self.setMinimumWidth(400)
vbox = QVBoxLayout(self)
title = _("Your wallet generation seed is:")

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Electrum - lightweight Bitcoin client
# Electrum - lightweight bitcoinprivate client
# Copyright (C) 2012 thomasv@gitorious
#
# Permission is hereby granted, free of charge, to any person
@ -31,14 +31,14 @@ from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from electrum_zclassic.bitcoin import base_encode
from electrum_zclassic.i18n import _
from electrum_zclassic.plugins import run_hook
from electrum_zclassic import simple_config
from electrum_bitcoinprivate.bitcoin import base_encode
from electrum_bitcoinprivate.i18n import _
from electrum_bitcoinprivate.plugins import run_hook
from electrum_bitcoinprivate import simple_config
from electrum_zclassic.util import bfh
from electrum_zclassic.wallet import AddTransactionException
from electrum_zclassic.transaction import SerializationError
from electrum_bitcoinprivate.util import bfh
from electrum_bitcoinprivate.wallet import AddTransactionException
from electrum_bitcoinprivate.transaction import SerializationError
from .util import *
@ -50,7 +50,7 @@ def show_transaction(tx, parent, desc=None, prompt_if_unsaved=False):
d = TxDialog(tx, parent, desc, prompt_if_unsaved)
except SerializationError as e:
traceback.print_exc(file=sys.stderr)
parent.show_critical(_("Electrum-Zclassic was unable to deserialize the transaction:") + "\n" + str(e))
parent.show_critical(_("Electrum-bitcoinprivate was unable to deserialize the transaction:") + "\n" + str(e))
else:
dialogs.append(d)
d.show()

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