URI: 
       twatchtower_dialog.py - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
       twatchtower_dialog.py (3487B)
       ---
            1 #!/usr/bin/env python
            2 #
            3 # Electrum - lightweight Bitcoin client
            4 # Copyright (C) 2012 thomasv@gitorious
            5 #
            6 # Permission is hereby granted, free of charge, to any person
            7 # obtaining a copy of this software and associated documentation files
            8 # (the "Software"), to deal in the Software without restriction,
            9 # including without limitation the rights to use, copy, modify, merge,
           10 # publish, distribute, sublicense, and/or sell copies of the Software,
           11 # and to permit persons to whom the Software is furnished to do so,
           12 # subject to the following conditions:
           13 #
           14 # The above copyright notice and this permission notice shall be
           15 # included in all copies or substantial portions of the Software.
           16 #
           17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
           18 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
           19 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
           20 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
           21 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
           22 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
           23 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
           24 # SOFTWARE.
           25 
           26 from PyQt5.QtGui import QStandardItemModel, QStandardItem
           27 from PyQt5.QtCore import Qt
           28 from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QPushButton, QLabel)
           29 
           30 from electrum.i18n import _
           31 from .util import MyTreeView, Buttons
           32 
           33 
           34 class WatcherList(MyTreeView):
           35     def __init__(self, parent):
           36         super().__init__(parent, self.create_menu, stretch_column=0, editable_columns=[])
           37         self.setModel(QStandardItemModel(self))
           38         self.setSortingEnabled(True)
           39         self.update()
           40 
           41     def create_menu(self, x):
           42         pass
           43 
           44     def update(self):
           45         if self.parent.lnwatcher is None:
           46             return
           47         self.model().clear()
           48         self.update_headers({0:_('Outpoint'), 1:_('Tx'), 2:_('Status')})
           49         lnwatcher = self.parent.lnwatcher
           50         l = lnwatcher.list_sweep_tx()
           51         for outpoint in l:
           52             n = lnwatcher.get_num_tx(outpoint)
           53             status = lnwatcher.get_channel_status(outpoint)
           54             items = [QStandardItem(e) for e in [outpoint, "%d"%n, status]]
           55             self.model().insertRow(self.model().rowCount(), items)
           56         size = lnwatcher.sweepstore.filesize()
           57         self.parent.size_label.setText('Database size: %.2f Mb'%(size/1024/1024.))
           58 
           59 
           60 class WatchtowerDialog(QDialog):
           61 
           62     def __init__(self, gui_object):
           63         QDialog.__init__(self)
           64         self.gui_object = gui_object
           65         self.config = gui_object.config
           66         self.network = gui_object.daemon.network
           67         assert self.network
           68         self.lnwatcher = self.network.local_watchtower
           69         self.setWindowTitle(_('Watchtower'))
           70         self.setMinimumSize(600, 20)
           71         self.size_label = QLabel()
           72         self.watcher_list = WatcherList(self)
           73 
           74         vbox = QVBoxLayout(self)
           75         vbox.addWidget(self.size_label)
           76         vbox.addWidget(self.watcher_list)
           77         b = QPushButton(_('Close'))
           78         b.clicked.connect(self.close)
           79         vbox.addLayout(Buttons(b))
           80         self.watcher_list.update()
           81 
           82     def is_hidden(self):
           83         return self.isMinimized() or self.isHidden()
           84 
           85     def show_or_hide(self):
           86         if self.is_hidden():
           87             self.bring_to_top()
           88         else:
           89             self.hide()
           90 
           91     def bring_to_top(self):
           92         self.show()
           93         self.raise_()
           94 
           95     def closeEvent(self, event):
           96         self.gui_object.watchtower_dialog = None
           97         event.accept()