URI: 
       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)