commit 94c0d8682161f480fcf52f66db1b1049dcb0bd94
parent e620f36971558780b9f135d157d25842800d1258
Author: ThomasV <thomasv@gitorious>
Date: Sat, 14 Mar 2015 10:47:09 +0100
generic add_button method for TextEdit, with tooltips
Diffstat:
2 files changed, 24 insertions(+), 32 deletions(-)
diff --git a/gui/qt/qrtextedit.py b/gui/qt/qrtextedit.py
@@ -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):
@@ -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:
diff --git a/plugins/audio_modem.py b/plugins/audio_modem.py
@@ -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):
@@ -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)
@@ -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