tkivy: switch to send screen if a URI is passed - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 84ac33f589011bcc5aebf31a65d5f4d419034bf6 DIR parent 51ca7a056b62b551e16d4103ccc95a38d1fe5481 HTML Author: ThomasV <thomasv@electrum.org> Date: Fri, 5 Feb 2016 18:16:48 +0100 kivy: switch to send screen if a URI is passed Diffstat: M gui/kivy/main.kv | 1 - M gui/kivy/main_window.py | 35 ++++++++++++++++++++++--------- M gui/kivy/uix/screens.py | 1 - 3 files changed, 25 insertions(+), 12 deletions(-) --- DIR diff --git a/gui/kivy/main.kv b/gui/kivy/main.kv t@@ -190,7 +190,6 @@ id: panel tab_height: '48dp' tab_width: panel.width/3 - default_tab: history_tab strip_border: 0, 0, 0, 0 InvoicesScreen: id: invoices_screen DIR diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py t@@ -158,7 +158,7 @@ class ElectrumWindow(App): :data:`ui_mode` is a read only `AliasProperty` Defaults to 'phone' ''' - url = StringProperty('', allownone=True) + uri = StringProperty('', allownone=True) ''' ''' t@@ -193,11 +193,7 @@ class ElectrumWindow(App): self.contacts = Contacts(self.electrum_config) self.invoices = InvoiceStore(self.electrum_config) - self.bind(url=self.set_URI) - # were we sent a url? - url = self.electrum_config.get('url', None) - if url: - self.set_URI(url) + self.bind(uri=self.on_uri) # create triggers so as to minimize updation a max of 2 times a sec self._trigger_update_wallet =\ t@@ -217,7 +213,8 @@ class ElectrumWindow(App): def on_pr(self, pr): if pr.verify(self.contacts): key = self.invoices.add(pr) - self.invoices_screen.update() + if self.invoices_screen: + self.invoices_screen.update() status = self.invoices.get_status(key) if status == PR_PAID: self.show_error("invoice already paid") t@@ -241,6 +238,11 @@ class ElectrumWindow(App): return self.send_screen.set_URI(url) + def on_uri(self, instance, uri): + if uri: + Logger.info("on uri:", uri) + self.switch_to('send') + self.set_URI(uri) def update_tab(self, name): s = getattr(self, name + '_screen', None) t@@ -253,8 +255,13 @@ class ElectrumWindow(App): self.update_tab(tab) def switch_to(self, name): + s = getattr(self, name + '_screen', None) + if self.send_screen is None: + s = self.tabs.ids[name + '_screen'] + s.load_screen() + panel = self.tabs.ids.panel tab = self.tabs.ids[name + '_tab'] - self.tabs.ids.panel.switch_to(tab) + panel.switch_to(tab) def show_request(self, addr): self.receive_address = addr t@@ -310,11 +317,15 @@ class ElectrumWindow(App): 'gui/kivy/data/fonts/Roboto-Bold.ttf') win.softinput_mode = 'below_target' - self.on_size(win, win.size) self.init_ui() self.load_wallet_by_name(self.electrum_config.get_wallet_path()) + # init plugins run_hook('init_kivy', self) + # were we sent a url? + self.uri = self.electrum_config.get('url') + # default tab + self.switch_to('send' if self.uri else 'history') def load_wallet_by_name(self, wallet_path): if not wallet_path: t@@ -405,9 +416,13 @@ class ElectrumWindow(App): # load and focus the ui self.root.manager = self.root.ids['manager'] - self.recent_activity_card = None + self.history_screen = None self.contacts_screen = None + self.send_screen = None + self.invoices_screen = None + self.receive_screen = None + self.requests_screen = None self.icon = "icons/electrum.png" DIR diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py t@@ -468,7 +468,6 @@ class TabbedCarousel(Factory.TabbedPanel): scroll_x = 0 else: scroll_x = 1. * (n - idx - 1) / (n - 1) - mation = Factory.Animation(scroll_x=scroll_x, d=.25) mation.cancel_all(scrlv) mation.start(scrlv)