diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py
index f918a5843c..8ac36e06b9 100644
--- a/src/calibre/gui2/init.py
+++ b/src/calibre/gui2/init.py
@@ -20,7 +20,6 @@ from calibre.gui2.tag_view import TagBrowserWidget
from calibre.gui2.book_details import BookDetails
from calibre.gui2.notify import get_notifier
-
_keep_refs = []
def partial(*args, **kwargs):
@@ -182,6 +181,7 @@ class ToolbarMixin(object): # {{{
for ch in self.tool_bar.children():
if isinstance(ch, QToolButton):
ch.setCursor(Qt.PointingHandCursor)
+ ch.setStatusTip(ch.toolTip())
self.tool_bar.contextMenuEvent = self.no_op
@@ -367,7 +367,7 @@ class StatusBar(QStatusBar): # {{{
self.notifier = get_notifier(systray)
def show_message(self, msg, timeout=0):
- QStatusBar.showMessage(self, msg, timeout)
+ self.showMessage(msg, timeout)
if self.notifier is not None and not config['disable_tray_notification']:
if isosx and isinstance(msg, unicode):
try:
@@ -377,7 +377,8 @@ class StatusBar(QStatusBar): # {{{
self.notifier(msg)
def clear_message(self):
- QStatusBar.clearMessage(self)
+ self.clearMessage()
+
# }}}
diff --git a/src/calibre/gui2/main.ui b/src/calibre/gui2/main.ui
index c863ff28f5..a05796a6cb 100644
--- a/src/calibre/gui2/main.ui
+++ b/src/calibre/gui2/main.ui
@@ -259,7 +259,7 @@
- Choose saved search or enter name for new saved search
+
15
diff --git a/src/calibre/gui2/search_box.py b/src/calibre/gui2/search_box.py
index ef0c6b1455..dd7d0a63a0 100644
--- a/src/calibre/gui2/search_box.py
+++ b/src/calibre/gui2/search_box.py
@@ -6,6 +6,8 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal '
__docformat__ = 'restructuredtext en'
+import re
+
from PyQt4.Qt import QComboBox, Qt, QLineEdit, QStringList, pyqtSlot, \
pyqtSignal, SIGNAL, QObject, QDialog, QCompleter, \
QAction, QKeySequence
@@ -368,6 +370,10 @@ class SearchBoxMixin(object):
self.action_focus_search.triggered.connect(lambda x:
self.search.setFocus(Qt.OtherFocusReason))
self.addAction(self.action_focus_search)
+ self.search.setStatusTip(re.sub(r'<\w+>', ' ',
+ unicode(self.search.toolTip())))
+ self.advanced_search_button.setStatusTip(self.advanced_search_button.toolTip())
+ self.clear_button.setStatusTip(self.clear_button.toolTip())
def search_box_cleared(self):
self.tags_view.clear()
@@ -396,6 +402,12 @@ class SavedSearchBoxMixin(object):
self.saved_search.delete_search_button_clicked)
self.connect(self.copy_search_button, SIGNAL('clicked()'),
self.saved_search.copy_search_button_clicked)
+ self.saved_search.setToolTip(
+ _('Choose saved search or enter name for new saved search'))
+ self.saved_search.setStatusTip(self.saved_search.toolTip())
+ for x in ('copy', 'save', 'delete'):
+ b = getattr(self, x+'_search_button')
+ b.setStatusTip(b.toolTip())
def saved_searches_changed(self):
diff --git a/src/calibre/gui2/search_restriction_mixin.py b/src/calibre/gui2/search_restriction_mixin.py
index 287c3b2fc2..3a71fa3de0 100644
--- a/src/calibre/gui2/search_restriction_mixin.py
+++ b/src/calibre/gui2/search_restriction_mixin.py
@@ -11,6 +11,7 @@ class SearchRestrictionMixin(object):
self.library_view.model().count_changed_signal.connect(self.restriction_count_changed)
self.search_restriction.setSizeAdjustPolicy(self.search_restriction.AdjustToMinimumContentsLengthWithIcon)
self.search_restriction.setMinimumContentsLength(10)
+ self.search_restriction.setStatusTip(self.search_restriction.toolTip())
'''
Adding and deleting books while restricted creates a complexity. When added,
diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py
index 189caea6ea..2a9fb129ac 100644
--- a/src/calibre/gui2/tag_view.py
+++ b/src/calibre/gui2/tag_view.py
@@ -768,6 +768,9 @@ class TagBrowserWidget(QWidget): # {{{
for x in (_('Sort by name'), _('Sort by popularity'),
_('Sort by average rating')):
parent.sort_by.addItem(x)
+ parent.sort_by.setToolTip(
+ _('Set the sort order for entries in the Tag Browser'))
+ parent.sort_by.setStatusTip(parent.sort_by.toolTip())
parent.sort_by.setCurrentIndex(0)
self._layout.addWidget(parent.sort_by)
@@ -776,9 +779,16 @@ class TagBrowserWidget(QWidget): # {{{
parent.tag_match.addItem(x)
parent.tag_match.setCurrentIndex(0)
self._layout.addWidget(parent.tag_match)
+ parent.tag_match.setToolTip(
+ _('When selecting multiple entries in the Tag Browser '
+ 'match any or all of them'))
+ parent.tag_match.setStatusTip(parent.tag_match.toolTip())
parent.edit_categories = QPushButton(_('Manage &user categories'), parent)
self._layout.addWidget(parent.edit_categories)
+ parent.edit_categories.setToolTip(
+ _('Add your own categories to the Tag Browser'))
+ parent.edit_categories.setStatusTip(parent.edit_categories.toolTip())
# }}}
diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py
index 756e375e23..9a3ab86750 100644
--- a/src/calibre/gui2/ui.py
+++ b/src/calibre/gui2/ui.py
@@ -163,6 +163,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceMixin, ToolbarMixin, # {{{
self.donate_action = self.system_tray_menu.addAction(
QIcon(I('donate.svg')), _('&Donate to support calibre'))
self.donate_button.setDefaultAction(self.donate_action)
+ self.donate_button.setStatusTip(self.donate_button.toolTip())
self.eject_action = self.system_tray_menu.addAction(
QIcon(I('eject.svg')), _('&Eject connected device'))
self.eject_action.setEnabled(False)
diff --git a/src/calibre/gui2/widgets.py b/src/calibre/gui2/widgets.py
index d46c020484..d94d8e7292 100644
--- a/src/calibre/gui2/widgets.py
+++ b/src/calibre/gui2/widgets.py
@@ -298,6 +298,14 @@ class LocationModel(QAbstractListModel):
row = 3
return row
+ def get_tooltip(self, row, drow):
+ ans = self.tooltips[row]
+ if row > 0:
+ fs = self.free[drow-1]
+ if fs > -1:
+ ans += '\n\n%s '%(human_readable(fs)) + _('free')
+ return ans
+
def data(self, index, role):
row = index.row()
drow = self.get_device_row(row)
@@ -308,12 +316,8 @@ class LocationModel(QAbstractListModel):
data = QVariant(text)
elif role == Qt.DecorationRole:
data = self.icons[drow]
- elif role == Qt.ToolTipRole:
- ans = self.tooltips[row]
- if row > 0:
- fs = self.free[drow-1]
- if fs > -1:
- ans += '\n\n%s '%(human_readable(fs)) + _('free')
+ elif role in (Qt.ToolTipRole, Qt.StatusTipRole):
+ ans = self.get_tooltip(row, drow)
data = QVariant(ans)
elif role == Qt.SizeHintRole:
data = QVariant(QSize(155, 90))
@@ -1011,12 +1015,14 @@ class LayoutButton(QToolButton):
label =_('Show')
self.setText(label + ' ' + self.label)
self.setToolTip(self.text())
+ self.setStatusTip(self.text())
def set_state_to_hide(self, *args):
self.setChecked(True)
label = _('Hide')
self.setText(label + ' ' + self.label)
self.setToolTip(self.text())
+ self.setStatusTip(self.text())
def update_state(self, *args):
if self.splitter.is_side_index_hidden: