* src/plugins/RelCalc.py: use PeopleModel instead of ListModel,
check to the person being compared to him/herself * src/plugins/relcalc.glade: increase the width of the window. svn: r5161
This commit is contained in:
parent
0ff17e104b
commit
603deacb68
@ -1,4 +1,7 @@
|
||||
2005-08-31 Don Allingham <don@gramps-project.org>
|
||||
* src/plugins/RelCalc.py: use PeopleModel instead of ListModel,
|
||||
check to the person being compared to him/herself
|
||||
* src/plugins/relcalc.glade: increase the width of the window.
|
||||
* src/Report.py: Catch thrown Database error
|
||||
* src/GraphLayout.py: catch database loops
|
||||
* src/po/de.po: fix %()s mismatches
|
||||
|
@ -47,6 +47,20 @@ import Utils
|
||||
import NameDisplay
|
||||
import ListModel
|
||||
import PluginMgr
|
||||
import PeopleModel
|
||||
|
||||
column_names = [
|
||||
_('Name'),
|
||||
_('ID') ,
|
||||
_('Gender'),
|
||||
_('Birth Date'),
|
||||
_('Birth Place'),
|
||||
_('Death Date'),
|
||||
_('Death Place'),
|
||||
_('Spouse'),
|
||||
_('Last Change'),
|
||||
_('Cause of Death'),
|
||||
]
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -89,40 +103,35 @@ class RelCalc:
|
||||
'person_name' : name },
|
||||
self.title)
|
||||
|
||||
self.people = self.glade.get_widget("peopleList")
|
||||
self.tree = self.glade.get_widget("peopleList")
|
||||
|
||||
self.model = PeopleModel.PeopleModel(self.db)
|
||||
self.tree.set_model(self.model)
|
||||
|
||||
self.clist = ListModel.ListModel(self.people,
|
||||
[(_('Name'),3,150),(_('Gender'),1,50),
|
||||
(_('Birth Date'),4,150),
|
||||
('',-1,0),('',-1,0)],
|
||||
self.on_apply_clicked)
|
||||
self.clist.new_model()
|
||||
for key in self.db.get_person_handles(sort_handles=False):
|
||||
p = self.db.get_person_from_handle(key)
|
||||
if p == self.person:
|
||||
column = gtk.TreeViewColumn(_('Name'), gtk.CellRendererText(),text=0)
|
||||
column.set_resizable(True)
|
||||
column.set_min_width(225)
|
||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
||||
self.tree.append_column(column)
|
||||
|
||||
index = 1
|
||||
for pair in self.db.get_person_column_order():
|
||||
if not pair[0]:
|
||||
continue
|
||||
bh = p.get_birth_handle()
|
||||
if bh:
|
||||
bdate = self.db.get_event_from_handle(bh).get_date()
|
||||
else:
|
||||
bdate = ""
|
||||
name = p.get_primary_name()
|
||||
if p.get_gender() == RelLib.Person.MALE:
|
||||
gender = _("male")
|
||||
elif p.get_gender() == RelLib.Person.FEMALE:
|
||||
gender = _("female")
|
||||
else:
|
||||
gender = _("unknown")
|
||||
self.clist.add([name.get_name(), gender, bdate,
|
||||
name.get_sort_name(), bdate],
|
||||
p.get_handle())
|
||||
name = column_names[pair[1]]
|
||||
column = gtk.TreeViewColumn(name, gtk.CellRendererText(), markup=pair[1])
|
||||
column.set_resizable(True)
|
||||
column.set_min_width(60)
|
||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)
|
||||
self.tree.append_column(column)
|
||||
index += 1
|
||||
|
||||
self.tree.get_selection().connect('changed',self.on_apply_clicked)
|
||||
|
||||
self.clist.connect_model()
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_close_clicked" : self.close,
|
||||
"on_delete_event" : self.on_delete_event,
|
||||
"on_apply_clicked" : self.on_apply_clicked
|
||||
})
|
||||
|
||||
self.add_itself_to_menu()
|
||||
@ -150,17 +159,22 @@ class RelCalc:
|
||||
self.window.present()
|
||||
|
||||
def on_apply_clicked(self,obj):
|
||||
model,node = self.clist.get_selected()
|
||||
model,node = self.tree.get_selection().get_selected()
|
||||
if not node:
|
||||
return
|
||||
|
||||
handle = self.clist.get_object(node)
|
||||
handle = model.get_value(node,len(PeopleModel.COLUMN_DEFS)-1)
|
||||
other_person = self.db.get_person_from_handle(handle)
|
||||
|
||||
(rel_string,common) = self.relationship.get_relationship(self.person,other_person)
|
||||
length = len(common)
|
||||
if other_person != None:
|
||||
(rel_string,common) = self.relationship.get_relationship(self.person,other_person)
|
||||
length = len(common)
|
||||
else:
|
||||
length = 0
|
||||
|
||||
if length == 1:
|
||||
if other_person == None:
|
||||
commontext = ""
|
||||
elif length == 1:
|
||||
person = self.db.get_person_from_handle(common[0])
|
||||
name = person.get_primary_name().get_regular_name()
|
||||
commontext = " " + _("Their common ancestor is %s.") % name
|
||||
@ -184,10 +198,16 @@ class RelCalc:
|
||||
commontext = ""
|
||||
|
||||
text1 = self.glade.get_widget("text1").get_buffer()
|
||||
p1 = NameDisplay.displayer.display(self.person)
|
||||
p2 = NameDisplay.displayer.display(other_person)
|
||||
|
||||
if rel_string == "":
|
||||
if other_person:
|
||||
p1 = NameDisplay.displayer.display(self.person)
|
||||
p2 = NameDisplay.displayer.display(other_person)
|
||||
|
||||
if other_person == None:
|
||||
rstr = ""
|
||||
elif self.person.handle == other_person.handle:
|
||||
rstr = _("%s and %s are the same person.") % (p1,p2)
|
||||
elif rel_string == "":
|
||||
rstr = _("%(person)s and %(active_person)s are not related.") % {
|
||||
'person' : p2, 'active_person' : p1 }
|
||||
else:
|
||||
|
@ -9,7 +9,7 @@
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_NONE</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="default_width">450</property>
|
||||
<property name="default_width">600</property>
|
||||
<property name="default_height">400</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
@ -18,6 +18,7 @@
|
||||
<property name="skip_pager_hint">False</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
||||
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
||||
<property name="focus_on_map">True</property>
|
||||
<property name="has_separator">False</property>
|
||||
<signal name="delete_event" handler="on_delete_event" last_modification_time="Tue, 11 May 2004 00:39:37 GMT"/>
|
||||
|
||||
@ -74,6 +75,10 @@
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">6</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">5</property>
|
||||
@ -100,6 +105,9 @@
|
||||
<property name="rules_hint">True</property>
|
||||
<property name="reorderable">False</property>
|
||||
<property name="enable_search">True</property>
|
||||
<property name="fixed_height_mode">False</property>
|
||||
<property name="hover_selection">False</property>
|
||||
<property name="hover_expand">False</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
|
Loading…
Reference in New Issue
Block a user