added show/hide on dimensions

This commit is contained in:
Arnar Flatberg 2007-02-21 19:57:27 +00:00
parent 2bae169f38
commit 0d8702bb71

View File

@ -402,18 +402,30 @@ class DimListController:
## dimstore is a list of all dimensions in the application
self.dimstore = gtk.ListStore(gobject.TYPE_STRING)
# filter for hiding dims prefixed with underscore
self.dimstore_filter = self.dimstore.filter_new()
self.dimstore_filter.set_visible_func(self._dimension_filter)
## The widgets we are controlling
self.dimlist = dimlist
## Set up dimensions list
dimlist.set_model(self.dimstore)
dimlist.set_model(self.dimstore_filter)
renderer = gtk.CellRendererText()
dim_column = gtk.TreeViewColumn('Dimension', renderer, text=0)
dimlist.insert_column(dim_column, 0)
# Signals
dimlist.connect('row-activated', self._dim_row_activated)
dimlist.connect('cursor-changed', self._dim_cursor_changed)
dimlist.connect('button-press-event', self._dimlist_button_pressed)
# Set up dimension context menu
self._dimlist_menu = SimpleMenu()
self._dimlist_menu.add_simple_item('Hide', self._on_dim_hide)
self._dimlist_menu.add_simple_item('Show all', self._on_dim_show)
##
## Public interface
@ -460,11 +472,27 @@ class DimListController:
if not self.get_dimension(dim):
self.dimstore.insert_after(None, (dim,))
def _dimension_filter(self, store, row):
"""Filters out everything but the selected dimension."""
row_dim = store.get_value(row, 2)
return row_dim == self._current_dim
#def _dimension_filter(self, store, row):
# """Filters out everything but the selected dimension."""
# row_dim = store.get_value(row, 2)
# return row_dim == self._current_dim
def _dimension_filter(self, store, row):
"""Filters out dimension with underscore prefix"""
visible = False
name = store.get_value(row, 0)
if name != None:
visible = name[0]!="_"
#print (name, visible)
return visible
def _on_dim_hide(self, menuitem):
self.dimstore_filter.refilter()
self.dimlist.set_model(self.dimstore_filter)
def _on_dim_show(self, menuitem):
self.dimlist.set_model(self.dimstore)
##
## GTK Callbacks.
##
@ -477,3 +505,6 @@ class DimListController:
def _dim_row_activated(self, widget, path, column):
self._seltree_controller.set_dimension(dim)
def _dimlist_button_pressed(self, widget, event):
if event.button == 3:
self._dimlist_menu.popup(None, None, None, event.button, event.time)