2006-04-18 Don Allingham <don@gramps-project.org>

* src/plugins/Desbrowser.py: bring up to speed with ManagedWindow
	* src/GrampsWidgets.py: fix the type return value 



svn: r6353
This commit is contained in:
Don Allingham 2006-04-18 19:10:13 +00:00
parent 3ae608af89
commit 3c31f1e2ec
3 changed files with 37 additions and 46 deletions

View File

@ -1,3 +1,7 @@
2006-04-18 Don Allingham <don@gramps-project.org>
* src/plugins/Desbrowser.py: bring up to speed with ManagedWindow
* src/GrampsWidgets.py: fix the type return value
2006-04-17 Don Allingham <don@gramps-project.org> 2006-04-17 Don Allingham <don@gramps-project.org>
* src/DataViews/_FamilyView.py: handle the dirty flag for updates * src/DataViews/_FamilyView.py: handle the dirty flag for updates
* src/DataViews/_PersonView.py: goto active person properly * src/DataViews/_PersonView.py: goto active person properly

View File

@ -365,16 +365,23 @@ class MonitoredDataType:
default, default,
additional=custom_values) 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.set_sensitive(not readonly)
self.obj.connect('changed', self.on_change) 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): def update(self):
if self.get_val(): if self.get_val():
self.sel.set_values(self.get_val()) self.sel.set_values(self.get_val())
def on_change(self, obj): def on_change(self, obj):
self.set_val(self.sel.get_values()) self.set_val(self.fix_value(self.sel.get_values()))
class MonitoredMenu: class MonitoredMenu:

View File

@ -48,21 +48,22 @@ import gobject
import gtk import gtk
import gtk.glade import gtk.glade
import GrampsDisplay 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): def __init__(self, dbstate, uistate, options_class, name, callback=None):
Tool.Tool.__init__(self,db,person,options_class,name)
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.callback = callback
self.parent = parent
self.win_key = self
base = os.path.dirname(__file__) base = os.path.dirname(__file__)
glade_file = base + os.sep + "desbrowse.glade" glade_file = base + os.sep + "desbrowse.glade"
@ -71,10 +72,8 @@ class DesBrowse(Tool.Tool):
self.glade.signal_autoconnect({ self.glade.signal_autoconnect({
"destroy_passed_object" : self.close, "destroy_passed_object" : self.close,
"on_help_clicked" : self.on_help_clicked, "on_help_clicked" : self.on_help_clicked,
"on_delete_event": self.on_delete_event,
}) })
self.window = self.glade.get_widget("top") self.window = self.glade.get_widget("top")
self.window.set_icon(self.parent.topWindow.get_icon())
self.active_name = _("Descendant Browser: %s") \ self.active_name = _("Descendant Browser: %s") \
% NameDisplay.displayer.display(self.active) % NameDisplay.displayer.display(self.active)
@ -89,64 +88,45 @@ class DesBrowse(Tool.Tool):
self.tree.connect('event',self.button_press_event) self.tree.connect('event',self.button_press_event)
self.make_new_model() self.make_new_model()
self.add_itself_to_menu()
self.window.show() self.window.show()
def make_new_model(self): 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.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() self.tree.expand_all()
def on_help_clicked(self,obj): def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual""" """Display the relevant portion of GRAMPS manual"""
GrampsDisplay.help('tools-ae') GrampsDisplay.help('tools-ae')
def on_delete_event(self,obj,b): def add_to_tree(self, parent_id, sib_id, person_handle):
self.remove_itself_from_menu()
def close(self,obj): item_id = self.model.insert_after(parent_id, sib_id)
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)
person = self.db.get_person_from_handle(person_handle) 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 prev_id = None
for family_handle in person.get_family_handle_list(): for family_handle in person.get_family_handle_list():
family = self.db.get_family_from_handle(family_handle) family = self.db.get_family_from_handle(family_handle)
for child_handle in family.get_child_handle_list(): for child_ref in family.get_child_ref_list():
prev_id = self.add_to_tree(item_id,prev_id,child_handle) prev_id = self.add_to_tree(item_id, prev_id, child_ref.ref)
return item_id return item_id
def button_press_event(self,obj,event): def button_press_event(self,obj,event):
import EditPerson from Editors import EditPerson
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1: 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: 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) 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): def this_callback(self, epo, val):
self.callback(epo,val) self.callback(epo, val)
self.make_new_model() self.make_new_model()
#------------------------------------------------------------------------ #------------------------------------------------------------------------