* src/Selectors/_Select*.py: Subclass from BaseSelector.

* src/Selectors/Makefile.am: Ship new file.
	* src/Selectors/_BaseSelector.py: Add new file.



svn: r6673
This commit is contained in:
Alex Roitman
2006-05-15 20:50:25 +00:00
parent a97e7e2abd
commit 8884528ee1
10 changed files with 233 additions and 332 deletions

View File

@@ -44,90 +44,51 @@ from gettext import gettext as _
# GTK/Gnome modules
#
#-------------------------------------------------------------------------
import gtk
import gtk.glade
import gtk.gdk
from gtk.gdk import INTERP_BILINEAR
#-------------------------------------------------------------------------
#
# gramps modules
#
#-------------------------------------------------------------------------
import const
import ListModel
import ImgManip
import Mime
import ManagedWindow
from ImgManip import get_thumb_from_obj
from Mime import get_description
from ListModel import IMAGE
from RelLib import MediaObject
from _BaseSelector import BaseSelector
#-------------------------------------------------------------------------
#
# SelectPerson
# SelectObject
#
#-------------------------------------------------------------------------
class SelectObject(ManagedWindow.ManagedWindow):
class SelectObject(BaseSelector):
def __init__(self, dbstate, uistate, track, title):
self.title = title
ManagedWindow.ManagedWindow.__init__(self, uistate, track, self)
def get_column_titles(self):
return [(_('Preview'),0,50,IMAGE),
(_('Title'),1,150),
(_('ID'),2,50),
(_('Type'),3,70)]
self.db = dbstate.db
self.glade = gtk.glade.XML(const.gladeFile,"select_person","gramps")
window = self.glade.get_widget('select_person')
title_label = self.glade.get_widget('object_title')
self.object_tree = self.glade.get_widget('plist')
self.set_window(window,title_label,self.title)
titles = [
(_('Preview'),0,50,ListModel.IMAGE),
(_('Title'),1,150),
(_('ID'),2,50),
(_('Type'),3,70),
('',4,0)
]
def get_from_handle_func(self):
return self.db.get_object_from_handle
self.ncols = len(titles)
def get_cursor_func(self):
return self.db.get_media_cursor
self.object_model = ListModel.ListModel(self.object_tree,titles)
self.selection = self.object_tree.get_selection()
def get_class_func(self):
return MediaObject
self.redraw()
self.show()
def get_model_row_data(self,obj):
title = obj.get_description()
the_type = get_description(obj.get_mime_type())
pixbuf = get_thumb_from_obj(obj)
pixbuf = pixbuf.scale_simple(pixbuf.get_width()/2,
pixbuf.get_height()/2,
INTERP_BILINEAR)
return [pixbuf,title,obj.get_gramps_id(),the_type]
def build_menu_names(self,obj):
return (self.title, None)
def redraw(self):
self.object_model.clear()
self.object_model.new_model()
for key in self.db.get_media_object_handles():
obj = self.db.get_object_from_handle(key)
title = obj.get_description()
the_type = Mime.get_description(obj.get_mime_type())
pixbuf = ImgManip.get_thumb_from_obj(obj)
pixbuf = pixbuf.scale_simple(pixbuf.get_width()/2,
pixbuf.get_height()/2,
gtk.gdk.INTERP_BILINEAR)
self.object_model.add([pixbuf,title,obj.get_gramps_id(),the_type],key)
self.object_model.connect_model()
def run(self):
val = self.window.run()
if val == gtk.RESPONSE_OK:
store,node = self.object_model.get_selected()
if node:
data = self.object_model.get_data(node,range(self.ncols))
handle = data[4]
return_value = self.db.get_object_from_handle(handle)
else:
return_value = None
self.close()
gc.collect()
return return_value
else:
self.close()
gc.collect()
return None
def close(self,*obj):
# needed to collect garbage on closing
BaseSelector.close(self,*obj)
gc.collect()