mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 22:42:25 -04:00
custom tooltip handler that doesn't hide on mouse movement
This commit is contained in:
parent
355d78f177
commit
be4b3faeb2
1 changed files with 39 additions and 10 deletions
|
@ -944,22 +944,51 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def showToolTip(self, msg):
|
def showToolTip(self, msg):
|
||||||
t = QTimer(self)
|
class CustomLabel(QLabel):
|
||||||
t.setSingleShot(True)
|
def mousePressEvent(self, evt):
|
||||||
t.start(200)
|
evt.accept()
|
||||||
self.connect(t, SIGNAL("timeout()"),
|
self.hide()
|
||||||
lambda msg=msg: self._showToolTip(msg))
|
old = getattr(self, 'toolTipFrame', None)
|
||||||
|
if old:
|
||||||
def _showToolTip(self, msg):
|
old.deleteLater()
|
||||||
QToolTip.showText(
|
old = getattr(self, 'toolTipTimer', None)
|
||||||
self.mainWin.statusbar.mapToGlobal(QPoint(0, -40)),
|
if old:
|
||||||
"""\
|
old.stop()
|
||||||
|
old.deleteLater()
|
||||||
|
self.toolTipLabel = CustomLabel("""\
|
||||||
<table cellpadding=10>
|
<table cellpadding=10>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src=":/icons/help-hint.png"></td>
|
<td><img src=":/icons/help-hint.png"></td>
|
||||||
<td>%s</td>
|
<td>%s</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>""" % msg)
|
</table>""" % msg)
|
||||||
|
self.toolTipLabel.setFrameStyle(QFrame.Panel)
|
||||||
|
self.toolTipLabel.setLineWidth(2)
|
||||||
|
self.toolTipLabel.setWindowFlags(Qt.ToolTip)
|
||||||
|
p = QPalette()
|
||||||
|
p.setColor(QPalette.Window, QColor("#feffc4"))
|
||||||
|
self.toolTipLabel.setPalette(p)
|
||||||
|
aw = (self.app.instance().activeWindow() or
|
||||||
|
self)
|
||||||
|
self.toolTipLabel.move(
|
||||||
|
aw.mapToGlobal(QPoint(0, -100 + aw.height())))
|
||||||
|
self.toolTipLabel.show()
|
||||||
|
self.toolTipTimer = QTimer(self)
|
||||||
|
self.toolTipTimer.setSingleShot(True)
|
||||||
|
self.toolTipTimer.start(2000)
|
||||||
|
self.connect(self.toolTipTimer, SIGNAL("timeout()"),
|
||||||
|
self.closeToolTip)
|
||||||
|
|
||||||
|
def closeToolTip(self):
|
||||||
|
label = getattr(self, 'toolTipLabel', None)
|
||||||
|
if label:
|
||||||
|
label.deleteLater()
|
||||||
|
self.toolTipLabel = None
|
||||||
|
timer = getattr(self, 'toolTipTimer', None)
|
||||||
|
if timer:
|
||||||
|
timer.stop()
|
||||||
|
timer.deleteLater()
|
||||||
|
self.toolTipTimer = None
|
||||||
|
|
||||||
def save(self, required=False):
|
def save(self, required=False):
|
||||||
if not self.deck.path:
|
if not self.deck.path:
|
||||||
|
|
Loading…
Reference in a new issue