Browse Source

Merge branch 'master' into docker

3.2.x
ThomasV 6 years ago
committed by GitHub
parent
commit
88eb2390e6
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      .gitignore
  2. 8
      README.rst
  3. 4
      contrib/build-osx/make_osx
  4. 193
      contrib/build-osx/osx.spec
  5. 6
      contrib/build-wine/build-electrum-git.sh
  6. 43
      contrib/build-wine/deterministic.spec
  7. 7
      contrib/build-wine/prepare-wine.sh
  8. 63
      contrib/deterministic-build/requirements-binaries.txt
  9. 71
      contrib/deterministic-build/requirements-hw.txt
  10. 9
      contrib/deterministic-build/requirements.txt
  11. 2
      contrib/make_apk
  12. 11
      contrib/make_locale
  13. 2
      contrib/requirements/requirements-binaries.txt
  14. 2
      electrum-env
  15. 2
      electrum/__init__.py
  16. 5
      electrum/base_crash_reporter.py
  17. 0
      electrum/base_wizard.py
  18. 0
      electrum/bitcoin.py
  19. 6
      electrum/blockchain.py
  20. 0
      electrum/checkpoints.json
  21. 0
      electrum/checkpoints_testnet.json
  22. 0
      electrum/coinchooser.py
  23. 4
      electrum/commands.py
  24. 0
      electrum/constants.py
  25. 0
      electrum/contacts.py
  26. 0
      electrum/crypto.py
  27. 8
      electrum/currencies.json
  28. 4
      electrum/daemon.py
  29. 0
      electrum/dnssec.py
  30. 0
      electrum/ecc.py
  31. 0
      electrum/ecc_fast.py
  32. 1
      electrum/electrum
  33. 0
      electrum/exchange_rate.py
  34. 0
      electrum/gui/__init__.py
  35. 16
      electrum/gui/kivy/Makefile
  36. 10
      electrum/gui/kivy/Readme.md
  37. 0
      electrum/gui/kivy/__init__.py
  38. 0
      electrum/gui/kivy/data/background.png
  39. 0
      electrum/gui/kivy/data/fonts/Roboto-Bold.ttf
  40. 0
      electrum/gui/kivy/data/fonts/Roboto-Condensed.ttf
  41. 0
      electrum/gui/kivy/data/fonts/Roboto-Medium.ttf
  42. 0
      electrum/gui/kivy/data/fonts/Roboto.ttf
  43. 0
      electrum/gui/kivy/data/fonts/tron/License.txt
  44. 0
      electrum/gui/kivy/data/fonts/tron/Readme.txt
  45. 0
      electrum/gui/kivy/data/fonts/tron/Tr2n.ttf
  46. 0
      electrum/gui/kivy/data/glsl/default.fs
  47. 0
      electrum/gui/kivy/data/glsl/default.png
  48. 0
      electrum/gui/kivy/data/glsl/default.vs
  49. 0
      electrum/gui/kivy/data/glsl/header.fs
  50. 0
      electrum/gui/kivy/data/glsl/header.vs
  51. 0
      electrum/gui/kivy/data/images/defaulttheme-0.png
  52. 0
      electrum/gui/kivy/data/images/defaulttheme.atlas
  53. 0
      electrum/gui/kivy/data/java-classes/org/electrum/qr/SimpleScannerActivity.java
  54. 0
      electrum/gui/kivy/data/logo/kivy-icon-32.png
  55. 0
      electrum/gui/kivy/data/style.kv
  56. 0
      electrum/gui/kivy/i18n.py
  57. 16
      electrum/gui/kivy/main.kv
  58. 46
      electrum/gui/kivy/main_window.py
  59. 2
      electrum/gui/kivy/nfc_scanner/__init__.py
  60. 2
      electrum/gui/kivy/nfc_scanner/scanner_android.py
  61. 2
      electrum/gui/kivy/nfc_scanner/scanner_dummy.py
  62. 0
      electrum/gui/kivy/theming/light/action_bar.png
  63. 0
      electrum/gui/kivy/theming/light/action_button_group.png
  64. 0
      electrum/gui/kivy/theming/light/action_group_dark.png
  65. 0
      electrum/gui/kivy/theming/light/action_group_light.png
  66. 0
      electrum/gui/kivy/theming/light/add_contact.png
  67. 0
      electrum/gui/kivy/theming/light/arrow_back.png
  68. 0
      electrum/gui/kivy/theming/light/bit_logo.png
  69. 0
      electrum/gui/kivy/theming/light/blue_bg_round_rb.png
  70. 0
      electrum/gui/kivy/theming/light/btn_create_account.png
  71. 0
      electrum/gui/kivy/theming/light/btn_create_act_disabled.png
  72. 0
      electrum/gui/kivy/theming/light/btn_nfc.png
  73. 0
      electrum/gui/kivy/theming/light/btn_send_address.png
  74. 0
      electrum/gui/kivy/theming/light/btn_send_nfc.png
  75. 0
      electrum/gui/kivy/theming/light/calculator.png
  76. 0
      electrum/gui/kivy/theming/light/camera.png
  77. 0
      electrum/gui/kivy/theming/light/card.png
  78. 0
      electrum/gui/kivy/theming/light/card_bottom.png
  79. 0
      electrum/gui/kivy/theming/light/card_btn.png
  80. 0
      electrum/gui/kivy/theming/light/card_top.png
  81. 0
      electrum/gui/kivy/theming/light/carousel_deselected.png
  82. 0
      electrum/gui/kivy/theming/light/carousel_selected.png
  83. 0
      electrum/gui/kivy/theming/light/clock1.png
  84. 0
      electrum/gui/kivy/theming/light/clock2.png
  85. 0
      electrum/gui/kivy/theming/light/clock3.png
  86. 0
      electrum/gui/kivy/theming/light/clock4.png
  87. 0
      electrum/gui/kivy/theming/light/clock5.png
  88. 0
      electrum/gui/kivy/theming/light/close.png
  89. 0
      electrum/gui/kivy/theming/light/closebutton.png
  90. 0
      electrum/gui/kivy/theming/light/confirmed.png
  91. 0
      electrum/gui/kivy/theming/light/contact.png
  92. 0
      electrum/gui/kivy/theming/light/contact_overlay.png
  93. 0
      electrum/gui/kivy/theming/light/create_act_text.png
  94. 0
      electrum/gui/kivy/theming/light/create_act_text_active.png
  95. 0
      electrum/gui/kivy/theming/light/dialog.png
  96. 0
      electrum/gui/kivy/theming/light/dropdown_background.png
  97. 0
      electrum/gui/kivy/theming/light/electrum_icon640.png
  98. 0
      electrum/gui/kivy/theming/light/error.png
  99. 0
      electrum/gui/kivy/theming/light/gear.png
  100. 0
      electrum/gui/kivy/theming/light/globe.png

3
.gitignore

@ -4,10 +4,9 @@
build/
dist/
*.egg/
/electrum.py
contrib/pyinstaller/
Electrum.egg-info/
gui/qt/icons_rc.py
electrum/gui/qt/icons_rc.py
locale/
.devlocaltmp/
*_trial_temp

8
README.rst

@ -36,7 +36,7 @@ Electrum from its root directory, without installing it on your
system; all the python dependencies are included in the 'packages'
directory. To run Electrum from its root directory, just do::
./electrum
./run_electrum
You can also install Electrum on your system, by running this command::
@ -73,12 +73,12 @@ Render the SVG icons to PNGs (optional)::
Compile the icons file for Qt::
sudo apt-get install pyqt5-dev-tools
pyrcc5 icons.qrc -o gui/qt/icons_rc.py
pyrcc5 icons.qrc -o electrum/gui/qt/icons_rc.py
Compile the protobuf description file::
sudo apt-get install protobuf-compiler
protoc --proto_path=lib/ --python_out=lib/ lib/paymentrequest.proto
protoc --proto_path=electrum --python_out=electrum electrum/paymentrequest.proto
Create translations (optional)::
@ -112,4 +112,4 @@ See `contrib/build-wine/`.
Android
-------
See `gui/kivy/Readme.txt` file.
See `electrum/gui/kivy/Readme.md` file.

