NameDisplay enhancements

svn: r4969
This commit is contained in:
Don Allingham
2005-07-26 23:02:53 +00:00
parent e968be0d0b
commit 2335612283
15 changed files with 153 additions and 104 deletions
+15
View File
@@ -1,3 +1,18 @@
2005-07-26 Don Allingham <don@gramps-project.org>
* src/EditPerson.py: NameDisplay enhancements
* src/FamilyView.py: NameDisplay enhancements
* src/NameDisplay.py: NameDisplay enhancements
* src/NameEdit.py: NameDisplay enhancements
* src/PedView.py: NameDisplay enhancements
* src/PeopleModel.py: NameDisplay enhancements
* src/PeopleView.py: NameDisplay enhancements
* src/RelLib.py: NameDisplay enhancements
* src/Report.py: NameDisplay enhancements
* src/SelectChild.py: NameDisplay enhancements
* src/Witness.py: NameDisplay enhancements
* src/gramps.glade: NameDisplay enhancements
* src/gramps_main.py: NameDisplay enhancements
2005-07-26 Martin Hawlisch <Martin.Hawlisch@gmx.de>
* src/NavWebPage.py: Catch missing header/footer notes; Add Surname
page that is sorted by the number of persons.
+15 -15
View File
@@ -99,6 +99,7 @@ class EditPerson:
self.dp = DateHandler.parser
self.dd = DateHandler.displayer
self.nd = NameDisplay.displayer
self.orig_handle = person.get_handle()
# UGLY HACK to refresh person object from handle if that exists
# done to ensure that the person object is not stale, as it could
@@ -122,7 +123,6 @@ class EditPerson:
self.update_death = False
self.pdmap = {}
self.add_places = []
self.name_display = NameDisplay.displayer
self.should_guess_gender = (not person.get_gramps_id() and
person.get_gender () ==
RelLib.Person.UNKNOWN)
@@ -629,7 +629,7 @@ class EditPerson:
def add_itself_to_winsmenu(self):
self.parent.child_windows[self.orig_handle] = self
win_menu_label = self.name_display.display(self.person)
win_menu_label = self.nd.display(self.person)
if not win_menu_label.strip():
win_menu_label = _("New Person")
self.win_menu_item = gtk.MenuItem(win_menu_label)
@@ -1175,13 +1175,13 @@ class EditPerson:
def on_add_url_clicked(self,obj):
"""Invokes the url editor to add a new name"""
import UrlEdit
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
UrlEdit.UrlEditor(self,pname,None,self.url_edit_callback,self.window)
def on_add_attr_clicked(self,obj):
"""Brings up the AttributeEditor for a new attribute"""
import AttrEdit
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
AttrEdit.AttributeEditor(self,None,pname,const.personalAttributes,
self.attr_edit_callback,self.window)
@@ -1202,7 +1202,7 @@ class EditPerson:
def on_event_add_clicked(self,obj):
"""Brings up the EventEditor for a new event"""
import EventEdit
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
EventEdit.EventEditor(
self,pname,const.personalEvents,
const.personal_events,None,None,0,
@@ -1215,7 +1215,7 @@ class EditPerson:
import EventEdit
self.update_birth = True
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
event = self.birth
event.set_date_object(Date.Date(self.birth_date_object))
def_placename = unicode(self.bplace.get_text())
@@ -1235,7 +1235,7 @@ class EditPerson:
import EventEdit
self.update_death = True
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
event = self.death
event.set_date_object(Date.Date(self.death_date_object))
def_placename = unicode(self.dplace.get_text())
@@ -1292,7 +1292,7 @@ class EditPerson:
the close window"""
if self.did_data_change() and not GrampsKeys.get_dont_ask():
n = "<i>%s</i>" % self.person.get_primary_name().get_regular_name()
n = "<i>%s</i>" % self.nd.display(self.person)
SaveDialog(_('Save changes to %s?') % n,
_('If you close without saving, the changes you '
'have made will be lost'),
@@ -1308,7 +1308,7 @@ class EditPerson:
"""If the data has changed, give the user a chance to cancel
the close window"""
if self.did_data_change() and not GrampsKeys.get_dont_ask():
n = "<i>%s</i>" % self.person.get_primary_name().get_regular_name()
n = "<i>%s</i>" % self.nd.display(self.person)
SaveDialog(_('Save Changes to %s?') % n,
_('If you close without saving, the changes you '
'have made will be lost'),
@@ -1472,7 +1472,7 @@ class EditPerson:
store,node = self.atree.get_selected()
if node:
attr = self.atree.get_object(node)
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
AttrEdit.AttributeEditor(self,attr,pname,const.personalAttributes,
self.attr_edit_callback,self.window)
@@ -1488,7 +1488,7 @@ class EditPerson:
import UrlEdit
store,node = self.wtree.get_selected()
if node:
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
url = self.wtree.get_object(node)
UrlEdit.UrlEditor(self,pname,url,self.url_edit_callback,self.window)
@@ -1498,7 +1498,7 @@ class EditPerson:
store,node = self.etree.get_selected()
if not node:
return
pname = self.name_display.display(self.person)
pname = self.nd.display(self.person)
event = self.etree.get_object(node)
EventEdit.EventEditor(
self,pname,const.personalEvents,
@@ -1737,7 +1737,7 @@ class EditPerson:
if not person:
self.person.set_gramps_id(idval)
else:
n = self.name_display.display(person)
n = self.nd.display(person)
msg1 = _("GRAMPS ID value was not changed.")
msg2 = _("You have attempted to change the GRAMPS ID to a value "
"of %(grampsid)s. This value is already used by %(person)s.") % {
@@ -1894,7 +1894,7 @@ class EditPerson:
if not self.person.get_gramps_id():
self.person.set_gramps_id(self.db.find_next_person_gramps_id())
self.db.commit_person(self.person, trans)
n = self.person.get_primary_name().get_regular_name()
n = self.nd.display(self.person)
self.db.transaction_commit(trans,_("Edit Person (%s)") % n)
if self.callback:
self.callback(self,self.retval)
@@ -2042,7 +2042,7 @@ class EditPerson:
def write_primary_name(self):
# initial values
name = '<span size="larger" weight="bold">%s</span>' % self.name_display.display(self.person)
name = '<span size="larger" weight="bold">%s</span>' % self.nd.display(self.person)
self.get_widget("activepersonTitle").set_text(name)
self.get_widget("activepersonTitle").set_use_markup(True)
self.suffix.set_text(self.pname.get_suffix())
+3 -3
View File
@@ -850,7 +850,7 @@ class FamilyView:
# commit the transaction
self.parent.db.commit_person(child,trans)
n = child.get_primary_name().get_regular_name()
n = NameDisplay.displayer.display(child)
self.parent.db.transaction_commit(trans,_("Remove Child (%s)") % n)
self.parent.db.enable_all_signals()
self.parent.db.emit('family-update',([family.get_handle()],))
@@ -901,7 +901,7 @@ class FamilyView:
person_id = cur_person.get_handle()
self.person = self.parent.db.get_person_from_handle(person_id)
n = self.person.get_primary_name().get_regular_name()
n = NameDisplay.displayer.display(self.person)
self.parent.db.transaction_commit(trans,_("Remove Spouse (%s)") % n)
if len(self.person.get_family_handle_list()) <= 1:
@@ -1407,7 +1407,7 @@ class FamilyView:
self.parent.db.remove_family(fam,trans)
self.parent.db.commit_person(person,trans)
n = person.get_primary_name().get_regular_name()
n = NameDisplay.displayer.display(person)
self.parent.db.transaction_commit(trans,_("Remove Parents (%s)") % n)
self.load_family()
+53 -2
View File
@@ -83,8 +83,12 @@ class NameDisplay:
@rtype: str
"""
name = person.get_primary_name()
if name.get_sort_as() == RelLib.Name.FNLN:
if name.sort_as == RelLib.Name.FNLN:
return self._fnln(name)
elif name.sort_as == RelLib.Name.PTFN:
return self._ptfn(name)
elif name.sort_as == RelLib.Name.FN:
return name.first_name
else:
return self._lnfn(name)
@@ -99,8 +103,12 @@ class NameDisplay:
@returns: Returns the L{RelLib.Name} string representation
@rtype: str
"""
if name.get_sort_as() == RelLib.Name.FNLN:
if name.sort_as == RelLib.Name.FNLN:
return self._fnln(name)
elif name.sort_as == RelLib.Name.PTFN:
return self._ptfn(name)
elif name.sort_as == RelLib.Name.FN:
return name.first_name
else:
return self._lnfn(name)
@@ -136,9 +144,37 @@ class NameDisplay:
return ""
elif name.display_as == RelLib.Name.LNFN:
return self._lnfn(name)
elif name.display_as == RelLib.Name.PTFN:
return self._ptfn(name)
else:
return self._fnln(name)
def _ptfn(self,name):
"""
Prints the Western style first name, last name style.
Typically this is::
SurnamePrefix Patronymic SurnameSuffix, FirstName
"""
first = name.first_name
if self.force_upper:
last = name.patronymic.upper()
else:
last = name.patronymic
if name.suffix == "":
if name.prefix:
return "%s %s, %s" % (name.prefix, last, first)
else:
return "%s, %s" % (last, first)
else:
if name.prefix:
return "%s %s %s, %s" % (name.prefix, last, name.suffix, first)
else:
return "%s %s, %s" % (last, name.suffix, first)
def _fnln(self,name):
"""
Prints the Western style first name, last name style.
@@ -166,6 +202,21 @@ class NameDisplay:
return "%s %s %s, %s" % (first, name.prefix, last, name.suffix)
else:
return "%s %s, %s" % (first, last, name.suffix)
def name_grouping(self,db,person):
return self.name_grouping_name(db,person.primary_name)
def name_grouping_name(self,db,pn):
sv = pn.sort_as
if pn.group_as:
return pn.group_as
if sv <= RelLib.Name.LNFN:
val = pn.surname
elif sv == RelLib.Name.PTFN:
val = pn.patronymic
else:
val = pn.first_name
return db.get_name_group_mapping(val)
def _lnfn(self,name):
"""
+3 -1
View File
@@ -189,7 +189,9 @@ class NameEditor:
self.group_as.set_sensitive(True)
self.group_as.set_editable(True)
else:
self.group_as.set_text(self.db.get_name_group_mapping(self.surname_field.get_text()))
field_value = self.surname_field.get_text()
mapping = self.db.get_name_group_mapping(field_value)
self.group_as.set_text(mapping)
self.group_as.set_sensitive(False)
self.group_as.set_editable(False)
+1 -1
View File
@@ -378,7 +378,7 @@ class PedigreeView:
def make_anchor_label(self):
"""Make a label containing the name of the anchored person"""
if self.anchor:
anchor_string = self.anchor.get_primary_name().get_regular_name()
anchor_string = NameDisplay.displayer.display(self.anchor)
return "%s: %s" % (_("Anchor"),anchor_string)
else:
return ""
+2 -5
View File
@@ -124,11 +124,8 @@ class PeopleModel(gtk.GenericTreeModel):
while node:
if node[0] in flist:
primary_name = node[1][_NAME_COL]
if primary_name.group_as:
surname = primary_name.group_as
else:
surname = self.db.get_name_group_mapping(primary_name.surname)
self.sortnames[node[0]] = primary_name.sname
surname = NameDisplay.displayer.name_grouping_name(self.db,primary_name)
self.sortnames[node[0]] = NameDisplay.displayer.sorted_name(primary_name)
if self.temp_sname_sub.has_key(surname):
self.temp_sname_sub[surname].append(node[0])
+8 -11
View File
@@ -52,6 +52,7 @@ from gtk.gdk import ACTION_COPY, BUTTON1_MASK
#-------------------------------------------------------------------------
import PeopleModel
import GenericFilter
import NameDisplay
from DdTargets import DdTargets
column_names = [
@@ -154,9 +155,9 @@ class PeopleView:
index += 1
def build_tree(self):
self.person_model = PeopleModel.PeopleModel(self.parent.db,
self.DataFilter,
self.parent.filter_invert.get_active())
self.person_model = PeopleModel.PeopleModel(
self.parent.db,self.DataFilter,
self.parent.filter_invert.get_active())
self.person_tree.set_model(self.person_model)
def get_selected_objects(self):
@@ -240,7 +241,7 @@ class PeopleView:
p = self.parent.active_person
try:
path = self.person_model.on_get_path(p.get_handle())
group_name = p.get_primary_name().get_group_name()
group_name = NameDisplay.displayer.name_grouping(self.parent.db,p)
top_name = self.parent.db.get_name_group_mapping(group_name)
top_path = self.person_model.on_get_path(top_name)
self.person_tree.expand_row(top_path,0)
@@ -320,7 +321,7 @@ class PeopleView:
def person_added(self,handle_list):
for node in handle_list:
person = self.parent.db.get_person_from_handle(node)
top = person.get_primary_name().get_group_name()
top = NameDisplay.displayer.name_grouping(self.parent.db,person)
self.person_model.rebuild_data(self.DataFilter)
if not self.person_model.is_visable(node):
continue
@@ -338,7 +339,7 @@ class PeopleView:
person = self.parent.db.get_person_from_handle(node)
if not self.person_model.is_visable(node):
continue
top = person.get_primary_name().get_group_name()
top = NameDisplay.displayer.name_grouping(self.parent.db,person)
mylist = self.person_model.sname_sub.get(top,[])
if mylist:
try:
@@ -364,11 +365,7 @@ class PeopleView:
# calculate the new data
if person.primary_name.group_as:
surname = person.primary_name.group_as
else:
surname = self.parent.db.get_name_group_mapping(person.primary_name.surname)
surname = NameDisplay.displayer.name_grouping(self.parent.db,person)
if oldpath[0] == surname:
self.person_model.build_sub_entry(surname)
+4 -20
View File
@@ -3493,8 +3493,10 @@ class Name(PrivateSourceNote,DateBase):
that one name throughout his or her life."""
DEF = 0 # locale default
LNFN = 1 # last name, first name
FNLN = 2 # first name, last name
LNFN = 1 # last name first name [patronymic]
FNLN = 2 # first name last name
PTFN = 3 # patronymic last name
FN = 4 # first name
def __init__(self,source=None):
"""creates a new Name instance, copying from the source if provided"""
@@ -3751,24 +3753,6 @@ class Name(PrivateSourceNote,DateBase):
else:
return "%s %s, %s" % (first, self.surname, self.suffix)
def get_regular_upper_name(self):
"""returns a name string built from the components of the Name
instance, in the form of Firstname surname"""
if self.patronymic:
first = "%s %s" % (self.first_name, self.patronymic)
else:
first = self.first_name
if (self.suffix == ""):
if self.prefix:
return "%s %s %s" % (first, self.prefix.upper(), self.surname.upper())
else:
return "%s %s" % (first, self.surname.upper())
else:
if self.prefix:
return "%s %s %s, %s" % (first, self.prefix.upper(), self.surname.upper(), self.suffix)
else:
return "%s %s, %s" % (first, self.surname.upper(), self.suffix)
def is_equal(self,other):
"""
compares to names to see if they are equal, return 0 if they
+3 -3
View File
@@ -522,7 +522,7 @@ class BareReportDialog:
"""Set up the title bar of the dialog. This function relies
on the get_title() customization function for what the title
should be."""
self.name = self.person.get_primary_name().get_regular_name()
self.name = NameDisplay.displayer.display(self.person)
self.window.set_title(self.get_title())
def setup_header(self):
@@ -559,7 +559,7 @@ class BareReportDialog:
self.tbl.attach(center_label,0,4,self.col,self.col+1)
self.col += 1
name = self.person.get_primary_name().get_regular_name()
name = NameDisplay.displayer.display(self.person)
self.person_label = gtk.Label( "%s" % name )
self.person_label.set_alignment(0.0,0.5)
self.tbl.attach(self.person_label,2,3,self.col,self.col+1)
@@ -869,7 +869,7 @@ class BareReportDialog:
new_person = sel_person.run()
if new_person:
self.new_person = new_person
new_name = new_person.get_primary_name().get_regular_name()
new_name = NameDisplay.displayer.display(new_person)
if new_name:
self.person_label.set_text( "<i>%s</i>" % new_name )
self.person_label.set_use_markup(True)
+1 -1
View File
@@ -233,7 +233,7 @@ class SelectChild:
self.db.commit_person(select_child,trans)
self.db.commit_family(self.family,trans)
n = select_child.get_primary_name().get_regular_name()
n = NameDisplay.displayer.display(select_child)
self.db.transaction_commit(trans,_("Add Child to Family (%s)") % n)
self.close(obj)
self.callback()
+14 -12
View File
@@ -160,14 +160,15 @@ class WitnessEditor:
self.idval = self.ref.get_value()
if self.db.has_person_handle(self.idval):
person = self.db.get_person_from_handle(self.idval)
self.name.set_text(person.get_primary_name().get_regular_name())
self.in_db.set_active(1)
name = NameDisplay.displayer.display(person)
self.name.set_text(name)
self.in_db.set_active(True)
else:
self.name.set_text(_("Unknown"))
self.in_db.set_active(0)
self.in_db.set_active(False)
else:
self.name.set_text(self.ref.get_value())
self.in_db.set_active(0)
self.in_db.set_active(False)
self.comment.get_buffer().set_text(self.ref.get_comment())
self.private.set_active(self.ref.get_privacy())
@@ -208,24 +209,25 @@ class WitnessEditor:
def choose(self,obj):
import SelectPerson
sel_person = SelectPerson.SelectPerson(self.db,_('Select Person'),parent_window=self.window)
sel_person = SelectPerson.SelectPerson(self.db,_('Select Person'),
parent_window=self.window)
new_person = sel_person.run()
if new_person:
self.new_person = new_person
self.idval = new_person.get_handle()
new_name = new_person.get_primary_name().get_regular_name()
new_name = NameDisplay.displayer.display(new_person)
if new_name:
self.name.set_text(new_name)
def on_toggled(self,obj):
if self.in_db.get_active():
self.name.set_editable(0)
self.name.set_sensitive(0)
self.select.set_sensitive(1)
self.name.set_editable(False)
self.name.set_sensitive(False)
self.select.set_sensitive(True)
else:
self.name.set_editable(1)
self.name.set_sensitive(1)
self.select.set_sensitive(0)
self.name.set_editable(True)
self.name.set_sensitive(True)
self.select.set_sensitive(False)
def ok_clicked(self,obj):
if not self.ref:
+26 -25
View File
@@ -31101,9 +31101,6 @@ Very High</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
<accessibility>
<atkrelation target="display_as" type="label-for"/>
</accessibility>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -31192,8 +31189,10 @@ Very High</property>
<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>
Family name, Given name [Patronymic]
Given name, Family name
Patronymic, Given name
Given name</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
@@ -31207,26 +31206,6 @@ Given name, Family name</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>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</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>
</child>
<child>
<widget class="GtkLabel" id="label435">
<property name="visible">True</property>
@@ -31370,6 +31349,28 @@ Family name Given name
<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 [Patronymic] Family name
Family name Given name
Given name Patronymic
Given name
</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</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>
</child>
</widget>
<packing>
<property name="tab_expand">False</property>
+2 -2
View File
@@ -1493,7 +1493,7 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
self.disable_interface()
trans = self.db.transaction_begin()
n = self.active_person.get_primary_name().get_regular_name()
n = NameDisplay.displayer.display(self.active_person)
if self.db.get_default_person() == self.active_person:
self.db.set_default_person_handle(None)
@@ -1885,7 +1885,7 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
def on_default_person_activate(self,obj):
if self.active_person:
name = self.active_person.get_primary_name().get_regular_name()
name = NameDisplay.displayer.display(self.active_person)
QuestionDialog(_('Set %s as the Home Person') % name,
_('Once a Home Person is defined, pressing the '
'Home button on the toolbar will make the home '
+3 -3
View File
@@ -777,8 +777,7 @@ class SurnameListPage(BasePage):
BasePage.__init__(self, title, options, archive, media_list, levels)
if order_by == self.ORDER_BY_NAME:
of = self.create_file("surnames")
self.display_header(of,db,_('Surnames'),
get_researcher().get_name())
self.display_header(of,db,_('Surnames'),get_researcher().get_name())
of.write('<h3>%s</h3>\n' % _('Surnames'))
else:
of = self.create_file("surnames_count")
@@ -1213,7 +1212,8 @@ class IndividualPage(BasePage):
source = self.db.get_source_from_handle(shandle)
title = source.get_title()
of.write('<tr><td class="field"><a name="sref%d">%d.</a></td>' % (index,index))
of.write('<tr><td class="field">')
of.write('<a name="sref%d">%d.</a></td>' % (index,index))
of.write('<td class="field">')
self.source_link(of,source.handle,title,source.gramps_id,True)
of.write('</a>')