From b206ca7cdab19aac9df85a77251311d17d19687c Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Sat, 27 Dec 2008 15:04:25 +0000 Subject: [PATCH] Added an Edit family button to edit first family svn: r11520 --- src/plugins/DefaultGramplets.py | 41 ++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/src/plugins/DefaultGramplets.py b/src/plugins/DefaultGramplets.py index b8e8248d5..4cb8d502d 100644 --- a/src/plugins/DefaultGramplets.py +++ b/src/plugins/DefaultGramplets.py @@ -1214,12 +1214,15 @@ class DataEntryGramplet(Gramplet): rows = gtk.VBox() self.dirty = False self.dirty_person = None + self.dirty_family = None self.de_widgets = {} - for items in [("Active person", _("Active person"), None, True, self.edit_person, False, 0), - ("APName", _("Surname, Given"), None, False, None, True, 0), - ("APGender", _("Gender"), [_("female"), _("male"), _("unknown")], False, None, True, 2), - ("APBirth", _("Birth"), None, False, None, True, 0), - ("APDeath", _("Death"), None, False, None, True, 0) + for items in [("Active person", _("Active person"), None, True, + [("Edit person", "", self.edit_person), ("Edit family", "Family:", self.edit_family)], + False, 0), + ("APName", _("Surname, Given"), None, False, [], True, 0), + ("APGender", _("Gender"), [_("female"), _("male"), _("unknown")], False, [], True, 2), + ("APBirth", _("Birth"), None, False, [], True, 0), + ("APDeath", _("Death"), None, False, [], True, 0) ]: pos, text, choices, readonly, callback, dirty, default = items row = self.make_row(pos, text, choices, readonly, callback, dirty, default) @@ -1267,9 +1270,12 @@ class DataEntryGramplet(Gramplet): def main(self): # return false finishes if self.dirty: return + self.de_widgets["Active person:Edit family"].hide() + self.de_widgets["Active person:Edit family:Label"].hide() active_person = self.dbstate.get_active_person() self.dirty_person = active_person if active_person: + self.de_widgets["Active person:Edit person"].show() # Fill in current person edits: name = name_displayer.display(active_person) self.de_widgets["Active person"].set_text("%s " % name) @@ -1307,8 +1313,14 @@ class DataEntryGramplet(Gramplet): if place_text: death_text += _("in") + " " + place_text self.de_widgets["APDeath"].set_text(death_text) + family_list = active_person.get_family_handle_list() + if len(family_list) > 0: + self.dirty_family = self.dbstate.db.get_family_from_handle(family_list[0]) + self.de_widgets["Active person:Edit family"].show() + self.de_widgets["Active person:Edit family:Label"].show() else: self.clear_data_edit(None) + self.de_widgets["Active person:Edit person"].hide() # Add options for adding: self.reset_add_type() self.dirty = False @@ -1328,7 +1340,7 @@ class DataEntryGramplet(Gramplet): self.de_widgets["NPRelation"].append_text(add_type) self.de_widgets["NPRelation"].set_active(self.NO_REL) - def make_row(self, pos, text, choices=None, readonly=False, callback=None, + def make_row(self, pos, text, choices=None, readonly=False, callback_list=[], mark_dirty=False, default=0): import gtk # Data Entry: Active Person @@ -1365,7 +1377,11 @@ class DataEntryGramplet(Gramplet): self.de_widgets[pos].connect("changed", self.mark_dirty) row.pack_start(label, False) row.pack_start(eventBox, True, True) - if callback: + for name, text, callback in callback_list: + label = gtk.Label() + label.set_text(text) + self.de_widgets[pos + ":" + name + ":Label"] = label + row.pack_start(label, False) icon = gtk.STOCK_EDIT size = gtk.ICON_SIZE_MENU button = gtk.Button() @@ -1374,7 +1390,7 @@ class DataEntryGramplet(Gramplet): button.add(image) button.set_relief(gtk.RELIEF_NONE) button.connect("clicked", callback) - #button.show_all() + self.de_widgets[pos + ":" + name] = button row.pack_start(button, False) row.show_all() return row @@ -1399,6 +1415,15 @@ class DataEntryGramplet(Gramplet): callback=self.edit_callback) except Errors.WindowActiveError: pass + + def edit_family(self, obj): + from Editors import EditFamily + try: + EditFamily(self.gui.dbstate, + self.gui.uistate, [], + self.dirty_family) + except Errors.WindowActiveError: + pass def process_dateplace(self, text): if text == "": return None, None