4
contrib/build-osx/make_osx

@ -46,8 +46,8 @@ git submodule update
rm -rf $BUILDDIR > /dev/null 2>&1
mkdir $BUILDDIR
cp -R ./contrib/deterministic-build/electrum-locale/locale/ ./lib/locale/
cp ./contrib/deterministic-build/electrum-icons/icons_rc.py ./gui/qt/
cp -R ./contrib/deterministic-build/electrum-locale/locale/ ./electrum/locale/
cp ./contrib/deterministic-build/electrum-icons/icons_rc.py ./electrum/gui/qt/
info "Downloading libusb..."

193
contrib/build-osx/osx.spec

@ -1,97 +1,96 @@
# -*- mode: python -*-
from PyInstaller.utils.hooks import collect_data_files, collect_submodules, collect_dynamic_libs
import sys
import os
PACKAGE='Electrum'
PYPKG='electrum'
MAIN_SCRIPT='electrum'
ICONS_FILE='electrum.icns'
for i, x in enumerate(sys.argv):
if x == '--name':
VERSION = sys.argv[i+1]
break
else:
raise Exception('no version')
electrum = os.path.abspath(".") + "/"
block_cipher = None
# 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')
datas = [
(electrum+'lib/*.json', PYPKG),
(electrum+'lib/wordlist/english.txt', PYPKG + '/wordlist'),
(electrum+'lib/locale', PYPKG + '/locale'),
(electrum+'plugins', PYPKG + '_plugins'),
]
datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
# Add libusb so Trezor will work
binaries = [(electrum + "contrib/build-osx/libusb-1.0.dylib", ".")]
binaries += [(electrum + "contrib/build-osx/libsecp256k1.0.dylib", ".")]
# Workaround for "Retro Look":
binaries += [b for b in collect_dynamic_libs('PyQt5') if 'macstyle' in b[0]]
# 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([electrum+MAIN_SCRIPT,
electrum+'gui/qt/main_window.py',
electrum+'gui/text.py',
electrum+'lib/util.py',
electrum+'lib/wallet.py',
electrum+'lib/simple_config.py',
electrum+'lib/bitcoin.py',
electrum+'lib/dnssec.py',
electrum+'lib/commands.py',
electrum+'plugins/cosigner_pool/qt.py',
electrum+'plugins/email_requests/qt.py',
electrum+'plugins/trezor/client.py',
electrum+'plugins/trezor/qt.py',
electrum+'plugins/keepkey/qt.py',
electrum+'plugins/ledger/qt.py',
],
binaries=binaries,
datas=datas,
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
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.datas,
name=PACKAGE,
debug=False,
strip=False,
upx=True,
icon=electrum+ICONS_FILE,
console=False)
app = BUNDLE(exe,
version = VERSION,
name=PACKAGE + '.app',
icon=electrum+ICONS_FILE,
bundle_identifier=None,
info_plist={
'NSHighResolutionCapable': 'True',
'NSSupportsAutomaticGraphicsSwitching': 'True'
}
)
# -*- mode: python -*-
from PyInstaller.utils.hooks import collect_data_files, collect_submodules, collect_dynamic_libs
import sys
import os
PACKAGE='Electrum'
PYPKG='electrum'
MAIN_SCRIPT='run_electrum'
ICONS_FILE='electrum.icns'
for i, x in enumerate(sys.argv):
if x == '--name':
VERSION = sys.argv[i+1]
break
else:
raise Exception('no version')
electrum = os.path.abspath(".") + "/"
block_cipher = None
# 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')
datas = [
(electrum+'electrum/*.json', PYPKG),
(electrum+'electrum/wordlist/english.txt', PYPKG + '/wordlist'),
(electrum+'electrum/locale', PYPKG + '/locale')
]
datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
# Add libusb so Trezor will work
binaries = [(electrum + "contrib/build-osx/libusb-1.0.dylib", ".")]
binaries += [(electrum + "contrib/build-osx/libsecp256k1.0.dylib", ".")]
# Workaround for "Retro Look":
binaries += [b for b in collect_dynamic_libs('PyQt5') if 'macstyle' in b[0]]
# 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([electrum+ MAIN_SCRIPT,
electrum+'electrum/gui/qt/main_window.py',
electrum+'electrum/gui/text.py',
electrum+'electrum/util.py',
electrum+'electrum/wallet.py',
electrum+'electrum/simple_config.py',
electrum+'electrum/bitcoin.py',
electrum+'electrum/dnssec.py',
electrum+'electrum/commands.py',
electrum+'electrum/plugins/cosigner_pool/qt.py',
electrum+'electrum/plugins/email_requests/qt.py',
electrum+'electrum/plugins/trezor/client.py',
electrum+'electrum/plugins/trezor/qt.py',
electrum+'electrum/plugins/keepkey/qt.py',
electrum+'electrum/plugins/ledger/qt.py',
],
binaries=binaries,
datas=datas,
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
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.datas,
name=PACKAGE,
debug=False,
strip=False,
upx=True,
icon=electrum+ICONS_FILE,
console=False)
app = BUNDLE(exe,
version = VERSION,
name=PACKAGE + '.app',
icon=electrum+ICONS_FILE,
bundle_identifier=None,
info_plist={
'NSHighResolutionCapable': 'True',
'NSSupportsAutomaticGraphicsSwitching': 'True'
}
)

6
contrib/build-wine/build-electrum-git.sh

@ -1,7 +1,7 @@
#!/bin/bash
NAME_ROOT=electrum
PYTHON_VERSION=3.5.4
PYTHON_VERSION=3.6.6
# These settings probably don't need any change
export WINEPREFIX=/opt/wine64
@ -44,8 +44,8 @@ find -exec touch -d '2000-11-11T11:11:11+00:00' {} +
popd
cp $WINEPREFIX/drive_c/electrum/LICENCE .
cp -r $WINEPREFIX/drive_c/electrum/contrib/deterministic-build/electrum-locale/locale $WINEPREFIX/drive_c/electrum/lib/
cp $WINEPREFIX/drive_c/electrum/contrib/deterministic-build/electrum-icons/icons_rc.py $WINEPREFIX/drive_c/electrum/gui/qt/
cp -r $WINEPREFIX/drive_c/electrum/contrib/deterministic-build/electrum-locale/locale $WINEPREFIX/drive_c/electrum/electrum/
cp $WINEPREFIX/drive_c/electrum/contrib/deterministic-build/electrum-icons/icons_rc.py $WINEPREFIX/drive_c/electrum/electrum/gui/qt/
# Install frozen dependencies
$PYTHON -m pip install -r ../../deterministic-build/requirements.txt

43
contrib/build-wine/deterministic.spec

@ -10,7 +10,7 @@ for i, x in enumerate(sys.argv):
else:
raise Exception('no name')
PYTHON_VERSION = '3.5.4'
PYTHON_VERSION = '3.6.6'
PYHOME = 'c:/python' + PYTHON_VERSION
home = 'C:\\electrum\\'
@ -31,10 +31,9 @@ binaries += [b for b in collect_dynamic_libs('PyQt5') if 'qwindowsvista' in b[0]
binaries += [('C:/tmp/libsecp256k1.dll', '.')]
datas = [
(home+'lib/*.json', 'electrum'),
(home+'lib/wordlist/english.txt', 'electrum/wordlist'),
(home+'lib/locale', 'electrum/locale'),
(home+'plugins', 'electrum_plugins'),
(home+'electrum/*.json', 'electrum'),
(home+'electrum/wordlist/english.txt', 'electrum/wordlist'),
(home+'electrum/locale', 'electrum/locale'),
('C:\\Program Files (x86)\\ZBar\\bin\\', '.')
]
datas += collect_data_files('trezorlib')
@ -42,21 +41,21 @@ 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',
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',
a = Analysis([home+'run_electrum',
home+'electrum/gui/qt/main_window.py',
home+'electrum/gui/text.py',
home+'electrum/util.py',
home+'electrum/wallet.py',
home+'electrum/simple_config.py',
home+'electrum/bitcoin.py',
home+'electrum/dnssec.py',
home+'electrum/commands.py',
home+'electrum/plugins/cosigner_pool/qt.py',
home+'electrum/plugins/email_requests/qt.py',
home+'electrum/plugins/trezor/client.py',
home+'electrum/plugins/trezor/qt.py',
home+'electrum/plugins/keepkey/qt.py',
home+'electrum/plugins/ledger/qt.py',
#home+'packages/requests/utils.py'
],
binaries=binaries,
@ -68,7 +67,7 @@ a = Analysis([home+'electrum',
# 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]:
if 'pyconfig' in d[0]:
a.datas.remove(d)
break
@ -85,7 +84,7 @@ exe_standalone = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
a.datas,
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + ".exe"),
debug=False,
strip=None,

7
contrib/build-wine/prepare-wine.sh

@ -13,7 +13,7 @@ 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
PYTHON_VERSION=3.6.6
## These settings probably don't need change
export WINEPREFIX=/opt/wine64
@ -81,6 +81,11 @@ set -e
wine 'wineboot'
# HACK to work around https://bugs.winehq.org/show_bug.cgi?id=42474#c22
# needed for python 3.6+
rm -f /opt/wine-stable/lib/wine/fakedlls/api-ms-win-core-path-l1-1-0.dll
rm -f /opt/wine-stable/lib/wine/api-ms-win-core-path-l1-1-0.dll.so
cd /tmp/electrum-build
# Install Python

63
contrib/deterministic-build/requirements-binaries.txt

@ -1,42 +1,43 @@
pip==10.0.1 \
--hash=sha256:717cdffb2833be8409433a93746744b59505f42146e8d37de6c62b430e25d6d7 \
--hash=sha256:f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdbd7ee68
pycryptodomex==3.6.1 \
--hash=sha256:1869d7735f445bbf1681afa2acce10ad829857cfb7a4a7b702e484f222021892 \
--hash=sha256:24e054190d2b11ad3b8517d186c0b3df6f902a5f5a91be8e4bb6a3fcdc65b2cf \
--hash=sha256:26967d31fabb0d80cb2b254a7c0f55f8dec9931e8676891edd24aa5aaeb0d021 \
--hash=sha256:2a341b57bb5844d53b8f632f79277cd534762f502fb73bff5dc1a2f615ff91ed \
--hash=sha256:43d6eb014aba7be354f3e8fe2693fe96446f6791da2b9570e8d54d481e3ab224 \
--hash=sha256:4c271577f4f8c5cced55a60f4504b34545121c14facb8fc357f89c24089c81fc \
--hash=sha256:59721f2853df9cf2265304d3b6d6d8cebe3a86b1fddc00f2bfbf18eb2a48fb78 \
--hash=sha256:63a77a1b27d12ed1c42f4e539d9dbe588a88b70ec64b55271cdf1f56c1223bd6 \
--hash=sha256:6d04640386c55b9f44015747496c3b6582360b5b3b4e42f9ce3fc7c6840f80d0 \
--hash=sha256:730bd75d90e16975a112ea79863ce1faa7703d3b54f10d77656e7dadf6be0ef6 \
--hash=sha256:75a300aa86c56e9c19a7b476c397cb22fda3be7af4cf2f105990fdd94c52f486 \
--hash=sha256:7c6f67005c6e421f02fd7fe9d95876094307b31628d728adc6c2e038e2ed9c09 \
--hash=sha256:82b758f870c8dd859f9b58bc9cff007403b68742f9e0376e2cbd8aa2ad3baa83 \
--hash=sha256:8528a958b746c4da767bfba5ac370250dcb741f4c69e55873bd6efe89ac07291 \
--hash=sha256:93582ea5bc3e8f95cb36d9dd752c01452085b54b396e3ed775ac1793b8dc486a \
--hash=sha256:94e0105ad8d82d3bf5a032c92fc03b01e3bc9ea40b58308c2da42f8cf8c16c47 \
--hash=sha256:a65889424bf10a884ff031e7f3fd12273dd5b420ee08ca8fcfd431a2f6cbabc1 \
--hash=sha256:a8467982d26bfb90089f50c3c5d9ed541b7fe9f9df20803fede70d5046cd4ff1 \
--hash=sha256:ab497d4e7361511ede562ed3cd4528f46c005781bc23b1b943612d27bfb078c3 \
--hash=sha256:bb05caf3f6cf41d964c01e08dfaddfe48086c7b3e96708d50647f0a29ff33f56 \
--hash=sha256:c4643647f5656855975b2aaf70fe3aa1e0c1558f8d1b5de0c9a8ccac65114c57 \
--hash=sha256:c550e20834b679ed0b7608c345a816f97047d2297aab4f4599f95edee5d16e99 \
--hash=sha256:cc797712add76cd658110585481c380833637b68df1404190777ba715a81c9b9 \
--hash=sha256:dff0c883d495bf45d18acc74938d1de4d6a08b3345acb9177a46c6997a578c44 \
--hash=sha256:e4f69af1f5b46255ec7b8116a853879a55e8e6b595a73c39f14ca430c410c469 \
--hash=sha256:f61d0d83e9dd974849f9b0826ec20f49dbd9ed233fd90bf2592be1337231418e \
--hash=sha256:f65f21d2b616c30ad4ba801504343eb768fd0a2894c5f587e784201320556543
pycryptodomex==3.6.4 \
--hash=sha256:0461e88a7199f9e88f9f90c2c1e109e9e1f7bbb94dc6192e5df52829d31510c1 \
--hash=sha256:08d0aba5a72e8af5da118ac4b6a5d75befceca7dd92a031b040ed5ff4417cec2 \
--hash=sha256:0e22d47935d5fa95f556d5f5857576bc6750233964de06a840d58459010c3889 \
--hash=sha256:10ef21d1728ec0b8afc4f8e1d8d9ea66f317154ea18731a4a05bd996cdc33fdf \
--hash=sha256:1962b81eef81bf5c42d625816904a22a0bd23d15ca5d49891a54e3c0d0189d84 \
--hash=sha256:24aae88efe3cbcb4a9cf840b2c352e7de1d6c2c5b3df37ff99b5c7e271e8f3a8 \
--hash=sha256:43ad6d1d7ca545d53360bf412ee70fcb9ede876b4376fc6db06fc7328f70588c \
--hash=sha256:4daabe7c0404e673b9029aa43761c779b9b4df2cbe11ccd94daded6a0acd8808 \
--hash=sha256:4e15af025e02b04b0d0728e8248e4384d3dc7a3a89a020f5bd4d04ef2c5d9d4c \
--hash=sha256:5b4d3c4a069a05972e0ed7111071bbcb4727ac652b5d7e8f786e8ea2fe63306b \
--hash=sha256:67ad8b2ad15a99ae70e287454a112f67d2abaf160ee9c97f9daebf2296066447 \
--hash=sha256:6d7e6fb69d9fd2c57e177f8a9cdf6489a725da77568e3d0a226c7dd18504396a \
--hash=sha256:7907d7a5adde7cd07d19f129a4afa892b68b0b52a07eaf989e48e2677040b4bf \
--hash=sha256:88210edafd564c8ff4a68716aaf0627e3bc43e9c192a33d6f5616743f72c2d9b \
--hash=sha256:8a6b14a90bdcbcdc268acae87126c33bf4250d3842803a93a548d7c10135893a \
--hash=sha256:94a10446ad61965516aecd610a2dd28d79ab1dfd8723903e1bd19ffa985c208e \
--hash=sha256:99bda900a0bf6f9e6c69bdeb6114f7f6730b9d36a47bc1fe144263ce85bfc403 \
--hash=sha256:9dae2e738622bd35ba82fe0b06f773be137a14e6b28defb2e36efc2d809cd28a \
--hash=sha256:a04cd6021ff2756c38135a95f81b980485507bccbff4d2b8f62e537552270471 \
--hash=sha256:a3b61625b60dd5e72556520a77464e2ac568c20b8ad12ea1f4443bf5051dc624 \
--hash=sha256:a9a91fd9e7967a5bad88d542c9fce09323e15d16cb6fa9b8978390e46e68cbdf \
--hash=sha256:afc44f1b595bd736ec3762dd9a2d0ef276a6ac560c85f643acfc4c0bf0c73384 \
--hash=sha256:b5f3c8912b36e6abb843a51eecb414a1161f80c0ca0b65066c23aa449b5f98db \
--hash=sha256:cc07c8b7686dd7093f33067a02b92f4fed860d75ad2bcc4e60624f70fdb94576 \
--hash=sha256:da646eddbe026306fd1cb2c392a9aee4ebea13f2a9add9af303bb3151786a5d8 \
--hash=sha256:df93eaccd5c09e6380fab8f15c06a89944415e4bb9af64a94f467ce4c782ff8e \
--hash=sha256:e667303019770834354c75022ab0324d5ae5bf7cd7015939678033a58f87ee70 \
--hash=sha256:f921219040ce994c9118b7218b7f7b4e9394e507c97cfc869ce5358437fc26cd
PyQt5==5.10.1 \
--hash=sha256:1e652910bd1ffd23a3a48c510ecad23a57a853ed26b782cd54b16658e6f271ac \
--hash=sha256:4db7113f464c733a99fcb66c4c093a47cf7204ad3f8b3bda502efcc0839ac14b \
--hash=sha256:9c17ab3974c1fc7bbb04cc1c9dae780522c0ebc158613f3025fccae82227b5f7 \
--hash=sha256:f6035baa009acf45e5f460cf88f73580ad5dc0e72330029acd99e477f20a5d61
setuptools==39.2.0 \
--hash=sha256:8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926 \
--hash=sha256:f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2
setuptools==40.0.0 \
--hash=sha256:012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f \
--hash=sha256:d68abee4eed409fbe8c302ac4d8429a1ffef912cd047a903b5701c024048dd49
SIP==4.19.8 \
--hash=sha256:09f9a4e6c28afd0bafedb26ffba43375b97fe7207bd1a0d3513f79b7d168b331 \
--hash=sha256:105edaaa1c8aa486662226360bd3999b4b89dd56de3e314d82b83ed0587d8783 \

71
contrib/deterministic-build/requirements-hw.txt

@ -9,36 +9,35 @@ chardet==3.0.4 \
click==6.7 \
--hash=sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d \
--hash=sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b
Cython==0.28.3 \
--hash=sha256:0344e9352b0915910e212c38403b63f902ce1cba75dde7a43a9112ff960eb2a5 \
--hash=sha256:0a390c39e912fc5f82d5feae2d16ea061971407099e1efb0fecb255cb96fbeff \
--hash=sha256:0f2b2e09f94c498f555935e732b7321b5f62f00e7a789238f6c5ddd66987a54d \
--hash=sha256:15614592616b6dd5e919e158796350ebeba6cb6b5d2998cfff41b53f568c8355 \
--hash=sha256:1aae6d6e9858888144cea147eb5e677830f45faaff3d305d77378c3cba55f526 \
--hash=sha256:200583297f23e558744bc4688d8a2b2605ab6ad7d1494a9fd8c8094ad65ebf3c \
--hash=sha256:295facc211a6b55db9979455b856180f2839be22ab767ffdea55986bee83ca9f \
--hash=sha256:36c16bf39280fe857213d8da31c07a6179d3878c3dc2e435dce0974b9f8f0729 \
--hash=sha256:3fef8dfa9cf86ab7814ca31369374ddd5b9524f54406aa83b53b5937965b8e88 \
--hash=sha256:439d233d3214e3d69c033a9a93516758f2c8a03e83ea51ae14b6eed13687d224 \
--hash=sha256:455ab39c6c0849a6c008fcdf2fae42475f18d0801a3be229e8f75367bbe3b325 \
--hash=sha256:56821e3791209e6a11992e294afbf7e3dcda7d4fd54d06396dd521928d3d14fe \
--hash=sha256:62b594584889b33bbea7e71f9d7c5c6539091b341334ef7ca1ae7e30a9dd3e15 \
--hash=sha256:70f81a75fb25c1c3c61843e3a6fe771a76c4ebf4d154455a7eff0740ad47dff4 \
--hash=sha256:8011090beb09251cb4ece1e14263e574b38eda696b788552b369ad343373d0e9 \
--hash=sha256:80d6a0369333a162fc32a22637f5870f3e87fb038c7b58860bbe00b05b58aa62 \
--hash=sha256:85b04e32af58a3c008c0ba8169017770aaa342a5972b748f81d043d66363e437 \
--hash=sha256:9ed273d82116fa148c92901b9639030e087979d455982bd7bf727fb486c0bd17 \
--hash=sha256:a1af59e6c9b4acc07c429d8495fc016a35e0a1270f28c57317352f512df7e214 \
--hash=sha256:b894ff4daf8dfaf657bf2d5e7190a4de11b2400b1e0fb0902974d35c23a26dea \
--hash=sha256:c2659981150b4de04397dcfd4bff64e384d3ba25af60d1b22820fdf108298cb2 \
--hash=sha256:c981a750858f1727995acf861ab030b267d264ca6efda2f01104941187a3675f \
--hash=sha256:cc4152b19ec168391f7815d24b70c8911829ba281bd5fcd98cab9dc21abe62ff \
--hash=sha256:d0f5b1668e7f7f6fc9849f49a20c5db10562a0ab29cd66818894dfebbca7b304 \
--hash=sha256:d7152006ed1a3adb8f978077b57d237ddafa188240af53cd72b5c79e4ed000e3 \
--hash=sha256:e5f877472993474296125c22b84c334b550010815e513cccce73da854a132d64 \
--hash=sha256:e7c2c87ff2f99ed4be1bb046d6eddfb388af627928037f9e0a420c05daaf14ed \
--hash=sha256:edd7d499685655031be5b4d33005096b6345f81eeb7ab9d2dd415db0c7bcf64e \
--hash=sha256:f99a777fda569a88deea863eac2722b5e88957c4d5f4413949740da791857ac9
Cython==0.28.4 \
--hash=sha256:01487236575df8f17b46982071438dce4f7eaf8acc8fb99fca3510d343cd7a28 \
--hash=sha256:0671d17c7a27634d6819246e535241b951141ed0e3f6f2a6d618fd32344dae3e \
--hash=sha256:0e6190d6971c46729f712dd7307a9c0a8c027bfa5b4d8f2edef106b01759926c \
--hash=sha256:202587c754901d0678bd6ff89c707f099987928239049a528470c06c6c922cf8 \
--hash=sha256:345197ba9278cf6a914cb7421dc665a0531a219b0072abf6b0cebfdf68e75725 \
--hash=sha256:3a296b8d6b02f0e01ab04bedea658f43eef5ad2f8e586a820226ead1a677d9b1 \
--hash=sha256:484572a2b22823a967be106137a93f7d634db116b3f7accb37dbd760eda2fa9f \
--hash=sha256:4c67c9c803e50ceff32cc5e4769c50fc8ae8df9c4e5cc592ce8310b5a1076d23 \
--hash=sha256:539038087c321911745fc2e77049209b1231300d481cb4d682b2f95c724814b3 \
--hash=sha256:58113e0683c3688594c112103d7e9f2d0092fd2d8297a220240bea22e184dfdd \
--hash=sha256:65cb25ca4284804293a2404d1be3b5a98818be21a72791649bacbcfa4e431d41 \
--hash=sha256:699e765da2580e34b08473fc0acef3a2d7bcb7f13eb29401cd25236bcf000080 \
--hash=sha256:6b54c3470810cea49a8be90814d05c5325ceb9c5bf429fd86c36fc1b32dfc157 \
--hash=sha256:71ac1629e4eae2ed329be8caf45efea10bfe1af3d8767e12e64b83e4ea5a3250 \
--hash=sha256:722c179d3df8677f3daf45b1a2764678ed4f0aaddbaa7211a8a08ebfd907c0db \
--hash=sha256:76ac2b08d3d956d77b574bb43cbf1d37bd58b9d50c04ba281303e695854ebc46 \
--hash=sha256:7eff1157be9e26bf7494288c89979ca69d593a009e2c7420a739e2cf1e0635f5 \
--hash=sha256:99546c8696d27d0efa639c77b2f8af6e61dc3a5073caae4f27ffd991ca926f42 \
--hash=sha256:a0c263b31d335f29c11f4a9e98fbcd908d0731d4ea99bfd27c1c47caaeb4ca2e \
--hash=sha256:a29c66292605bff962adc26530c030607aa699206b12dfb84f131b0454e15df4 \
--hash=sha256:a4d3724c5a1ddd86d7d830d8e02c40151839b833791dd4b6fe9e144380fa7d37 \
--hash=sha256:aed9f33b19d542eea56c38ef3862ca56147f7903648156cd57eabb0fe47c35d6 \
--hash=sha256:b57e733dd8871d2cc7358c2e0fe33027453afffbcd0ea6a537f54877cad5131c \
--hash=sha256:d5bf4db62236e82955c40bafbaa18d54b20b5ceefa06fb57c7facc443929f4bd \
--hash=sha256:d9272dd71ab78e87fa34a0a59bbd6acc9a9c0005c834a6fc8457ff9619dc6795 \
--hash=sha256:e9d5671bcbb90a41b0832fcb3872fcbaca3d68ff11ea09724dd6cbdf31d947fb \
--hash=sha256:ee54646afb2b73b293c94cf079682d18d404ebd6c01122dc3980f111aec2d8ae \
--hash=sha256:f16a87197939977824609005b73f9ebb291b9653a14e5f27afc1c5d6f981ba39
ecdsa==0.13 \
--hash=sha256:40d002cf360d0e035cf2cb985e1308d41aaa087cbfc135b2dc2d844296ea546c \
--hash=sha256:64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa
@ -95,15 +94,15 @@ pyblake2==1.1.2 \
requests==2.19.1 \
--hash=sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1 \
--hash=sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a
setuptools==39.2.0 \
--hash=sha256:8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926 \
--hash=sha256:f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2
setuptools==40.0.0 \
--hash=sha256:012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f \
--hash=sha256:d68abee4eed409fbe8c302ac4d8429a1ffef912cd047a903b5701c024048dd49
six==1.11.0 \
--hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 \
--hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb
trezor==0.10.1 \
--hash=sha256:09b4edfa83b787975c6f30728c13bb413621d5bdf722231748758ba0181b8a60 \
--hash=sha256:5bcad3e97129fccd6f8b4cf08f81862e423373617c857feb492cfa1b1807844e
trezor==0.10.2 \
--hash=sha256:4dba4d5c53d3ca22884d79fb4aa68905fb8353a5da5f96c734645d8cf537138d \
--hash=sha256:d2b32f25982ab403758d870df1d0de86d0751c106ef1cd1289f452880ce68b84
urllib3==1.23 \
--hash=sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf \
--hash=sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5

9
contrib/deterministic-build/requirements.txt

@ -41,15 +41,18 @@ pyaes==1.6.1 \
--hash=sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f
PySocks==1.6.8 \
--hash=sha256:3fe52c55890a248676fd69dc9e3c4e811718b777834bcaab7a8125cf9deac672
QDarkStyle==2.5.4 \
--hash=sha256:3eb60922b8c4d9cedecb6897ca4c9f8a259d81bdefe5791976ccdf12432de1f0 \
--hash=sha256:51331fc6490b38c376e6ba8d8c814320c8d2d1c2663055bc396321a7c28fa8be
qrcode==6.0 \
--hash=sha256:037b0db4c93f44586e37f84c3da3f763874fcac85b2974a69a98e399ac78e1bf \
--hash=sha256:de4ffc15065e6ff20a551ad32b6b41264f3c75275675406ddfa8e3530d154be3
requests==2.19.1 \
--hash=sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1 \
--hash=sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a
setuptools==39.2.0 \
--hash=sha256:8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926 \
--hash=sha256:f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2
setuptools==40.0.0 \
--hash=sha256:012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f \
--hash=sha256:d68abee4eed409fbe8c302ac4d8429a1ffef912cd047a903b5701c024048dd49
six==1.11.0 \
--hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 \
--hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb

2
contrib/make_apk

@ -1,6 +1,6 @@
#!/bin/bash
pushd ./gui/kivy/
pushd ./electrum/gui/kivy/
if [[ -n "$1" && "$1" == "release" ]] ; then
echo -n Keystore Password:

11
contrib/make_locale

@ -8,8 +8,7 @@ import requests
os.chdir(os.path.dirname(os.path.realpath(__file__)))
os.chdir('..')
code_directories = 'gui plugins lib'
cmd = "find {} -type f -name '*.py' -o -name '*.kv'".format(code_directories)
cmd = "find electrum -type f -name '*.py' -o -name '*.kv'"
files = subprocess.check_output(cmd, shell=True)
@ -19,13 +18,13 @@ with open("app.fil", "wb") as f:
print("Found {} files to translate".format(len(files.splitlines())))
# Generate fresh translation template
if not os.path.exists('lib/locale'):
os.mkdir('lib/locale')
cmd = 'xgettext -s --from-code UTF-8 --language Python --no-wrap -f app.fil --output=lib/locale/messages.pot'
if not os.path.exists('electrum/locale'):
os.mkdir('electrum/locale')
cmd = 'xgettext -s --from-code UTF-8 --language Python --no-wrap -f app.fil --output=electrum/locale/messages.pot'
print('Generate template')
os.system(cmd)
os.chdir('lib')
os.chdir('electrum')
crowdin_identifier = 'electrum'
crowdin_file_name = 'files[electrum-client/messages.pot]'

2
contrib/requirements/requirements-binaries.txt

@ -1,2 +1,2 @@
PyQt5
PyQt5<5.11
pycryptodomex

2
electrum-env

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

2
lib/__init__.py → electrum/__init__.py

@ -10,5 +10,5 @@ from . import bitcoin
from . import transaction
from . import daemon
from .transaction import Transaction
from .plugins import BasePlugin
from .plugin import BasePlugin
from .commands import Commands, known_commands

5
lib/base_crash_reporter.py → electrum/base_crash_reporter.py

@ -28,8 +28,9 @@ import os
import requests
from electrum import ELECTRUM_VERSION, constants
from electrum.i18n import _
from .version import ELECTRUM_VERSION
from .import constants
from .i18n import _
class BaseCrashReporter(object):

0
lib/base_wizard.py → electrum/base_wizard.py

0
lib/bitcoin.py → electrum/bitcoin.py

6
lib/blockchain.py → electrum/blockchain.py

@ -34,6 +34,8 @@ MAX_TARGET = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
class MissingHeader(Exception):
pass
class InvalidHeader(Exception):
pass
def serialize_header(res):
s = int_to_hex(res.get('version'), 4) \
@ -46,9 +48,9 @@ def serialize_header(res):
def deserialize_header(s, height):
if not s:
raise Exception('Invalid header: {}'.format(s))
raise InvalidHeader('Invalid header: {}'.format(s))
if len(s) != 80:
raise Exception('Invalid header length: {}'.format(len(s)))
raise InvalidHeader('Invalid header length: {}'.format(len(s)))
hex_to_int = lambda s: int('0x' + bh2u(s[::-1]), 16)
h = {}
h['version'] = hex_to_int(s[0:4])

0
lib/checkpoints.json → electrum/checkpoints.json

0
lib/checkpoints_testnet.json → electrum/checkpoints_testnet.json

0
lib/coinchooser.py → electrum/coinchooser.py

4
lib/commands.py → electrum/commands.py

@ -35,12 +35,12 @@ from decimal import Decimal
from .import util, ecc
from .util import bfh, bh2u, format_satoshis, json_decode, print_error, json_encode
from .import bitcoin
from . import bitcoin
from .bitcoin import is_address, hash_160, COIN, TYPE_ADDRESS
from .i18n import _
from .transaction import Transaction, multisig_script
from .paymentrequest import PR_PAID, PR_UNPAID, PR_UNKNOWN, PR_EXPIRED
from .plugins import run_hook
from .plugin import run_hook
known_commands = {}

0
lib/constants.py → electrum/constants.py

0
lib/contacts.py → electrum/contacts.py

0
lib/crypto.py → electrum/crypto.py

8
lib/currencies.json → electrum/currencies.json

@ -341,6 +341,12 @@
"Bitcointoyou": [
"BRL"
],
"BitcoinVenezuela": [
"ARS",
"EUR",
"USD",
"VEF"
],
"Bitmarket": [
"PLN"
],
@ -814,4 +820,4 @@
"USD"
],
"itBit": []
}
}

