From 3c31f1e2ec45292d96f0fe24729e74588c5338f1 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Tue, 18 Apr 2006 19:10:13 +0000 Subject: [PATCH] 2006-04-18 Don Allingham * src/plugins/Desbrowser.py: bring up to speed with ManagedWindow * src/GrampsWidgets.py: fix the type return value svn: r6353 --- ChangeLog | 4 +++ src/GrampsWidgets.py | 11 +++++-- src/plugins/Desbrowser.py | 68 ++++++++++++++------------------------- 3 files changed, 37 insertions(+), 46 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6e5be18fd..f9c4fe79c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-04-18 Don Allingham + * src/plugins/Desbrowser.py: bring up to speed with ManagedWindow + * src/GrampsWidgets.py: fix the type return value + 2006-04-17 Don Allingham * src/DataViews/_FamilyView.py: handle the dirty flag for updates * src/DataViews/_PersonView.py: goto active person properly diff --git a/src/GrampsWidgets.py b/src/GrampsWidgets.py index fe971719e..ecdd61ff9 100644 --- a/src/GrampsWidgets.py +++ b/src/GrampsWidgets.py @@ -365,16 +365,23 @@ class MonitoredDataType: default, additional=custom_values) - self.set_val(self.sel.get_values()) + value = self.sel.get_values() + self.set_val(self.fix_value(value)) self.obj.set_sensitive(not readonly) self.obj.connect('changed', self.on_change) + def fix_value(self, value): + if value[0] == self.get_val().get_custom(): + return value + else: + return (value[0],'') + def update(self): if self.get_val(): self.sel.set_values(self.get_val()) def on_change(self, obj): - self.set_val(self.sel.get_values()) + self.set_val(self.fix_value(self.sel.get_values())) class MonitoredMenu: diff --git a/src/plugins/Desbrowser.py b/src/plugins/Desbrowser.py index 0352b5eff..eb41dc9ec 100644 --- a/src/plugins/Desbrowser.py +++ b/src/plugins/Desbrowser.py @@ -48,21 +48,22 @@ import gobject import gtk import gtk.glade import GrampsDisplay +import ManagedWindow #------------------------------------------------------------------------ # # # #------------------------------------------------------------------------ -class DesBrowse(Tool.Tool): +class DesBrowse(Tool.Tool, ManagedWindow.ManagedWindow): - def __init__(self,db,person,options_class,name,callback=None,parent=None): - Tool.Tool.__init__(self,db,person,options_class,name) + def __init__(self, dbstate, uistate, options_class, name, callback=None): - self.active = person + Tool.Tool.__init__(self, dbstate, options_class, name) + ManagedWindow.ManagedWindow.__init__(self, uistate, [], self) + + self.active = dbstate.get_active_person() self.callback = callback - self.parent = parent - self.win_key = self base = os.path.dirname(__file__) glade_file = base + os.sep + "desbrowse.glade" @@ -71,10 +72,8 @@ class DesBrowse(Tool.Tool): self.glade.signal_autoconnect({ "destroy_passed_object" : self.close, "on_help_clicked" : self.on_help_clicked, - "on_delete_event": self.on_delete_event, }) self.window = self.glade.get_widget("top") - self.window.set_icon(self.parent.topWindow.get_icon()) self.active_name = _("Descendant Browser: %s") \ % NameDisplay.displayer.display(self.active) @@ -89,64 +88,45 @@ class DesBrowse(Tool.Tool): self.tree.connect('event',self.button_press_event) self.make_new_model() - self.add_itself_to_menu() self.window.show() def make_new_model(self): - self.model = gtk.TreeStore(gobject.TYPE_STRING,gobject.TYPE_PYOBJECT) + self.model = gtk.TreeStore(str, object) self.tree.set_model(self.model) - self.add_to_tree(None,None,self.active.get_handle()) + self.add_to_tree(None, None, self.active.get_handle()) self.tree.expand_all() def on_help_clicked(self,obj): """Display the relevant portion of GRAMPS manual""" GrampsDisplay.help('tools-ae') - def on_delete_event(self,obj,b): - self.remove_itself_from_menu() - - def close(self,obj): - self.remove_itself_from_menu() - self.window.destroy() - - def add_itself_to_menu(self): - self.parent.child_windows[self.win_key] = self - self.parent_menu_item = gtk.MenuItem(self.active_name) - self.parent_menu_item.connect("activate",self.present) - self.parent_menu_item.show() - self.parent.winsmenu.append(self.parent_menu_item) - - def remove_itself_from_menu(self): - del self.parent.child_windows[self.win_key] - self.parent_menu_item.destroy() - - def present(self,obj): - self.window.present() - - def add_to_tree(self,parent_id,sib_id,person_handle): - item_id = self.model.insert_after(parent_id,sib_id) + def add_to_tree(self, parent_id, sib_id, person_handle): + + item_id = self.model.insert_after(parent_id, sib_id) person = self.db.get_person_from_handle(person_handle) - self.model.set(item_id,0,NameDisplay.displayer.display(person)) - self.model.set(item_id,1,person_handle) + + self.model.set(item_id, 0, NameDisplay.displayer.display(person)) + self.model.set(item_id, 1, person_handle) + prev_id = None for family_handle in person.get_family_handle_list(): family = self.db.get_family_from_handle(family_handle) - for child_handle in family.get_child_handle_list(): - prev_id = self.add_to_tree(item_id,prev_id,child_handle) + for child_ref in family.get_child_ref_list(): + prev_id = self.add_to_tree(item_id, prev_id, child_ref.ref) return item_id def button_press_event(self,obj,event): - import EditPerson + from Editors import EditPerson if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1: - store,iter = self.tree.get_selection().get_selected() + store, node = self.tree.get_selection().get_selected() if iter: - person_handle = store.get_value(iter,1) + person_handle = store.get_value(node, 1) person = self.db.get_person_from_handle(person_handle) - EditPerson.EditPerson(self.parent,person,self.db,self.this_callback) + EditPerson(self.parent, person, self.db, self.this_callback) - def this_callback(self,epo,val): - self.callback(epo,val) + def this_callback(self, epo, val): + self.callback(epo, val) self.make_new_model() #------------------------------------------------------------------------