electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 093a03ebcfbac74314fd3bd912f566eb03270510
parent b6f63e1abf2cc3faa9c504e73af656889b9fab9e
Author: ThomasV <thomasv@electrum.org>
Date:   Thu, 10 Dec 2020 11:01:02 +0100

Merge pull request #6836 from SomberNight/202012_kivy_fix_paths

kivy: fix some resource path issues
Diffstat:
Melectrum/gui/kivy/__init__.py | 3+++
Melectrum/gui/kivy/main.kv | 13+++++++------
Melectrum/gui/kivy/main_window.py | 27+++++++++++++++------------
Melectrum/gui/kivy/uix/dialogs/installwizard.py | 13+++++++------
Melectrum/gui/kivy/uix/dialogs/invoice_dialog.py | 6++++--
Melectrum/gui/kivy/uix/dialogs/label_dialog.py | 6++++--
Melectrum/gui/kivy/uix/dialogs/lightning_open_channel.py | 10++++++----
Melectrum/gui/kivy/uix/dialogs/password_dialog.py | 5+++--
Melectrum/gui/kivy/uix/dialogs/qr_dialog.py | 4+++-
Melectrum/gui/kivy/uix/dialogs/qr_scanner.py | 4+++-
Melectrum/gui/kivy/uix/dialogs/request_dialog.py | 6++++--
Melectrum/gui/kivy/uix/dialogs/settings.py | 4+++-
Melectrum/gui/kivy/uix/dialogs/tx_dialog.py | 3++-
Melectrum/gui/kivy/uix/screens.py | 11++++++-----
Melectrum/gui/kivy/uix/ui_screens/history.kv | 5+++--
Melectrum/gui/kivy/uix/ui_screens/receive.kv | 13+++++++------
Melectrum/gui/kivy/uix/ui_screens/send.kv | 19++++++++++---------
Mrun_electrum | 3---
18 files changed, 90 insertions(+), 65 deletions(-)

