141 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import time
 | 
						|
import gtk
 | 
						|
import gobject
 | 
						|
 | 
						|
import sys, os
 | 
						|
sys.path.append("../src")
 | 
						|
 | 
						|
#from Models import PersonModel,PersonFilterModel
 | 
						|
from TreeViews import PersonTreeView
 | 
						|
import GenericFilter
 | 
						|
 | 
						|
## class ProxyPerson(object):
 | 
						|
##     """
 | 
						|
##     This class provides a wrapper around the real object that
 | 
						|
##     is stored in the model. 
 | 
						|
##     """
 | 
						|
    
 | 
						|
##     def __init__(self,id,db):
 | 
						|
##         self._id = id
 | 
						|
##         self._db = db
 | 
						|
##         self._obj = None
 | 
						|
 | 
						|
##     def row_ref(self):
 | 
						|
##         """This should return the value that is used
 | 
						|
##         as the row reference in the model."""
 | 
						|
##         return self._id
 | 
						|
 | 
						|
##     def __getattr__(self, name):
 | 
						|
##         """
 | 
						|
##         Delegate to the real object.
 | 
						|
##         """
 | 
						|
 | 
						|
##         # Fetch the object from the database if we
 | 
						|
##         # don't already have it
 | 
						|
##         if self._obj is None:
 | 
						|
##             self._obj = self._get_object()
 | 
						|
 | 
						|
##         # Call the method that we were asked
 | 
						|
##         # for on the real object.
 | 
						|
##         return getattr(self._obj, name)
 | 
						|
 | 
						|
##     def _get_object(self):
 | 
						|
##         """
 | 
						|
##         Fetch the real object from the database.
 | 
						|
##         """
 | 
						|
##         print "getting object = ", self._id
 | 
						|
##         return self._db.get_person_from_handle(self._id)
 | 
						|
 | 
						|
    
 | 
						|
class PersonWindow(gtk.Window):
 | 
						|
 | 
						|
    def __init__(self,db):
 | 
						|
        gtk.Window.__init__(self)
 | 
						|
 | 
						|
        self.set_default_size(700,300)
 | 
						|
 | 
						|
        self._db = db
 | 
						|
 | 
						|
        fil = GenericFilter.GenericFilter()
 | 
						|
        fil.add_rule(GenericFilter.SearchName(["Taylor"]))
 | 
						|
 | 
						|
        person_tree = PersonTreeView(db,fil)        
 | 
						|
        person_tree.show()
 | 
						|
 | 
						|
        scrollwindow = gtk.ScrolledWindow()
 | 
						|
        scrollwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 | 
						|
        scrollwindow.set_shadow_type(gtk.SHADOW_ETCHED_IN)
 | 
						|
        scrollwindow.show()        
 | 
						|
        scrollwindow.add(person_tree)        
 | 
						|
        self.add(scrollwindow)
 | 
						|
 | 
						|
        person_tree.clear_filter()
 | 
						|
        
 | 
						|
        #person_tree.set_filter(fil)
 | 
						|
        #person_model = PersonFilterModel(db,fil)
 | 
						|
	#person_tree.set_model(person_model)
 | 
						|
 | 
						|
        self._person_tree = person_tree
 | 
						|
        #self._person_model = person_model
 | 
						|
 | 
						|
	#gobject.idle_add(self.load_tree().next)
 | 
						|
        
 | 
						|
        self._expose_count = 0
 | 
						|
 | 
						|
##     def load_tree(self):
 | 
						|
##         self._person_tree.freeze_child_notify()
 | 
						|
 | 
						|
##         for i in self._db.get_person_handles():
 | 
						|
##             self._person_model.add(ProxyPerson(i,self._db))
 | 
						|
##             yield True
 | 
						|
            
 | 
						|
##         self._person_tree.thaw_child_notify()
 | 
						|
        
 | 
						|
##         self._person_tree.set_model(self._person_model)
 | 
						|
 | 
						|
##         yield False
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    import sys, os
 | 
						|
    sys.path.append("..")
 | 
						|
    
 | 
						|
    import GrampsDb
 | 
						|
    import const
 | 
						|
    import logging
 | 
						|
    
 | 
						|
    form = logging.Formatter(fmt="%(relativeCreated)d: %(levelname)s: %(filename)s: line %(lineno)d: %(message)s")
 | 
						|
    stderrh = logging.StreamHandler(sys.stderr)
 | 
						|
    stderrh.setFormatter(form)
 | 
						|
    stderrh.setLevel(logging.DEBUG)
 | 
						|
 | 
						|
    # everything.
 | 
						|
    l = logging.getLogger()
 | 
						|
    l.setLevel(logging.DEBUG)
 | 
						|
    l.addHandler(stderrh)
 | 
						|
 | 
						|
 | 
						|
    def cb(d):
 | 
						|
        pass
 | 
						|
 | 
						|
    def main():
 | 
						|
	print "start", sys.argv[1]
 | 
						|
        
 | 
						|
        db = GrampsDb.gramps_db_factory(const.app_gramps)()
 | 
						|
        db.load(os.path.realpath(sys.argv[1]),
 | 
						|
                cb, # callback
 | 
						|
                "w")
 | 
						|
 | 
						|
	print "window"
 | 
						|
        w = PersonWindow(db)
 | 
						|
        w.show()
 | 
						|
 | 
						|
        w.connect("destroy", gtk.main_quit)
 | 
						|
 | 
						|
	print "main"
 | 
						|
        gtk.main()
 | 
						|
 | 
						|
    #import profile
 | 
						|
    #profile.run('main()','profile.out')
 | 
						|
 | 
						|
    main()
 |