* src/RelLib.py: Enhanced Name, adding patronymic name

support and display and sorting formats
* src/EditPerson.py: Name editing changes for the Primary
name
* src/NameEdit.py: support for patronymic names
* src/gramps.glade: NameEditor and EditPerson changes for
enhanced name support

* src/PeopleModel.py: remove unused map
* src/GrampsDbBase.py: remove unused map


svn: r3583
This commit is contained in:
Don Allingham 2004-09-29 02:06:46 +00:00
parent b2b4ce7327
commit 008ef2f5d2
7 changed files with 525 additions and 262 deletions

View File

@ -1,3 +1,16 @@
2004-09-28 Don Allingham <dallingham@users.sourceforge.net>
* src/RelLib.py: Enhanced Name, adding patronymic name
support and display and sorting formats
* src/EditPerson.py: Name editing changes for the Primary
name
* src/NameEdit.py: support for patronymic names
* src/gramps.glade: NameEditor and EditPerson changes for
enhanced name support
2004-09-27 Don Allingham <dallingham@users.sourceforge.net>
* src/PeopleModel.py: remove unused map
* src/GrampsDbBase.py: remove unused map
2004-09-27 Alex Roitman <shura@alex.neuro.umn.edu>
* configure.in: Bump up the version number.
* src/DateParser.py: Better compliance with the RFC-2822.

View File

@ -414,14 +414,13 @@ class EditPerson:
"on_event_add_clicked" : self.on_event_add_clicked,
"on_event_delete_clicked" : self.on_event_delete_clicked,
"on_event_update_clicked" : self.on_event_update_clicked,
"on_name_note_clicked" : self.on_name_note_clicked,
"on_edit_name_clicked" : self.on_edit_name_clicked,
"on_ldsbap_note_clicked" : self.on_ldsbap_note_clicked,
"on_ldsendow_note_clicked" : self.on_ldsendow_note_clicked,
"on_ldsseal_note_clicked" : self.on_ldsseal_note_clicked,
"on_ldsbap_src_clicked" : self.on_ldsbap_source_clicked,
"on_ldsendow_src_clicked" : self.on_ldsendow_source_clicked,
"on_ldsseal_src_clicked" : self.on_ldsseal_source_clicked,
"on_name_source_clicked" : self.on_primary_name_source_clicked,
"on_update_address_clicked" : self.on_update_addr_clicked,
"on_update_attr_clicked" : self.on_update_attr_clicked,
"on_update_url_clicked" : self.on_update_url_clicked,
@ -941,7 +940,7 @@ class EditPerson:
def on_add_aka_clicked(self,obj):
"""Invokes the name editor to add a new name"""
import NameEdit
NameEdit.NameEditor(self,None,self.name_edit_callback,self.window)
NameEdit.NameEdit(self,None,self.name_edit_callback,self.window)
def on_add_url_clicked(self,obj):
"""Invokes the url editor to add a new name"""
@ -1648,17 +1647,12 @@ class EditPerson:
else:
return None
def on_primary_name_source_clicked(self,obj):
Sources.SourceSelector(self.pname.get_source_references(),self,
self.update_primary_name)
def on_edit_name_clicked(self,obj):
import NameEdit
NameEdit.NameEditor(self,self.pname,self.update_name,self.window)
def update_primary_name(self,list):
self.pname.set_source_reference_list(list)
self.lists_changed = True
def on_name_note_clicked(self,obj):
import NoteEdit
NoteEdit.NoteEditor(self.pname,self,self.window)
def update_name(self,name):
self.write_primary_name()
def on_ldsbap_source_clicked(self,obj):
Sources.SourceSelector(self.lds_baptism.get_source_references(),

View File

@ -560,13 +560,12 @@ class GrampsDbBase:
This allows faster display of the treeview.
"""
if self.metadata:
return (self.metadata.get('tp_iter'),
self.metadata.get('tp_path'),
return (self.metadata.get('tp_path'),
self.metadata.get('p_iter'),
self.metadata.get('p_path'),
self.metadata.get('sname'))
else:
return (None,None,None,None,None)
return (None,None,None,None)
def set_people_view_maps(self,maps):
"""
@ -574,11 +573,10 @@ class GrampsDbBase:
This allows faster display of the treeview.
"""
if self.metadata:
self.metadata['tp_iter'] = maps[0]
self.metadata['tp_path'] = maps[1]
self.metadata['p_iter'] = maps[2]
self.metadata['p_path'] = maps[3]
self.metadata['sname'] = maps[4]
self.metadata['tp_path'] = maps[0]
self.metadata['p_iter'] = maps[1]
self.metadata['p_path'] = maps[2]
self.metadata['sname'] = maps[3]
def get_number_of_people(self):
"""
@ -970,8 +968,8 @@ class GrampsDbBase:
return self.media_map.has_key(str(handle)) != None
def _sortbyname(self,f,s):
n1 = self.person_map.get(str(f))[2].sname
n2 = self.person_map.get(str(s))[2].sname
n1 = self.person_map.get(str(f))[3].sname
n2 = self.person_map.get(str(s))[3].sname
return locale.strcoll(n1,n2)
def _sortbyplace(self,f,s):

View File

@ -65,6 +65,9 @@ class NameEditor:
self.top = gtk.glade.XML(const.dialogFile, "name_edit","gramps")
self.window = self.top.get_widget("name_edit")
self.given_field = self.top.get_widget("alt_given")
self.sort_as = self.top.get_widget("sort_as")
self.display_as = self.top.get_widget("display_as")
self.group_as = self.top.get_widget("group_as")
self.title_field = self.top.get_widget("alt_title")
self.suffix_field = self.top.get_widget("alt_suffix")
self.combo = self.top.get_widget("alt_surname_list")
@ -80,6 +83,7 @@ class NameEditor:
self.notes_label = self.top.get_widget("noteName")
self.flowed = self.top.get_widget("alt_flowed")
self.preform = self.top.get_widget("alt_preform")
self.group_over = self.top.get_widget('group_over')
types = const.NameTypesMap.get_values()
types.sort()
@ -96,11 +100,11 @@ class NameEditor:
alt_title = self.top.get_widget("title")
if full_name == ", ":
tmsg = _("Alternate Name Editor")
tmsg = _("Name Editor")
else:
tmsg = _("Alternate Name Editor for %s") % full_name
tmsg = _("Name Editor for %s") % full_name
Utils.set_titles(self.window, alt_title, tmsg, _('Alternate Name Editor'))
Utils.set_titles(self.window, alt_title, tmsg, _('Name Editor'))
self.sourcetab = Sources.SourceTab(self.srcreflist, self,
self.top, self.window, self.slist,
@ -115,6 +119,7 @@ class NameEditor:
"on_name_edit_ok_clicked" : self.on_name_edit_ok_clicked,
"on_name_edit_cancel_clicked" : self.close,
"on_name_edit_delete_event" : self.on_delete_event,
"on_group_over_toggled" : self.on_group_over_toggled,
"on_switch_page" : self.on_switch_page
})
@ -132,12 +137,32 @@ class NameEditor:
self.preform.set_active(1)
else:
self.flowed.set_active(1)
self.display_as.set_active(name.get_display_as())
self.sort_as.set_active(name.get_display_as())
self.group_as.set_text(name.get_group_as())
else:
self.display_as.set_active(0)
self.sort_as.set_active(0)
if parent_window:
self.window.set_transient_for(parent_window)
self.add_itself_to_menu()
self.surname_field.connect('changed',self.on_family_changed)
self.window.show()
def on_group_over_toggled(self,obj):
if obj.get_active():
self.group_as.set_sensitive(gtk.TRUE)
self.group_as.set_editable(gtk.TRUE)
else:
self.group_as.set_text(self.surname_field.get_text())
self.group_as.set_sensitive(gtk.FALSE)
self.group_as.set_editable(gtk.FALSE)
def on_family_changed(self,obj):
if self.group_over.get_active() == gtk.FALSE:
self.group_as.set_text(self.surname_field.get_text())
def on_delete_event(self,*obj):
self.close_child_windows()
self.remove_itself_from_menu()
@ -207,6 +232,22 @@ class NameEditor:
self.name.set_source_reference_list(self.srcreflist)
if self.name.get_display_as() != self.display_as.get_active():
self.name.set_display_as(self.display_as.get_active())
self.parent.lists_changed = 1
if self.name.get_sort_as() != self.sort_as.get_active():
self.name.set_sort_as(self.sort_as.get_active())
self.parent.lists_changed = 1
if self.group_over.get_active() == gtk.FALSE:
if self.name.get_group_as() != self.surname_field.get_text():
self.name.set_group_as("")
self.parent.lists_changed = 1
elif self.name.set_group_as() != self.group_as.get_text():
self.name.set_group_as(self.group_as.get_text())
self.parent.lists_changed = 1
self.update_name(first,last,suffix,title,mtype,note,format,priv)
self.parent.lists_changed = 1

View File

