URI: 
       tgeneric add_button method for TextEdit, with tooltips - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 94c0d8682161f480fcf52f66db1b1049dcb0bd94
   DIR parent e620f36971558780b9f135d157d25842800d1258
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Sat, 14 Mar 2015 10:47:09 +0100
       
       generic add_button method for TextEdit, with tooltips
       
       Diffstat:
         M gui/qt/qrtextedit.py                |      32 +++++++++++++++++++++----------
         M plugins/audio_modem.py              |      24 ++----------------------
       
       2 files changed, 24 insertions(+), 32 deletions(-)
       ---
   DIR diff --git a/gui/qt/qrtextedit.py b/gui/qt/qrtextedit.py
       t@@ -7,25 +7,38 @@ class QRTextEdit(QPlainTextEdit):
            """Abstract class for QR-code related TextEdits. Do not use directly."""
            def __init__(self, text=None):
                super(QRTextEdit, self).__init__(text)
       -        self.button = QToolButton(self)
       -        self.button.setIcon(QIcon(":icons/qrcode.png"))
       -        self.button.setStyleSheet("QToolButton { border: none; padding: 0px; }")
       -        self.button.setVisible(True)
                self.setText = self.setPlainText
       +        self.buttons = []
        
            def resizeEvent(self, e):
                o = QPlainTextEdit.resizeEvent(self, e)
       -        sz = self.button.sizeHint()
                frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
       -        self.button.move(self.rect().right() - frameWidth - sz.width(),
       -                         (self.rect().bottom() - frameWidth - sz.height()))
       +        x = self.rect().right() - frameWidth
       +        y = self.rect().bottom() - frameWidth
       +        for button in self.buttons:
       +            sz = button.sizeHint()
       +            x -= sz.width()
       +            button.move(x, y - sz.height())
                return o
        
       +    def add_button(self, icon_name, on_click, tooltip):
       +        button = QToolButton(self)
       +        button.setIcon(QIcon(icon_name))
       +        button.setStyleSheet("QToolButton { border: none; padding: 0px; }")
       +        button.setVisible(True)
       +        button.setToolTip(tooltip)
       +        button.clicked.connect(on_click)
       +        self.buttons.append(button)
       +        return button
       +
       +
       +
       +
        class ShowQRTextEdit(QRTextEdit):
            def __init__(self, text=None):
                super(ShowQRTextEdit, self).__init__(text)
                self.setReadOnly(1)
       -        self.button.clicked.connect(self.qr_show)
       +        self.add_button(":icons/qrcode.png", self.qr_show, _("Show as QR code"))
                run_hook('show_text_edit', self)
        
            def qr_show(self):
       t@@ -50,10 +63,9 @@ class ScanQRTextEdit(QRTextEdit):
                assert win, "You must pass a window with access to the config to ScanQRTextEdit constructor."
                if win:
                    assert hasattr(win,"config"), "You must pass a window with access to the config to ScanQRTextEdit constructor."
       -        self.button.clicked.connect(self.qr_input)
       +        self.add_button(":icons/qrcode.png", self.qr_input, _("Read QR code"))
                run_hook('scan_text_edit', self)
        
       -
            def qr_input(self):
                from electrum import qrscanner
                try:
   DIR diff --git a/plugins/audio_modem.py b/plugins/audio_modem.py
       t@@ -92,8 +92,7 @@ class Plugin(BasePlugin):
                def handler():
                    self.receiver = self._recv(parent=parent)
                    self.receiver.start()
       -        button = add_button(parent=parent, icon_name=':icons/microphone.png')
       -        button.clicked.connect(handler)
       +        parent.add_button(':icons/microphone.png', handler, _("Read from microphone"))
        
            @hook
            def show_text_edit(self, parent):
       t@@ -101,8 +100,7 @@ class Plugin(BasePlugin):
                    blob = str(parent.toPlainText())
                    self.sender = self._send(parent=parent, blob=blob)
                    self.sender.start()
       -        button = add_button(parent=parent, icon_name=':icons/speaker.png')
       -        button.clicked.connect(handler)
       +        parent.add_button(':icons/speaker.png', handler, _("Send to speaker"))
        
            def _audio_interface(self):
                interface = amodem.audio.Interface(config=self.modem_config)
       t@@ -148,21 +146,3 @@ class Plugin(BasePlugin):
                                     run_task=receiver_thread, on_success=on_success)
        
        
       -def add_button(parent, icon_name):
       -    audio_button = QToolButton(parent)
       -    audio_button.setIcon(QIcon(icon_name))
       -    audio_button.setStyleSheet("QToolButton { border: none; padding: 0px; }")
       -    audio_button.setVisible(True)
       -
       -    parent_resizeEvent = parent.resizeEvent
       -
       -    def resizeEvent(e):
       -        result = parent_resizeEvent(e)
       -        qr_button = parent.button
       -        left = qr_button.geometry().left() - audio_button.sizeHint().width()
       -        top = qr_button.geometry().top()
       -        audio_button.move(left, top)
       -        return result
       -
       -    parent.resizeEvent = resizeEvent
       -    return audio_button