* src/EditPerson.py: don't use quote date
* src/PeopleModel.py: remove BOLD * src/PeopleView.py: start of sorting support * src/WriteXML.py: use hlink for Witness * various: pychecker fixes * configure.in: bump up to 1.1.3, the "Splunge: this is a greate idea, but possibly lousy, and I'm not being indecisive" release svn: r3915
This commit is contained in:
parent
55c549de0a
commit
347ac96279
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
2005-01-15 Don Allingham <dallingham@users.sourceforge.net>
|
||||||
|
* src/EditPerson.py: don't use quote date
|
||||||
|
* src/PeopleModel.py: remove BOLD
|
||||||
|
* src/PeopleView.py: start of sorting support
|
||||||
|
* src/WriteXML.py: use hlink for Witness
|
||||||
|
* various: pychecker fixes
|
||||||
|
* configure.in: bump up to 1.1.3, the "Splunge: this is a
|
||||||
|
greate idea, but possibly lousy, and I'm not being indecisive"
|
||||||
|
release
|
||||||
|
|
||||||
2005-01-15 Alex Roitman <shura@alex.neuro.umn.edu>
|
2005-01-15 Alex Roitman <shura@alex.neuro.umn.edu>
|
||||||
* src/docgen/KwordDoc.py: Register with paper capabilites.
|
* src/docgen/KwordDoc.py: Register with paper capabilites.
|
||||||
* src/docgen/PdfDoc.py: Register with paper capabilites.
|
* src/docgen/PdfDoc.py: Register with paper capabilites.
|
||||||
|
2
NEWS
2
NEWS
@ -5,7 +5,7 @@ Version 1.1.3 -- the "Splunge: this is a great idea, but possibly lousy,
|
|||||||
* Alternative .ini -based backend for storing gramps settings (replaces gconf).
|
* Alternative .ini -based backend for storing gramps settings (replaces gconf).
|
||||||
* Modules providing database access and basic classes are UI-independent now.
|
* Modules providing database access and basic classes are UI-independent now.
|
||||||
* Improved Name handling.
|
* Improved Name handling.
|
||||||
* Date hadnling improvements.
|
* Date handling improvements.
|
||||||
* Documentation for core API can now be autogenerated (requires epydoc).
|
* Documentation for core API can now be autogenerated (requires epydoc).
|
||||||
* Dramatic performance improvements for large databases.
|
* Dramatic performance improvements for large databases.
|
||||||
* Spanish Date handler (Julio Sanchez).
|
* Spanish Date handler (Julio Sanchez).
|
||||||
|
@ -7,8 +7,8 @@ AC_PREREQ(2.57)
|
|||||||
AC_INIT(gramps, 1.1.3, gramps-bugs@lists.sourceforge.net)
|
AC_INIT(gramps, 1.1.3, gramps-bugs@lists.sourceforge.net)
|
||||||
AC_CONFIG_SRCDIR(src/gramps.py)
|
AC_CONFIG_SRCDIR(src/gramps.py)
|
||||||
AM_INIT_AUTOMAKE(1.6.3)
|
AM_INIT_AUTOMAKE(1.6.3)
|
||||||
RELEASE=0.CVS$(head -c 10 ${srcdir}/ChangeLog | tr -d '-')
|
dnl RELEASE=0.CVS$(head -c 10 ${srcdir}/ChangeLog | tr -d '-')
|
||||||
dnl RELEASE=1
|
RELEASE=1
|
||||||
|
|
||||||
VERSIONSTRING=$VERSION
|
VERSIONSTRING=$VERSION
|
||||||
if test x"$RELEASE" != "x"
|
if test x"$RELEASE" != "x"
|
||||||
|
@ -103,8 +103,7 @@ class AddressEditor:
|
|||||||
|
|
||||||
title_label = self.top.get_widget("title")
|
title_label = self.top.get_widget("title")
|
||||||
|
|
||||||
Utils.set_titles(self.window,title_label,
|
Utils.set_titles(self.window,title_label,_('Address Editor'))
|
||||||
text,_('Address Editor'))
|
|
||||||
|
|
||||||
if self.addr:
|
if self.addr:
|
||||||
self.srcreflist = self.addr.get_source_references()
|
self.srcreflist = self.addr.get_source_references()
|
||||||
|
@ -434,7 +434,6 @@ class ArgHandler:
|
|||||||
os._exit(1)
|
os._exit(1)
|
||||||
elif format == 'gramps-pkg':
|
elif format == 'gramps-pkg':
|
||||||
import TarFile
|
import TarFile
|
||||||
import time
|
|
||||||
import WriteXML
|
import WriteXML
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ class DateDisplay:
|
|||||||
return "%s %s - %s%s" % (qual_str,d1,d2,self.calendar[cal])
|
return "%s %s - %s%s" % (qual_str,d1,d2,self.calendar[cal])
|
||||||
elif mod == Date.MOD_RANGE:
|
elif mod == Date.MOD_RANGE:
|
||||||
d1 = self.display_iso(start)
|
d1 = self.display_iso(start)
|
||||||
d2 = self.display_cal[cal](date.get_stop_date())
|
d2 = self.display_iso(date.get_stop_date())
|
||||||
return "%s %s - %s%s" % (qual_str,d1,d2,self.calendar[cal])
|
return "%s %s - %s%s" % (qual_str,d1,d2,self.calendar[cal])
|
||||||
else:
|
else:
|
||||||
text = self.display_iso(start)
|
text = self.display_iso(start)
|
||||||
@ -206,6 +206,8 @@ class DateDisplayEn(DateDisplay):
|
|||||||
list value (DateDisplay.format[]).
|
list value (DateDisplay.format[]).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
DateDisplay.__init__(self,format)
|
||||||
|
|
||||||
self.verify_format(format)
|
self.verify_format(format)
|
||||||
if format == None:
|
if format == None:
|
||||||
self.format = 0
|
self.format = 0
|
||||||
@ -246,10 +248,12 @@ class DateDisplayEn(DateDisplay):
|
|||||||
elif mod == Date.MOD_RANGE:
|
elif mod == Date.MOD_RANGE:
|
||||||
d1 = self.display_cal[cal](start)
|
d1 = self.display_cal[cal](start)
|
||||||
d2 = self.display_cal[cal](date.get_stop_date())
|
d2 = self.display_cal[cal](date.get_stop_date())
|
||||||
return "%sbetween %s and %s%s" % (qual_str,d1,d2,self.calendar[cal])
|
return "%sbetween %s and %s%s" % (qual_str,d1,d2,
|
||||||
|
self.calendar[cal])
|
||||||
else:
|
else:
|
||||||
text = self.display_cal[date.get_calendar()](start)
|
text = self.display_cal[date.get_calendar()](start)
|
||||||
return "%s%s%s%s" % (qual_str,self._mod_str[mod],text,self.calendar[cal])
|
return "%s%s%s%s" % (qual_str,self._mod_str[mod],
|
||||||
|
text,self.calendar[cal])
|
||||||
|
|
||||||
def _display_gregorian(self,date_val):
|
def _display_gregorian(self,date_val):
|
||||||
year = self._slash_year(date_val[2],date_val[3])
|
year = self._slash_year(date_val[2],date_val[3])
|
||||||
|
@ -234,8 +234,10 @@ class EditPerson:
|
|||||||
self.prefix_label.set_text(_('Patronymic:'))
|
self.prefix_label.set_text(_('Patronymic:'))
|
||||||
self.prefix_label.set_use_underline(True)
|
self.prefix_label.set_use_underline(True)
|
||||||
|
|
||||||
self.orig_birth = self.db.get_event_from_handle(person.get_birth_handle())
|
birth_handle = person.get_birth_handle()
|
||||||
self.orig_death = self.db.get_event_from_handle(person.get_death_handle())
|
death_handle = person.get_death_handle()
|
||||||
|
self.orig_birth = self.db.get_event_from_handle(birth_handle)
|
||||||
|
self.orig_death = self.db.get_event_from_handle(death_handle)
|
||||||
self.death = RelLib.Event(self.orig_death)
|
self.death = RelLib.Event(self.orig_death)
|
||||||
self.birth = RelLib.Event(self.orig_birth)
|
self.birth = RelLib.Event(self.orig_birth)
|
||||||
self.pname = RelLib.Name(person.get_primary_name())
|
self.pname = RelLib.Name(person.get_primary_name())
|
||||||
@ -986,7 +988,7 @@ class EditPerson:
|
|||||||
pname = place_title(self.db,event)
|
pname = place_title(self.db,event)
|
||||||
node = self.etree.add([const.display_pevent(event.get_name()),
|
node = self.etree.add([const.display_pevent(event.get_name()),
|
||||||
event.get_description(),
|
event.get_description(),
|
||||||
event.get_quote_date(),pname],event)
|
event.get_date(),pname],event)
|
||||||
self.emap[str(event)] = node
|
self.emap[str(event)] = node
|
||||||
if self.elist:
|
if self.elist:
|
||||||
self.etree.select_row(0)
|
self.etree.select_row(0)
|
||||||
|
@ -494,8 +494,8 @@ class EditPlace:
|
|||||||
if event and event.get_place_handle() == self.place.get_handle():
|
if event and event.get_place_handle() == self.place.get_handle():
|
||||||
fevent.append((f,event))
|
fevent.append((f,event))
|
||||||
for media_handle in self.db.get_media_object_handles():
|
for media_handle in self.db.get_media_object_handles():
|
||||||
object = self.db.get_object_from_handle(media_handle)
|
obj = self.db.get_object_from_handle(media_handle)
|
||||||
if object and object.get_place_handle() == self.place.get_handle():
|
if obj and obj.get_place_handle() == self.place.get_handle():
|
||||||
mlist.append(object)
|
mlist.append(object)
|
||||||
|
|
||||||
any = 0
|
any = 0
|
||||||
|
@ -104,9 +104,9 @@ class EventEditor:
|
|||||||
self.witnesslist = []
|
self.witnesslist = []
|
||||||
self.date = Date.Date(self.event.get_date_object())
|
self.date = Date.Date(self.event.get_date_object())
|
||||||
transname = const.display_event(event.get_name())
|
transname = const.display_event(event.get_name())
|
||||||
# add the name to the list if it is not already there. This tends to occur
|
# add the name to the list if it is not already there. This
|
||||||
# in translated languages with the 'Death' event, which is a partial match
|
# tends to occur in translated languages with the 'Death'
|
||||||
# to other events
|
# event, which is a partial match to other events
|
||||||
if not transname in elist:
|
if not transname in elist:
|
||||||
elist.append(transname)
|
elist.append(transname)
|
||||||
else:
|
else:
|
||||||
@ -292,7 +292,9 @@ class EventEditor:
|
|||||||
eplace_obj = self.get_place(self.place_field)
|
eplace_obj = self.get_place(self.place_field)
|
||||||
buf = self.note_field.get_buffer()
|
buf = self.note_field.get_buffer()
|
||||||
|
|
||||||
enote = unicode(buf.get_text(buf.get_start_iter(),buf.get_end_iter(),gtk.FALSE))
|
start = buf.get_start_iter()
|
||||||
|
stop = buf.get_end_iter()
|
||||||
|
enote = unicode(buf.get_text(start,stop,False))
|
||||||
eformat = self.preform.get_active()
|
eformat = self.preform.get_active()
|
||||||
edesc = unicode(self.descr_field.get_text())
|
edesc = unicode(self.descr_field.get_text())
|
||||||
epriv = self.priv.get_active()
|
epriv = self.priv.get_active()
|
||||||
|
@ -40,7 +40,7 @@ from gettext import gettext as _
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
import gtk
|
import gtk
|
||||||
import gnome
|
import gnome
|
||||||
import gnome.ui
|
from gnome.ui import Druid, DruidPageEdge, DruidPageStandard
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -93,7 +93,7 @@ class Exporter:
|
|||||||
self.logo = gtk.gdk.pixbuf_new_from_file("%s/gramps.png" % const.rootDir)
|
self.logo = gtk.gdk.pixbuf_new_from_file("%s/gramps.png" % const.rootDir)
|
||||||
self.splash = gtk.gdk.pixbuf_new_from_file("%s/splash.jpg" % const.rootDir)
|
self.splash = gtk.gdk.pixbuf_new_from_file("%s/splash.jpg" % const.rootDir)
|
||||||
|
|
||||||
self.d = gnome.ui.Druid()
|
self.d = Druid()
|
||||||
self.w.add(self.d)
|
self.w.add(self.d)
|
||||||
self.d.add(self.build_info_page())
|
self.d.add(self.build_info_page())
|
||||||
self.d.add(self.build_format_page())
|
self.d.add(self.build_format_page())
|
||||||
@ -129,7 +129,7 @@ class Exporter:
|
|||||||
Build initial druid page with the overall information about the process.
|
Build initial druid page with the overall information about the process.
|
||||||
This is a static page, nothing fun here :-)
|
This is a static page, nothing fun here :-)
|
||||||
"""
|
"""
|
||||||
p = gnome.ui.DruidPageEdge(0)
|
p = DruidPageEdge(0)
|
||||||
p.set_title(_('Saving your data'))
|
p.set_title(_('Saving your data'))
|
||||||
p.set_title_color(self.fg_color)
|
p.set_title_color(self.fg_color)
|
||||||
p.set_bg_color(self.bg_color)
|
p.set_bg_color(self.bg_color)
|
||||||
@ -153,7 +153,7 @@ class Exporter:
|
|||||||
Build the last druid page. The actual text will be added after the
|
Build the last druid page. The actual text will be added after the
|
||||||
save is performed and the success status us known.
|
save is performed and the success status us known.
|
||||||
"""
|
"""
|
||||||
p = gnome.ui.DruidPageEdge(1)
|
p = DruidPageEdge(1)
|
||||||
p.set_title_color(self.fg_color)
|
p.set_title_color(self.fg_color)
|
||||||
p.set_bg_color(self.bg_color)
|
p.set_bg_color(self.bg_color)
|
||||||
p.set_logo(self.logo)
|
p.set_logo(self.logo)
|
||||||
@ -168,7 +168,7 @@ class Exporter:
|
|||||||
is necessary, because no choice is made by the user when this
|
is necessary, because no choice is made by the user when this
|
||||||
page is set up.
|
page is set up.
|
||||||
"""
|
"""
|
||||||
p = gnome.ui.DruidPageStandard()
|
p = DruidPageStandard()
|
||||||
p.set_title(_('Final save confirmation'))
|
p.set_title(_('Final save confirmation'))
|
||||||
p.set_title_foreground(self.fg_color)
|
p.set_title_foreground(self.fg_color)
|
||||||
p.set_background(self.bg_color)
|
p.set_background(self.bg_color)
|
||||||
@ -235,7 +235,7 @@ class Exporter:
|
|||||||
"""
|
"""
|
||||||
self.format_buttons = []
|
self.format_buttons = []
|
||||||
|
|
||||||
p = gnome.ui.DruidPageStandard()
|
p = DruidPageStandard()
|
||||||
p.set_title(_('Choosing the format to save'))
|
p.set_title(_('Choosing the format to save'))
|
||||||
p.set_title_foreground(self.fg_color)
|
p.set_title_foreground(self.fg_color)
|
||||||
p.set_background(self.bg_color)
|
p.set_background(self.bg_color)
|
||||||
@ -292,7 +292,7 @@ class Exporter:
|
|||||||
option_box_class = self.exports[ix][3][1]
|
option_box_class = self.exports[ix][3][1]
|
||||||
self.option_box_instance = option_box_class(self.person)
|
self.option_box_instance = option_box_class(self.person)
|
||||||
|
|
||||||
p = gnome.ui.DruidPageStandard()
|
p = DruidPageStandard()
|
||||||
p.set_title(title)
|
p.set_title(title)
|
||||||
p.set_title_foreground(self.fg_color)
|
p.set_title_foreground(self.fg_color)
|
||||||
p.set_background(self.bg_color)
|
p.set_background(self.bg_color)
|
||||||
@ -310,7 +310,7 @@ class Exporter:
|
|||||||
"""
|
"""
|
||||||
Build a druid page embedding the FileChooserWidget.
|
Build a druid page embedding the FileChooserWidget.
|
||||||
"""
|
"""
|
||||||
p = gnome.ui.DruidPageStandard()
|
p = DruidPageStandard()
|
||||||
p.set_title(_('Selecting the file name'))
|
p.set_title(_('Selecting the file name'))
|
||||||
p.set_title_foreground(self.fg_color)
|
p.set_title_foreground(self.fg_color)
|
||||||
p.set_background(self.bg_color)
|
p.set_background(self.bg_color)
|
||||||
|
@ -47,8 +47,6 @@ import GrampsKeys
|
|||||||
import RelLib
|
import RelLib
|
||||||
import const
|
import const
|
||||||
import Utils
|
import Utils
|
||||||
import PaperMenu
|
|
||||||
import Plugins
|
|
||||||
import DateHandler
|
import DateHandler
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -301,15 +301,9 @@ class PeopleModel(gtk.GenericTreeModel):
|
|||||||
def column_int_id(self,data,node):
|
def column_int_id(self,data,node):
|
||||||
return node
|
return node
|
||||||
|
|
||||||
def column_bold(self,data,node):
|
|
||||||
return pango.WEIGHT_NORMAL
|
|
||||||
|
|
||||||
def column_header(self,node):
|
def column_header(self,node):
|
||||||
return node
|
return node
|
||||||
|
|
||||||
def column_header_bold(self,node):
|
|
||||||
return pango.WEIGHT_NORMAL #BOLD
|
|
||||||
|
|
||||||
def column_header_view(self,node):
|
def column_header_view(self,node):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -332,13 +326,11 @@ COLUMN_DEFS = [
|
|||||||
|
|
||||||
# these columns are hidden, and must always be last in the list
|
# these columns are hidden, and must always be last in the list
|
||||||
(PeopleModel.column_sort_name, None, gobject.TYPE_STRING),
|
(PeopleModel.column_sort_name, None, gobject.TYPE_STRING),
|
||||||
(PeopleModel.column_bold, PeopleModel.column_header_bold,gobject.TYPE_INT),
|
|
||||||
(PeopleModel.column_int_id, None, gobject.TYPE_STRING),
|
(PeopleModel.column_int_id, None, gobject.TYPE_STRING),
|
||||||
]
|
]
|
||||||
|
|
||||||
# dynamic calculation of column indices, for use by various Views
|
# dynamic calculation of column indices, for use by various Views
|
||||||
COLUMN_INT_ID = len(COLUMN_DEFS) - 1
|
COLUMN_INT_ID = len(COLUMN_DEFS) - 1
|
||||||
COLUMN_BOLD = COLUMN_INT_ID - 1
|
|
||||||
|
|
||||||
# indices into main column definition table
|
# indices into main column definition table
|
||||||
COLUMN_DEF_LIST = 0
|
COLUMN_DEF_LIST = 0
|
||||||
|
@ -80,19 +80,34 @@ class PeopleView:
|
|||||||
|
|
||||||
self.columns = []
|
self.columns = []
|
||||||
self.build_columns()
|
self.build_columns()
|
||||||
#self.person_tree.set_property('fixed-height-mode',True)
|
|
||||||
self.person_selection = self.person_tree.get_selection()
|
self.person_selection = self.person_tree.get_selection()
|
||||||
self.person_selection.connect('changed',self.row_changed)
|
self.person_selection.connect('changed',self.row_changed)
|
||||||
self.person_tree.connect('row_activated', self.alpha_event)
|
self.person_tree.connect('row_activated', self.alpha_event)
|
||||||
self.person_tree.connect('button-press-event',
|
self.person_tree.connect('button-press-event',
|
||||||
self.on_plist_button_press)
|
self.on_plist_button_press)
|
||||||
|
|
||||||
|
def sort_clicked(self,obj):
|
||||||
|
for col in self.columns:
|
||||||
|
if obj == col:
|
||||||
|
if col.get_sort_indicator():
|
||||||
|
if col.get_sort_order() == gtk.SORT_ASCENDING:
|
||||||
|
col.set_sort_order(gtk.SORT_DESCENDING)
|
||||||
|
else:
|
||||||
|
col.set_sort_order(gtk.SORT_ASCENDING)
|
||||||
|
else:
|
||||||
|
col.set_sort_order(gtk.SORT_ASCENDING)
|
||||||
|
col.set_sort_indicator(True)
|
||||||
|
else:
|
||||||
|
col.set_sort_indicator(False)
|
||||||
|
|
||||||
def build_columns(self):
|
def build_columns(self):
|
||||||
for column in self.columns:
|
for column in self.columns:
|
||||||
self.person_tree.remove_column(column)
|
self.person_tree.remove_column(column)
|
||||||
|
|
||||||
column = gtk.TreeViewColumn(_('Name'), self.renderer,text=0)
|
column = gtk.TreeViewColumn(_('Name'), self.renderer,text=0)
|
||||||
column.set_resizable(gtk.TRUE)
|
column.set_resizable(gtk.TRUE)
|
||||||
|
#column.set_clickable(True)
|
||||||
|
#column.connect('clicked',self.sort_clicked)
|
||||||
column.set_min_width(225)
|
column.set_min_width(225)
|
||||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
||||||
self.person_tree.append_column(column)
|
self.person_tree.append_column(column)
|
||||||
@ -105,6 +120,8 @@ class PeopleView:
|
|||||||
name = column_names[pair[1]]
|
name = column_names[pair[1]]
|
||||||
column = gtk.TreeViewColumn(name, self.renderer, text=pair[1])
|
column = gtk.TreeViewColumn(name, self.renderer, text=pair[1])
|
||||||
column.set_resizable(gtk.TRUE)
|
column.set_resizable(gtk.TRUE)
|
||||||
|
#column.set_clickable(True)
|
||||||
|
#column.connect('clicked',self.sort_clicked)
|
||||||
column.set_min_width(60)
|
column.set_min_width(60)
|
||||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)
|
column.set_sizing(gtk.TREE_VIEW_COLUMN_GROW_ONLY)
|
||||||
self.columns.append(column)
|
self.columns.append(column)
|
||||||
@ -113,11 +130,10 @@ class PeopleView:
|
|||||||
|
|
||||||
def build_tree(self):
|
def build_tree(self):
|
||||||
self.person_model = PeopleModel.PeopleModel(self.parent.db,self.DataFilter)
|
self.person_model = PeopleModel.PeopleModel(self.parent.db,self.DataFilter)
|
||||||
self.sort_model = self.person_model
|
self.person_tree.set_model(self.person_model)
|
||||||
self.person_tree.set_model(self.sort_model)
|
|
||||||
|
|
||||||
def blist(self, store, path, node, id_list):
|
def blist(self, store, path, node, id_list):
|
||||||
id_list.append(self.sort_model.get_value(
|
id_list.append(self.person_model.get_value(
|
||||||
node,
|
node,
|
||||||
PeopleModel.COLUMN_INT_ID))
|
PeopleModel.COLUMN_INT_ID))
|
||||||
|
|
||||||
@ -143,8 +159,7 @@ class PeopleView:
|
|||||||
def change_db(self,db):
|
def change_db(self,db):
|
||||||
self.build_columns()
|
self.build_columns()
|
||||||
self.person_model = PeopleModel.PeopleModel(db,self.DataFilter)
|
self.person_model = PeopleModel.PeopleModel(db,self.DataFilter)
|
||||||
self.sort_model = self.person_model
|
self.person_tree.set_model(self.person_model)
|
||||||
self.person_tree.set_model(self.sort_model)
|
|
||||||
|
|
||||||
def remove_from_person_list(self,person):
|
def remove_from_person_list(self,person):
|
||||||
"""Remove the selected person from the list. A person object is
|
"""Remove the selected person from the list. A person object is
|
||||||
|
@ -126,7 +126,7 @@ def importData(database, filename, cb=None, use_trans=True):
|
|||||||
|
|
||||||
ansel = False
|
ansel = False
|
||||||
gramps = False
|
gramps = False
|
||||||
for index in range(0,50):
|
for index in range(50):
|
||||||
line = f.readline().split()
|
line = f.readline().split()
|
||||||
if len(line) == 0:
|
if len(line) == 0:
|
||||||
break
|
break
|
||||||
@ -195,7 +195,6 @@ def import2(database, filename, cb, codeset, use_trans):
|
|||||||
ErrorDialog(m1,m2)
|
ErrorDialog(m1,m2)
|
||||||
return
|
return
|
||||||
except:
|
except:
|
||||||
import DisplayTrace
|
|
||||||
Utils.destroy_passed_object(statusWindow)
|
Utils.destroy_passed_object(statusWindow)
|
||||||
DisplayTrace.DisplayTrace()
|
DisplayTrace.DisplayTrace()
|
||||||
return
|
return
|
||||||
@ -1982,7 +1981,6 @@ def readData(database,active_person,cb):
|
|||||||
try:
|
try:
|
||||||
importData(database,filename)
|
importData(database,filename)
|
||||||
except:
|
except:
|
||||||
import DisplayTrace
|
|
||||||
DisplayTrace.DisplayTrace()
|
DisplayTrace.DisplayTrace()
|
||||||
else:
|
else:
|
||||||
choose.destroy()
|
choose.destroy()
|
||||||
|
@ -48,13 +48,10 @@ from gettext import gettext as _
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def import_media_object(filename,path,base):
|
def import_media_object(filename,path,base):
|
||||||
import shutil
|
|
||||||
|
|
||||||
if not os.path.exists(filename):
|
if not os.path.exists(filename):
|
||||||
ErrorDialog(_("Could not import %s") % filename,
|
ErrorDialog(_("Could not import %s") % filename,
|
||||||
_("The file has been moved or deleted"))
|
_("The file has been moved or deleted"))
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
return filename
|
return filename
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -40,7 +40,7 @@ from types import ClassType, InstanceType
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
import gtk
|
import gtk
|
||||||
import gnome.ui
|
from gnome.ui import FileEntry
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -1069,7 +1069,7 @@ class ReportDialog(BareReportDialog):
|
|||||||
hid = self.get_stylesheet_savefile()
|
hid = self.get_stylesheet_savefile()
|
||||||
if hid[-4:]==".xml":
|
if hid[-4:]==".xml":
|
||||||
hid = hid[0:-4]
|
hid = hid[0:-4]
|
||||||
self.target_fileentry = gnome.ui.FileEntry(hid,_("Save As"))
|
self.target_fileentry = FileEntry(hid,_("Save As"))
|
||||||
self.target_fileentry.set_modal(True)
|
self.target_fileentry.set_modal(True)
|
||||||
|
|
||||||
if self.get_target_is_directory():
|
if self.get_target_is_directory():
|
||||||
@ -1270,8 +1270,8 @@ class ReportDialog(BareReportDialog):
|
|||||||
label = gtk.Label("%s:" % _("User Template"))
|
label = gtk.Label("%s:" % _("User Template"))
|
||||||
label.set_alignment(0.0,0.5)
|
label.set_alignment(0.0,0.5)
|
||||||
self.html_table.attach(label, 1, 2, 2, 3, gtk.SHRINK|gtk.FILL)
|
self.html_table.attach(label, 1, 2, 2, 3, gtk.SHRINK|gtk.FILL)
|
||||||
self.html_fileentry = gnome.ui.FileEntry("HTML_Template",
|
self.html_fileentry = FileEntry("HTML_Template",
|
||||||
_("Choose File"))
|
_("Choose File"))
|
||||||
self.html_fileentry.set_modal(True)
|
self.html_fileentry.set_modal(True)
|
||||||
if template_name and not active_index:
|
if template_name and not active_index:
|
||||||
active_index = template_index
|
active_index = template_index
|
||||||
|
61
src/Utils.py
61
src/Utils.py
@ -538,68 +538,7 @@ def probably_alive(person,db):
|
|||||||
|
|
||||||
if descendants_too_old (person, min_generation):
|
if descendants_too_old (person, min_generation):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# What about their parents?
|
|
||||||
|
|
||||||
def parents_too_old (person, age_difference):
|
|
||||||
family_handle = person.get_main_parents_family_handle()
|
|
||||||
if family_handle:
|
|
||||||
family = db.get_family_from_handle(family_handle)
|
|
||||||
for parent_id in [family.get_father_handle(), family.get_mother_handle()]:
|
|
||||||
if not parent_id:
|
|
||||||
continue
|
|
||||||
|
|
||||||
parent = db.get_person_from_handle(parent_id)
|
|
||||||
if parent.birth_handle:
|
|
||||||
parent_birth = db.get_event_from_handle(parent.birth_handle)
|
|
||||||
if parent_birth.get_date():
|
|
||||||
d = SingleDate (parent_birth.get_date_object().get_start_date())
|
|
||||||
d.set_year (d.get_year() + max_generation + age_difference)
|
|
||||||
if not not_too_old (d):
|
|
||||||
return True
|
|
||||||
|
|
||||||
if parent.death_handle:
|
|
||||||
parent_death = db.get_event_from_handle(parent.death_handle)
|
|
||||||
if parent_death.get_date() != "":
|
|
||||||
d = SingleDate (parent_death.get_date_object().get_start_date())
|
|
||||||
d.set_year (d.get_year() + age_difference)
|
|
||||||
if not not_too_old (d):
|
|
||||||
return True
|
|
||||||
|
|
||||||
if parents_too_old (person, 0):
|
|
||||||
return False
|
|
||||||
|
|
||||||
# As a last resort, trying seeing if their spouse's age gives
|
|
||||||
# any clue.
|
|
||||||
for family_handle in person.get_family_handle_list():
|
|
||||||
family = db.get_family_from_handle(family_handle)
|
|
||||||
for spouse_id in [family.get_father_handle(), family.get_mother_handle()]:
|
|
||||||
if not spouse_id or spouse_id == person.handle:
|
|
||||||
continue
|
|
||||||
spouse = db.get_person_from_handle(spouse_id)
|
|
||||||
sp_birth_handle = spouse.get_birth_handle()
|
|
||||||
sp_death_handle = spouse.get_death_handle()
|
|
||||||
if sp_birth_handle:
|
|
||||||
spouse_birth = db.get_event_from_handle(sp_birth_handle)
|
|
||||||
if not spouse_birth.get_date().is_empty():
|
|
||||||
d = Date.Date(spouse_birth.get_date_object())
|
|
||||||
d.set_year(d.get_year() + max_age_difference)
|
|
||||||
if not not_too_old (d):
|
|
||||||
return False
|
|
||||||
|
|
||||||
if sp_death_handle:
|
|
||||||
spouse_death = db.get_event_from_handle(sp_death_handle)
|
|
||||||
if spouse_death.get_date() != "":
|
|
||||||
d = Date.Date(spouse_death.get_date_object())
|
|
||||||
d.set_year (d.get_year() - min_generation)
|
|
||||||
if not not_too_old (d):
|
|
||||||
return False
|
|
||||||
|
|
||||||
if parents_too_old (spouse, max_age_difference):
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
def not_too_old(date):
|
def not_too_old(date):
|
||||||
time_struct = time.localtime(time.time())
|
time_struct = time.localtime(time.time())
|
||||||
|
@ -302,8 +302,8 @@ class GedcomWriterOptionBox:
|
|||||||
self.person = person
|
self.person = person
|
||||||
|
|
||||||
def get_option_box(self):
|
def get_option_box(self):
|
||||||
self.restrict = 1
|
self.restrict = True
|
||||||
self.private = 1
|
self.private = True
|
||||||
self.cnvtxt = ansel_utf8.utf8_to_ansel
|
self.cnvtxt = ansel_utf8.utf8_to_ansel
|
||||||
self.adopt = GedcomInfo.ADOPT_EVENT
|
self.adopt = GedcomInfo.ADOPT_EVENT
|
||||||
|
|
||||||
@ -1075,7 +1075,8 @@ class GedcomWriter:
|
|||||||
self.writeln('%d %s' % (index,name))
|
self.writeln('%d %s' % (index,name))
|
||||||
self.print_date("%d DATE" % (index + 1), ord.get_date_object())
|
self.print_date("%d DATE" % (index + 1), ord.get_date_object())
|
||||||
if ord.get_family_handle():
|
if ord.get_family_handle():
|
||||||
self.writeln('%d FAMC @%s@' % (index+1,self.fid(ord.get_family_handle().get_gramps_id())))
|
family_id = ord.get_family_handle()
|
||||||
|
self.writeln('%d FAMC @%s@' % (index+1,self.fid(family_id)))
|
||||||
if ord.get_temple():
|
if ord.get_temple():
|
||||||
self.writeln('%d TEMP %s' % (index+1,ord.get_temple()))
|
self.writeln('%d TEMP %s' % (index+1,ord.get_temple()))
|
||||||
if ord.get_place_handle():
|
if ord.get_place_handle():
|
||||||
|
@ -479,7 +479,7 @@ class XmlWriter:
|
|||||||
com = self.fix(w.get_comment())
|
com = self.fix(w.get_comment())
|
||||||
if w.get_type() == RelLib.Event.ID:
|
if w.get_type() == RelLib.Event.ID:
|
||||||
self.g.write('%s<witness>\n' % sp)
|
self.g.write('%s<witness>\n' % sp)
|
||||||
self.g.write(' %s<ref>%s</ref>\n' % (sp,w.get_value()))
|
self.g.write(' %s<hlink>%s</hlink>\n' % (sp,w.get_value()))
|
||||||
if com:
|
if com:
|
||||||
self.g.write(' %s<comment>%s</comment>\n' % (sp,com))
|
self.g.write(' %s<comment>%s</comment>\n' % (sp,com))
|
||||||
self.g.write('%s</witness>\n' % sp)
|
self.g.write('%s</witness>\n' % sp)
|
||||||
@ -520,7 +520,7 @@ class XmlWriter:
|
|||||||
sp2 = " " * (index+1)
|
sp2 = " " * (index+1)
|
||||||
self.g.write('%s<lds_ord type="%s">\n' % (sp,self.fix(name)))
|
self.g.write('%s<lds_ord type="%s">\n' % (sp,self.fix(name)))
|
||||||
dateobj = ord.get_date_object()
|
dateobj = ord.get_date_object()
|
||||||
if dateobj != None and not dateobj.is_empty():
|
if dateobj and not dateobj.is_empty():
|
||||||
self.write_date(dateobj,index+1)
|
self.write_date(dateobj,index+1)
|
||||||
if ord.get_temple():
|
if ord.get_temple():
|
||||||
self.g.write('%s<temple val="%s"/>\n' % (sp2,self.fix(ord.get_temple())))
|
self.g.write('%s<temple val="%s"/>\n' % (sp2,self.fix(ord.get_temple())))
|
||||||
@ -528,8 +528,8 @@ class XmlWriter:
|
|||||||
if ord.get_status() != 0:
|
if ord.get_status() != 0:
|
||||||
self.g.write('%s<status val="%d"/>\n' % (sp2,ord.get_status()))
|
self.g.write('%s<status val="%d"/>\n' % (sp2,ord.get_status()))
|
||||||
if ord.get_family_handle():
|
if ord.get_family_handle():
|
||||||
self.g.write('%s<sealed_to hlink="%s"/>\n' % \
|
self.g.write('%s<sealed_to hlink="%s"/>\n' %
|
||||||
(sp2,self.fix(ord.get_family_handle().get_handle())))
|
(sp2,self.fix(ord.get_family_handle())))
|
||||||
if ord.get_note() != "":
|
if ord.get_note() != "":
|
||||||
self.write_note("note",ord.get_note_object(),index+1)
|
self.write_note("note",ord.get_note_object(),index+1)
|
||||||
for s in ord.get_source_references():
|
for s in ord.get_source_references():
|
||||||
|
Loading…
Reference in New Issue
Block a user