From 21302dbbf4cc70f53cd584468653aeb6815ecc13 Mon Sep 17 00:00:00 2001 From: Martin Hawlisch Date: Tue, 9 Aug 2005 10:18:56 +0000 Subject: [PATCH] * src/DbState.py: change_active_person now emits the signal, change_active_handle is only a wrapper for that. * src/PageView.py (get_stock): Work around not existing definition of gtk.STOCK_MEDIA_MISSING by using gtk.STOCK_MISSING_IMAGE. * src/PedView.py: Start using new PageView logic. Unfinished. * src/gramps_main.py: Enable PedView svn: r5041 --- gramps2/ChangeLog | 8 +++ gramps2/src/DbState.py | 6 +- gramps2/src/PageView.py | 5 +- gramps2/src/PedView.py | 112 ++++++++++++++++++++++++------------- gramps2/src/gramps_main.py | 11 ++-- 5 files changed, 95 insertions(+), 47 deletions(-) diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index 17389df8b..a64831fbd 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -1,3 +1,11 @@ +2005-08-09 Martin Hawlisch + * src/DbState.py: change_active_person now emits the signal, + change_active_handle is only a wrapper for that. + * src/PageView.py (get_stock): Work around not existing definition + of gtk.STOCK_MEDIA_MISSING by using gtk.STOCK_MISSING_IMAGE. + * src/PedView.py: Start using new PageView logic. Unfinished. + * src/gramps_main.py: Enable PedView + 2005-08-08 Don Allingham * src/DbState.py: Added new class to keep track of database status diff --git a/gramps2/src/DbState.py b/gramps2/src/DbState.py index b898a57d2..7f7e249de 100644 --- a/gramps2/src/DbState.py +++ b/gramps2/src/DbState.py @@ -96,9 +96,13 @@ class DbState(GrampsDBCallback.GrampsDBCallback): def change_active_person(self,person): self.active = person + try: + self.emit('active-changed',(person.handle,)) + except: + self.emit('active-changed',(None,)) def change_active_handle(self,handle): - self.emit('active-changed',(handle,)) + self.change_active_person(self.db.get_person_from_handle(handle)) def get_active_person(self): return self.active diff --git a/gramps2/src/PageView.py b/gramps2/src/PageView.py index e0c31fdd3..dc769eec8 100644 --- a/gramps2/src/PageView.py +++ b/gramps2/src/PageView.py @@ -34,7 +34,10 @@ class PageView: self.ui = "" def get_stock(self): - return gtk.STOCK_MEDIA_MISSING + try: + return gtk.STOCK_MEDIA_MISSING + except AttributeError: + return gtk.STOCK_MISSING_IMAGE def get_ui(self): return self.ui diff --git a/gramps2/src/PedView.py b/gramps2/src/PedView.py index d2e185d31..259ff679e 100644 --- a/gramps2/src/PedView.py +++ b/gramps2/src/PedView.py @@ -41,6 +41,7 @@ import gtk.gdk # Gramps Modules # #------------------------------------------------------------------------- +import PageView import const import GrampsCfg import Relationship @@ -70,48 +71,40 @@ _CREM = _('crem.') # PedigreeView # #------------------------------------------------------------------------- -class PedigreeView: - def __init__(self,parent,canvas,update,status_bar,edit_person): - self.parent = parent +class PedView(PageView.PageView): - self.relcalc = Relationship.RelationshipCalculator(self.parent.db) - self.parent.connect('database-changed',self.change_db) - self.parent.connect('active-changed',self.active_changed) + def __init__(self,state): + PageView.PageView.__init__(self,'Pedigree View',state) + self.inactive = False + state.connect('database-changed',self.change_db) + state.connect('active-changed',self.goto_active_person) + self.force_size = 0 # Automatic resize - # FIXME: Hack to avoid changing the glade file - # Replace canvas by notebook - self.parent_container = canvas.get_parent() - canvas.destroy() + def build_widget(self): self.notebook = gtk.Notebook() + self.notebook.connect("button-press-event", self.on_show_option_menu_cb) self.notebook.set_show_border(False) self.notebook.set_show_tabs(False) - self.parent_container.add_with_viewport(self.notebook) - # ### self.table_2 = gtk.Table(1,1,False) + self.table_2.connect("button-press-event", self.on_show_option_menu_cb) self.add_table_to_notebook( self.table_2) self.table_3 = gtk.Table(1,1,False) + self.table_3.connect("button-press-event", self.on_show_option_menu_cb) self.add_table_to_notebook( self.table_3) self.table_4 = gtk.Table(1,1,False) + self.table_4.connect("button-press-event", self.on_show_option_menu_cb) self.add_table_to_notebook( self.table_4) self.table_5 = gtk.Table(1,1,False) + self.table_5.connect("button-press-event", self.on_show_option_menu_cb) self.add_table_to_notebook( self.table_5) - self.parent_container.connect("size-allocate", self.size_request_cb) + #self.parent_container.connect("size-allocate", self.size_request_cb) - self.notebook.show_all() - - self.update = update - self.sb = status_bar - self.edit_person = edit_person - - self.change_db(self.parent.db) - self.distance = self.relcalc.get_relationship_distance - - self.force_size = 0 # Automatic resize + return self.notebook def add_table_to_notebook( self, table): frame = gtk.ScrolledWindow(None,None) @@ -123,6 +116,34 @@ class PedigreeView: # for PyGtk < 2.4 self.notebook.append_page(frame,gtk.Label("")) + def define_actions(self): + #self.add_action('Add', gtk.STOCK_ADD, "_Add", callback=self.add) + #self.add_action('Edit', gtk.STOCK_EDIT, "_Edit", callback=self.edit) + #self.add_action('Remove', gtk.STOCK_REMOVE, "_Remove", callback=self.remove) + #self.add_action('Forward',gtk.STOCK_GO_FORWARD,"_Forward", callback=self.fwd_clicked) + #self.add_action('Back', gtk.STOCK_GO_BACK, "_Back", callback=self.back_clicked) + self.add_action('HomePerson', gtk.STOCK_HOME, "_Home", callback=self.home) + #self.add_toggle_action('Filter', None, '_Filter', callback=self.filter_toggle) + + def ui_definition(self): + return ''' + + + + + + + + + + + + + ''' + + def get_stock(self): + return 'gramps-pedigree' + def change_db(self,db): # Reconnect signals self.db = db @@ -130,7 +151,6 @@ class PedigreeView: db.connect('person-update', self.person_updated_cb) db.connect('person-delete', self.person_updated_cb) db.connect('person-rebuild', self.person_rebuild) - self.relcalc.set_db(db) self.active_person = None def person_updated_cb(self,handle_list): @@ -139,7 +159,8 @@ class PedigreeView: def person_rebuild(self): self.rebuild_trees(self.active_person) - def active_changed(self,handle): + def goto_active_person(self,handle): + print "PedView.goto_active_person" if handle: self.active_person = self.db.get_person_from_handle(handle) self.rebuild_trees(self.active_person) @@ -147,7 +168,7 @@ class PedigreeView: self.rebuild_trees(None) def request_resize(self): - self.size_request_cb(self.parent_container,None,None) + self.size_request_cb(self.notebook.parent,None,None) def size_request_cb(self, widget, event, data=None): if self.force_size == 0: @@ -227,6 +248,7 @@ class PedigreeView: gobject.idle_add(self.request_resize) def rebuild( self, table_widget, positions, active_person): + print "PedView.rebuild" # Build ancestor tree lst = [None]*31 self.find_tree(self.active_person,0,1,lst) @@ -354,6 +376,12 @@ class PedigreeView: else: area.window.draw_line(gc, alloc.width, alloc.height/2, alloc.width/2, alloc.height) + def home(self,obj): + print "PedView.home" + defperson = self.state.db.get_default_person() + if defperson: + self.state.change_active_person(defperson) + def edit_person_cb(self,obj): person_handle = obj.get_data(_PERSON) person = self.db.get_person_from_handle(person_handle) @@ -362,6 +390,12 @@ class PedigreeView: return True return 0 + def on_show_option_menu_cb(self,obj,data=None): + myMenu = gtk.Menu() + self.add_settings_to_menu(myMenu) + myMenu.popup(None,None,None,0,0) + return(True); + def on_show_child_menu(self,obj): """User clicked button to move to child of active person""" @@ -403,14 +437,14 @@ class PedigreeView: person_handle = obj.get_data(_PERSON) if person_handle: - self.parent.emit("active-changed", (person_handle,)) - return 1 - return 0 + self.state.change_active_handle(person_handle) + return True + return False def change_force_size_cb(self,event,data): if data in [0,2,3,4,5]: self.force_size = data - self.size_request_cb(self.parent_container,None) # switch to matching size + self.size_request_cb(self.notebook.parent,None) # switch to matching size def find_tree(self,person,index,depth,lst,val=0): """Recursively build a list of ancestors""" @@ -446,14 +480,14 @@ class PedigreeView: to the context menu. Used by both build_nav_menu() and build_full_nav_menu() methods. """ - back_sensitivity = self.parent.hindex > 0 - fwd_sensitivity = self.parent.hindex + 1 < len(self.parent.history) + #back_sensitivity = self.parent.hindex > 0 + #fwd_sensitivity = self.parent.hindex + 1 < len(self.parent.history) entries = [ - (gtk.STOCK_GO_BACK,self.parent.back_clicked,back_sensitivity), - (gtk.STOCK_GO_FORWARD,self.parent.fwd_clicked,fwd_sensitivity), + #(gtk.STOCK_GO_BACK,self.parent.back_clicked,back_sensitivity), + #(gtk.STOCK_GO_FORWARD,self.parent.fwd_clicked,fwd_sensitivity), #FIXME: revert to stock item when German gtk translation is fixed #(gtk.STOCK_HOME,self.parent.on_home_clicked,1), - (_("Home"),self.parent.on_home_clicked,1), + (_("Home"),self.home,1), (None,None,0), #(_("Set anchor"),self.on_anchor_set,1), #(_("Remove anchor"),self.on_anchor_removed,1), @@ -813,10 +847,10 @@ def build_detail_string(db,person): else: for event_ref in person.get_event_ref_list(): event = db.get_event_from_handle(event_ref.ref) - if event and event.get_name() == "Baptism": + if event and event.get_type()[0] == RelLib.Event.BAPTISM: detail_text += format_event(db, _BAPT, event) break - if event and event.get_name() == "Christening": + if event and event.get_type()[0] == RelLib.Event.CHRISTEN: detail_text += format_event(db, _CHRI, event) break @@ -827,10 +861,10 @@ def build_detail_string(db,person): else: for event_ref in person.get_event_ref_list(): event = db.get_event_from_handle(event_ref.ref) - if event and event.get_name() == "Burial": + if event and event.get_type()[0] == RelLib.Event.BURIAL: detail_text += format_event(db, _BURI, event) break - if event and event.get_name() == "Cremation": + if event and event.get_type()[0] == RelLib.Event.CREMATION: detail_text += format_event(db, _CREM, event) break diff --git a/gramps2/src/gramps_main.py b/gramps2/src/gramps_main.py index bfcce3633..7ad880efb 100755 --- a/gramps2/src/gramps_main.py +++ b/gramps2/src/gramps_main.py @@ -23,6 +23,7 @@ import gtk import ViewManager import PersonView +import PedView import ArgHandler import DisplayTrace import GrampsKeys @@ -30,6 +31,7 @@ import GrampsCfg import const import Errors import PluginMgr +import TipOfDay from GrampsMime import mime_type_is_defined from QuestionDialog import ErrorDialog @@ -37,13 +39,14 @@ from QuestionDialog import ErrorDialog import gnome -iconpaths = ["/usr/share/gramps","~/devel/srcx"] +iconpaths = [".","/usr/share/gramps","~/devel/srcx"] def register_stock_icons (): import os items = { 'people48.png': ('gramps-person', 'Person', gtk.gdk.CONTROL_MASK, 0, ''), 'family48.png': ('gramps-family', 'Family', gtk.gdk.CONTROL_MASK, 0, ''), + 'ped24.png' : ('gramps-pedigree', 'Pedigree', gtk.gdk.CONTROL_MASK, 0, ''), 'repos.png' : ('gramps-repository', 'Repositories', gtk.gdk.CONTROL_MASK, 0, ''), 'sources.png' : ('gramps-source', 'Sources', gtk.gdk.CONTROL_MASK, 0, ''), 'events.png' : ('gramps-event', 'Events', gtk.gdk.CONTROL_MASK, 0, ''), @@ -182,6 +185,7 @@ class Gramps: register_stock_icons() a = ViewManager.ViewManager() a.register_view(PersonView.PersonView) + a.register_view(PedView.PedView) a.init_interface() if GrampsKeys.get_usetips(): @@ -249,8 +253,3 @@ class Gramps: self.toolbar.unset_style() else: self.toolbar.set_style(the_style) - - - - -