* src/DataViews/_MediaView.py: COLUMN_NAMES as class constant for reuse
	* src/DataViews/_RepositoryView.py: COLUMN_NAMES as class constant for reuse
	* src/DataViews/_SourceView.py: COLUMN_NAMES as class constant for reuse
	* src/DataViews/_EventView.py: COLUMN_NAMES as class constant for reuse
	* src/DataViews/_FamilyList.py: COLUMN_NAMES as class constant for reuse
	* src/DataViews/_PlaceView.py: COLUMN_NAMES as class constant for reuse
	* src/DataViews/_NoteView.py: COLUMN_NAMES as class constant for reuse
	* src/Selectors/_BaseSelector.py: add hideable searchbar to selector
	* src/Selectors/_SelectRepository.py: implement new BaseSelector methods
	* src/Selectors/_SelectSource.py: implement new BaseSelector methods
	* src/Selectors/_SelectEvent.py: implement new BaseSelector methods
	* src/Selectors/_SelectFamily.py: implement new BaseSelector methods,
	fix bug with wrong handle column
	* src/Selectors/_SelectPlace.py: implement new BaseSelector methods
	* src/Selectors/_SelectObject.py: implement new BaseSelector methods


svn: r9005
This commit is contained in:
Benny Malengier
2007-09-25 12:09:25 +00:00
parent e0a79c5103
commit 632586ccc1
15 changed files with 274 additions and 91 deletions

View File

@@ -35,6 +35,7 @@ import pango
#-------------------------------------------------------------------------
import const
import ManagedWindow
from Filters import SearchBar
#-------------------------------------------------------------------------
#
@@ -42,12 +43,22 @@ import ManagedWindow
#
#-------------------------------------------------------------------------
class BaseSelector(ManagedWindow.ManagedWindow):
"""Base class for the selectors, showing a dialog from which to select
one of the primary objects
"""
NONE = -1
TEXT = 0
MARKUP = 1
IMAGE = 2
def __init__(self, dbstate, uistate, track=[], filter=None, skip=set()):
def __init__(self, dbstate, uistate, track=[], filter=None, skip=set(),
show_search_bar = True):
'''Set up the dialog with the dbstate and uistate, track of parent
windows for ManagedWindow, initial filter for the model, skip with
set of handles to skip in the view, and search_bar to show the
SearchBar at the top or not.
'''
self.title = self.get_window_title()
ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
@@ -59,18 +70,34 @@ class BaseSelector(ManagedWindow.ManagedWindow):
self.glade = gtk.glade.XML(const.GLADE_FILE,"select_person","gramps")
window = self.glade.get_widget('select_person')
title_label = self.glade.get_widget('title')
vbox = self.glade.get_widget('select_person_vbox')
self.tree = self.glade.get_widget('plist')
self.tree.connect('row-activated', self._on_row_activated)
self.colinfo = self.column_view_names()
#add the search bar
self.search_bar = SearchBar(dbstate, uistate,
self.build_tree)
filter_box = self.search_bar.build()
self.setup_filter()
vbox.pack_start(filter_box, False, False)
vbox.reorder_child(filter_box, 1)
self.set_window(window,title_label,self.title)
self.model = self.get_model_class()(self.db,skip=skip)
self.skip_list=skip
self.build_tree()
self.selection = self.tree.get_selection()
self.tree.set_model(self.model)
self.add_columns(self.tree)
self._local_init()
self.show()
#show or hide search bar?
self.set_show_search_bar(show_search_bar)
#Hide showall always (used in person selector only)
showbox = self.glade.get_widget('showall')
showbox.hide()
def add_columns(self,tree):
tree.set_fixed_height_mode(True)
@@ -139,3 +166,53 @@ class BaseSelector(ManagedWindow.ManagedWindow):
def get_handle_column(self):
# return 3
assert False, "Must be defined in the subclass"
def set_show_search_bar(self, value):
'''make the search bar at the top shown
'''
self.show_search_bar = value
if not self.search_bar :
return
if self.show_search_bar :
self.search_bar.show()
else :
self.search_bar.hide()
def column_order(self):
"""
Column order for db columns
Derived classes must override this function.
"""
raise NotImplementedError
def column_view_names(self):
"""
Get correct column view names on which model is based
Derived classes must override this function.
"""
raise NotImplementedError
def setup_filter(self):
"""
Builds the default filters and add them to the filter bar.
"""
cols = []
for pair in [pair for pair in self.column_order() if pair[0]]:
cols.append((self.colinfo[pair[1]], pair[1]))
self.search_bar.setup_filter(cols)
def build_tree(self):
"""
Builds the selection people see in the Selector
"""
#search info for the
filter_info = (False, self.search_bar.get_value())
#reset the model
self.model = self.get_model_class()(self.db, skip=self.skip_list,
search=filter_info)
self.tree.set_model(self.model)

View File

@@ -66,3 +66,17 @@ class SelectEvent(BaseSelector):
def get_handle_column(self):
return 6
def column_order(self):
"""
returns a tuple indicating the column order of the model
"""
return self.db.get_event_column_order()
def column_view_names(self):
"""
Get correct column view names on which model is based
"""
import DataViews
return DataViews.EventView.COLUMN_NAMES

View File

@@ -59,4 +59,17 @@ class SelectFamily(BaseSelector):
return self.db.get_family_from_handle
def get_handle_column(self):
return 5
return 6
def column_order(self):
"""
returns a tuple indicating the column order of the model
"""
return self.db.get_family_list_column_order()
def column_view_names(self):
"""
Get correct column view names on which model is based
"""
import DataViews
return DataViews.FamilyListView.COLUMN_NAMES

View File

@@ -93,3 +93,16 @@ class SelectObject(BaseSelector):
pix = ThumbNails.get_thumbnail_image(obj.get_path())
self.preview.set_from_pixbuf(pix)
gc.collect()
def column_order(self):
"""
returns a tuple indicating the column order of the model
"""
return self.db.get_media_column_order()
def column_view_names(self):
"""
Get correct column view names on which model is based
"""
import DataViews
return DataViews.MediaView.COLUMN_NAMES

View File

@@ -59,3 +59,16 @@ class SelectPlace(BaseSelector):
def get_handle_column(self):
return PlaceModel.HANDLE_COL
def column_order(self):
"""
returns a tuple indicating the column order of the model
"""
return self.db.get_place_column_order()
def column_view_names(self):
"""
Get correct column view names on which model is based
"""
import DataViews
return DataViews.PlaceView.COLUMN_NAMES

View File

@@ -59,3 +59,16 @@ class SelectRepository(BaseSelector):
def get_from_handle_func(self):
return self.db.get_repository_from_handle
def column_order(self):
"""
returns a tuple indicating the column order of the model
"""
return self.db.get_repository_column_order()
def column_view_names(self):
"""
Get correct column view names on which model is based
"""
import DataViews
return DataViews.RepositoryView.COLUMN_NAMES

View File

@@ -59,3 +59,16 @@ class SelectSource(BaseSelector):
def get_handle_column(self):
return 6
def column_order(self):
"""
returns a tuple indicating the column order of the model
"""
return self.db.get_source_column_order()
def column_view_names(self):
"""
Get correct column view names on which model is based
"""
import DataViews
return DataViews.SourceView.COLUMN_NAMES