Merge branch 'master' into docker
3
.gitignore
vendored
@ -4,10 +4,9 @@
|
|||||||
build/
|
build/
|
||||||
dist/
|
dist/
|
||||||
*.egg/
|
*.egg/
|
||||||
/electrum.py
|
|
||||||
contrib/pyinstaller/
|
contrib/pyinstaller/
|
||||||
Electrum.egg-info/
|
Electrum.egg-info/
|
||||||
gui/qt/icons_rc.py
|
electrum/gui/qt/icons_rc.py
|
||||||
locale/
|
locale/
|
||||||
.devlocaltmp/
|
.devlocaltmp/
|
||||||
*_trial_temp
|
*_trial_temp
|
||||||
|
|||||||
@ -36,7 +36,7 @@ Electrum from its root directory, without installing it on your
|
|||||||
system; all the python dependencies are included in the 'packages'
|
system; all the python dependencies are included in the 'packages'
|
||||||
directory. To run Electrum from its root directory, just do::
|
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::
|
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::
|
Compile the icons file for Qt::
|
||||||
|
|
||||||
sudo apt-get install pyqt5-dev-tools
|
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::
|
Compile the protobuf description file::
|
||||||
|
|
||||||
sudo apt-get install protobuf-compiler
|
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)::
|
Create translations (optional)::
|
||||||
|
|
||||||
@ -112,4 +112,4 @@ See `contrib/build-wine/`.
|
|||||||
Android
|
Android
|
||||||
-------
|
-------
|
||||||
|
|
||||||
See `gui/kivy/Readme.txt` file.
|
See `electrum/gui/kivy/Readme.md` file.
|
||||||
|
|||||||
@ -46,8 +46,8 @@ git submodule update
|
|||||||
rm -rf $BUILDDIR > /dev/null 2>&1
|
rm -rf $BUILDDIR > /dev/null 2>&1
|
||||||
mkdir $BUILDDIR
|
mkdir $BUILDDIR
|
||||||
|
|
||||||
cp -R ./contrib/deterministic-build/electrum-locale/locale/ ./lib/locale/
|
cp -R ./contrib/deterministic-build/electrum-locale/locale/ ./electrum/locale/
|
||||||
cp ./contrib/deterministic-build/electrum-icons/icons_rc.py ./gui/qt/
|
cp ./contrib/deterministic-build/electrum-icons/icons_rc.py ./electrum/gui/qt/
|
||||||
|
|
||||||
|
|
||||||
info "Downloading libusb..."
|
info "Downloading libusb..."
|
||||||
|
|||||||
@ -1,97 +1,96 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
|
|
||||||
from PyInstaller.utils.hooks import collect_data_files, collect_submodules, collect_dynamic_libs
|
from PyInstaller.utils.hooks import collect_data_files, collect_submodules, collect_dynamic_libs
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
PACKAGE='Electrum'
|
PACKAGE='Electrum'
|
||||||
PYPKG='electrum'
|
PYPKG='electrum'
|
||||||
MAIN_SCRIPT='electrum'
|
MAIN_SCRIPT='run_electrum'
|
||||||
ICONS_FILE='electrum.icns'
|
ICONS_FILE='electrum.icns'
|
||||||
|
|
||||||
for i, x in enumerate(sys.argv):
|
for i, x in enumerate(sys.argv):
|
||||||
if x == '--name':
|
if x == '--name':
|
||||||
VERSION = sys.argv[i+1]
|
VERSION = sys.argv[i+1]
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise Exception('no version')
|
raise Exception('no version')
|
||||||
|
|
||||||
electrum = os.path.abspath(".") + "/"
|
electrum = os.path.abspath(".") + "/"
|
||||||
block_cipher = None
|
block_cipher = None
|
||||||
|
|
||||||
# see https://github.com/pyinstaller/pyinstaller/issues/2005
|
# see https://github.com/pyinstaller/pyinstaller/issues/2005
|
||||||
hiddenimports = []
|
hiddenimports = []
|
||||||
hiddenimports += collect_submodules('trezorlib')
|
hiddenimports += collect_submodules('trezorlib')
|
||||||
hiddenimports += collect_submodules('btchip')
|
hiddenimports += collect_submodules('btchip')
|
||||||
hiddenimports += collect_submodules('keepkeylib')
|
hiddenimports += collect_submodules('keepkeylib')
|
||||||
hiddenimports += collect_submodules('websocket')
|
hiddenimports += collect_submodules('websocket')
|
||||||
|
|
||||||
datas = [
|
datas = [
|
||||||
(electrum+'lib/*.json', PYPKG),
|
(electrum+'electrum/*.json', PYPKG),
|
||||||
(electrum+'lib/wordlist/english.txt', PYPKG + '/wordlist'),
|
(electrum+'electrum/wordlist/english.txt', PYPKG + '/wordlist'),
|
||||||
(electrum+'lib/locale', PYPKG + '/locale'),
|
(electrum+'electrum/locale', PYPKG + '/locale')
|
||||||
(electrum+'plugins', PYPKG + '_plugins'),
|
]
|
||||||
]
|
datas += collect_data_files('trezorlib')
|
||||||
datas += collect_data_files('trezorlib')
|
datas += collect_data_files('btchip')
|
||||||
datas += collect_data_files('btchip')
|
datas += collect_data_files('keepkeylib')
|
||||||
datas += collect_data_files('keepkeylib')
|
|
||||||
|
# Add libusb so Trezor will work
|
||||||
# Add libusb so Trezor will work
|
binaries = [(electrum + "contrib/build-osx/libusb-1.0.dylib", ".")]
|
||||||
binaries = [(electrum + "contrib/build-osx/libusb-1.0.dylib", ".")]
|
binaries += [(electrum + "contrib/build-osx/libsecp256k1.0.dylib", ".")]
|
||||||
binaries += [(electrum + "contrib/build-osx/libsecp256k1.0.dylib", ".")]
|
|
||||||
|
# Workaround for "Retro Look":
|
||||||
# Workaround for "Retro Look":
|
binaries += [b for b in collect_dynamic_libs('PyQt5') if 'macstyle' in b[0]]
|
||||||
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
|
||||||
# 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,
|
||||||
a = Analysis([electrum+MAIN_SCRIPT,
|
electrum+'electrum/gui/qt/main_window.py',
|
||||||
electrum+'gui/qt/main_window.py',
|
electrum+'electrum/gui/text.py',
|
||||||
electrum+'gui/text.py',
|
electrum+'electrum/util.py',
|
||||||
electrum+'lib/util.py',
|
electrum+'electrum/wallet.py',
|
||||||
electrum+'lib/wallet.py',
|
electrum+'electrum/simple_config.py',
|
||||||
electrum+'lib/simple_config.py',
|
electrum+'electrum/bitcoin.py',
|
||||||
electrum+'lib/bitcoin.py',
|
electrum+'electrum/dnssec.py',
|
||||||
electrum+'lib/dnssec.py',
|
electrum+'electrum/commands.py',
|
||||||
electrum+'lib/commands.py',
|
electrum+'electrum/plugins/cosigner_pool/qt.py',
|
||||||
electrum+'plugins/cosigner_pool/qt.py',
|
electrum+'electrum/plugins/email_requests/qt.py',
|
||||||
electrum+'plugins/email_requests/qt.py',
|
electrum+'electrum/plugins/trezor/client.py',
|
||||||
electrum+'plugins/trezor/client.py',
|
electrum+'electrum/plugins/trezor/qt.py',
|
||||||
electrum+'plugins/trezor/qt.py',
|
electrum+'electrum/plugins/keepkey/qt.py',
|
||||||
electrum+'plugins/keepkey/qt.py',
|
electrum+'electrum/plugins/ledger/qt.py',
|
||||||
electrum+'plugins/ledger/qt.py',
|
],
|
||||||
],
|
binaries=binaries,
|
||||||
binaries=binaries,
|
datas=datas,
|
||||||
datas=datas,
|
hiddenimports=hiddenimports,
|
||||||
hiddenimports=hiddenimports,
|
hookspath=[])
|
||||||
hookspath=[])
|
|
||||||
|
# http://stackoverflow.com/questions/19055089/pyinstaller-onefile-warning-pyconfig-h-when-importing-scipy-or-scipy-signal
|
||||||
# http://stackoverflow.com/questions/19055089/pyinstaller-onefile-warning-pyconfig-h-when-importing-scipy-or-scipy-signal
|
for d in a.datas:
|
||||||
for d in a.datas:
|
if 'pyconfig' in d[0]:
|
||||||
if 'pyconfig' in d[0]:
|
a.datas.remove(d)
|
||||||
a.datas.remove(d)
|
break
|
||||||
break
|
|
||||||
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||||
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
|
||||||
|
exe = EXE(pyz,
|
||||||
exe = EXE(pyz,
|
a.scripts,
|
||||||
a.scripts,
|
a.binaries,
|
||||||
a.binaries,
|
a.datas,
|
||||||
a.datas,
|
name=PACKAGE,
|
||||||
name=PACKAGE,
|
debug=False,
|
||||||
debug=False,
|
strip=False,
|
||||||
strip=False,
|
upx=True,
|
||||||
upx=True,
|
icon=electrum+ICONS_FILE,
|
||||||
icon=electrum+ICONS_FILE,
|
console=False)
|
||||||
console=False)
|
|
||||||
|
app = BUNDLE(exe,
|
||||||
app = BUNDLE(exe,
|
version = VERSION,
|
||||||
version = VERSION,
|
name=PACKAGE + '.app',
|
||||||
name=PACKAGE + '.app',
|
icon=electrum+ICONS_FILE,
|
||||||
icon=electrum+ICONS_FILE,
|
bundle_identifier=None,
|
||||||
bundle_identifier=None,
|
info_plist={
|
||||||
info_plist={
|
'NSHighResolutionCapable': 'True',
|
||||||
'NSHighResolutionCapable': 'True',
|
'NSSupportsAutomaticGraphicsSwitching': 'True'
|
||||||
'NSSupportsAutomaticGraphicsSwitching': 'True'
|
}
|
||||||
}
|
)
|
||||||
)
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
NAME_ROOT=electrum
|
NAME_ROOT=electrum
|
||||||
PYTHON_VERSION=3.5.4
|
PYTHON_VERSION=3.6.6
|
||||||
|
|
||||||
# These settings probably don't need any change
|
# These settings probably don't need any change
|
||||||
export WINEPREFIX=/opt/wine64
|
export WINEPREFIX=/opt/wine64
|
||||||
@ -44,8 +44,8 @@ find -exec touch -d '2000-11-11T11:11:11+00:00' {} +
|
|||||||
popd
|
popd
|
||||||
|
|
||||||
cp $WINEPREFIX/drive_c/electrum/LICENCE .
|
cp $WINEPREFIX/drive_c/electrum/LICENCE .
|
||||||
cp -r $WINEPREFIX/drive_c/electrum/contrib/deterministic-build/electrum-locale/locale $WINEPREFIX/drive_c/electrum/lib/
|
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/gui/qt/
|
cp $WINEPREFIX/drive_c/electrum/contrib/deterministic-build/electrum-icons/icons_rc.py $WINEPREFIX/drive_c/electrum/electrum/gui/qt/
|
||||||
|
|
||||||
# Install frozen dependencies
|
# Install frozen dependencies
|
||||||
$PYTHON -m pip install -r ../../deterministic-build/requirements.txt
|
$PYTHON -m pip install -r ../../deterministic-build/requirements.txt
|
||||||
|
|||||||
@ -10,7 +10,7 @@ for i, x in enumerate(sys.argv):
|
|||||||
else:
|
else:
|
||||||
raise Exception('no name')
|
raise Exception('no name')
|
||||||
|
|
||||||
PYTHON_VERSION = '3.5.4'
|
PYTHON_VERSION = '3.6.6'
|
||||||
PYHOME = 'c:/python' + PYTHON_VERSION
|
PYHOME = 'c:/python' + PYTHON_VERSION
|
||||||
|
|
||||||
home = 'C:\\electrum\\'
|
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', '.')]
|
binaries += [('C:/tmp/libsecp256k1.dll', '.')]
|
||||||
|
|
||||||
datas = [
|
datas = [
|
||||||
(home+'lib/*.json', 'electrum'),
|
(home+'electrum/*.json', 'electrum'),
|
||||||
(home+'lib/wordlist/english.txt', 'electrum/wordlist'),
|
(home+'electrum/wordlist/english.txt', 'electrum/wordlist'),
|
||||||
(home+'lib/locale', 'electrum/locale'),
|
(home+'electrum/locale', 'electrum/locale'),
|
||||||
(home+'plugins', 'electrum_plugins'),
|
|
||||||
('C:\\Program Files (x86)\\ZBar\\bin\\', '.')
|
('C:\\Program Files (x86)\\ZBar\\bin\\', '.')
|
||||||
]
|
]
|
||||||
datas += collect_data_files('trezorlib')
|
datas += collect_data_files('trezorlib')
|
||||||
@ -42,21 +41,21 @@ datas += collect_data_files('btchip')
|
|||||||
datas += collect_data_files('keepkeylib')
|
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
|
# 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',
|
a = Analysis([home+'run_electrum',
|
||||||
home+'gui/qt/main_window.py',
|
home+'electrum/gui/qt/main_window.py',
|
||||||
home+'gui/text.py',
|
home+'electrum/gui/text.py',
|
||||||
home+'lib/util.py',
|
home+'electrum/util.py',
|
||||||
home+'lib/wallet.py',
|
home+'electrum/wallet.py',
|
||||||
home+'lib/simple_config.py',
|
home+'electrum/simple_config.py',
|
||||||
home+'lib/bitcoin.py',
|
home+'electrum/bitcoin.py',
|
||||||
home+'lib/dnssec.py',
|
home+'electrum/dnssec.py',
|
||||||
home+'lib/commands.py',
|
home+'electrum/commands.py',
|
||||||
home+'plugins/cosigner_pool/qt.py',
|
home+'electrum/plugins/cosigner_pool/qt.py',
|
||||||
home+'plugins/email_requests/qt.py',
|
home+'electrum/plugins/email_requests/qt.py',
|
||||||
home+'plugins/trezor/client.py',
|
home+'electrum/plugins/trezor/client.py',
|
||||||
home+'plugins/trezor/qt.py',
|
home+'electrum/plugins/trezor/qt.py',
|
||||||
home+'plugins/keepkey/qt.py',
|
home+'electrum/plugins/keepkey/qt.py',
|
||||||
home+'plugins/ledger/qt.py',
|
home+'electrum/plugins/ledger/qt.py',
|
||||||
#home+'packages/requests/utils.py'
|
#home+'packages/requests/utils.py'
|
||||||
],
|
],
|
||||||
binaries=binaries,
|
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
|
# http://stackoverflow.com/questions/19055089/pyinstaller-onefile-warning-pyconfig-h-when-importing-scipy-or-scipy-signal
|
||||||
for d in a.datas:
|
for d in a.datas:
|
||||||
if 'pyconfig' in d[0]:
|
if 'pyconfig' in d[0]:
|
||||||
a.datas.remove(d)
|
a.datas.remove(d)
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -85,7 +84,7 @@ exe_standalone = EXE(
|
|||||||
pyz,
|
pyz,
|
||||||
a.scripts,
|
a.scripts,
|
||||||
a.binaries,
|
a.binaries,
|
||||||
a.datas,
|
a.datas,
|
||||||
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + ".exe"),
|
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + ".exe"),
|
||||||
debug=False,
|
debug=False,
|
||||||
strip=None,
|
strip=None,
|
||||||
|
|||||||
@ -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_URL=https://prdownloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.22/$LIBUSB_FILENAME?download
|
||||||
LIBUSB_SHA256=671f1a420757b4480e7fadc8313d6fb3cbb75ca00934c417c1efa6e77fb8779b
|
LIBUSB_SHA256=671f1a420757b4480e7fadc8313d6fb3cbb75ca00934c417c1efa6e77fb8779b
|
||||||
|
|
||||||
PYTHON_VERSION=3.5.4
|
PYTHON_VERSION=3.6.6
|
||||||
|
|
||||||
## These settings probably don't need change
|
## These settings probably don't need change
|
||||||
export WINEPREFIX=/opt/wine64
|
export WINEPREFIX=/opt/wine64
|
||||||
@ -81,6 +81,11 @@ set -e
|
|||||||
|
|
||||||
wine 'wineboot'
|
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
|
cd /tmp/electrum-build
|
||||||
|
|
||||||
# Install Python
|
# Install Python
|
||||||
|
|||||||
@ -1,42 +1,43 @@
|
|||||||
pip==10.0.1 \
|
pip==10.0.1 \
|
||||||
--hash=sha256:717cdffb2833be8409433a93746744b59505f42146e8d37de6c62b430e25d6d7 \
|
--hash=sha256:717cdffb2833be8409433a93746744b59505f42146e8d37de6c62b430e25d6d7 \
|
||||||
--hash=sha256:f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdbd7ee68
|
--hash=sha256:f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdbd7ee68
|
||||||
pycryptodomex==3.6.1 \
|
pycryptodomex==3.6.4 \
|
||||||
--hash=sha256:1869d7735f445bbf1681afa2acce10ad829857cfb7a4a7b702e484f222021892 \
|
--hash=sha256:0461e88a7199f9e88f9f90c2c1e109e9e1f7bbb94dc6192e5df52829d31510c1 \
|
||||||
--hash=sha256:24e054190d2b11ad3b8517d186c0b3df6f902a5f5a91be8e4bb6a3fcdc65b2cf \
|
--hash=sha256:08d0aba5a72e8af5da118ac4b6a5d75befceca7dd92a031b040ed5ff4417cec2 \
|
||||||
--hash=sha256:26967d31fabb0d80cb2b254a7c0f55f8dec9931e8676891edd24aa5aaeb0d021 \
|
--hash=sha256:0e22d47935d5fa95f556d5f5857576bc6750233964de06a840d58459010c3889 \
|
||||||
--hash=sha256:2a341b57bb5844d53b8f632f79277cd534762f502fb73bff5dc1a2f615ff91ed \
|
--hash=sha256:10ef21d1728ec0b8afc4f8e1d8d9ea66f317154ea18731a4a05bd996cdc33fdf \
|
||||||
--hash=sha256:43d6eb014aba7be354f3e8fe2693fe96446f6791da2b9570e8d54d481e3ab224 \
|
--hash=sha256:1962b81eef81bf5c42d625816904a22a0bd23d15ca5d49891a54e3c0d0189d84 \
|
||||||
--hash=sha256:4c271577f4f8c5cced55a60f4504b34545121c14facb8fc357f89c24089c81fc \
|
--hash=sha256:24aae88efe3cbcb4a9cf840b2c352e7de1d6c2c5b3df37ff99b5c7e271e8f3a8 \
|
||||||
--hash=sha256:59721f2853df9cf2265304d3b6d6d8cebe3a86b1fddc00f2bfbf18eb2a48fb78 \
|
--hash=sha256:43ad6d1d7ca545d53360bf412ee70fcb9ede876b4376fc6db06fc7328f70588c \
|
||||||
--hash=sha256:63a77a1b27d12ed1c42f4e539d9dbe588a88b70ec64b55271cdf1f56c1223bd6 \
|
--hash=sha256:4daabe7c0404e673b9029aa43761c779b9b4df2cbe11ccd94daded6a0acd8808 \
|
||||||
--hash=sha256:6d04640386c55b9f44015747496c3b6582360b5b3b4e42f9ce3fc7c6840f80d0 \
|
--hash=sha256:4e15af025e02b04b0d0728e8248e4384d3dc7a3a89a020f5bd4d04ef2c5d9d4c \
|
||||||
--hash=sha256:730bd75d90e16975a112ea79863ce1faa7703d3b54f10d77656e7dadf6be0ef6 \
|
--hash=sha256:5b4d3c4a069a05972e0ed7111071bbcb4727ac652b5d7e8f786e8ea2fe63306b \
|
||||||
--hash=sha256:75a300aa86c56e9c19a7b476c397cb22fda3be7af4cf2f105990fdd94c52f486 \
|
--hash=sha256:67ad8b2ad15a99ae70e287454a112f67d2abaf160ee9c97f9daebf2296066447 \
|
||||||
--hash=sha256:7c6f67005c6e421f02fd7fe9d95876094307b31628d728adc6c2e038e2ed9c09 \
|
--hash=sha256:6d7e6fb69d9fd2c57e177f8a9cdf6489a725da77568e3d0a226c7dd18504396a \
|
||||||
--hash=sha256:82b758f870c8dd859f9b58bc9cff007403b68742f9e0376e2cbd8aa2ad3baa83 \
|
--hash=sha256:7907d7a5adde7cd07d19f129a4afa892b68b0b52a07eaf989e48e2677040b4bf \
|
||||||
--hash=sha256:8528a958b746c4da767bfba5ac370250dcb741f4c69e55873bd6efe89ac07291 \
|
--hash=sha256:88210edafd564c8ff4a68716aaf0627e3bc43e9c192a33d6f5616743f72c2d9b \
|
||||||
--hash=sha256:93582ea5bc3e8f95cb36d9dd752c01452085b54b396e3ed775ac1793b8dc486a \
|
--hash=sha256:8a6b14a90bdcbcdc268acae87126c33bf4250d3842803a93a548d7c10135893a \
|
||||||
--hash=sha256:94e0105ad8d82d3bf5a032c92fc03b01e3bc9ea40b58308c2da42f8cf8c16c47 \
|
--hash=sha256:94a10446ad61965516aecd610a2dd28d79ab1dfd8723903e1bd19ffa985c208e \
|
||||||
--hash=sha256:a65889424bf10a884ff031e7f3fd12273dd5b420ee08ca8fcfd431a2f6cbabc1 \
|
--hash=sha256:99bda900a0bf6f9e6c69bdeb6114f7f6730b9d36a47bc1fe144263ce85bfc403 \
|
||||||
--hash=sha256:a8467982d26bfb90089f50c3c5d9ed541b7fe9f9df20803fede70d5046cd4ff1 \
|
--hash=sha256:9dae2e738622bd35ba82fe0b06f773be137a14e6b28defb2e36efc2d809cd28a \
|
||||||
--hash=sha256:ab497d4e7361511ede562ed3cd4528f46c005781bc23b1b943612d27bfb078c3 \
|
--hash=sha256:a04cd6021ff2756c38135a95f81b980485507bccbff4d2b8f62e537552270471 \
|
||||||
--hash=sha256:bb05caf3f6cf41d964c01e08dfaddfe48086c7b3e96708d50647f0a29ff33f56 \
|
--hash=sha256:a3b61625b60dd5e72556520a77464e2ac568c20b8ad12ea1f4443bf5051dc624 \
|
||||||
--hash=sha256:c4643647f5656855975b2aaf70fe3aa1e0c1558f8d1b5de0c9a8ccac65114c57 \
|
--hash=sha256:a9a91fd9e7967a5bad88d542c9fce09323e15d16cb6fa9b8978390e46e68cbdf \
|
||||||
--hash=sha256:c550e20834b679ed0b7608c345a816f97047d2297aab4f4599f95edee5d16e99 \
|
--hash=sha256:afc44f1b595bd736ec3762dd9a2d0ef276a6ac560c85f643acfc4c0bf0c73384 \
|
||||||
--hash=sha256:cc797712add76cd658110585481c380833637b68df1404190777ba715a81c9b9 \
|
--hash=sha256:b5f3c8912b36e6abb843a51eecb414a1161f80c0ca0b65066c23aa449b5f98db \
|
||||||
--hash=sha256:dff0c883d495bf45d18acc74938d1de4d6a08b3345acb9177a46c6997a578c44 \
|
--hash=sha256:cc07c8b7686dd7093f33067a02b92f4fed860d75ad2bcc4e60624f70fdb94576 \
|
||||||
--hash=sha256:e4f69af1f5b46255ec7b8116a853879a55e8e6b595a73c39f14ca430c410c469 \
|
--hash=sha256:da646eddbe026306fd1cb2c392a9aee4ebea13f2a9add9af303bb3151786a5d8 \
|
||||||
--hash=sha256:f61d0d83e9dd974849f9b0826ec20f49dbd9ed233fd90bf2592be1337231418e \
|
--hash=sha256:df93eaccd5c09e6380fab8f15c06a89944415e4bb9af64a94f467ce4c782ff8e \
|
||||||
--hash=sha256:f65f21d2b616c30ad4ba801504343eb768fd0a2894c5f587e784201320556543
|
--hash=sha256:e667303019770834354c75022ab0324d5ae5bf7cd7015939678033a58f87ee70 \
|
||||||
|
--hash=sha256:f921219040ce994c9118b7218b7f7b4e9394e507c97cfc869ce5358437fc26cd
|
||||||
PyQt5==5.10.1 \
|
PyQt5==5.10.1 \
|
||||||
--hash=sha256:1e652910bd1ffd23a3a48c510ecad23a57a853ed26b782cd54b16658e6f271ac \
|
--hash=sha256:1e652910bd1ffd23a3a48c510ecad23a57a853ed26b782cd54b16658e6f271ac \
|
||||||
--hash=sha256:4db7113f464c733a99fcb66c4c093a47cf7204ad3f8b3bda502efcc0839ac14b \
|
--hash=sha256:4db7113f464c733a99fcb66c4c093a47cf7204ad3f8b3bda502efcc0839ac14b \
|
||||||
--hash=sha256:9c17ab3974c1fc7bbb04cc1c9dae780522c0ebc158613f3025fccae82227b5f7 \
|
--hash=sha256:9c17ab3974c1fc7bbb04cc1c9dae780522c0ebc158613f3025fccae82227b5f7 \
|
||||||
--hash=sha256:f6035baa009acf45e5f460cf88f73580ad5dc0e72330029acd99e477f20a5d61
|
--hash=sha256:f6035baa009acf45e5f460cf88f73580ad5dc0e72330029acd99e477f20a5d61
|
||||||
setuptools==39.2.0 \
|
setuptools==40.0.0 \
|
||||||
--hash=sha256:8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926 \
|
--hash=sha256:012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f \
|
||||||
--hash=sha256:f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2
|
--hash=sha256:d68abee4eed409fbe8c302ac4d8429a1ffef912cd047a903b5701c024048dd49
|
||||||
SIP==4.19.8 \
|
SIP==4.19.8 \
|
||||||
--hash=sha256:09f9a4e6c28afd0bafedb26ffba43375b97fe7207bd1a0d3513f79b7d168b331 \
|
--hash=sha256:09f9a4e6c28afd0bafedb26ffba43375b97fe7207bd1a0d3513f79b7d168b331 \
|
||||||
--hash=sha256:105edaaa1c8aa486662226360bd3999b4b89dd56de3e314d82b83ed0587d8783 \
|
--hash=sha256:105edaaa1c8aa486662226360bd3999b4b89dd56de3e314d82b83ed0587d8783 \
|
||||||
|
|||||||
@ -9,36 +9,35 @@ chardet==3.0.4 \
|
|||||||
click==6.7 \
|
click==6.7 \
|
||||||
--hash=sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d \
|
--hash=sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d \
|
||||||
--hash=sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b
|
--hash=sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b
|
||||||
Cython==0.28.3 \
|
Cython==0.28.4 \
|
||||||
--hash=sha256:0344e9352b0915910e212c38403b63f902ce1cba75dde7a43a9112ff960eb2a5 \
|
--hash=sha256:01487236575df8f17b46982071438dce4f7eaf8acc8fb99fca3510d343cd7a28 \
|
||||||
--hash=sha256:0a390c39e912fc5f82d5feae2d16ea061971407099e1efb0fecb255cb96fbeff \
|
--hash=sha256:0671d17c7a27634d6819246e535241b951141ed0e3f6f2a6d618fd32344dae3e \
|
||||||
--hash=sha256:0f2b2e09f94c498f555935e732b7321b5f62f00e7a789238f6c5ddd66987a54d \
|
--hash=sha256:0e6190d6971c46729f712dd7307a9c0a8c027bfa5b4d8f2edef106b01759926c \
|
||||||
--hash=sha256:15614592616b6dd5e919e158796350ebeba6cb6b5d2998cfff41b53f568c8355 \
|
--hash=sha256:202587c754901d0678bd6ff89c707f099987928239049a528470c06c6c922cf8 \
|
||||||
--hash=sha256:1aae6d6e9858888144cea147eb5e677830f45faaff3d305d77378c3cba55f526 \
|
--hash=sha256:345197ba9278cf6a914cb7421dc665a0531a219b0072abf6b0cebfdf68e75725 \
|
||||||
--hash=sha256:200583297f23e558744bc4688d8a2b2605ab6ad7d1494a9fd8c8094ad65ebf3c \
|
--hash=sha256:3a296b8d6b02f0e01ab04bedea658f43eef5ad2f8e586a820226ead1a677d9b1 \
|
||||||
--hash=sha256:295facc211a6b55db9979455b856180f2839be22ab767ffdea55986bee83ca9f \
|
--hash=sha256:484572a2b22823a967be106137a93f7d634db116b3f7accb37dbd760eda2fa9f \
|
||||||
--hash=sha256:36c16bf39280fe857213d8da31c07a6179d3878c3dc2e435dce0974b9f8f0729 \
|
--hash=sha256:4c67c9c803e50ceff32cc5e4769c50fc8ae8df9c4e5cc592ce8310b5a1076d23 \
|
||||||
--hash=sha256:3fef8dfa9cf86ab7814ca31369374ddd5b9524f54406aa83b53b5937965b8e88 \
|
--hash=sha256:539038087c321911745fc2e77049209b1231300d481cb4d682b2f95c724814b3 \
|
||||||
--hash=sha256:439d233d3214e3d69c033a9a93516758f2c8a03e83ea51ae14b6eed13687d224 \
|
--hash=sha256:58113e0683c3688594c112103d7e9f2d0092fd2d8297a220240bea22e184dfdd \
|
||||||
--hash=sha256:455ab39c6c0849a6c008fcdf2fae42475f18d0801a3be229e8f75367bbe3b325 \
|
--hash=sha256:65cb25ca4284804293a2404d1be3b5a98818be21a72791649bacbcfa4e431d41 \
|
||||||
--hash=sha256:56821e3791209e6a11992e294afbf7e3dcda7d4fd54d06396dd521928d3d14fe \
|
--hash=sha256:699e765da2580e34b08473fc0acef3a2d7bcb7f13eb29401cd25236bcf000080 \
|
||||||
--hash=sha256:62b594584889b33bbea7e71f9d7c5c6539091b341334ef7ca1ae7e30a9dd3e15 \
|
--hash=sha256:6b54c3470810cea49a8be90814d05c5325ceb9c5bf429fd86c36fc1b32dfc157 \
|
||||||
--hash=sha256:70f81a75fb25c1c3c61843e3a6fe771a76c4ebf4d154455a7eff0740ad47dff4 \
|
--hash=sha256:71ac1629e4eae2ed329be8caf45efea10bfe1af3d8767e12e64b83e4ea5a3250 \
|
||||||
--hash=sha256:8011090beb09251cb4ece1e14263e574b38eda696b788552b369ad343373d0e9 \
|
--hash=sha256:722c179d3df8677f3daf45b1a2764678ed4f0aaddbaa7211a8a08ebfd907c0db \
|
||||||
--hash=sha256:80d6a0369333a162fc32a22637f5870f3e87fb038c7b58860bbe00b05b58aa62 \
|
--hash=sha256:76ac2b08d3d956d77b574bb43cbf1d37bd58b9d50c04ba281303e695854ebc46 \
|
||||||
--hash=sha256:85b04e32af58a3c008c0ba8169017770aaa342a5972b748f81d043d66363e437 \
|
--hash=sha256:7eff1157be9e26bf7494288c89979ca69d593a009e2c7420a739e2cf1e0635f5 \
|
||||||
--hash=sha256:9ed273d82116fa148c92901b9639030e087979d455982bd7bf727fb486c0bd17 \
|
--hash=sha256:99546c8696d27d0efa639c77b2f8af6e61dc3a5073caae4f27ffd991ca926f42 \
|
||||||
--hash=sha256:a1af59e6c9b4acc07c429d8495fc016a35e0a1270f28c57317352f512df7e214 \
|
--hash=sha256:a0c263b31d335f29c11f4a9e98fbcd908d0731d4ea99bfd27c1c47caaeb4ca2e \
|
||||||
--hash=sha256:b894ff4daf8dfaf657bf2d5e7190a4de11b2400b1e0fb0902974d35c23a26dea \
|
--hash=sha256:a29c66292605bff962adc26530c030607aa699206b12dfb84f131b0454e15df4 \
|
||||||
--hash=sha256:c2659981150b4de04397dcfd4bff64e384d3ba25af60d1b22820fdf108298cb2 \
|
--hash=sha256:a4d3724c5a1ddd86d7d830d8e02c40151839b833791dd4b6fe9e144380fa7d37 \
|
||||||
--hash=sha256:c981a750858f1727995acf861ab030b267d264ca6efda2f01104941187a3675f \
|
--hash=sha256:aed9f33b19d542eea56c38ef3862ca56147f7903648156cd57eabb0fe47c35d6 \
|
||||||
--hash=sha256:cc4152b19ec168391f7815d24b70c8911829ba281bd5fcd98cab9dc21abe62ff \
|
--hash=sha256:b57e733dd8871d2cc7358c2e0fe33027453afffbcd0ea6a537f54877cad5131c \
|
||||||
--hash=sha256:d0f5b1668e7f7f6fc9849f49a20c5db10562a0ab29cd66818894dfebbca7b304 \
|
--hash=sha256:d5bf4db62236e82955c40bafbaa18d54b20b5ceefa06fb57c7facc443929f4bd \
|
||||||
--hash=sha256:d7152006ed1a3adb8f978077b57d237ddafa188240af53cd72b5c79e4ed000e3 \
|
--hash=sha256:d9272dd71ab78e87fa34a0a59bbd6acc9a9c0005c834a6fc8457ff9619dc6795 \
|
||||||
--hash=sha256:e5f877472993474296125c22b84c334b550010815e513cccce73da854a132d64 \
|
--hash=sha256:e9d5671bcbb90a41b0832fcb3872fcbaca3d68ff11ea09724dd6cbdf31d947fb \
|
||||||
--hash=sha256:e7c2c87ff2f99ed4be1bb046d6eddfb388af627928037f9e0a420c05daaf14ed \
|
--hash=sha256:ee54646afb2b73b293c94cf079682d18d404ebd6c01122dc3980f111aec2d8ae \
|
||||||
--hash=sha256:edd7d499685655031be5b4d33005096b6345f81eeb7ab9d2dd415db0c7bcf64e \
|
--hash=sha256:f16a87197939977824609005b73f9ebb291b9653a14e5f27afc1c5d6f981ba39
|
||||||
--hash=sha256:f99a777fda569a88deea863eac2722b5e88957c4d5f4413949740da791857ac9
|
|
||||||
ecdsa==0.13 \
|
ecdsa==0.13 \
|
||||||
--hash=sha256:40d002cf360d0e035cf2cb985e1308d41aaa087cbfc135b2dc2d844296ea546c \
|
--hash=sha256:40d002cf360d0e035cf2cb985e1308d41aaa087cbfc135b2dc2d844296ea546c \
|
||||||
--hash=sha256:64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa
|
--hash=sha256:64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa
|
||||||
@ -95,15 +94,15 @@ pyblake2==1.1.2 \
|
|||||||
requests==2.19.1 \
|
requests==2.19.1 \
|
||||||
--hash=sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1 \
|
--hash=sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1 \
|
||||||
--hash=sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a
|
--hash=sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a
|
||||||
setuptools==39.2.0 \
|
setuptools==40.0.0 \
|
||||||
--hash=sha256:8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926 \
|
--hash=sha256:012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f \
|
||||||
--hash=sha256:f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2
|
--hash=sha256:d68abee4eed409fbe8c302ac4d8429a1ffef912cd047a903b5701c024048dd49
|
||||||
six==1.11.0 \
|
six==1.11.0 \
|
||||||
--hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 \
|
--hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 \
|
||||||
--hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb
|
--hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb
|
||||||
trezor==0.10.1 \
|
trezor==0.10.2 \
|
||||||
--hash=sha256:09b4edfa83b787975c6f30728c13bb413621d5bdf722231748758ba0181b8a60 \
|
--hash=sha256:4dba4d5c53d3ca22884d79fb4aa68905fb8353a5da5f96c734645d8cf537138d \
|
||||||
--hash=sha256:5bcad3e97129fccd6f8b4cf08f81862e423373617c857feb492cfa1b1807844e
|
--hash=sha256:d2b32f25982ab403758d870df1d0de86d0751c106ef1cd1289f452880ce68b84
|
||||||
urllib3==1.23 \
|
urllib3==1.23 \
|
||||||
--hash=sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf \
|
--hash=sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf \
|
||||||
--hash=sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5
|
--hash=sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5
|
||||||
|
|||||||
@ -41,15 +41,18 @@ pyaes==1.6.1 \
|
|||||||
--hash=sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f
|
--hash=sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f
|
||||||
PySocks==1.6.8 \
|
PySocks==1.6.8 \
|
||||||
--hash=sha256:3fe52c55890a248676fd69dc9e3c4e811718b777834bcaab7a8125cf9deac672
|
--hash=sha256:3fe52c55890a248676fd69dc9e3c4e811718b777834bcaab7a8125cf9deac672
|
||||||
|
QDarkStyle==2.5.4 \
|
||||||
|
--hash=sha256:3eb60922b8c4d9cedecb6897ca4c9f8a259d81bdefe5791976ccdf12432de1f0 \
|
||||||
|
--hash=sha256:51331fc6490b38c376e6ba8d8c814320c8d2d1c2663055bc396321a7c28fa8be
|
||||||
qrcode==6.0 \
|
qrcode==6.0 \
|
||||||
--hash=sha256:037b0db4c93f44586e37f84c3da3f763874fcac85b2974a69a98e399ac78e1bf \
|
--hash=sha256:037b0db4c93f44586e37f84c3da3f763874fcac85b2974a69a98e399ac78e1bf \
|
||||||
--hash=sha256:de4ffc15065e6ff20a551ad32b6b41264f3c75275675406ddfa8e3530d154be3
|
--hash=sha256:de4ffc15065e6ff20a551ad32b6b41264f3c75275675406ddfa8e3530d154be3
|
||||||
requests==2.19.1 \
|
requests==2.19.1 \
|
||||||
--hash=sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1 \
|
--hash=sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1 \
|
||||||
--hash=sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a
|
--hash=sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a
|
||||||
setuptools==39.2.0 \
|
setuptools==40.0.0 \
|
||||||
--hash=sha256:8fca9275c89964f13da985c3656cb00ba029d7f3916b37990927ffdf264e7926 \
|
--hash=sha256:012adb8e25fbfd64c652e99e7bab58799a3aaf05d39ab38561f69190a909015f \
|
||||||
--hash=sha256:f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2
|
--hash=sha256:d68abee4eed409fbe8c302ac4d8429a1ffef912cd047a903b5701c024048dd49
|
||||||
six==1.11.0 \
|
six==1.11.0 \
|
||||||
--hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 \
|
--hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 \
|
||||||
--hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb
|
--hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
pushd ./gui/kivy/
|
pushd ./electrum/gui/kivy/
|
||||||
|
|
||||||
if [[ -n "$1" && "$1" == "release" ]] ; then
|
if [[ -n "$1" && "$1" == "release" ]] ; then
|
||||||
echo -n Keystore Password:
|
echo -n Keystore Password:
|
||||||
|
|||||||
@ -8,8 +8,7 @@ import requests
|
|||||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||||
os.chdir('..')
|
os.chdir('..')
|
||||||
|
|
||||||
code_directories = 'gui plugins lib'
|
cmd = "find electrum -type f -name '*.py' -o -name '*.kv'"
|
||||||
cmd = "find {} -type f -name '*.py' -o -name '*.kv'".format(code_directories)
|
|
||||||
|
|
||||||
files = subprocess.check_output(cmd, shell=True)
|
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())))
|
print("Found {} files to translate".format(len(files.splitlines())))
|
||||||
|
|
||||||
# Generate fresh translation template
|
# Generate fresh translation template
|
||||||
if not os.path.exists('lib/locale'):
|
if not os.path.exists('electrum/locale'):
|
||||||
os.mkdir('lib/locale')
|
os.mkdir('electrum/locale')
|
||||||
cmd = 'xgettext -s --from-code UTF-8 --language Python --no-wrap -f app.fil --output=lib/locale/messages.pot'
|
cmd = 'xgettext -s --from-code UTF-8 --language Python --no-wrap -f app.fil --output=electrum/locale/messages.pot'
|
||||||
print('Generate template')
|
print('Generate template')
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
|
|
||||||
os.chdir('lib')
|
os.chdir('electrum')
|
||||||
|
|
||||||
crowdin_identifier = 'electrum'
|
crowdin_identifier = 'electrum'
|
||||||
crowdin_file_name = 'files[electrum-client/messages.pot]'
|
crowdin_file_name = 'files[electrum-client/messages.pot]'
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
PyQt5
|
PyQt5<5.11
|
||||||
pycryptodomex
|
pycryptodomex
|
||||||
|
|||||||
@ -22,6 +22,6 @@ fi
|
|||||||
|
|
||||||
export PYTHONPATH="/usr/local/lib/python${PYTHON_VER}/site-packages:$PYTHONPATH"
|
export PYTHONPATH="/usr/local/lib/python${PYTHON_VER}/site-packages:$PYTHONPATH"
|
||||||
|
|
||||||
./electrum "$@"
|
./run_electrum "$@"
|
||||||
|
|
||||||
deactivate
|
deactivate
|
||||||
|
|||||||
@ -10,5 +10,5 @@ from . import bitcoin
|
|||||||
from . import transaction
|
from . import transaction
|
||||||
from . import daemon
|
from . import daemon
|
||||||
from .transaction import Transaction
|
from .transaction import Transaction
|
||||||
from .plugins import BasePlugin
|
from .plugin import BasePlugin
|
||||||
from .commands import Commands, known_commands
|
from .commands import Commands, known_commands
|
||||||
@ -28,8 +28,9 @@ import os
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from electrum import ELECTRUM_VERSION, constants
|
from .version import ELECTRUM_VERSION
|
||||||
from electrum.i18n import _
|
from .import constants
|
||||||
|
from .i18n import _
|
||||||
|
|
||||||
|
|
||||||
class BaseCrashReporter(object):
|
class BaseCrashReporter(object):
|
||||||
@ -34,6 +34,8 @@ MAX_TARGET = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
|
|||||||
class MissingHeader(Exception):
|
class MissingHeader(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class InvalidHeader(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
def serialize_header(res):
|
def serialize_header(res):
|
||||||
s = int_to_hex(res.get('version'), 4) \
|
s = int_to_hex(res.get('version'), 4) \
|
||||||
@ -46,9 +48,9 @@ def serialize_header(res):
|
|||||||
|
|
||||||
def deserialize_header(s, height):
|
def deserialize_header(s, height):
|
||||||
if not s:
|
if not s:
|
||||||
raise Exception('Invalid header: {}'.format(s))
|
raise InvalidHeader('Invalid header: {}'.format(s))
|
||||||
if len(s) != 80:
|
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)
|
hex_to_int = lambda s: int('0x' + bh2u(s[::-1]), 16)
|
||||||
h = {}
|
h = {}
|
||||||
h['version'] = hex_to_int(s[0:4])
|
h['version'] = hex_to_int(s[0:4])
|
||||||
@ -35,12 +35,12 @@ from decimal import Decimal
|
|||||||
|
|
||||||
from .import util, ecc
|
from .import util, ecc
|
||||||
from .util import bfh, bh2u, format_satoshis, json_decode, print_error, json_encode
|
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 .bitcoin import is_address, hash_160, COIN, TYPE_ADDRESS
|
||||||
from .i18n import _
|
from .i18n import _
|
||||||
from .transaction import Transaction, multisig_script
|
from .transaction import Transaction, multisig_script
|
||||||
from .paymentrequest import PR_PAID, PR_UNPAID, PR_UNKNOWN, PR_EXPIRED
|
from .paymentrequest import PR_PAID, PR_UNPAID, PR_UNKNOWN, PR_EXPIRED
|
||||||
from .plugins import run_hook
|
from .plugin import run_hook
|
||||||
|
|
||||||
known_commands = {}
|
known_commands = {}
|
||||||
|
|
||||||
@ -341,6 +341,12 @@
|
|||||||
"Bitcointoyou": [
|
"Bitcointoyou": [
|
||||||
"BRL"
|
"BRL"
|
||||||
],
|
],
|
||||||
|
"BitcoinVenezuela": [
|
||||||
|
"ARS",
|
||||||
|
"EUR",
|
||||||
|
"USD",
|
||||||
|
"VEF"
|
||||||
|
],
|
||||||
"Bitmarket": [
|
"Bitmarket": [
|
||||||
"PLN"
|
"PLN"
|
||||||
],
|
],
|
||||||
@ -814,4 +820,4 @@
|
|||||||
"USD"
|
"USD"
|
||||||
],
|
],
|
||||||
"itBit": []
|
"itBit": []
|
||||||
}
|
}
|
||||||
@ -41,7 +41,7 @@ from .storage import WalletStorage
|
|||||||
from .commands import known_commands, Commands
|
from .commands import known_commands, Commands
|
||||||
from .simple_config import SimpleConfig
|
from .simple_config import SimpleConfig
|
||||||
from .exchange_rate import FxThread
|
from .exchange_rate import FxThread
|
||||||
from .plugins import run_hook
|
from .plugin import run_hook
|
||||||
|
|
||||||
|
|
||||||
def get_lockfile(config):
|
def get_lockfile(config):
|
||||||
@ -307,7 +307,7 @@ class Daemon(DaemonThread):
|
|||||||
gui_name = config.get('gui', 'qt')
|
gui_name = config.get('gui', 'qt')
|
||||||
if gui_name in ['lite', 'classic']:
|
if gui_name in ['lite', 'classic']:
|
||||||
gui_name = 'qt'
|
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)
|
self.gui = gui.ElectrumGui(config, self, plugins)
|
||||||
try:
|
try:
|
||||||
self.gui.main()
|
self.gui.main()
|
||||||
1
electrum/electrum
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../run_electrum
|
||||||
@ -8,25 +8,25 @@ theming:
|
|||||||
$(PYTHON) -m kivy.atlas theming/light 1024 theming/light/*.png
|
$(PYTHON) -m kivy.atlas theming/light 1024 theming/light/*.png
|
||||||
prepare:
|
prepare:
|
||||||
# running pre build setup
|
# running pre build setup
|
||||||
@cp tools/buildozer.spec ../../buildozer.spec
|
@cp tools/buildozer.spec ../../../buildozer.spec
|
||||||
# copy electrum to main.py
|
# copy electrum to main.py
|
||||||
@cp ../../electrum ../../main.py
|
@cp ../../../run_electrum ../../../main.py
|
||||||
@-if [ ! -d "../../.buildozer" ];then \
|
@-if [ ! -d "../../.buildozer" ];then \
|
||||||
cd ../..; buildozer android debug;\
|
cd ../../..; buildozer android debug;\
|
||||||
cp -f gui/kivy/tools/blacklist.txt .buildozer/android/platform/python-for-android/src/blacklist.txt;\
|
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;\
|
rm -rf ./.buildozer/android/platform/python-for-android/dist;\
|
||||||
fi
|
fi
|
||||||
apk:
|
apk:
|
||||||
@make prepare
|
@make prepare
|
||||||
@-cd ../..; buildozer android debug deploy run
|
@-cd ../../..; buildozer android debug deploy run
|
||||||
@make clean
|
@make clean
|
||||||
release:
|
release:
|
||||||
@make prepare
|
@make prepare
|
||||||
@-cd ../..; buildozer android release
|
@-cd ../../..; buildozer android release
|
||||||
@make clean
|
@make clean
|
||||||
clean:
|
clean:
|
||||||
# Cleaning up
|
# Cleaning up
|
||||||
# rename main.py to electrum
|
# rename main.py to electrum
|
||||||
@-rm ../../main.py
|
@-rm ../../../main.py
|
||||||
# remove buildozer.spec
|
# remove buildozer.spec
|
||||||
@-rm ../../buildozer.spec
|
@-rm ../../../buildozer.spec
|
||||||
@ -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
|
~/.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
|
## 9. Build the APK
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
contrib/make_apk
|
contrib/make_apk
|
||||||
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 224 B After Width: | Height: | Size: 224 B |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
@ -1,7 +1,7 @@
|
|||||||
#:import Clock kivy.clock.Clock
|
#:import Clock kivy.clock.Clock
|
||||||
#:import Window kivy.core.window.Window
|
#:import Window kivy.core.window.Window
|
||||||
#:import Factory kivy.factory.Factory
|
#:import Factory kivy.factory.Factory
|
||||||
#:import _ electrum_gui.kivy.i18n._
|
#:import _ electrum.gui.kivy.i18n._
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
@ -189,7 +189,7 @@
|
|||||||
Color:
|
Color:
|
||||||
rgba: 0.192, .498, 0.745, 1
|
rgba: 0.192, .498, 0.745, 1
|
||||||
BorderImage:
|
BorderImage:
|
||||||
source: 'atlas://gui/kivy/theming/light/card_bottom'
|
source: 'atlas://electrum/gui/kivy/theming/light/card_bottom'
|
||||||
size: self.size
|
size: self.size
|
||||||
pos: self.pos
|
pos: self.pos
|
||||||
|
|
||||||
@ -203,7 +203,7 @@
|
|||||||
Color:
|
Color:
|
||||||
rgba: 0.192, .498, 0.745, 1
|
rgba: 0.192, .498, 0.745, 1
|
||||||
BorderImage:
|
BorderImage:
|
||||||
source: 'atlas://gui/kivy/theming/light/card_bottom'
|
source: 'atlas://electrum/gui/kivy/theming/light/card_bottom'
|
||||||
size: self.size
|
size: self.size
|
||||||
pos: self.pos
|
pos: self.pos
|
||||||
|
|
||||||
@ -216,7 +216,7 @@
|
|||||||
Color:
|
Color:
|
||||||
rgba: 0.192, .498, 0.745, 1
|
rgba: 0.192, .498, 0.745, 1
|
||||||
BorderImage:
|
BorderImage:
|
||||||
source: 'atlas://gui/kivy/theming/light/card_bottom'
|
source: 'atlas://electrum/gui/kivy/theming/light/card_bottom'
|
||||||
size: self.size
|
size: self.size
|
||||||
pos: self.pos
|
pos: self.pos
|
||||||
|
|
||||||
@ -326,8 +326,8 @@
|
|||||||
valign: 'middle'
|
valign: 'middle'
|
||||||
bold: True
|
bold: True
|
||||||
font_size: '12.5sp'
|
font_size: '12.5sp'
|
||||||
background_normal: 'atlas://gui/kivy/theming/light/tab_btn'
|
background_normal: 'atlas://electrum/gui/kivy/theming/light/tab_btn'
|
||||||
background_down: 'atlas://gui/kivy/theming/light/tab_btn_pressed'
|
background_down: 'atlas://electrum/gui/kivy/theming/light/tab_btn_pressed'
|
||||||
|
|
||||||
|
|
||||||
<ColoredLabel@Label>:
|
<ColoredLabel@Label>:
|
||||||
@ -416,14 +416,14 @@ BoxLayout:
|
|||||||
rgb: .6, .6, .6
|
rgb: .6, .6, .6
|
||||||
Rectangle:
|
Rectangle:
|
||||||
size: self.size
|
size: self.size
|
||||||
source: 'gui/kivy/data/background.png'
|
source: 'electrum/gui/kivy/data/background.png'
|
||||||
|
|
||||||
ActionBar:
|
ActionBar:
|
||||||
|
|
||||||
ActionView:
|
ActionView:
|
||||||
id: av
|
id: av
|
||||||
ActionPrevious:
|
ActionPrevious:
|
||||||
app_icon: 'atlas://gui/kivy/theming/light/logo'
|
app_icon: 'atlas://electrum/gui/kivy/theming/light/logo'
|
||||||
app_icon_width: '100dp'
|
app_icon_width: '100dp'
|
||||||
with_previous: False
|
with_previous: False
|
||||||
size_hint_x: None
|
size_hint_x: None
|
||||||
@ -7,13 +7,13 @@ import traceback
|
|||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
import electrum
|
|
||||||
from electrum.bitcoin import TYPE_ADDRESS
|
from electrum.bitcoin import TYPE_ADDRESS
|
||||||
from electrum import WalletStorage, Wallet
|
from electrum.storage import WalletStorage
|
||||||
from electrum_gui.kivy.i18n import _
|
from electrum.wallet import Wallet
|
||||||
|
from electrum.i18n import _
|
||||||
from electrum.paymentrequest import InvoiceStore
|
from electrum.paymentrequest import InvoiceStore
|
||||||
from electrum.util import profiler, InvalidPassword
|
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.util import format_satoshis, format_satoshis_plain
|
||||||
from electrum.paymentrequest import PR_UNPAID, PR_PAID, PR_UNKNOWN, PR_EXPIRED
|
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
|
from kivy.lang import Builder
|
||||||
|
|
||||||
## lazy imports for factory so that widgets can be used in kv
|
## lazy imports for factory so that widgets can be used in kv
|
||||||
#Factory.register('InstallWizard', module='electrum_gui.kivy.uix.dialogs.installwizard')
|
#Factory.register('InstallWizard', module='electrum.gui.kivy.uix.dialogs.installwizard')
|
||||||
#Factory.register('InfoBubble', module='electrum_gui.kivy.uix.dialogs')
|
#Factory.register('InfoBubble', module='electrum.gui.kivy.uix.dialogs')
|
||||||
#Factory.register('OutputList', 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('OutputItem', module='electrum.gui.kivy.uix.dialogs')
|
||||||
|
|
||||||
from .uix.dialogs.installwizard import InstallWizard
|
from .uix.dialogs.installwizard import InstallWizard
|
||||||
from .uix.dialogs import InfoBubble, crash_reporter
|
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.uix.label import Label
|
||||||
from kivy.core.clipboard import Clipboard
|
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...
|
# Register fonts without this you won't be able to use bold/italic...
|
||||||
# inside markup.
|
# inside markup.
|
||||||
from kivy.core.text import Label
|
from kivy.core.text import Label
|
||||||
Label.register('Roboto',
|
Label.register('Roboto',
|
||||||
'gui/kivy/data/fonts/Roboto.ttf',
|
'electrum/gui/kivy/data/fonts/Roboto.ttf',
|
||||||
'gui/kivy/data/fonts/Roboto.ttf',
|
'electrum/gui/kivy/data/fonts/Roboto.ttf',
|
||||||
'gui/kivy/data/fonts/Roboto-Bold.ttf',
|
'electrum/gui/kivy/data/fonts/Roboto-Bold.ttf',
|
||||||
'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,
|
from electrum.util import (base_units, NoDynamicFeeEstimates, decimal_point_to_base_unit_name,
|
||||||
@ -363,7 +363,7 @@ class ElectrumWindow(App):
|
|||||||
memo = req.get('memo')
|
memo = req.get('memo')
|
||||||
amount = req.get('amount')
|
amount = req.get('amount')
|
||||||
fund = req.get('fund')
|
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.is_invoice = is_invoice
|
||||||
popup.amount = amount
|
popup.amount = amount
|
||||||
popup.requestor = requestor if is_invoice else req.get('address')
|
popup.requestor = requestor if is_invoice else req.get('address')
|
||||||
@ -382,7 +382,7 @@ class ElectrumWindow(App):
|
|||||||
from electrum.util import format_time
|
from electrum.util import format_time
|
||||||
fund = req.get('fund')
|
fund = req.get('fund')
|
||||||
isaddr = 'y'
|
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.isaddr = isaddr
|
||||||
popup.is_invoice = False
|
popup.is_invoice = False
|
||||||
popup.status = status
|
popup.status = status
|
||||||
@ -435,7 +435,7 @@ class ElectrumWindow(App):
|
|||||||
currentActivity.startActivity(it)
|
currentActivity.startActivity(it)
|
||||||
|
|
||||||
def build(self):
|
def build(self):
|
||||||
return Builder.load_file('gui/kivy/main.kv')
|
return Builder.load_file('electrum/gui/kivy/main.kv')
|
||||||
|
|
||||||
def _pause(self):
|
def _pause(self):
|
||||||
if platform == 'android':
|
if platform == 'android':
|
||||||
@ -592,7 +592,7 @@ class ElectrumWindow(App):
|
|||||||
d = WalletDialog()
|
d = WalletDialog()
|
||||||
d.open()
|
d.open()
|
||||||
elif name == 'status':
|
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
|
master_public_keys_layout = popup.ids.master_public_keys
|
||||||
for xpub in self.wallet.get_master_public_keys()[1:]:
|
for xpub in self.wallet.get_master_public_keys()[1:]:
|
||||||
master_public_keys_layout.add_widget(TopLabel(text=_('Master Public Key')))
|
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)
|
master_public_keys_layout.add_widget(ref)
|
||||||
popup.open()
|
popup.open()
|
||||||
else:
|
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()
|
popup.open()
|
||||||
|
|
||||||
@profiler
|
@profiler
|
||||||
@ -618,9 +618,9 @@ class ElectrumWindow(App):
|
|||||||
|
|
||||||
#setup lazy imports for mainscreen
|
#setup lazy imports for mainscreen
|
||||||
Factory.register('AnimatedPopup',
|
Factory.register('AnimatedPopup',
|
||||||
module='electrum_gui.kivy.uix.dialogs')
|
module='electrum.gui.kivy.uix.dialogs')
|
||||||
Factory.register('QRCodeWidget',
|
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
|
# preload widgets. Remove this if you want to load the widgets on demand
|
||||||
#Cache.append('electrum_widgets', 'AnimatedPopup', Factory.AnimatedPopup())
|
#Cache.append('electrum_widgets', 'AnimatedPopup', Factory.AnimatedPopup())
|
||||||
@ -777,7 +777,7 @@ class ElectrumWindow(App):
|
|||||||
self.send_payment(address, amount=amount, label=label, message=message)
|
self.send_payment(address, amount=amount, label=label, message=message)
|
||||||
|
|
||||||
def show_error(self, error, width='200dp', pos=None, arrow_pos=None,
|
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):
|
modal=False):
|
||||||
''' Show an error Message Bubble.
|
''' Show an error Message Bubble.
|
||||||
'''
|
'''
|
||||||
@ -789,7 +789,7 @@ class ElectrumWindow(App):
|
|||||||
exit=False, duration=0, modal=False):
|
exit=False, duration=0, modal=False):
|
||||||
''' Show an Info Message Bubble.
|
''' 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,
|
duration=duration, modal=modal, exit=exit, pos=pos,
|
||||||
arrow_pos=arrow_pos)
|
arrow_pos=arrow_pos)
|
||||||
|
|
||||||
@ -829,7 +829,7 @@ class ElectrumWindow(App):
|
|||||||
info_bubble.show_arrow = False
|
info_bubble.show_arrow = False
|
||||||
img.allow_stretch = True
|
img.allow_stretch = True
|
||||||
info_bubble.dim_background = 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:
|
else:
|
||||||
info_bubble.fs = False
|
info_bubble.fs = False
|
||||||
info_bubble.icon = icon
|
info_bubble.icon = icon
|
||||||
@ -41,4 +41,4 @@ class NFCBase(Widget):
|
|||||||
NFCScanner = core_select_lib('nfc_manager', (
|
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', (
|
# keep the dummy implementation as the last one to make it the fallback provider.NFCScanner = core_select_lib('nfc_scanner', (
|
||||||
('android', 'scanner_android', 'ScannerAndroid'),
|
('android', 'scanner_android', 'ScannerAndroid'),
|
||||||
('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'electrum_gui.kivy')
|
('dummy', 'scanner_dummy', 'ScannerDummy')), True, 'electrum.gui.kivy')
|
||||||
@ -10,7 +10,7 @@ if platform != 'android':
|
|||||||
raise ImportError
|
raise ImportError
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
from electrum_gui.kivy.nfc_scanner import NFCBase
|
from . import NFCBase
|
||||||
from jnius import autoclass, cast
|
from jnius import autoclass, cast
|
||||||
from android.runnable import run_on_ui_thread
|
from android.runnable import run_on_ui_thread
|
||||||
from android import activity
|
from android import activity
|
||||||
@ -1,6 +1,6 @@
|
|||||||
''' Dummy NFC Provider to be used on desktops in case no other provider is found
|
''' 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.clock import Clock
|
||||||
from kivy.logger import Logger
|
from kivy.logger import Logger
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 552 B After Width: | Height: | Size: 552 B |
|
Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 188 B |
|
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
|
Before Width: | Height: | Size: 375 B After Width: | Height: | Size: 375 B |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 683 B After Width: | Height: | Size: 683 B |
|
Before Width: | Height: | Size: 242 B After Width: | Height: | Size: 242 B |
|
Before Width: | Height: | Size: 311 B After Width: | Height: | Size: 311 B |
|
Before Width: | Height: | Size: 427 B After Width: | Height: | Size: 427 B |
|
Before Width: | Height: | Size: 362 B After Width: | Height: | Size: 362 B |
|
Before Width: | Height: | Size: 210 B After Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 209 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 866 B After Width: | Height: | Size: 866 B |
|
Before Width: | Height: | Size: 383 B After Width: | Height: | Size: 383 B |
|
Before Width: | Height: | Size: 357 B After Width: | Height: | Size: 357 B |
|
Before Width: | Height: | Size: 550 B After Width: | Height: | Size: 550 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 330 B After Width: | Height: | Size: 330 B |
|
Before Width: | Height: | Size: 308 B After Width: | Height: | Size: 308 B |
|
Before Width: | Height: | Size: 393 B After Width: | Height: | Size: 393 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |