* src/Reorder.py: cleanup

* src/TransUtils.py: cleanup
	* src/TipOfDay.py: cleanup
	* src/SubstKeywords.py: cleanup
	* src/Utils.py: cleanup
	* src/soundex.py: cleanup
	* src/Sort.py: cleanup

2007-09-09  Don Allingham  <don@gramps-project.org>


svn: r8955
This commit is contained in:
Don Allingham
2007-09-10 03:03:46 +00:00
parent 6f7f0d710a
commit 2fdae3eff8
8 changed files with 290 additions and 292 deletions

View File

@ -1,3 +1,12 @@
2007-09-09 Don Allingham <don@gramps-project.org>
* src/Reorder.py: cleanup
* src/TransUtils.py: cleanup
* src/TipOfDay.py: cleanup
* src/SubstKeywords.py: cleanup
* src/Utils.py: cleanup
* src/soundex.py: cleanup
* src/Sort.py: cleanup
2007-09-09 Don Allingham <don@gramps-project.org> 2007-09-09 Don Allingham <don@gramps-project.org>
* src/ViewManager.py: cleanup * src/ViewManager.py: cleanup
* src/DisplayState.py: cleanup * src/DisplayState.py: cleanup

View File

@ -17,8 +17,6 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
# $Id: _SourceView.py 7138 2006-08-06 06:26:10Z rshura $
from gettext import gettext as _ from gettext import gettext as _
@ -29,8 +27,8 @@ from BasicUtils import name_displayer
import ListModel import ListModel
import ManagedWindow import ManagedWindow
_parent_titles = [(_('Father'),-1,200),(_('Mother'),-1,200),('',-1,0)] PARENT_TITLES = [(_('Father'), -1, 200), (_('Mother'), -1, 200), ('', -1, 0)]
_family_titles = [(_('Spouse'),-1,200),(_('Relationship'),-1,200),('',-1,0)] FAMILY_TITLES = [(_('Spouse'), -1, 200), (_('Relationship'), -1, 200), ('', -1, 0)]
class Reorder(ManagedWindow.ManagedWindow): class Reorder(ManagedWindow.ManagedWindow):
@ -52,10 +50,10 @@ class Reorder(ManagedWindow.ManagedWindow):
self.set_window(top, None, _("Reorder Relationships")) self.set_window(top, None, _("Reorder Relationships"))
self.ptree = xml.get_widget('ptree') self.ptree = xml.get_widget('ptree')
self.pmodel = ListModel.ListModel(self.ptree,_parent_titles) self.pmodel = ListModel.ListModel(self.ptree, PARENT_TITLES)
self.ftree = xml.get_widget('ftree') self.ftree = xml.get_widget('ftree')
self.fmodel = ListModel.ListModel(self.ftree,_family_titles) self.fmodel = ListModel.ListModel(self.ftree, FAMILY_TITLES)
xml.get_widget('ok').connect('clicked', self.ok_clicked) xml.get_widget('ok').connect('clicked', self.ok_clicked)
xml.get_widget('cancel').connect('clicked', self.cancel_clicked) xml.get_widget('cancel').connect('clicked', self.cancel_clicked)

View File

@ -48,13 +48,8 @@ from BasicUtils import name_displayer as _nd
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
_plist = [ 'de', 'van', 'von', 'la', 'di', 'le', 'du' ]
_prefix = {}
for i in _plist:
_prefix[i] = 1
class Sort: class Sort:
def __init__(self, database): def __init__(self, database):
self.database = database self.database = database
@ -123,14 +118,14 @@ class Sort:
"""Sort routine for comparing two events by their dates. """ """Sort routine for comparing two events by their dates. """
if not (a_id and b_id): if not (a_id and b_id):
return 0 return 0
a = self.database.get_event_from_handle(a_id) a_obj = self.database.get_event_from_handle(a_id)
b = self.database.get_event_from_handle(b_id) b_obj = self.database.get_event_from_handle(b_id)
return cmp(a.get_date_object(),b.get_date_object()) return cmp(a_obj.get_date_object(), b_obj.get_date_object())
def by_place_title(self, a_id, b_id): def by_place_title(self, a_id, b_id):
"""Sort routine for comparing two events by their dates. """ """Sort routine for comparing two events by their dates. """
if not (a_id and b_id): if not (a_id and b_id):
return 0 return 0
a = self.database.get_place_from_handle(a_id) a_obj = self.database.get_place_from_handle(a_id)
b = self.database.get_place_from_handle(b_id) b_obj = self.database.get_place_from_handle(b_id)
return cmp(a.title,b.title) return cmp(a_obj.title, b_obj.title)

View File

@ -124,32 +124,23 @@ class SubstKeywords:
if mplace_handle: if mplace_handle:
self.M = database.get_place_from_handle(mplace_handle).get_title() self.M = database.get_place_from_handle(mplace_handle).get_title()
def replace(self,line): self.array = [ ("%n", self.n), ("%N", self.N), ("%b", self.b),
"""Returns a new line of text with the substitutions performed."""
line = line.replace("$n",self.n)
line = line.replace("$N",self.N)
line = line.replace("$b",self.b)
line = line.replace("$B",self.B)
line = line.replace("$d",self.d)
line = line.replace("$D",self.D)
line = line.replace("$i",self.i)
line = line.replace("$S",self.S)
line = line.replace("$s",self.s)
line = line.replace("$m",self.m)
line = line.replace("$M",self.M)
return line.replace("$$",'$')
def replace_and_clean(self, lines):
array = [ ("%n",self.n), ("%N",self.N), ("%b",self.b),
("%B", self.B), ("%d", self.d), ("%D", self.D), ("%B", self.B), ("%d", self.d), ("%D", self.D),
("%i", self.i), ("%S", self.S), ("%s", self.s), ("%i", self.i), ("%S", self.S), ("%s", self.s),
("%m",self.m), ("%M",self.M)] ("%m", self.m), ("%M", self.M), ("$$", "$") ]
def replace(self, line):
"""Returns a new line of text with the substitutions performed."""
for (key, value) in self.array:
line = line.replace(key, value)
return line
def replace_and_clean(self, lines):
new = [] new = []
for line in lines: for line in lines:
remove = False remove = False
for (key,value) in array: for (key, value) in self.array:
if line.find(key) != -1: if line.find(key) != -1:
if value: if value:
line = line.replace(key, value) line = line.replace(key, value)

View File

@ -20,12 +20,17 @@
# $Id$ # $Id$
"""
Handles the Tip of the Day dialog
"""
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# standard python modules # standard python modules
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from xml.parsers.expat import ParserCreate from xml.parsers.expat import ParserCreate
from xml.sax.saxutils import escape
from random import Random from random import Random
from gettext import gettext as _ from gettext import gettext as _
import os import os
@ -74,8 +79,8 @@ class TipOfDay(ManagedWindow.ManagedWindow):
close = xml.get_widget('close') close = xml.get_widget('close')
close.connect("clicked", self.close_cb) close.connect("clicked", self.close_cb)
tp = TipParser() tparser = TipParser()
self.tip_list = tp.get() self.tip_list = tparser.get()
self.new_index = range(len(self.tip_list)) self.new_index = range(len(self.tip_list))
Random().shuffle(self.new_index) Random().shuffle(self.new_index)
@ -86,7 +91,8 @@ class TipOfDay(ManagedWindow.ManagedWindow):
window.show_all() window.show_all()
def next_tip_cb(self, dummy=None): def next_tip_cb(self, dummy=None):
tip_text = self.escape(self.tip_list[self.new_index[self.index]]) tip_text = escape(self.tip_list[self.new_index[self.index]],
{ '"' : '&quot;' })
self.tip.set_text(_(tip_text)) self.tip.set_text(_(tip_text))
self.tip.set_use_markup(True) self.tip.set_use_markup(True)
if self.index >= len(self.tip_list)-1: if self.index >= len(self.tip_list)-1:
@ -94,12 +100,6 @@ class TipOfDay(ManagedWindow.ManagedWindow):
else: else:
self.index += 1 self.index += 1
def escape(self,text):
text = text.replace('&','&amp;'); # Must be first
text = text.replace(' > ',' &gt; ') # Replace standalone > char
text = text.replace('"','&quot;') # quotes
return text
def close_cb(self, dummy=None): def close_cb(self, dummy=None):
Config.set(Config.USE_TIPS, self.use.get_active()) Config.set(Config.USE_TIPS, self.use.get_active())
self.close() self.close()
@ -126,16 +126,20 @@ class TipParser:
""" """
self.mylist = [] self.mylist = []
self.skip = False
xml_file = open(const.TIP_DATA) xml_file = open(const.TIP_DATA)
self.tlist = [] self.tlist = []
p = ParserCreate() parser = ParserCreate()
p.StartElementHandler = self.startElement parser.StartElementHandler = self.startElement
p.EndElementHandler = self.endElement parser.EndElementHandler = self.endElement
p.CharacterDataHandler = self.characters parser.CharacterDataHandler = self.characters
p.ParseFile(xml_file) parser.ParseFile(xml_file)
xml_file.close() xml_file.close()
def get(self): def get(self):
"""
Returns the list of tips
"""
return self.mylist return self.mylist
def setDocumentLocator(self, locator): def setDocumentLocator(self, locator):

View File

@ -20,6 +20,10 @@
# $Id$ # $Id$
"""
Provides translation assistance
"""
from gettext import gettext from gettext import gettext
def sgettext(msgid, sep='|'): def sgettext(msgid, sep='|'):

View File

@ -114,11 +114,11 @@ def fix_encoding(value):
return value return value
def xml_lang(): def xml_lang():
(loc,enc) = locale.getlocale() loc = locale.getlocale()
if loc == None: if loc[0] == None:
return "" return ""
else: else:
return loc.replace('_','-') return loc[0].replace('_', '-')
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -214,12 +214,12 @@ def redraw_list(dlist,clist,func):
# #
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
def delete_selected(obj,list): def delete_selected(obj, dlist):
sel = obj.get_selection() sel = obj.get_selection()
model, node = sel.get_selected() model, node = sel.get_selected()
if node: if node:
index = model.get_path(node)[0] index = model.get_path(node)[0]
del list[index] del dlist[index]
return 1 return 1
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -290,7 +290,8 @@ def find_folder( filename):
# Build list of elternate encodings # Build list of elternate encodings
try: try:
encodings = [sys.getfilesystemencoding(), locale.getpreferredencoding(), encodings = [sys.getfilesystemencoding(),
locale.getpreferredencoding(),
'UTF-8', 'ISO-8859-1'] 'UTF-8', 'ISO-8859-1']
except: except:
encodings = [sys.getfilesystemencoding(), 'UTF-8', 'ISO-8859-1'] encodings = [sys.getfilesystemencoding(), 'UTF-8', 'ISO-8859-1']
@ -370,16 +371,16 @@ def for_each_ancestor(db, start, func, data):
Return 0 otherwise. Return 0 otherwise.
""" """
todo = start todo = start
doneIds = {} done_ids = set()
while len(todo): while len(todo):
p_handle = todo.pop() p_handle = todo.pop()
p = db.get_person_from_handle(p_handle) p = db.get_person_from_handle(p_handle)
# Don't process the same handle twice. This can happen # Don't process the same handle twice. This can happen
# if there is a cycle in the database, or if the # if there is a cycle in the database, or if the
# initial list contains X and some of X's ancestors. # initial list contains X and some of X's ancestors.
if doneIds.has_key(p_handle): if p_handle in done_ids:
continue continue
doneIds[p_handle] = 1 done_ids.add(p_handle)
if func(data, p_handle): if func(data, p_handle):
return 1 return 1
for fam_handle in p.get_parent_family_handle_list(): for fam_handle in p.get_parent_family_handle_list():
@ -681,10 +682,7 @@ def probably_alive(person,db,current_year=None,limit=0):
dobj = father_birth.get_date_object() dobj = father_birth.get_date_object()
if dobj.get_start_date() != RelLib.Date.EMPTY: if dobj.get_start_date() != RelLib.Date.EMPTY:
if not not_too_old (dobj, year - average_generation_gap): if not not_too_old (dobj, year - average_generation_gap):
#print father.get_primary_name().get_name(), " father of ", person.get_primary_name().get_name(), " is too old by birth. birth year ", dobj.get_year(), " test year ", year - average_generation_gap
return True return True
#else:
#print father.get_primary_name().get_name(), " father of ", person.get_primary_name().get_name(), " is NOT too old by birth. birth year ", dobj.get_year(), " test year ", year - average_generation_gap
father_death_ref = father.get_death_ref() father_death_ref = father.get_death_ref()
if father_death_ref and father_death_ref.get_role() == RelLib.EventRoleType.PRIMARY: if father_death_ref and father_death_ref.get_role() == RelLib.EventRoleType.PRIMARY:
@ -693,7 +691,6 @@ def probably_alive(person,db,current_year=None,limit=0):
dobj = father_death.get_date_object() dobj = father_death.get_date_object()
if dobj.get_start_date() != RelLib.Date.EMPTY: if dobj.get_start_date() != RelLib.Date.EMPTY:
if dobj.get_year() < year - average_generation_gap: if dobj.get_year() < year - average_generation_gap:
#print father.get_primary_name().get_name(), " father of ", person.get_primary_name().get_name(), " is too old by death."
return True return True
if ancestors_too_old (father, year - average_generation_gap): if ancestors_too_old (father, year - average_generation_gap):
@ -708,10 +705,7 @@ def probably_alive(person,db,current_year=None,limit=0):
dobj = mother_birth.get_date_object() dobj = mother_birth.get_date_object()
if dobj.get_start_date() != RelLib.Date.EMPTY: if dobj.get_start_date() != RelLib.Date.EMPTY:
if not not_too_old (dobj, year - average_generation_gap): if not not_too_old (dobj, year - average_generation_gap):
#print mother.get_primary_name().get_name(), " mother of ", person.get_primary_name().get_name(), " is too old by birth. birth year ", dobj.get_year(), " test year ", year - average_generation_gap
return True return True
#else:
#print mother.get_primary_name().get_name(), " mother of ", person.get_primary_name().get_name(), " is NOT too old by birth. birth year ", dobj.get_year(), " test year ", year - average_generation_gap
mother_death_ref = mother.get_death_ref() mother_death_ref = mother.get_death_ref()
if mother_death_ref and mother_death_ref.get_role() == RelLib.EventRoleType.PRIMARY: if mother_death_ref and mother_death_ref.get_role() == RelLib.EventRoleType.PRIMARY:
@ -720,7 +714,6 @@ def probably_alive(person,db,current_year=None,limit=0):
dobj = mother_death.get_date_object() dobj = mother_death.get_date_object()
if dobj.get_start_date() != RelLib.Date.EMPTY: if dobj.get_start_date() != RelLib.Date.EMPTY:
if dobj.get_year() < year - average_generation_gap: if dobj.get_year() < year - average_generation_gap:
#print mother.get_primary_name().get_name(), " mother of ", person.get_primary_name().get_name(), " is too old by death."
return True return True
if ancestors_too_old (mother, year - average_generation_gap): if ancestors_too_old (mother, year - average_generation_gap):
@ -1024,11 +1017,11 @@ def launch(prog_str,path):
def profile(func, *args): def profile(func, *args):
import hotshot, hotshot.stats import hotshot, hotshot.stats
pr = hotshot.Profile('mystats.profile') prf = hotshot.Profile('mystats.profile')
print "Start" print "Start"
pr.runcall(func,*args) prf.runcall(func, *args)
print "Finished" print "Finished"
pr.close() prf.close()
print "Loading profile" print "Loading profile"
stats = hotshot.stats.load('mystats.profile') stats = hotshot.stats.load('mystats.profile')
print "done" print "done"

View File

@ -18,6 +18,10 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
"""
Provides soundex calculation
"""
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Standard python modules # Standard python modules
@ -51,10 +55,10 @@ def soundex(strval):
if not strval: if not strval:
return "Z000" return "Z000"
prev = strval[0] prev = strval[0]
for x in strval[1:]: for character in strval[1:]:
if x != prev and x != "0": if character != prev and character != "0":
str2 = str2 + x str2 = str2 + character
prev = x prev = character
# pad with zeros # pad with zeros
str2 = str2+"0000" str2 = str2+"0000"
return str2[:4] return str2[:4]