2007-09-26 Benny Malengier <benny.malengier@gramps-project.org>
* src/Selectors/_BaseSelector.py: add column sorting * src/Selectors/_SelectEvent.py:remove whitespace svn: r9008
This commit is contained in:
parent
c21bc288ee
commit
26aa0f83d0
@ -1,3 +1,7 @@
|
|||||||
|
2007-09-26 Benny Malengier <benny.malengier@gramps-project.org>
|
||||||
|
* src/Selectors/_BaseSelector.py: add column sorting
|
||||||
|
* src/Selectors/_SelectEvent.py:remove whitespace
|
||||||
|
|
||||||
2007-09-25 Benny Malengier <benny.malengier@gramps-project.org>
|
2007-09-25 Benny Malengier <benny.malengier@gramps-project.org>
|
||||||
* src/DataViews/_MediaView.py: COLUMN_NAMES as class constant for reuse
|
* src/DataViews/_MediaView.py: COLUMN_NAMES as class constant for reuse
|
||||||
* src/DataViews/_RepositoryView.py: COLUMN_NAMES as class constant for reuse
|
* src/DataViews/_RepositoryView.py: COLUMN_NAMES as class constant for reuse
|
||||||
|
@ -72,6 +72,8 @@ class BaseSelector(ManagedWindow.ManagedWindow):
|
|||||||
title_label = self.glade.get_widget('title')
|
title_label = self.glade.get_widget('title')
|
||||||
vbox = self.glade.get_widget('select_person_vbox')
|
vbox = self.glade.get_widget('select_person_vbox')
|
||||||
self.tree = self.glade.get_widget('plist')
|
self.tree = self.glade.get_widget('plist')
|
||||||
|
self.tree.set_headers_visible(True)
|
||||||
|
self.tree.set_headers_clickable(True)
|
||||||
self.tree.connect('row-activated', self._on_row_activated)
|
self.tree.connect('row-activated', self._on_row_activated)
|
||||||
|
|
||||||
self.colinfo = self.column_view_names()
|
self.colinfo = self.column_view_names()
|
||||||
@ -85,10 +87,16 @@ class BaseSelector(ManagedWindow.ManagedWindow):
|
|||||||
|
|
||||||
self.set_window(window,title_label,self.title)
|
self.set_window(window,title_label,self.title)
|
||||||
|
|
||||||
|
#set up sorting
|
||||||
|
self.sort_col = 0
|
||||||
|
self.setupcols = True
|
||||||
|
self.columns = []
|
||||||
|
self.sortorder = gtk.SORT_ASCENDING
|
||||||
|
|
||||||
self.skip_list=skip
|
self.skip_list=skip
|
||||||
self.build_tree()
|
self.build_tree()
|
||||||
self.selection = self.tree.get_selection()
|
self.selection = self.tree.get_selection()
|
||||||
self.add_columns(self.tree)
|
|
||||||
|
|
||||||
self._local_init()
|
self._local_init()
|
||||||
|
|
||||||
@ -113,7 +121,11 @@ class BaseSelector(ManagedWindow.ManagedWindow):
|
|||||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
||||||
column.set_fixed_width(item[1])
|
column.set_fixed_width(item[1])
|
||||||
column.set_resizable(True)
|
column.set_resizable(True)
|
||||||
column.set_sort_column_id(ix)
|
#connect click
|
||||||
|
column.connect('clicked', self.column_clicked, ix)
|
||||||
|
column.set_clickable(True)
|
||||||
|
##column.set_sort_column_id(ix) # model has its own sort implemented
|
||||||
|
self.columns.append(column)
|
||||||
tree.append_column(column)
|
tree.append_column(column)
|
||||||
|
|
||||||
def build_menu_names(self,obj):
|
def build_menu_names(self,obj):
|
||||||
@ -178,6 +190,21 @@ class BaseSelector(ManagedWindow.ManagedWindow):
|
|||||||
else :
|
else :
|
||||||
self.search_bar.hide()
|
self.search_bar.hide()
|
||||||
|
|
||||||
|
def begintree(self, store, path, node, sel_list):
|
||||||
|
handle_column = self.get_handle_column()
|
||||||
|
handle = store.get_value(node, handle_column)
|
||||||
|
sel_list.append(handle)
|
||||||
|
|
||||||
|
def first_selected(self):
|
||||||
|
""" first selected entry in the Selector tree
|
||||||
|
"""
|
||||||
|
mlist = []
|
||||||
|
self.selection.selected_foreach(self.begintree, mlist)
|
||||||
|
if mlist:
|
||||||
|
return mlist[0]
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
def column_order(self):
|
def column_order(self):
|
||||||
"""
|
"""
|
||||||
Column order for db columns
|
Column order for db columns
|
||||||
@ -209,10 +236,50 @@ class BaseSelector(ManagedWindow.ManagedWindow):
|
|||||||
"""
|
"""
|
||||||
#search info for the
|
#search info for the
|
||||||
filter_info = (False, self.search_bar.get_value())
|
filter_info = (False, self.search_bar.get_value())
|
||||||
#reset the model
|
#set up cols the first time
|
||||||
self.model = self.get_model_class()(self.db, skip=self.skip_list,
|
if self.setupcols :
|
||||||
|
self.add_columns(self.tree)
|
||||||
|
|
||||||
|
#reset the model with correct sorting
|
||||||
|
self.model = self.get_model_class()(self.db, self.sort_col,
|
||||||
|
self.sortorder,
|
||||||
|
sort_map=self.column_order(),
|
||||||
|
skip=self.skip_list,
|
||||||
search=filter_info)
|
search=filter_info)
|
||||||
|
|
||||||
self.tree.set_model(self.model)
|
self.tree.set_model(self.model)
|
||||||
|
|
||||||
|
#sorting arrow in column header (not on start, only on click)
|
||||||
|
if not self.setupcols :
|
||||||
|
for i in xrange(len(self.columns)):
|
||||||
|
enable_sort_flag = (i==self.sort_col)
|
||||||
|
self.columns[i].set_sort_indicator(enable_sort_flag)
|
||||||
|
self.columns[self.sort_col].set_sort_order(self.sortorder)
|
||||||
|
|
||||||
|
# set the search column to be the sorted column
|
||||||
|
search_col = self.column_order()[self.sort_col][1]
|
||||||
|
self.tree.set_search_column(search_col)
|
||||||
|
|
||||||
|
self.setupcols = False
|
||||||
|
|
||||||
|
def column_clicked(self, obj, data):
|
||||||
|
if self.sort_col != data:
|
||||||
|
self.sortorder = gtk.SORT_ASCENDING
|
||||||
|
else:
|
||||||
|
if (self.columns[data].get_sort_order() == gtk.SORT_DESCENDING
|
||||||
|
or not self.columns[data].get_sort_indicator()):
|
||||||
|
self.sortorder = gtk.SORT_ASCENDING
|
||||||
|
else:
|
||||||
|
self.sortorder = gtk.SORT_DESCENDING
|
||||||
|
|
||||||
|
self.sort_col = data
|
||||||
|
handle = self.first_selected()
|
||||||
|
|
||||||
|
self.build_tree()
|
||||||
|
|
||||||
|
if handle:
|
||||||
|
path = self.model.on_get_path(handle)
|
||||||
|
self.selection.select_path(path)
|
||||||
|
self.tree.scroll_to_cell(path, None, 1, 0.5, 0)
|
||||||
|
|
||||||
|
return True
|
||||||
|
@ -67,7 +67,6 @@ class SelectEvent(BaseSelector):
|
|||||||
def get_handle_column(self):
|
def get_handle_column(self):
|
||||||
return 6
|
return 6
|
||||||
|
|
||||||
|
|
||||||
def column_order(self):
|
def column_order(self):
|
||||||
"""
|
"""
|
||||||
returns a tuple indicating the column order of the model
|
returns a tuple indicating the column order of the model
|
||||||
|
Loading…
Reference in New Issue
Block a user