From 63fa0b418d67397a6681950bc85be505e68ffdf5 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Thu, 13 Apr 2006 16:20:57 +0000 Subject: [PATCH] EditPersonRef svn: r6328 --- gramps2/src/Editors/Makefile.am | 1 + gramps2/src/Editors/_EditPersonRef.py | 151 ++++++++++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 gramps2/src/Editors/_EditPersonRef.py diff --git a/gramps2/src/Editors/Makefile.am b/gramps2/src/Editors/Makefile.am index 0b532b890..c700466d7 100644 --- a/gramps2/src/Editors/Makefile.am +++ b/gramps2/src/Editors/Makefile.am @@ -18,6 +18,7 @@ pkgdata_PYTHON = \ _EditMediaRef.py \ _EditName.py \ _EditPerson.py \ + _EditPersonRef.py \ _EditPlace.py \ _EditPrimary.py \ _EditReference.py \ diff --git a/gramps2/src/Editors/_EditPersonRef.py b/gramps2/src/Editors/_EditPersonRef.py new file mode 100644 index 000000000..7a8ec7bb3 --- /dev/null +++ b/gramps2/src/Editors/_EditPersonRef.py @@ -0,0 +1,151 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2000-2006 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# $Id: _EditPersonRef.py 6282 2006-04-06 22:02:46Z rshura $ + +""" +The EditPersonRef module provides the EditPersonRef class. This provides a +mechanism for the user to edit address information. +""" + +#------------------------------------------------------------------------- +# +# Python modules +# +#------------------------------------------------------------------------- +from gettext import gettext as _ + +#------------------------------------------------------------------------- +# +# GTK/Gnome modules +# +#------------------------------------------------------------------------- +import gtk.glade + +#------------------------------------------------------------------------- +# +# gramps modules +# +#------------------------------------------------------------------------- +import const +import NameDisplay +from _EditSecondary import EditSecondary + +from DisplayTabs import * +from GrampsWidgets import * + +#------------------------------------------------------------------------- +# +# EditPersonRef class +# +#------------------------------------------------------------------------- +class EditPersonRef(EditSecondary): + """ + Displays a dialog that allows the user to edit an address. + """ + def __init__(self, dbstate, uistate, track, addr, callback): + """ + Displays the dialog box. + + parent - The class that called the PersonRef editor. + addr - The address that is to be edited + """ + EditSecondary.__init__(self, dbstate, uistate, track, addr, callback) + + def _local_init(self): + self.top = gtk.glade.XML(const.gladeFile, "pref_edit","gramps") + self.define_top_level(self.top.get_widget("pref_edit"), + self.top.get_widget("title"), + _('Person Reference Editor')) + self.person_label = self.top.get_widget('person') + + def _setup_fields(self): + + self.street = MonitoredEntry( + self.top.get_widget("relationship"), + self.obj.set_relation, + self.obj.get_relation, + self.db.readonly) + + self.priv = PrivacyButton( + self.top.get_widget("private"), + self.obj, + self.db.readonly) + + def _connect_signals(self): + #self.define_help_button(self.top.get_widget('help'),'adv-ad') + self.define_cancel_button(self.top.get_widget('cancel')) + self.define_ok_button(self.top.get_widget('ok'),self.save) + self.top.get_widget('select').connect('clicked',self._select_person) + + def _select_person(self, obj): + from SelectPerson import SelectPerson + + sel = SelectPerson(self.dbstate.db, "Select Person") + person = sel.run() + + if person: + self.obj.ref = person.get_handle() + self.person_label.set_text(NameDisplay.displayer.display(person)) + + def _create_tabbed_pages(self): + """ + Creates the notebook tabs and inserts them into the main + window. + """ + + notebook = gtk.Notebook() + + self.srcref_list = self._add_tab( + notebook, + SourceEmbedList(self.dbstate,self.uistate, self.track, + self.obj.source_list)) + + self.note_tab = self._add_tab( + notebook, + NoteTab(self.dbstate, self.uistate, self.track, + self.obj.get_note_object())) + + notebook.show_all() + self.top.get_widget('vbox').pack_start(notebook,True) + + def build_menu_names(self,obj): + return (_('Person Reference'),_('Person Reference Editor')) + + def save(self,*obj): + """ + Called when the OK button is pressed. Gets data from the + form and updates the Address data structure. + """ + + print self, self.obj, self.obj.ref + + if self.obj.ref: + if self.callback: + self.callback(self.obj) + self.close_window(obj) + else: + from QuestionDialog import ErrorDialog + + ErrorDialog( + _('No person selected'), + _('You must either select a person or Cancel ' + 'the edit')) +