@ -44,7 +44,6 @@ import pango
#
#-------------------------------------------------------------------------
from RelLib import *
import accent
#-------------------------------------------------------------------------
#
@ -75,11 +74,11 @@ class PeopleModel(gtk.GenericTreeModel):
self.top_visible = {}
maps = self.db.get_people_view_maps()
if maps[1] != None and len(maps[1]) != 0:
self.top_path2iter = maps[1]
self.iter2path = maps[2]
self.path2iter = maps[3]
self.sname_sub = maps[4]
if maps[0] != None and len(maps[0]) != 0:
self.top_path2iter = maps[0]
self.iter2path = maps[1]
self.path2iter = maps[2]
self.sname_sub = maps[3]
else:
self.rebuild_data()
@ -120,8 +119,7 @@ class PeopleModel(gtk.GenericTreeModel):
self.db.set_people_view_maps(self.get_maps())
def get_maps(self):
return (None,
self.top_path2iter,
return (self.top_path2iter,
self.iter2path,
self.path2iter,
self.sname_sub)
@ -321,67 +319,6 @@ class PeopleModel(gtk.GenericTreeModel):
def column_header_view(self,node):
return self.top_visible.has_key(node)
# def add_person(self,person):
# pid = person.get_handle()
# need = 0
# surname = person.get_primary_name().get_surname()
# if self.sname_sub.has_key(surname):
# self.sname_sub[surname].append(pid)
# else:
# self.sname_sub[surname] = [pid]
# inscol = 0
# sval = 0
# name_list = self.db.get_surname_list()
# for name in name_list:
# if self.sname_sub.has_key(name):
# self.top_path2iter[sval] = name
# if name == surname:
# inscol = (sval,)
# need = 1
# sval += 1
# column = 0
# val = 0
# entries = self.sname_sub[surname]
# entries.sort(self.byname)
# for person_handle in entries:
# tpl = (surname,val)
# self.iter2path[person_handle] = tpl
# self.path2iter[tpl] = person_handle
# if person_handle == pid:
# column = val
# val += 1
# col = self.top_path2iter.index(surname)
# mypath = (col[0],column)
# if need:
# self.row_inserted(inscol,self.get_iter(inscol))
# self.row_inserted(mypath,self.get_iter(mypath))
# def on_row_inserted(self,model,path,iter):
# pass
# def on_row_deleted(self,model,path):
# surname = self.top_path2iter[path[0]]
# pid = self.path2iter[(surname,path[1])]
# for idval in self.sname_sub[surname]:
# key = self.iter2path[idval]
# del self.iter2path[idval]
# del self.path2iter[key]
# self.sname_sub[surname].remove(pid)
# val = 0
# entries = self.sname_sub[surname]
# entries.sort(self.byname)
# for person_handle in entries:
# tpl = (surname,val)
# self.iter2path[person_handle] = tpl
# self.path2iter[tpl] = person_handle
# val += 1
# return 0
_GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ]
# table of column definitions

View File

@ -1822,6 +1822,10 @@ class Name(DataObj):
"""Provides name information about a person. A person may have more
that one name throughout his or her life."""
DEF = 0 # locale default
LNFN = 1 # last name, first name
FNLN = 2 # first name, last name
def __init__(self,source=None):
"""creates a new Name instance, copying from the source if provided"""
DataObj.__init__(self,source)
@ -1833,7 +1837,11 @@ class Name(DataObj):
self.title = source.title
self.type = source.type
self.prefix = source.prefix
self.patronymic = source.patronymic
self.sname = source.sname
self.group_as = source.group_as
self.sort_as = source.sort_as
self.display_as = source.display_as
else:
self.first_name = ""
self.surname = ""
@ -1841,7 +1849,35 @@ class Name(DataObj):
self.title = ""
self.type = "Birth Name"
self.prefix = ""
self.patronymic = ""
self.sname = '@'
self.group_as = ""
self.sort_as = self.DEF
self.display_as = self.DEF
def get_group_as(self):
if self.group_as:
return self.group_as
else:
return self.surname
def set_group_as(self,name):
if name == self.surname:
self.group_as = ""
else:
self.group_as = name
def set_sort_as(self,value):
self.sort_as = value
def get_sort_as(self):
return self.sort_as
def set_display_as(self,value):
self.display_as = value
def get_display_as(self):
return self.display_as
def get_surname_prefix(self):
return self.prefix
@ -1859,9 +1895,7 @@ class Name(DataObj):
def build_sort_name(self):
if self.surname:
self.sname = "%-25s%-30s%s" % (self.surname.upper(),
self.first_name.upper(),
self.suffix.upper())
self.sname = "%-25s%-30s%s" % (self.surname,self.first_name,self.suffix)
else:
self.sname = "@"

View File

