This commit is contained in:
Kovid Goyal 2011-03-15 11:44:49 -06:00
commit babce4fdd4

View File

@ -291,6 +291,14 @@ class TagsView(QTreeView): # {{{
return return
def show_context_menu(self, point): def show_context_menu(self, point):
def display_name( tag):
if tag.category == 'search':
n = tag.name
if len(n) > 45:
n = n[:45] + '...'
return "'" + n + "'"
return tag.name
index = self.indexAt(point) index = self.indexAt(point)
self.context_menu = QMenu(self) self.context_menu = QMenu(self)
@ -321,18 +329,18 @@ class TagsView(QTreeView): # {{{
if tag.is_editable: if tag.is_editable:
# Add the 'rename' items # Add the 'rename' items
self.context_menu.addAction(self.rename_icon, self.context_menu.addAction(self.rename_icon,
_('Rename %s')%tag.name, _('Rename %s')%display_name(tag),
partial(self.context_menu_handler, action='edit_item', partial(self.context_menu_handler, action='edit_item',
index=index)) index=index))
if key == 'authors': if key == 'authors':
self.context_menu.addAction(_('Edit sort for %s')%tag.name, self.context_menu.addAction(_('Edit sort for %s')%display_name(tag),
partial(self.context_menu_handler, partial(self.context_menu_handler,
action='edit_author_sort', index=tag.id)) action='edit_author_sort', index=tag.id))
# is_editable is also overloaded to mean 'can be added # is_editable is also overloaded to mean 'can be added
# to a user category' # to a user category'
m = self.context_menu.addMenu(self.user_category_icon, m = self.context_menu.addMenu(self.user_category_icon,
_('Add %s to user category')%tag.name) _('Add %s to user category')%display_name(tag))
nt = self.model().category_node_tree nt = self.model().category_node_tree
def add_node_tree(tree_dict, m, path): def add_node_tree(tree_dict, m, path):
p = path[:] p = path[:]
@ -351,27 +359,28 @@ class TagsView(QTreeView): # {{{
add_node_tree(nt, m, []) add_node_tree(nt, m, [])
elif key == 'search': elif key == 'search':
self.context_menu.addAction(self.rename_icon, self.context_menu.addAction(self.rename_icon,
_('Rename %s')%tag.name, _('Rename %s')%display_name(tag),
partial(self.context_menu_handler, action='edit_item', partial(self.context_menu_handler, action='edit_item',
index=index)) index=index))
self.context_menu.addAction(self.delete_icon, self.context_menu.addAction(self.delete_icon,
_('Delete search %s')%tag.name, _('Delete search %s')%display_name(tag),
partial(self.context_menu_handler, partial(self.context_menu_handler,
action='delete_search', key=tag.name)) action='delete_search', key=tag.name))
if key.startswith('@') and not item.is_gst: if key.startswith('@') and not item.is_gst:
self.context_menu.addAction(self.user_category_icon, self.context_menu.addAction(self.user_category_icon,
_('Remove %s from category %s')%(tag.name, item.py_name), _('Remove %s from category %s')%
(display_name(tag), item.py_name),
partial(self.context_menu_handler, partial(self.context_menu_handler,
action='delete_item_from_user_category', action='delete_item_from_user_category',
key = key, index = tag_item)) key = key, index = tag_item))
# Add the search for value items. All leaf nodes are searchable # Add the search for value items. All leaf nodes are searchable
self.context_menu.addAction(self.search_icon, self.context_menu.addAction(self.search_icon,
_('Search for %s')%tag.name, _('Search for %s')%display_name(tag),
partial(self.context_menu_handler, action='search', partial(self.context_menu_handler, action='search',
search_state=TAG_SEARCH_STATES['mark_plus'], search_state=TAG_SEARCH_STATES['mark_plus'],
index=index)) index=index))
self.context_menu.addAction(self.search_icon, self.context_menu.addAction(self.search_icon,
_('Search for everything but %s')%tag.name, _('Search for everything but %s')%display_name(tag),
partial(self.context_menu_handler, action='search', partial(self.context_menu_handler, action='search',
search_state=TAG_SEARCH_STATES['mark_minus'], search_state=TAG_SEARCH_STATES['mark_minus'],
index=index)) index=index))