4
lib/daemon.py → electrum/daemon.py

@ -41,7 +41,7 @@ from .storage import WalletStorage
from .commands import known_commands, Commands
from .simple_config import SimpleConfig
from .exchange_rate import FxThread
from .plugins import run_hook
from .plugin import run_hook
def get_lockfile(config):
@ -307,7 +307,7 @@ class Daemon(DaemonThread):
gui_name = config.get('gui', 'qt')
if gui_name in ['lite', 'classic']:
gui_name = 'qt'
gui = __import__('electrum_gui.' + gui_name, fromlist=['electrum_gui'])
gui = __import__('electrum.gui.' + gui_name, fromlist=['electrum'])
self.gui = gui.ElectrumGui(config, self, plugins)
try:
self.gui.main()

0
lib/dnssec.py → electrum/dnssec.py

0
lib/ecc.py → electrum/ecc.py

0
lib/ecc_fast.py → electrum/ecc_fast.py

1
electrum/electrum

@ -0,0 +1 @@
../run_electrum

0
lib/exchange_rate.py → electrum/exchange_rate.py

0
gui/__init__.py → electrum/gui/__init__.py

16
gui/kivy/Makefile → electrum/gui/kivy/Makefile

@ -8,25 +8,25 @@ theming:
$(PYTHON) -m kivy.atlas theming/light 1024 theming/light/*.png
prepare:
# running pre build setup
@cp tools/buildozer.spec ../../buildozer.spec
@cp tools/buildozer.spec ../../../buildozer.spec
# copy electrum to main.py
@cp ../../electrum ../../main.py
@cp ../../../run_electrum ../../../main.py
@-if [ ! -d "../../.buildozer" ];then \
cd ../..; buildozer android debug;\
cp -f gui/kivy/tools/blacklist.txt .buildozer/android/platform/python-for-android/src/blacklist.txt;\
cd ../../..; buildozer android debug;\
cp -f electrum/gui/kivy/tools/blacklist.txt .buildozer/android/platform/python-for-android/src/blacklist.txt;\
rm -rf ./.buildozer/android/platform/python-for-android/dist;\
fi
apk:
@make prepare
@-cd ../..; buildozer android debug deploy run
@-cd ../../..; buildozer android debug deploy run
@make clean
release:
@make prepare
@-cd ../..; buildozer android release
@-cd ../../..; buildozer android release
@make clean
clean:
# Cleaning up
# rename main.py to electrum
@-rm ../../main.py
@-rm ../../../main.py
# remove buildozer.spec
@-rm ../../buildozer.spec
@-rm ../../../buildozer.spec

10
gui/kivy/Readme.md → electrum/gui/kivy/Readme.md

@ -112,15 +112,7 @@ e.g. those needed in the next step.
~/.buildozer/android/platform/android-sdk-20/tools/android update sdk -u -t build-tools-27.0.3,android-19,extra-android-m2repository
## 9. Set apk version
Create a file `contrib/versions.py` with contents similar to:
```
version_apk = '3.1.999'
```
This will be the version of the Android app.
## 10. Build the APK
## 9. Build the APK
```sh
contrib/make_apk

0
gui/kivy/__init__.py → electrum/gui/kivy/__init__.py

0
gui/kivy/data/background.png → electrum/gui/kivy/data/background.png

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

0
gui/kivy/data/fonts/Roboto-Bold.ttf → electrum/gui/kivy/data/fonts/Roboto-Bold.ttf

0
gui/kivy/data/fonts/Roboto-Condensed.ttf → electrum/gui/kivy/data/fonts/Roboto-Condensed.ttf

0
gui/kivy/data/fonts/Roboto-Medium.ttf → electrum/gui/kivy/data/fonts/Roboto-Medium.ttf

0
gui/kivy/data/fonts/Roboto.ttf → electrum/gui/kivy/data/fonts/Roboto.ttf

0
gui/kivy/data/fonts/tron/License.txt → electrum/gui/kivy/data/fonts/tron/License.txt

0
gui/kivy/data/fonts/tron/Readme.txt → electrum/gui/kivy/data/fonts/tron/Readme.txt

0
gui/kivy/data/fonts/tron/Tr2n.ttf → electrum/gui/kivy/data/fonts/tron/Tr2n.ttf

0
gui/kivy/data/glsl/default.fs → electrum/gui/kivy/data/glsl/default.fs

0
gui/kivy/data/glsl/default.png → electrum/gui/kivy/data/glsl/default.png

Before

Width:  |  Height:  |  Size: 224 B

After

Width:  |  Height:  |  Size: 224 B

0
gui/kivy/data/glsl/default.vs → electrum/gui/kivy/data/glsl/default.vs

0
gui/kivy/data/glsl/header.fs → electrum/gui/kivy/data/glsl/header.fs

0
gui/kivy/data/glsl/header.vs → electrum/gui/kivy/data/glsl/header.vs

0
gui/kivy/data/images/defaulttheme-0.png → electrum/gui/kivy/data/images/defaulttheme-0.png

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

0
gui/kivy/data/images/defaulttheme.atlas → electrum/gui/kivy/data/images/defaulttheme.atlas

0
gui/kivy/data/java-classes/org/electrum/qr/SimpleScannerActivity.java → electrum/gui/kivy/data/java-classes/org/electrum/qr/SimpleScannerActivity.java

0
gui/kivy/data/logo/kivy-icon-32.png → electrum/gui/kivy/data/logo/kivy-icon-32.png

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

0
gui/kivy/data/style.kv → electrum/gui/kivy/data/style.kv

0
gui/kivy/i18n.py → electrum/gui/kivy/i18n.py

16
gui/kivy/main.kv → electrum/gui/kivy/main.kv

@ -1,7 +1,7 @@
#:import Clock kivy.clock.Clock
#:import Window kivy.core.window.Window
#:import Factory kivy.factory.Factory
#:import _ electrum_gui.kivy.i18n._
#:import _ electrum.gui.kivy.i18n._
###########################
@ -189,7 +189,7 @@
Color:
rgba: 0.192, .498, 0.745, 1
BorderImage:
source: 'atlas://gui/kivy/theming/light/card_bottom'
source: 'atlas://electrum/gui/kivy/theming/light/card_bottom'
size: self.size
pos: self.pos
@ -203,7 +203,7 @@
Color:
rgba: 0.192, .498, 0.745, 1
BorderImage:
source: 'atlas://gui/kivy/theming/light/card_bottom'
source: 'atlas://electrum/gui/kivy/theming/light/card_bottom'
size: self.size
pos: self.pos
@ -216,7 +216,7 @@
Color:
rgba: 0.192, .498, 0.745, 1
BorderImage:
source: 'atlas://gui/kivy/theming/light/card_bottom'
source: 'atlas://electrum/gui/kivy/theming/light/card_bottom'
size: self.size
pos: self.pos
@ -326,8 +326,8 @@
valign: 'middle'
bold: True
font_size: '12.5sp'
background_normal: 'atlas://gui/kivy/theming/light/tab_btn'
background_down: 'atlas://gui/kivy/theming/light/tab_btn_pressed'
background_normal: 'atlas://electrum/gui/kivy/theming/light/tab_btn'
background_down: 'atlas://electrum/gui/kivy/theming/light/tab_btn_pressed'
<ColoredLabel@Label>:
@ -416,14 +416,14 @@ BoxLayout:
rgb: .6, .6, .6
Rectangle:
size: self.size
source: 'gui/kivy/data/background.png'
source: 'electrum/gui/kivy/data/background.png'
ActionBar:
ActionView:
id: av
ActionPrevious:
app_icon: 'atlas://gui/kivy/theming/light/logo'
app_icon: 'atlas://electrum/gui/kivy/theming/light/logo'
app_icon_width: '100dp'
with_previous: False
size_hint_x: None

46
gui/kivy/main_window.py → electrum/gui/kivy/main_window.py

@ -7,13 +7,13 @@ import traceback
from decimal import Decimal
import threading
import electrum
from electrum.bitcoin import TYPE_ADDRESS
from electrum import WalletStorage, Wallet
from electrum_gui.kivy.i18n import _
from electrum.storage import WalletStorage
from electrum.wallet import Wallet
from electrum.i18n import _
from electrum.paymentrequest import InvoiceStore
from electrum.util import profiler, InvalidPassword
from electrum.plugins import run_hook
from electrum.plugin import run_hook
from electrum.util import format_satoshis, format_satoshis_plain
from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
@ -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_gui.kivy.uix.dialogs.installwizard')
#Factory.register('InfoBubble', module='electrum_gui.kivy.uix.dialogs')
#Factory.register('OutputList', module='electrum_gui.kivy.uix.dialogs')
#Factory.register('OutputItem', module='electrum_gui.kivy.uix.dialogs')
#Factory.register('InstallWizard', module='electrum.gui.kivy.uix.dialogs.installwizard')
#Factory.register('InfoBubble', module='electrum.gui.kivy.uix.dialogs')
#Factory.register('OutputList', module='electrum.gui.kivy.uix.dialogs')
#Factory.register('OutputItem', module='electrum.gui.kivy.uix.dialogs')
from .uix.dialogs.installwizard import InstallWizard
from .uix.dialogs import InfoBubble, crash_reporter
@ -56,16 +56,16 @@ from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.label import Label
from kivy.core.clipboard import Clipboard
Factory.register('TabbedCarousel', module='electrum_gui.kivy.uix.screens')
Factory.register('TabbedCarousel', module='electrum.gui.kivy.uix.screens')
# Register fonts without this you won't be able to use bold/italic...
# inside markup.
from kivy.core.text import Label
Label.register('Roboto',
'gui/kivy/data/fonts/Roboto.ttf',
'gui/kivy/data/fonts/Roboto.ttf',
'gui/kivy/data/fonts/Roboto-Bold.ttf',
'gui/kivy/data/fonts/Roboto-Bold.ttf')
'electrum/gui/kivy/data/fonts/Roboto.ttf',
'electrum/gui/kivy/data/fonts/Roboto.ttf',
'electrum/gui/kivy/data/fonts/Roboto-Bold.ttf',
'electrum/gui/kivy/data/fonts/Roboto-Bold.ttf')
from electrum.util import (base_units, NoDynamicFeeEstimates, decimal_point_to_base_unit_name,
@ -363,7 +363,7 @@ class ElectrumWindow(App):
memo = req.get('memo')
amount = req.get('amount')
fund = req.get('fund')
popup = Builder.load_file('gui/kivy/uix/ui_screens/invoice.kv')
popup = Builder.load_file('electrum/gui/kivy/uix/ui_screens/invoice.kv')
popup.is_invoice = is_invoice
popup.amount = amount
popup.requestor = requestor if is_invoice else req.get('address')
@ -382,7 +382,7 @@ class ElectrumWindow(App):
from electrum.util import format_time
fund = req.get('fund')
isaddr = 'y'
popup = Builder.load_file('gui/kivy/uix/ui_screens/invoice.kv')
popup = Builder.load_file('electrum/gui/kivy/uix/ui_screens/invoice.kv')
popup.isaddr = isaddr
popup.is_invoice = False
popup.status = status
@ -435,7 +435,7 @@ class ElectrumWindow(App):
currentActivity.startActivity(it)
def build(self):
return Builder.load_file('gui/kivy/main.kv')
return Builder.load_file('electrum/gui/kivy/main.kv')
def _pause(self):
if platform == 'android':
@ -592,7 +592,7 @@ class ElectrumWindow(App):
d = WalletDialog()
d.open()
elif name == 'status':
popup = Builder.load_file('gui/kivy/uix/ui_screens/'+name+'.kv')
popup = Builder.load_file('electrum/gui/kivy/uix/ui_screens/'+name+'.kv')
master_public_keys_layout = popup.ids.master_public_keys
for xpub in self.wallet.get_master_public_keys()[1:]:
master_public_keys_layout.add_widget(TopLabel(text=_('Master Public Key')))
@ -602,7 +602,7 @@ class ElectrumWindow(App):
master_public_keys_layout.add_widget(ref)
popup.open()
else:
popup = Builder.load_file('gui/kivy/uix/ui_screens/'+name+'.kv')
popup = Builder.load_file('electrum/gui/kivy/uix/ui_screens/'+name+'.kv')
popup.open()
@profiler
@ -618,9 +618,9 @@ class ElectrumWindow(App):
#setup lazy imports for mainscreen
Factory.register('AnimatedPopup',
module='electrum_gui.kivy.uix.dialogs')
module='electrum.gui.kivy.uix.dialogs')
Factory.register('QRCodeWidget',
module='electrum_gui.kivy.uix.qrcodewidget')
module='electrum.gui.kivy.uix.qrcodewidget')
# preload widgets. Remove this if you want to load the widgets on demand
#Cache.append('electrum_widgets', 'AnimatedPopup', Factory.AnimatedPopup())
@ -777,7 +777,7 @@ class ElectrumWindow(App):
self.send_payment(address, amount=amount, label=label, message=message)
def show_error(self, error, width='200dp', pos=None, arrow_pos=None,
exit=False, icon='atlas://gui/kivy/theming/light/error', duration=0,
exit=False, icon='atlas://electrum/gui/kivy/theming/light/error', duration=0,
modal=False):
''' Show an error Message Bubble.
'''
@ -789,7 +789,7 @@ class ElectrumWindow(App):
exit=False, duration=0, modal=False):
''' Show an Info Message Bubble.
'''
self.show_error(error, icon='atlas://gui/kivy/theming/light/important',
self.show_error(error, icon='atlas://electrum/gui/kivy/theming/light/important',
duration=duration, modal=modal, exit=exit, pos=pos,
arrow_pos=arrow_pos)
@ -829,7 +829,7 @@ class ElectrumWindow(App):
info_bubble.show_arrow = False
img.allow_stretch = True
info_bubble.dim_background = True
info_bubble.background_image = 'atlas://gui/kivy/theming/light/card'
info_bubble.background_image = 'atlas://electrum/gui/kivy/theming/light/card'
else:
info_bubble.fs = False
info_bubble.icon = icon

2
gui/kivy/nfc_scanner/__init__.py → electrum/gui/kivy/nfc_scanner/__init__.py

@ -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_gui.kivy')
('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'electrum.gui.kivy')

2
gui/kivy/nfc_scanner/scanner_android.py → electrum/gui/kivy/nfc_scanner/scanner_android.py

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

2
gui/kivy/nfc_scanner/scanner_dummy.py → electrum/gui/kivy/nfc_scanner/scanner_dummy.py

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

0
gui/kivy/theming/light/action_bar.png → electrum/gui/kivy/theming/light/action_bar.png

Before

Width:  |  Height:  |  Size: 552 B

After

Width:  |  Height:  |  Size: 552 B

0
gui/kivy/theming/light/action_button_group.png → electrum/gui/kivy/theming/light/action_button_group.png

Before

Width:  |  Height:  |  Size: 188 B

After

Width:  |  Height:  |  Size: 188 B

0
gui/kivy/theming/light/action_group_dark.png → electrum/gui/kivy/theming/light/action_group_dark.png

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 380 B

0
gui/kivy/theming/light/action_group_light.png → electrum/gui/kivy/theming/light/action_group_light.png

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 375 B

0
gui/kivy/theming/light/add_contact.png → electrum/gui/kivy/theming/light/add_contact.png

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

0
gui/kivy/theming/light/arrow_back.png → electrum/gui/kivy/theming/light/arrow_back.png

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

0
gui/kivy/theming/light/bit_logo.png → electrum/gui/kivy/theming/light/bit_logo.png

Before

Width:  |  Height:  |  Size: 683 B

After

Width:  |  Height:  |  Size: 683 B

0
gui/kivy/theming/light/blue_bg_round_rb.png → electrum/gui/kivy/theming/light/blue_bg_round_rb.png

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 242 B

0
gui/kivy/theming/light/btn_create_account.png → electrum/gui/kivy/theming/light/btn_create_account.png

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 311 B

0
gui/kivy/theming/light/btn_create_act_disabled.png → electrum/gui/kivy/theming/light/btn_create_act_disabled.png

Before

Width:  |  Height:  |  Size: 427 B

After

Width:  |  Height:  |  Size: 427 B

0
gui/kivy/theming/light/btn_nfc.png → electrum/gui/kivy/theming/light/btn_nfc.png

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 362 B

0
gui/kivy/theming/light/btn_send_address.png → electrum/gui/kivy/theming/light/btn_send_address.png

Before

Width:  |  Height:  |  Size: 210 B

After

Width:  |  Height:  |  Size: 210 B

0
gui/kivy/theming/light/btn_send_nfc.png → electrum/gui/kivy/theming/light/btn_send_nfc.png

Before

Width:  |  Height:  |  Size: 209 B

After

Width:  |  Height:  |  Size: 209 B

0
gui/kivy/theming/light/calculator.png → electrum/gui/kivy/theming/light/calculator.png

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

0
gui/kivy/theming/light/camera.png → electrum/gui/kivy/theming/light/camera.png

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
gui/kivy/theming/light/card.png → electrum/gui/kivy/theming/light/card.png

Before

Width:  |  Height:  |  Size: 866 B

After

Width:  |  Height:  |  Size: 866 B

0
gui/kivy/theming/light/card_bottom.png → electrum/gui/kivy/theming/light/card_bottom.png

Before

Width:  |  Height:  |  Size: 383 B

After

Width:  |  Height:  |  Size: 383 B

0
gui/kivy/theming/light/card_btn.png → electrum/gui/kivy/theming/light/card_btn.png

Before

Width:  |  Height:  |  Size: 357 B

After

Width:  |  Height:  |  Size: 357 B

0
gui/kivy/theming/light/card_top.png → electrum/gui/kivy/theming/light/card_top.png

Before

Width:  |  Height:  |  Size: 550 B

After

Width:  |  Height:  |  Size: 550 B

0
gui/kivy/theming/light/carousel_deselected.png → electrum/gui/kivy/theming/light/carousel_deselected.png

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
gui/kivy/theming/light/carousel_selected.png → electrum/gui/kivy/theming/light/carousel_selected.png

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
gui/kivy/theming/light/clock1.png → electrum/gui/kivy/theming/light/clock1.png

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

0
gui/kivy/theming/light/clock2.png → electrum/gui/kivy/theming/light/clock2.png

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

0
gui/kivy/theming/light/clock3.png → electrum/gui/kivy/theming/light/clock3.png

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

0
gui/kivy/theming/light/clock4.png → electrum/gui/kivy/theming/light/clock4.png

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

0
gui/kivy/theming/light/clock5.png → electrum/gui/kivy/theming/light/clock5.png

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

0
gui/kivy/theming/light/close.png → electrum/gui/kivy/theming/light/close.png

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

0
gui/kivy/theming/light/closebutton.png → electrum/gui/kivy/theming/light/closebutton.png

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

0
gui/kivy/theming/light/confirmed.png → electrum/gui/kivy/theming/light/confirmed.png

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

0
gui/kivy/theming/light/contact.png → electrum/gui/kivy/theming/light/contact.png

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
gui/kivy/theming/light/contact_overlay.png → electrum/gui/kivy/theming/light/contact_overlay.png

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

0
gui/kivy/theming/light/create_act_text.png → electrum/gui/kivy/theming/light/create_act_text.png

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 330 B

0
gui/kivy/theming/light/create_act_text_active.png → electrum/gui/kivy/theming/light/create_act_text_active.png

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 308 B

0
gui/kivy/theming/light/dialog.png → electrum/gui/kivy/theming/light/dialog.png

Before

Width:  |  Height:  |  Size: 393 B

After

Width:  |  Height:  |  Size: 393 B

0
gui/kivy/theming/light/dropdown_background.png → electrum/gui/kivy/theming/light/dropdown_background.png

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
gui/kivy/theming/light/electrum_icon640.png → electrum/gui/kivy/theming/light/electrum_icon640.png

Before

Width:  |  Height:  |  Size: 178 KiB

After

Width:  |  Height:  |  Size: 178 KiB

0
gui/kivy/theming/light/error.png → electrum/gui/kivy/theming/light/error.png

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

0
gui/kivy/theming/light/gear.png → electrum/gui/kivy/theming/light/gear.png

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

0
gui/kivy/theming/light/globe.png → electrum/gui/kivy/theming/light/globe.png

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

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

Loading…
Cancel
Save