@ -7967,7 +7967,7 @@ Other</property>
<property name="show_tabs">True</property>
<property name="show_border">True</property>
<property name="tab_pos">GTK_POS_TOP</property>
<property name="scrollable">True</property>
<property name="scrollable">False</property>
<property name="enable_popup">False</property>
<signal name="switch_page" handler="on_editperson_switch_page" object="editPerson"/>
@ -8217,94 +8217,6 @@ Other</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button105">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Select source for this name information</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Source...</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_name_source_clicked" object="editPerson"/>
</widget>
<packing>
<property name="left_attach">4</property>
<property name="right_attach">5</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button106">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Enter/modify notes regarding this name</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Note...</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_name_note_clicked" object="editPerson"/>
</widget>
<packing>
<property name="left_attach">4</property>
<property name="right_attach">5</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="givenName">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">The person's given name</property>
<property name="can_focus">True</property>
<property name="has_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
<signal name="focus_out_event" handler="on_givenName_focus_out_event" last_modification_time="Tue, 24 Jun 2003 13:35:15 GMT"/>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">5</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="prefix">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">An optional prefix for the family name that is not used in sorting, such as &quot;de&quot; or &quot;van&quot;</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">5</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="suffix">
<property name="visible">True</property>
@ -9043,6 +8955,72 @@ Other</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="givenName">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">The person's given name</property>
<property name="can_focus">True</property>
<property name="has_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
<signal name="focus_out_event" handler="on_givenName_focus_out_event" last_modification_time="Tue, 24 Jun 2003 13:35:15 GMT"/>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">4</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button177">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Edit...</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_edit_name_clicked" last_modification_time="Tue, 28 Sep 2004 19:54:46 GMT"/>
</widget>
<packing>
<property name="left_attach">4</property>
<property name="right_attach">5</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="prefix">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">An optional prefix for the family name that is not used in sorting, such as &quot;de&quot; or &quot;van&quot;</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">4</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">0</property>
@ -29496,8 +29474,8 @@ Other</property>
<widget class="GtkTable" id="table23">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">7</property>
<property name="n_columns">2</property>
<property name="n_rows">13</property>
<property name="n_columns">4</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
@ -29521,32 +29499,8 @@ Other</property>
</accessibility>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label181">
<property name="visible">True</property>
<property name="label" translatable="yes">_Family name:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
@ -29573,10 +29527,10 @@ Other</property>
</accessibility>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@ -29595,12 +29549,15 @@ Other</property>
<property name="yalign">0</property>
<property name="xpad">1</property>
<property name="ypad">0</property>
<accessibility>
<atkrelation target="name_type" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">7</property>
<property name="bottom_attach">8</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@ -29625,10 +29582,10 @@ Other</property>
</accessibility>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@ -29647,10 +29604,10 @@ Other</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">12</property>
<property name="bottom_attach">13</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@ -29675,10 +29632,10 @@ Other</property>
</accessibility>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@ -29698,10 +29655,10 @@ Other</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
@ -29719,10 +29676,10 @@ Other</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="y_options"></property>
</packing>
</child>
@ -29740,10 +29697,10 @@ Other</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="y_options"></property>
</packing>
</child>
@ -29760,11 +29717,66 @@ Other</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label416">
<property name="visible">True</property>
<property name="label" translatable="yes">P_atronymic:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">patronymic</property>
<accessibility>
<atkrelation target="patronymic" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label181">
<property name="visible">True</property>
<property name="label" translatable="yes">_Family name:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<accessibility>
<atkrelation target="alt_surname_list" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
@ -29774,24 +29786,258 @@ Other</property>
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="patronymic">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
<accessibility>
<atkrelation target="patronymic" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label417">
<property name="visible">True</property>
<property name="label" translatable="yes">G_roup as:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">group_as</property>
<accessibility>
<atkrelation target="group_as" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">9</property>
<property name="bottom_attach">10</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label418">
<property name="visible">True</property>
<property name="label" translatable="yes">_Sort as:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<accessibility>
<atkrelation target="sort_as" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">10</property>
<property name="bottom_attach">11</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="group_as">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">9</property>
<property name="bottom_attach">10</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label419">
<property name="visible">True</property>
<property name="label" translatable="yes">_Display as:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<accessibility>
<atkrelation target="display_as" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">11</property>
<property name="bottom_attach">12</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label420">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Name Information&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label421">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">3</property>
<property name="top_attach">8</property>
<property name="bottom_attach">9</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="group_over">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">_Override</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_group_over_toggled" last_modification_time="Tue, 28 Sep 2004 20:16:42 GMT"/>
</widget>
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
<property name="top_attach">9</property>
<property name="bottom_attach">10</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkComboBoxEntry" id="name_type">
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">7</property>
<property name="bottom_attach">8</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="sort_as">
<property name="visible">True</property>
<property name="items" translatable="yes">Default (based on locale)
Family name, Given name
Given name, Family name</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">10</property>
<property name="bottom_attach">11</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="display_as">
<property name="visible">True</property>
<property name="items" translatable="yes">Default (based on locale)
Given name Family name
Family name Given name
</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">11</property>
<property name="bottom_attach">12</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>