diff --git a/electrum/gui/kivy/__init__.py b/electrum/gui/kivy/__init__.py @@ -29,6 +29,9 @@ import sys import os from typing import TYPE_CHECKING +KIVY_GUI_PATH = os.path.abspath(os.path.dirname(__file__)) +os.environ['KIVY_DATA_DIR'] = os.path.join(KIVY_GUI_PATH, 'data') + try: sys.argv = [''] import kivy diff --git a/electrum/gui/kivy/main.kv b/electrum/gui/kivy/main.kv @@ -2,6 +2,7 @@ #:import Window kivy.core.window.Window #:import Factory kivy.factory.Factory #:import _ electrum.gui.kivy.i18n._ +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH ########################### @@ -211,7 +212,7 @@ Color: rgba: 0.192, .498, 0.745, 1 BorderImage: - source: 'atlas://electrum/gui/kivy/theming/light/card_bottom' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/card_bottom' size: self.size pos: self.pos @@ -225,7 +226,7 @@ Color: rgba: 0.192, .498, 0.745, 1 BorderImage: - source: 'atlas://electrum/gui/kivy/theming/light/card_bottom' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/card_bottom' size: self.size pos: self.pos @@ -238,7 +239,7 @@ Color: rgba: 0.192, .498, 0.745, 1 BorderImage: - source: 'atlas://electrum/gui/kivy/theming/light/card_bottom' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/card_bottom' size: self.size pos: self.pos @@ -326,8 +327,8 @@ valign: 'middle' bold: True font_size: '12.5sp' - background_normal: 'atlas://electrum/gui/kivy/theming/light/tab_btn' - background_down: 'atlas://electrum/gui/kivy/theming/light/tab_btn_pressed' + background_normal: f'atlas://{KIVY_GUI_PATH}/theming/light/tab_btn' + background_down: f'atlas://{KIVY_GUI_PATH}/theming/light/tab_btn_pressed' <ColoredLabel@Label>: @@ -417,7 +418,7 @@ BoxLayout: rgb: .6, .6, .6 Rectangle: size: self.size - source: 'electrum/gui/kivy/data/background.png' + source: f'{KIVY_GUI_PATH}/data/background.png' ActionBar: diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py @@ -23,6 +23,7 @@ from electrum.network import Network, TxBroadcastError, BestEffortRequestFailed from electrum.interface import PREFERRED_NETWORK_PROTOCOL, ServerAddr from electrum.logging import Logger from .i18n import _ +from . import KIVY_GUI_PATH from kivy.app import App from kivy.core.window import Window @@ -68,11 +69,13 @@ 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', - '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') +Label.register( + 'Roboto', + KIVY_GUI_PATH + '/data/fonts/Roboto.ttf', + KIVY_GUI_PATH + '/data/fonts/Roboto.ttf', + KIVY_GUI_PATH + '/data/fonts/Roboto-Bold.ttf', + KIVY_GUI_PATH + '/data/fonts/Roboto-Bold.ttf', +) from electrum.util import (NoDynamicFeeEstimates, NotEnoughFunds, @@ -530,7 +533,7 @@ class ElectrumWindow(App, Logger): currentActivity.startActivity(it) def build(self): - return Builder.load_file('electrum/gui/kivy/main.kv') + return Builder.load_file(KIVY_GUI_PATH + '/main.kv') def _pause(self): if platform == 'android': @@ -724,7 +727,7 @@ class ElectrumWindow(App, Logger): elif name == 'wallets': self.wallets_dialog() elif name == 'status': - popup = Builder.load_file('electrum/gui/kivy/uix/ui_screens/'+name+'.kv') + popup = Builder.load_file(KIVY_GUI_PATH + f'/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'))) @@ -736,7 +739,7 @@ class ElectrumWindow(App, Logger): elif name.endswith("_dialog"): getattr(self, name)() else: - popup = Builder.load_file('electrum/gui/kivy/uix/ui_screens/'+name+'.kv') + popup = Builder.load_file(KIVY_GUI_PATH + f'/uix/ui_screens/{name}.kv') popup.open() @profiler @@ -766,7 +769,7 @@ class ElectrumWindow(App, Logger): self.history_screen = None self.send_screen = None self.receive_screen = None - self.icon = "electrum/gui/icons/electrum.png" + self.icon = os.path.dirname(KIVY_GUI_PATH) + "/icons/electrum.png" self.tabs = self.root.ids['tabs'] def update_interfaces(self, dt): @@ -968,7 +971,7 @@ class ElectrumWindow(App, Logger): self.qr_dialog(label.name, label.data, True) def show_error(self, error, width='200dp', pos=None, arrow_pos=None, - exit=False, icon='atlas://electrum/gui/kivy/theming/light/error', duration=0, + exit=False, icon=f'atlas://{KIVY_GUI_PATH}/theming/light/error', duration=0, modal=False): ''' Show an error Message Bubble. ''' @@ -980,7 +983,7 @@ class ElectrumWindow(App, Logger): exit=False, duration=0, modal=False): ''' Show an Info Message Bubble. ''' - self.show_error(error, icon='atlas://electrum/gui/kivy/theming/light/important', + self.show_error(error, icon=f'atlas://{KIVY_GUI_PATH}/theming/light/important', duration=duration, modal=modal, exit=exit, pos=pos, arrow_pos=arrow_pos) @@ -1021,7 +1024,7 @@ class ElectrumWindow(App, Logger): info_bubble.show_arrow = False img.allow_stretch = True info_bubble.dim_background = True - info_bubble.background_image = 'atlas://electrum/gui/kivy/theming/light/card' + info_bubble.background_image = f'atlas://{KIVY_GUI_PATH}/theming/light/card' else: info_bubble.fs = False info_bubble.icon = icon diff --git a/electrum/gui/kivy/uix/dialogs/installwizard.py b/electrum/gui/kivy/uix/dialogs/installwizard.py @@ -34,6 +34,7 @@ if TYPE_CHECKING: Builder.load_string(''' #:import Window kivy.core.window.Window #:import _ electrum.gui.kivy.i18n._ +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH <WizardTextInput@TextInput> @@ -43,8 +44,8 @@ Builder.load_string(''' background_color: (1, 1, 1, 1) if self.focus else (0.454, 0.698, 0.909, 1) foreground_color: (0.31, 0.31, 0.31, 1) if self.focus else (0.835, 0.909, 0.972, 1) hint_text_color: self.foreground_color - background_active: 'atlas://electrum/gui/kivy/theming/light/create_act_text_active' - background_normal: 'atlas://electrum/gui/kivy/theming/light/create_act_text_active' + background_active: f'atlas://{KIVY_GUI_PATH}/theming/light/create_act_text_active' + background_normal: f'atlas://{KIVY_GUI_PATH}/theming/light/create_act_text_active' size_hint_y: None height: '48sp' @@ -93,7 +94,7 @@ Builder.load_string(''' size_hint: 1, None height: self.texture_size[1] if self.opacity else 0 font_size: '33sp' - font_name: 'electrum/gui/kivy/data/fonts/tron/Tr2n.ttf' + font_name: f'{KIVY_GUI_PATH}/data/fonts/tron/Tr2n.ttf' GridLayout: cols: 1 id: crcontent @@ -314,7 +315,7 @@ Builder.load_string(''' font_size: '18dp' text_size: self.width - dp(24), self.height - dp(12) color: .1, .1, .1, 1 - background_normal: 'atlas://electrum/gui/kivy/theming/light/white_bg_round_top' + background_normal: f'atlas://{KIVY_GUI_PATH}/theming/light/white_bg_round_top' background_down: self.background_normal size_hint_y: None @@ -343,7 +344,7 @@ Builder.load_string(''' height: '30dp' width: '30dp' size_hint: 1, None - icon: 'atlas://electrum/gui/kivy/theming/light/gear' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/gear' on_release: root.options_dialog() if root.options_dialog else None @@ -479,7 +480,7 @@ Builder.load_string(''' id: scan height: '48sp' on_release: root.scan_xpub() - icon: 'atlas://electrum/gui/kivy/theming/light/camera' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/camera' size_hint: 1, None WizardButton: text: _('Paste') diff --git a/electrum/gui/kivy/uix/dialogs/invoice_dialog.py b/electrum/gui/kivy/uix/dialogs/invoice_dialog.py @@ -15,6 +15,8 @@ if TYPE_CHECKING: Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH + <InvoiceDialog@Popup> id: popup amount_str: '' @@ -66,12 +68,12 @@ Builder.load_string(''' text: _('Delete') on_release: root.delete_dialog() IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/copy' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/copy' size_hint: 0.5, None height: '48dp' on_release: root.copy_to_clipboard() IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/share' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/share' size_hint: 0.5, None height: '48dp' on_release: root.do_share() diff --git a/electrum/gui/kivy/uix/dialogs/label_dialog.py b/electrum/gui/kivy/uix/dialogs/label_dialog.py @@ -4,6 +4,8 @@ from kivy.properties import ObjectProperty from kivy.lang import Builder Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH + <LabelDialog@Popup> id: popup title: '' @@ -21,8 +23,8 @@ Builder.load_string(''' pos_hint: {'center_y':.5} text:'' multiline: False - background_normal: 'atlas://electrum/gui/kivy/theming/light/tab_btn' - background_active: 'atlas://electrum/gui/kivy/theming/light/textinput_active' + background_normal: f'atlas://{KIVY_GUI_PATH}/theming/light/tab_btn' + background_active: f'atlas://{KIVY_GUI_PATH}/theming/light/textinput_active' hint_text_color: self.foreground_color foreground_color: 1, 1, 1, 1 font_size: '16dp' diff --git a/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py b/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py @@ -18,6 +18,8 @@ if TYPE_CHECKING: Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH + <LightningOpenChannelDialog@Popup> id: s name: 'lightning_open_channel' @@ -38,7 +40,7 @@ Builder.load_string(''' size_hint: 1, None height: blue_bottom.item_height Image: - source: 'atlas://electrum/gui/kivy/theming/light/globe' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/globe' size_hint: None, None size: '22dp', '22dp' pos_hint: {'center_y': .5} @@ -51,7 +53,7 @@ Builder.load_string(''' size_hint: 1, None height: blue_bottom.item_height Image: - source: 'atlas://electrum/gui/kivy/theming/light/calculator' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/calculator' size_hint: None, None size: '22dp', '22dp' pos_hint: {'center_y': .5} @@ -64,12 +66,12 @@ Builder.load_string(''' size_hint: 1, None height: '48dp' IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/copy' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/copy' size_hint: 0.5, None height: '48dp' on_release: s.do_paste() IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/camera' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/camera' size_hint: 0.5, None height: '48dp' on_release: app.scan_qr(on_complete=s.on_qr) diff --git a/electrum/gui/kivy/uix/dialogs/password_dialog.py b/electrum/gui/kivy/uix/dialogs/password_dialog.py @@ -21,6 +21,7 @@ if TYPE_CHECKING: from electrum.storage import WalletStorage Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH <PasswordDialog@Popup> id: popup @@ -47,7 +48,7 @@ Builder.load_string(''' IconButton: size_hint: 0.15, None height: '40dp' - icon: 'atlas://electrum/gui/kivy/theming/light/btn_create_account' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/btn_create_account' on_release: root.select_file() disabled: root.is_change opacity: 0 if root.is_change else 1 @@ -81,7 +82,7 @@ Builder.load_string(''' IconButton: height: '40dp' size_hint: 0.15, None - icon: 'atlas://electrum/gui/kivy/theming/light/eye1' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/eye1' icon_size: '40dp' on_release: textinput_generic_password.password = False if textinput_generic_password.password else True diff --git a/electrum/gui/kivy/uix/dialogs/qr_dialog.py b/electrum/gui/kivy/uix/dialogs/qr_dialog.py @@ -13,6 +13,8 @@ if TYPE_CHECKING: Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH + <QRDialog@Popup> id: popup title: '' @@ -47,7 +49,7 @@ Builder.load_string(''' on_release: root.copy_to_clipboard() IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/share' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/share' size_hint: 0.6, None height: '48dp' on_release: root.do_share() diff --git a/electrum/gui/kivy/uix/dialogs/qr_scanner.py b/electrum/gui/kivy/uix/dialogs/qr_scanner.py @@ -21,6 +21,8 @@ class QrScannerDialog(Factory.AnimatedPopup): Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH + <QrScannerDialog> title: _(\ @@ -33,7 +35,7 @@ Builder.load_string(''' #separator_color: .89, .89, .89, 1 #separator_height: '1.2dp' #title_color: .437, .437, .437, 1 - #background: 'atlas://electrum/gui/kivy/theming/light/dialog' + #background: f'atlas://{KIVY_GUI_PATH}/theming/light/dialog' on_activate: qrscr.start() qrscr.size = self.size diff --git a/electrum/gui/kivy/uix/dialogs/request_dialog.py b/electrum/gui/kivy/uix/dialogs/request_dialog.py @@ -15,6 +15,8 @@ if TYPE_CHECKING: Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH + <RequestDialog@Popup> id: popup amount_str: '' @@ -66,12 +68,12 @@ Builder.load_string(''' text: _('Delete') on_release: root.delete_dialog() IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/copy' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/copy' size_hint: 0.5, None height: '48dp' on_release: root.copy_to_clipboard() IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/share' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/share' size_hint: 0.5, None height: '48dp' on_release: root.do_share() diff --git a/electrum/gui/kivy/uix/dialogs/settings.py b/electrum/gui/kivy/uix/dialogs/settings.py @@ -9,6 +9,8 @@ from electrum.gui.kivy.i18n import _ from electrum.plugin import run_hook from electrum import coinchooser +from electrum.gui.kivy import KIVY_GUI_PATH + from .choice_dialog import ChoiceDialog Builder.load_string(''' @@ -193,7 +195,7 @@ class SettingsDialog(Factory.Popup): net_params = net_params._replace(proxy=proxy) network.run_from_another_thread(network.set_parameters(net_params)) item.status = self.proxy_status() - popup = Builder.load_file('electrum/gui/kivy/uix/ui_screens/proxy.kv') + popup = Builder.load_file(KIVY_GUI_PATH + '/uix/ui_screens/proxy.kv') popup.ids.mode.text = proxy.get('mode') if proxy else 'None' popup.ids.host.text = proxy.get('host') if proxy else '' popup.ids.port.text = proxy.get('port') if proxy else '' diff --git a/electrum/gui/kivy/uix/dialogs/tx_dialog.py b/electrum/gui/kivy/uix/dialogs/tx_dialog.py @@ -25,6 +25,7 @@ if TYPE_CHECKING: Builder.load_string(''' +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH <TxDialog> id: popup @@ -102,7 +103,7 @@ Builder.load_string(''' IconButton: size_hint: 0.5, None height: '48dp' - icon: 'atlas://electrum/gui/kivy/theming/light/qrcode' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/qrcode' on_release: root.show_qr() Button: size_hint: 0.5, None diff --git a/electrum/gui/kivy/uix/screens.py b/electrum/gui/kivy/uix/screens.py @@ -40,6 +40,7 @@ from electrum.logging import Logger from .dialogs.question import Question from .dialogs.lightning_open_channel import LightningOpenChannelDialog +from electrum.gui.kivy import KIVY_GUI_PATH from electrum.gui.kivy.i18n import _ if TYPE_CHECKING: @@ -96,9 +97,9 @@ TX_ICONS = [ ] -Builder.load_file('electrum/gui/kivy/uix/ui_screens/history.kv') -Builder.load_file('electrum/gui/kivy/uix/ui_screens/send.kv') -Builder.load_file('electrum/gui/kivy/uix/ui_screens/receive.kv') +Builder.load_file(KIVY_GUI_PATH + '/uix/ui_screens/history.kv') +Builder.load_file(KIVY_GUI_PATH + '/uix/ui_screens/send.kv') +Builder.load_file(KIVY_GUI_PATH + '/uix/ui_screens/receive.kv') class HistoryScreen(CScreen): @@ -132,7 +133,7 @@ class HistoryScreen(CScreen): if is_lightning: status = 0 status_str = 'unconfirmed' if timestamp is None else format_time(int(timestamp)) - icon = "atlas://electrum/gui/kivy/theming/light/lightning" + icon = f'atlas://{KIVY_GUI_PATH}/theming/light/lightning' message = tx_item['label'] fee_msat = tx_item['fee_msat'] fee = int(fee_msat/1000) if fee_msat else None @@ -144,7 +145,7 @@ class HistoryScreen(CScreen): conf=tx_item['confirmations'], timestamp=tx_item['timestamp']) status, status_str = self.app.wallet.get_tx_status(tx_hash, tx_mined_info) - icon = "atlas://electrum/gui/kivy/theming/light/" + TX_ICONS[status] + icon = f'atlas://{KIVY_GUI_PATH}/theming/light/' + TX_ICONS[status] message = tx_item['label'] or tx_hash fee = tx_item['fee_sat'] fee_text = '' if fee is None else 'fee: %d sat'%fee diff --git a/electrum/gui/kivy/uix/ui_screens/history.kv b/electrum/gui/kivy/uix/ui_screens/history.kv @@ -1,6 +1,7 @@ #:import _ electrum.gui.kivy.i18n._ +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH #:import Factory kivy.factory.Factory -#:set font_light 'electrum/gui/kivy/data/fonts/Roboto-Condensed.ttf' +#:set font_light f'{KIVY_GUI_PATH}/data/fonts/Roboto-Condensed.ttf' #:set btc_symbol chr(171) #:set mbtc_symbol chr(187) @@ -15,7 +16,7 @@ <HistoryItem@CardItem> - icon: 'atlas://electrum/gui/kivy/theming/light/important' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/important' message: '' fee_text: '' is_mine: True diff --git a/electrum/gui/kivy/uix/ui_screens/receive.kv b/electrum/gui/kivy/uix/ui_screens/receive.kv @@ -1,11 +1,12 @@ #:import _ electrum.gui.kivy.i18n._ +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH #:import pr_color electrum.invoices.pr_color #:import PR_UNKNOWN electrum.invoices.PR_UNKNOWN #:import Factory kivy.factory.Factory #:import Decimal decimal.Decimal #:set btc_symbol chr(171) #:set mbtc_symbol chr(187) -#:set font_light 'electrum/gui/kivy/data/fonts/Roboto-Condensed.ttf' +#:set font_light f'{KIVY_GUI_PATH}/data/fonts/Roboto-Condensed.ttf' <RequestLabel@Label> @@ -85,7 +86,7 @@ height: blue_bottom.item_height spacing: '5dp' Image: - source: 'atlas://electrum/gui/kivy/theming/light/lightning' if root.is_lightning else 'atlas://electrum/gui/kivy/theming/light/globe' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/lightning' if root.is_lightning else f'atlas://{KIVY_GUI_PATH}/theming/light/globe' size_hint: None, None size: '22dp', '22dp' pos_hint: {'center_y': .5} @@ -102,7 +103,7 @@ height: blue_bottom.item_height spacing: '5dp' Image: - source: 'atlas://electrum/gui/kivy/theming/light/calculator' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/calculator' opacity: 0.7 size_hint: None, None size: '22dp', '22dp' @@ -122,7 +123,7 @@ height: blue_bottom.item_height spacing: '5dp' Image: - source: 'atlas://electrum/gui/kivy/theming/light/pen' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/pen' size_hint: None, None size: '22dp', '22dp' pos_hint: {'center_y': .5} @@ -134,12 +135,12 @@ size_hint: 1, None height: '48dp' IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/delete' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/delete' size_hint: 0.5, None height: '48dp' on_release: Clock.schedule_once(lambda dt: s.clear_requests_dialog()) IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/clock1' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/clock1' size_hint: 0.5, None height: '48dp' on_release: Clock.schedule_once(lambda dt: s.expiration_dialog(s)) diff --git a/electrum/gui/kivy/uix/ui_screens/send.kv b/electrum/gui/kivy/uix/ui_screens/send.kv @@ -1,11 +1,12 @@ #:import _ electrum.gui.kivy.i18n._ +#:import KIVY_GUI_PATH electrum.gui.kivy.KIVY_GUI_PATH #:import pr_color electrum.invoices.pr_color #:import PR_UNKNOWN electrum.invoices.PR_UNKNOWN #:import Factory kivy.factory.Factory #:import Decimal decimal.Decimal #:set btc_symbol chr(171) #:set mbtc_symbol chr(187) -#:set font_light 'electrum/gui/kivy/data/fonts/Roboto-Condensed.ttf' +#:set font_light f'{KIVY_GUI_PATH}/data/fonts/Roboto-Condensed.ttf' <PaymentLabel@Label> #color: .305, .309, .309, 1 @@ -85,7 +86,7 @@ height: blue_bottom.item_height spacing: '5dp' Image: - source: 'atlas://electrum/gui/kivy/theming/light/lightning' if root.is_lightning else 'atlas://electrum/gui/kivy/theming/light/globe' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/lightning' if root.is_lightning else f'atlas://{KIVY_GUI_PATH}/theming/light/globe' size_hint: None, None size: '22dp', '22dp' pos_hint: {'center_y': .5} @@ -102,7 +103,7 @@ height: blue_bottom.item_height spacing: '5dp' Image: - source: 'atlas://electrum/gui/kivy/theming/light/calculator' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/calculator' opacity: 0.7 size_hint: None, None size: '22dp', '22dp' @@ -121,7 +122,7 @@ height: blue_bottom.item_height spacing: '5dp' Image: - source: 'atlas://electrum/gui/kivy/theming/light/pen' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/pen' size_hint: None, None size: '22dp', '22dp' pos_hint: {'center_y': .5} @@ -137,7 +138,7 @@ height: blue_bottom.item_height spacing: '5dp' Image: - source: 'atlas://electrum/gui/kivy/theming/light/star_big_inactive' + source: f'atlas://{KIVY_GUI_PATH}/theming/light/star_big_inactive' size_hint: None, None size: '22dp', '22dp' pos_hint: {'center_y': .5} @@ -150,20 +151,20 @@ size_hint: 1, None height: '48dp' IconButton: - icon: 'atlas://electrum/gui/kivy/theming/light/delete' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/delete' size_hint: 0.5, 1 on_release: Clock.schedule_once(lambda dt: s.clear_invoices_dialog()) IconButton: size_hint: 0.5, 1 on_release: s.do_save() - icon: 'atlas://electrum/gui/kivy/theming/light/save' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/save' IconButton: size_hint: 0.5, 1 on_release: s.do_clear() - icon: 'atlas://electrum/gui/kivy/theming/light/closebutton' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/closebutton' IconButton: size_hint: 0.5, 1 - icon: 'atlas://electrum/gui/kivy/theming/light/copy' + icon: f'atlas://{KIVY_GUI_PATH}/theming/light/copy' on_release: s.do_paste() Button: id: qr diff --git a/run_electrum b/run_electrum @@ -49,9 +49,6 @@ if is_local: # running from source # developers should probably see all deprecation warnings. warnings.simplefilter('default', DeprecationWarning) -# move this back to gui/kivy/__init.py once plugins are moved -os.environ['KIVY_DATA_DIR'] = os.path.abspath(os.path.dirname(__file__)) + '/electrum/gui/kivy/data/' - if is_local or is_android: sys.path.insert(0, os.path.join(script_dir, 'packages'))