2006-02-03 21:19:59 +05:30
|
|
|
import time
|
|
|
|
import gtk
|
|
|
|
import gobject
|
|
|
|
|
|
|
|
import sys, os
|
2006-02-03 21:23:20 +05:30
|
|
|
sys.path.append("../src")
|
2006-02-03 21:19:59 +05:30
|
|
|
|
2006-02-03 21:23:20 +05:30
|
|
|
#from Models import PersonModel,PersonFilterModel
|
2006-02-03 21:19:59 +05:30
|
|
|
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()
|