Fix #7888 ({tags} control generate 'tags' word for empty tags collection). Don't refresh the Tag browser if it is hidden. SHould speed up metadata editing with large libraries, if you hide teh Tag Browser.

This commit is contained in:
Kovid Goyal 2010-12-13 13:16:19 -07:00
commit c20a6359d0
4 changed files with 19 additions and 7 deletions

View File

@ -145,7 +145,7 @@ class TagCategories(QDialog, Ui_TagCategories):
index = self.all_items[node.data(Qt.UserRole).toPyObject()].index index = self.all_items[node.data(Qt.UserRole).toPyObject()].index
if index not in self.applied_items: if index not in self.applied_items:
self.applied_items.append(index) self.applied_items.append(index)
self.applied_items.sort(key=lambda x:sort_key(self.all_items[x])) self.applied_items.sort(key=lambda x:sort_key(self.all_items[x].name))
self.display_filtered_categories(None) self.display_filtered_categories(None)
def unapply_tags(self, node=None): def unapply_tags(self, node=None):

View File

@ -123,6 +123,8 @@ class Stack(QStackedWidget): # {{{
_('Tag Browser'), I('tags.png'), _('Tag Browser'), I('tags.png'),
parent=parent, side_index=0, initial_side_size=200, parent=parent, side_index=0, initial_side_size=200,
shortcut=_('Shift+Alt+T')) shortcut=_('Shift+Alt+T'))
parent.tb_splitter.state_changed.connect(
self.tb_widget.set_pane_is_visible, Qt.QueuedConnection)
parent.tb_splitter.addWidget(self.tb_widget) parent.tb_splitter.addWidget(self.tb_widget)
parent.tb_splitter.addWidget(parent.cb_splitter) parent.tb_splitter.addWidget(parent.cb_splitter)
parent.tb_splitter.setCollapsible(parent.tb_splitter.other_index, False) parent.tb_splitter.setCollapsible(parent.tb_splitter.other_index, False)

View File

@ -87,6 +87,13 @@ class TagsView(QTreeView): # {{{
self.setDragDropMode(self.DropOnly) self.setDragDropMode(self.DropOnly)
self.setDropIndicatorShown(True) self.setDropIndicatorShown(True)
self.setAutoExpandDelay(500) self.setAutoExpandDelay(500)
self.pane_is_visible = False
def set_pane_is_visible(self, to_what):
pv = self.pane_is_visible
self.pane_is_visible = to_what
if to_what and not pv:
self.recount()
def set_database(self, db, tag_match, sort_by): def set_database(self, db, tag_match, sort_by):
self.hidden_categories = config['tag_browser_hidden_categories'] self.hidden_categories = config['tag_browser_hidden_categories']
@ -300,7 +307,7 @@ class TagsView(QTreeView): # {{{
return self.isExpanded(idx) return self.isExpanded(idx)
def recount(self, *args): def recount(self, *args):
if self.disable_recounting: if self.disable_recounting or not self.pane_is_visible:
return return
self.refresh_signal_processed = True self.refresh_signal_processed = True
ci = self.currentIndex() ci = self.currentIndex()
@ -969,6 +976,7 @@ class TagBrowserWidget(QWidget): # {{{
self._layout.setContentsMargins(0,0,0,0) self._layout.setContentsMargins(0,0,0,0)
parent.tags_view = TagsView(parent) parent.tags_view = TagsView(parent)
self.tags_view = parent.tags_view
self._layout.addWidget(parent.tags_view) self._layout.addWidget(parent.tags_view)
parent.sort_by = QComboBox(parent) parent.sort_by = QComboBox(parent)
@ -998,6 +1006,9 @@ class TagBrowserWidget(QWidget): # {{{
_('Add your own categories to the Tag Browser')) _('Add your own categories to the Tag Browser'))
parent.edit_categories.setStatusTip(parent.edit_categories.toolTip()) parent.edit_categories.setStatusTip(parent.edit_categories.toolTip())
def set_pane_is_visible(self, to_what):
self.tags_view.set_pane_is_visible(to_what)
# }}} # }}}

View File

@ -119,10 +119,8 @@ class SafeFormat(TemplateFormatter):
try: try:
b = self.book.get_user_metadata(key, False) b = self.book.get_user_metadata(key, False)
except: except:
if DEBUG:
traceback.print_exc() traceback.print_exc()
b = None b = None
if b is not None and b['datatype'] == 'composite': if b is not None and b['datatype'] == 'composite':
if key in self.composite_values: if key in self.composite_values:
return self.composite_values[key] return self.composite_values[key]
@ -135,7 +133,6 @@ class SafeFormat(TemplateFormatter):
return val.replace('/', '_').replace('\\', '_') return val.replace('/', '_').replace('\\', '_')
return '' return ''
except: except:
if DEBUG:
traceback.print_exc() traceback.print_exc()
return key return key
@ -155,6 +152,8 @@ def get_components(template, mi, id, timefmt='%b %Y', length=250,
format_args['tags'] = mi.format_tags() format_args['tags'] = mi.format_tags()
if format_args['tags'].startswith('/'): if format_args['tags'].startswith('/'):
format_args['tags'] = format_args['tags'][1:] format_args['tags'] = format_args['tags'][1:]
else:
format_args['tags'] = ''
if mi.series: if mi.series:
format_args['series'] = tsfmt(mi.series) format_args['series'] = tsfmt(mi.series)
if mi.series_index is not None: if mi.series_index is not None: