Delete media objects added, revision control shows who the committer is.
svn: r503
This commit is contained in:
parent
5870c5b1c2
commit
ea59f17e89
@ -511,11 +511,13 @@ class LocalMediaProperties:
|
|||||||
|
|
||||||
class GlobalMediaProperties:
|
class GlobalMediaProperties:
|
||||||
|
|
||||||
def __init__(self,object,path):
|
def __init__(self,db,object):
|
||||||
self.object = object
|
self.object = object
|
||||||
self.alist = self.object.getAttributeList()[:]
|
self.alist = self.object.getAttributeList()[:]
|
||||||
self.lists_changed = 0
|
self.lists_changed = 0
|
||||||
|
self.db = db
|
||||||
|
|
||||||
|
path = self.db.getSavePath()
|
||||||
fname = self.object.getPath()
|
fname = self.object.getPath()
|
||||||
self.change_dialog = libglade.GladeXML(const.imageselFile,"change_global")
|
self.change_dialog = libglade.GladeXML(const.imageselFile,"change_global")
|
||||||
window = self.change_dialog.get_widget("change_global")
|
window = self.change_dialog.get_widget("change_global")
|
||||||
@ -544,6 +546,7 @@ class GlobalMediaProperties:
|
|||||||
"on_apply_clicked" : self.on_apply_clicked,
|
"on_apply_clicked" : self.on_apply_clicked,
|
||||||
"on_attr_list_select_row" : self.on_attr_list_select_row,
|
"on_attr_list_select_row" : self.on_attr_list_select_row,
|
||||||
"on_add_attr_clicked": self.on_add_attr_clicked,
|
"on_add_attr_clicked": self.on_add_attr_clicked,
|
||||||
|
"on_notebook_switch_page": self.on_notebook_switch_page,
|
||||||
"on_delete_attr_clicked" : self.on_delete_attr_clicked,
|
"on_delete_attr_clicked" : self.on_delete_attr_clicked,
|
||||||
"on_update_attr_clicked" : self.on_update_attr_clicked,
|
"on_update_attr_clicked" : self.on_update_attr_clicked,
|
||||||
})
|
})
|
||||||
@ -551,7 +554,30 @@ class GlobalMediaProperties:
|
|||||||
|
|
||||||
def redraw_attr_list(self):
|
def redraw_attr_list(self):
|
||||||
utils.redraw_list(self.alist,self.attr_list,disp_attr)
|
utils.redraw_list(self.alist,self.attr_list,disp_attr)
|
||||||
|
|
||||||
|
def display_refs(self):
|
||||||
|
ref = self.change_dialog.get_widget("refinfo")
|
||||||
|
for p in self.db.getPersonMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == self.object:
|
||||||
|
ref.append([_("Person"),p.getId(),Config.nameof(p)])
|
||||||
|
for p in self.db.getFamilyMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == self.object:
|
||||||
|
ref.append([_("Family"),p.getId(),utils.family_name(p)])
|
||||||
|
for p in self.db.getSourceMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == self.object:
|
||||||
|
ref.append([_("Source"),p.getId(),p.getTitle()])
|
||||||
|
for p in self.db.getPlaceMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == self.object:
|
||||||
|
ref.append([_("Place"),p.getId(),p.get_title()])
|
||||||
|
|
||||||
|
def on_notebook_switch_page(self,obj,junk,page):
|
||||||
|
if page == 3:
|
||||||
|
self.display_refs()
|
||||||
|
|
||||||
def on_apply_clicked(self, obj):
|
def on_apply_clicked(self, obj):
|
||||||
text = self.change_dialog.get_widget("notes").get_chars(0,-1)
|
text = self.change_dialog.get_widget("notes").get_chars(0,-1)
|
||||||
desc = self.change_dialog.get_widget("description").get_text()
|
desc = self.change_dialog.get_widget("description").get_text()
|
||||||
@ -598,3 +624,65 @@ class GlobalMediaProperties:
|
|||||||
def disp_attr(attr):
|
def disp_attr(attr):
|
||||||
detail = utils.get_detail_flags(attr)
|
detail = utils.get_detail_flags(attr)
|
||||||
return [const.display_pattr(attr.getType()),attr.getValue(),detail]
|
return [const.display_pattr(attr.getType()),attr.getValue(),detail]
|
||||||
|
|
||||||
|
|
||||||
|
class DeleteMediaQuery:
|
||||||
|
|
||||||
|
def __init__(self,media,db,update):
|
||||||
|
self.db = db
|
||||||
|
self.media = media
|
||||||
|
self.update = update
|
||||||
|
|
||||||
|
def query_response(self,ans):
|
||||||
|
if ans == 1:
|
||||||
|
return
|
||||||
|
del self.db.getObjectMap()[self.media.getId()]
|
||||||
|
utils.modified()
|
||||||
|
|
||||||
|
for p in self.db.getPersonMap().values():
|
||||||
|
nl = []
|
||||||
|
change = 0
|
||||||
|
for photo in p.getPhotoList():
|
||||||
|
if photo.getReference() != self.media:
|
||||||
|
nl.append(photo)
|
||||||
|
else:
|
||||||
|
change = 1
|
||||||
|
if change:
|
||||||
|
p.setPhotoList(nl)
|
||||||
|
|
||||||
|
for p in self.db.getFamilyMap().values():
|
||||||
|
nl = []
|
||||||
|
change = 0
|
||||||
|
for photo in p.getPhotoList():
|
||||||
|
if photo.getReference() != self.media:
|
||||||
|
nl.append(photo)
|
||||||
|
else:
|
||||||
|
change = 1
|
||||||
|
if change:
|
||||||
|
p.setPhotoList(nl)
|
||||||
|
|
||||||
|
for p in self.db.getSourceMap().values():
|
||||||
|
nl = []
|
||||||
|
change = 0
|
||||||
|
for photo in p.getPhotoList():
|
||||||
|
if photo.getReference() != self.media:
|
||||||
|
nl.append(photo)
|
||||||
|
else:
|
||||||
|
change = 1
|
||||||
|
if change:
|
||||||
|
p.setPhotoList(nl)
|
||||||
|
|
||||||
|
for p in self.db.getPlaceMap().values():
|
||||||
|
nl = []
|
||||||
|
change = 0
|
||||||
|
for photo in p.getPhotoList():
|
||||||
|
if photo.getReference() != self.media:
|
||||||
|
nl.append(photo)
|
||||||
|
else:
|
||||||
|
change = 1
|
||||||
|
if change:
|
||||||
|
p.setPhotoList(nl)
|
||||||
|
|
||||||
|
self.update(0)
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,13 +43,6 @@ import utils
|
|||||||
from RelLib import *
|
from RelLib import *
|
||||||
import ImageSelect
|
import ImageSelect
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Constants
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
MARRIAGE = "m"
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Marriage class
|
# Marriage class
|
||||||
@ -130,11 +123,6 @@ class Marriage:
|
|||||||
self.gid.set_text(family.getId())
|
self.gid.set_text(family.getId())
|
||||||
self.gid.set_editable(Config.id_edit)
|
self.gid.set_editable(Config.id_edit)
|
||||||
|
|
||||||
# stored object data
|
|
||||||
top_window.set_data(MARRIAGE,self)
|
|
||||||
self.event_list.set_data(MARRIAGE,self)
|
|
||||||
self.attr_list.set_data(MARRIAGE,self)
|
|
||||||
|
|
||||||
# set notes data
|
# set notes data
|
||||||
self.notes_field.set_point(0)
|
self.notes_field.set_point(0)
|
||||||
self.notes_field.insert_defaults(family.getNote())
|
self.notes_field.insert_defaults(family.getNote())
|
||||||
@ -244,15 +232,7 @@ class Marriage:
|
|||||||
|
|
||||||
def on_add_clicked(self,obj):
|
def on_add_clicked(self,obj):
|
||||||
import EventEdit
|
import EventEdit
|
||||||
father = self.family.getFather()
|
name = utils.family_name(self.family)
|
||||||
mother = self.family.getMother()
|
|
||||||
if father and mother:
|
|
||||||
name = _("%s and %s") % (father.getPrimaryName().getName(),
|
|
||||||
mother.getPrimaryName().getName())
|
|
||||||
elif father:
|
|
||||||
name = father.getPrimaryName().getName()
|
|
||||||
else:
|
|
||||||
name = mother.getPrimaryName().getName()
|
|
||||||
EventEdit.EventEditor(self,name,const.marriageEvents,const.save_pevent,None,None,0)
|
EventEdit.EventEditor(self,name,const.marriageEvents,const.save_pevent,None,None,0)
|
||||||
|
|
||||||
def on_update_clicked(self,obj):
|
def on_update_clicked(self,obj):
|
||||||
@ -261,15 +241,7 @@ class Marriage:
|
|||||||
return
|
return
|
||||||
|
|
||||||
event = obj.get_row_data(obj.selection[0])
|
event = obj.get_row_data(obj.selection[0])
|
||||||
father = self.family.getFather()
|
name = utils.family_name(self.family)
|
||||||
mother = self.family.getMother()
|
|
||||||
if father and mother:
|
|
||||||
name = _("%s and %s") % (father.getPrimaryName().getName(),
|
|
||||||
mother.getPrimaryName().getName())
|
|
||||||
elif father:
|
|
||||||
name = father.getPrimaryName().getName()
|
|
||||||
else:
|
|
||||||
name = mother.getPrimaryName().getName()
|
|
||||||
EventEdit.EventEditor(self,name,const.marriageEvents,const.save_pevent,event,None,0)
|
EventEdit.EventEditor(self,name,const.marriageEvents,const.save_pevent,event,None,0)
|
||||||
|
|
||||||
def on_delete_clicked(self,obj):
|
def on_delete_clicked(self,obj):
|
||||||
|
@ -37,7 +37,7 @@ except:
|
|||||||
_gzip_ok = 0
|
_gzip_ok = 0
|
||||||
|
|
||||||
_revision_re = re.compile("revision\s+([\d\.]+)")
|
_revision_re = re.compile("revision\s+([\d\.]+)")
|
||||||
_date_re = re.compile("date:\s+([^;]+);")
|
_date_re = re.compile("date:\s+([^;]+);\s+author:\s([^;]+);")
|
||||||
_sep = '-' * 10
|
_sep = '-' * 10
|
||||||
_end = "=" * 10
|
_end = "=" * 10
|
||||||
|
|
||||||
@ -77,10 +77,9 @@ class RevisionSelect:
|
|||||||
|
|
||||||
self.revlist = dialog.get_widget("revlist")
|
self.revlist = dialog.get_widget("revlist")
|
||||||
l = self.vc.revision_list()
|
l = self.vc.revision_list()
|
||||||
l.reverse()
|
|
||||||
index = 0
|
index = 0
|
||||||
for f in l:
|
for f in l:
|
||||||
self.revlist.append([f[0],f[1],f[2]])
|
self.revlist.append([f[0],f[1],f[3],f[2]])
|
||||||
self.revlist.set_row_data(index,f[0])
|
self.revlist.set_row_data(index,f[0])
|
||||||
index = index + 1
|
index = index + 1
|
||||||
|
|
||||||
@ -166,7 +165,7 @@ class RcsVersionControl(VersionControl):
|
|||||||
if slog:
|
if slog:
|
||||||
if line[0:10] == _sep or line[0:10] == _end:
|
if line[0:10] == _sep or line[0:10] == _end:
|
||||||
slog = 0
|
slog = 0
|
||||||
rlist.append(v,d,string.join(l,'\n'))
|
rlist.append((v,d,string.join(l,'\n'),o))
|
||||||
else:
|
else:
|
||||||
l.append(line)
|
l.append(line)
|
||||||
continue
|
continue
|
||||||
@ -177,6 +176,7 @@ class RcsVersionControl(VersionControl):
|
|||||||
g = _date_re.match(line)
|
g = _date_re.match(line)
|
||||||
if g:
|
if g:
|
||||||
d = g.group(1)
|
d = g.group(1)
|
||||||
|
o = g.group(2)
|
||||||
slog = 1
|
slog = 1
|
||||||
l = []
|
l = []
|
||||||
|
|
||||||
|
@ -3130,12 +3130,12 @@
|
|||||||
<widget>
|
<widget>
|
||||||
<class>GtkButton</class>
|
<class>GtkButton</class>
|
||||||
<name>button144</name>
|
<name>button144</name>
|
||||||
<sensitive>False</sensitive>
|
|
||||||
<can_default>True</can_default>
|
<can_default>True</can_default>
|
||||||
<can_focus>True</can_focus>
|
<can_focus>True</can_focus>
|
||||||
<signal>
|
<signal>
|
||||||
<name>clicked</name>
|
<name>clicked</name>
|
||||||
<handler>on_delete_media_clicked</handler>
|
<handler>on_delete_media_clicked</handler>
|
||||||
|
<object>media_list</object>
|
||||||
<last_modification_time>Sun, 14 Oct 2001 21:50:57 GMT</last_modification_time>
|
<last_modification_time>Sun, 14 Oct 2001 21:50:57 GMT</last_modification_time>
|
||||||
</signal>
|
</signal>
|
||||||
<label>Delete Media Object</label>
|
<label>Delete Media Object</label>
|
||||||
@ -7130,11 +7130,11 @@ Unknown
|
|||||||
<widget>
|
<widget>
|
||||||
<class>GtkCList</class>
|
<class>GtkCList</class>
|
||||||
<name>revlist</name>
|
<name>revlist</name>
|
||||||
<width>500</width>
|
<width>600</width>
|
||||||
<height>200</height>
|
<height>200</height>
|
||||||
<can_focus>True</can_focus>
|
<can_focus>True</can_focus>
|
||||||
<columns>3</columns>
|
<columns>4</columns>
|
||||||
<column_widths>77,128,80</column_widths>
|
<column_widths>53,128,69,80</column_widths>
|
||||||
<selection_mode>GTK_SELECTION_SINGLE</selection_mode>
|
<selection_mode>GTK_SELECTION_SINGLE</selection_mode>
|
||||||
<show_titles>True</show_titles>
|
<show_titles>True</show_titles>
|
||||||
<shadow_type>GTK_SHADOW_IN</shadow_type>
|
<shadow_type>GTK_SHADOW_IN</shadow_type>
|
||||||
@ -7165,6 +7165,19 @@ Unknown
|
|||||||
<ypad>0</ypad>
|
<ypad>0</ypad>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<child_name>CList:title</child_name>
|
||||||
|
<name>label251a</name>
|
||||||
|
<label>Changed by</label>
|
||||||
|
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>0.5</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
</widget>
|
||||||
|
|
||||||
<widget>
|
<widget>
|
||||||
<class>GtkLabel</class>
|
<class>GtkLabel</class>
|
||||||
<child_name>CList:title</child_name>
|
<child_name>CList:title</child_name>
|
||||||
|
@ -169,8 +169,9 @@ def on_exit_activate(obj):
|
|||||||
def save_query(value):
|
def save_query(value):
|
||||||
"""Catch the reponse to the save on exit question"""
|
"""Catch the reponse to the save on exit question"""
|
||||||
if value == 0:
|
if value == 0:
|
||||||
on_save_activate(None)
|
on_save_activate_quit()
|
||||||
mainquit(gtop)
|
else:
|
||||||
|
mainquit(gtop)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -528,8 +529,6 @@ def on_delete_place_clicked(obj):
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
def on_delete_source_clicked(obj):
|
def on_delete_source_clicked(obj):
|
||||||
import EditSource
|
import EditSource
|
||||||
|
|
||||||
@ -540,10 +539,10 @@ def on_delete_source_clicked(obj):
|
|||||||
|
|
||||||
source = obj.get_row_data(index)
|
source = obj.get_row_data(index)
|
||||||
|
|
||||||
ans = EditSource.DelSrcQuery(source,database,update_display)
|
|
||||||
|
|
||||||
if is_source_used(source):
|
if is_source_used(source):
|
||||||
msg = _("This source is currently being used. Delete anyway?")
|
msg = _("This source is currently being used. Delete anyway?")
|
||||||
|
ans = EditSource.DelSrcQuery(source,database,update_display)
|
||||||
GnomeQuestionDialog(msg,ans.query_response)
|
GnomeQuestionDialog(msg,ans.query_response)
|
||||||
else:
|
else:
|
||||||
map = database.getSourceMap()
|
map = database.getSourceMap()
|
||||||
@ -1238,6 +1237,16 @@ def on_save_activate(obj):
|
|||||||
else:
|
else:
|
||||||
save_file(database.getSavePath(),_("No Comment Provided"))
|
save_file(database.getSavePath(),_("No Comment Provided"))
|
||||||
|
|
||||||
|
def on_save_activate_quit():
|
||||||
|
"""Saves the file, first prompting for a comment if revision control needs it"""
|
||||||
|
if not database.getSavePath():
|
||||||
|
on_save_as_activate(obj)
|
||||||
|
else:
|
||||||
|
if Config.usevc and Config.vc_comment:
|
||||||
|
display_comment_box(database.getSavePath())
|
||||||
|
else:
|
||||||
|
save_file(database.getSavePath(),_("No Comment Provided"))
|
||||||
|
|
||||||
def display_comment_box(filename):
|
def display_comment_box(filename):
|
||||||
"""Displays a dialog box, prompting for a revison control comment"""
|
"""Displays a dialog box, prompting for a revison control comment"""
|
||||||
import VersionControl
|
import VersionControl
|
||||||
@ -2083,7 +2092,42 @@ def on_edit_media_clicked(obj):
|
|||||||
if len(media_list.selection) <= 0:
|
if len(media_list.selection) <= 0:
|
||||||
return
|
return
|
||||||
object = media_list.get_row_data(media_list.selection[0])
|
object = media_list.get_row_data(media_list.selection[0])
|
||||||
ImageSelect.GlobalMediaProperties(object,database.getSavePath())
|
ImageSelect.GlobalMediaProperties(database,object)
|
||||||
|
|
||||||
|
def on_delete_media_clicked(obj):
|
||||||
|
if len(media_list.selection) <= 0:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
index = media_list.selection[0]
|
||||||
|
mobj = media_list.get_row_data(index)
|
||||||
|
if is_media_object_used(mobj):
|
||||||
|
import ImageSelect
|
||||||
|
ans = ImageSelect.DeleteMediaQuery(mobj,database,update_display)
|
||||||
|
msg = _("This media object is currently being used. Delete anyway?")
|
||||||
|
GnomeQuestionDialog(msg,ans.query_response)
|
||||||
|
else:
|
||||||
|
map = database.getObjectMap()
|
||||||
|
del map[mobj.getId()]
|
||||||
|
utils.modified()
|
||||||
|
update_display(0)
|
||||||
|
|
||||||
|
def is_media_object_used(mobj):
|
||||||
|
for p in database.getFamilyMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == mobj:
|
||||||
|
return 1
|
||||||
|
for p in database.getPersonMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == mobj:
|
||||||
|
return 1
|
||||||
|
for p in database.getSourceMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == mobj:
|
||||||
|
return 1
|
||||||
|
for p in database.getPlaceMap().values():
|
||||||
|
for o in p.getPhotoList():
|
||||||
|
if o.getReference() == mobj:
|
||||||
|
return 1
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -2574,6 +2618,7 @@ def main(arg):
|
|||||||
"on_delete_person_clicked" : on_delete_person_clicked,
|
"on_delete_person_clicked" : on_delete_person_clicked,
|
||||||
"on_delete_place_clicked" : on_delete_place_clicked,
|
"on_delete_place_clicked" : on_delete_place_clicked,
|
||||||
"on_delete_source_clicked" : on_delete_source_clicked,
|
"on_delete_source_clicked" : on_delete_source_clicked,
|
||||||
|
"on_delete_media_clicked" : on_delete_media_clicked,
|
||||||
"on_delete_sp_clicked" : on_delete_sp_clicked,
|
"on_delete_sp_clicked" : on_delete_sp_clicked,
|
||||||
"on_edit_active_person" : load_active_person,
|
"on_edit_active_person" : load_active_person,
|
||||||
"on_edit_bookmarks_activate" : on_edit_bookmarks_activate,
|
"on_edit_bookmarks_activate" : on_edit_bookmarks_activate,
|
||||||
|
@ -1354,6 +1354,11 @@
|
|||||||
<class>GtkNotebook</class>
|
<class>GtkNotebook</class>
|
||||||
<name>notebook2</name>
|
<name>notebook2</name>
|
||||||
<can_focus>True</can_focus>
|
<can_focus>True</can_focus>
|
||||||
|
<signal>
|
||||||
|
<name>switch_page</name>
|
||||||
|
<handler>on_notebook_switch_page</handler>
|
||||||
|
<last_modification_time>Sat, 20 Oct 2001 16:10:32 GMT</last_modification_time>
|
||||||
|
</signal>
|
||||||
<show_tabs>True</show_tabs>
|
<show_tabs>True</show_tabs>
|
||||||
<show_border>True</show_border>
|
<show_border>True</show_border>
|
||||||
<tab_pos>GTK_POS_TOP</tab_pos>
|
<tab_pos>GTK_POS_TOP</tab_pos>
|
||||||
@ -2168,6 +2173,78 @@
|
|||||||
<xpad>0</xpad>
|
<xpad>0</xpad>
|
||||||
<ypad>0</ypad>
|
<ypad>0</ypad>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkScrolledWindow</class>
|
||||||
|
<name>scrolledwindow5</name>
|
||||||
|
<hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
|
||||||
|
<vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
|
||||||
|
<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
|
||||||
|
<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkCList</class>
|
||||||
|
<name>refinfo</name>
|
||||||
|
<can_focus>True</can_focus>
|
||||||
|
<columns>3</columns>
|
||||||
|
<column_widths>80,80,80</column_widths>
|
||||||
|
<selection_mode>GTK_SELECTION_SINGLE</selection_mode>
|
||||||
|
<show_titles>True</show_titles>
|
||||||
|
<shadow_type>GTK_SHADOW_IN</shadow_type>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<child_name>CList:title</child_name>
|
||||||
|
<name>label178</name>
|
||||||
|
<label>Type</label>
|
||||||
|
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>0.5</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<child_name>CList:title</child_name>
|
||||||
|
<name>label179</name>
|
||||||
|
<label>ID</label>
|
||||||
|
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>0.5</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<child_name>CList:title</child_name>
|
||||||
|
<name>label180</name>
|
||||||
|
<label>Title</label>
|
||||||
|
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>0.5</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
|
||||||
|
<widget>
|
||||||
|
<class>GtkLabel</class>
|
||||||
|
<child_name>Notebook:tab</child_name>
|
||||||
|
<name>label174</name>
|
||||||
|
<label>References</label>
|
||||||
|
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||||
|
<wrap>False</wrap>
|
||||||
|
<xalign>0.5</xalign>
|
||||||
|
<yalign>0.5</yalign>
|
||||||
|
<xpad>0</xpad>
|
||||||
|
<ypad>0</ypad>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -75,6 +75,17 @@ def phonebook_name(person):
|
|||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
def family_name(family):
|
||||||
|
father = family.getFather()
|
||||||
|
mother = family.getMother()
|
||||||
|
if father and mother:
|
||||||
|
name = _("%s and %s") % (father.getPrimaryName().getName(),mother.getPrimaryName().getName())
|
||||||
|
elif father:
|
||||||
|
name = father.getPrimaryName().getName()
|
||||||
|
else:
|
||||||
|
name = mother.getPrimaryName().getName()
|
||||||
|
return name
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Short hand function to return either the person's name, or an empty
|
# Short hand function to return either the person's name, or an empty
|
||||||
|
Loading…
Reference in New Issue
Block a user