tlightning: channel details popup - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 5e1412a83975b630a31ffbb625c9f36619c9d31b DIR parent ec89b496bf33f980412ee2f6b1ea1d66f9713cc4 HTML Author: Janus <ysangkok@gmail.com> Date: Fri, 6 Apr 2018 18:33:25 +0200 lightning: channel details popup Diffstat: M gui/kivy/uix/dialogs/lightning_cha… | 62 ++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) --- DIR diff --git a/gui/kivy/uix/dialogs/lightning_channels.py b/gui/kivy/uix/dialogs/lightning_channels.py t@@ -1,12 +1,14 @@ import binascii from kivy.lang import Builder from kivy.factory import Factory +from kivy.uix.popup import Popup from kivy.clock import Clock import electrum.lightning as lightning from electrum_gui.kivy.uix.context_menu import ContextMenu Builder.load_string(''' <LightningChannelItem@CardItem> + details: {} active: False channelPoint: '<channelPoint not set>' Label: t@@ -26,8 +28,59 @@ Builder.load_string(''' height: self.minimum_height spacing: '2dp' padding: '12dp' + +<ChannelDetailsItem@BoxLayout>: + canvas.before: + Color: + rgba: 0.5, 0.5, 0.5, 1 + Rectangle: + size: self.size + pos: self.pos + value: '' + Label: + text: root.value + text_size: self.size # this makes the text not overflow, but wrap + +<ChannelDetailsRow@BoxLayout>: + keyName: '' + value: '' + ChannelDetailsItem: + value: root.keyName + size_hint_x: 0.5 # this makes the column narrower + + # see https://blog.kivy.org/2014/07/wrapping-text-in-kivys-label/ + ScrollView: + Label: + text: root.value + size_hint_y: None + text_size: self.width, None + height: self.texture_size[1] + +<ChannelDetailsList@RecycleView>: + scroll_type: ['bars', 'content'] + scroll_wheel_distance: dp(114) + bar_width: dp(10) + viewclass: 'ChannelDetailsRow' + RecycleBoxLayout: + default_size: None, dp(56) + default_size_hint: 1, None + size_hint_y: None + height: self.minimum_height + orientation: 'vertical' + spacing: dp(2) + +<ChannelDetailsPopup@Popup>: + id: popuproot + data: [] + ChannelDetailsList: + data: popuproot.data ''') +class ChannelDetailsPopup(Popup): + def __init__(self, data, **kwargs): + super(ChanenlDetailsPopup,self).__init__(**kwargs) + self.data = data + class LightningChannelsDialog(Factory.Popup): def __init__(self, app): super(LightningChannelsDialog, self).__init__() t@@ -35,13 +88,19 @@ class LightningChannelsDialog(Factory.Popup): self.app = app self.context_menu = None + def show_channel_details(self, obj): + p = Factory.ChannelDetailsPopup() + p.data = [{'keyName': key, 'value': str(obj.details[key])} for key in obj.details.keys()] + p.open() + def close_channel(self, obj): print("asked to close channel", obj.channelPoint) lightning.lightningCall(self.app.wallet.network.lightningrpc, "closechannel")(*([obj.channelPoint] + (["--force"] if not obj.active else []))) def show_menu(self, obj): self.hide_menu() - self.context_menu = ContextMenu(obj, [("Close", self.close_channel)]) + self.context_menu = ContextMenu(obj, [("Close", self.close_channel), + ("Details", self.show_channel_details)]) self.ids.box.add_widget(self.context_menu) def hide_menu(self): t@@ -76,6 +135,7 @@ class LightningChannelsDialog(Factory.Popup): print(i) item.channelPoint = i["channel_point"].split(":")[0] item.active = i["active"] + item.details = i channel_cards.add_widget(item) else: self.app.show_info(res)