Patch from Raphael Ackermann <raphael.ackermann@gmail.com> -- Fix 0001538: tabs and spaces are mixed in some source files
svn: r9713
This commit is contained in:
parent
aa8288eddd
commit
bf3900f043
61
ChangeLog
61
ChangeLog
@ -1,3 +1,64 @@
|
|||||||
|
2008-01-05 Raphael Ackermann <raphael.ackermann@gmail.com>
|
||||||
|
2008-01-05 Brian Matherly <brian@gramps-project.org>
|
||||||
|
* src/DataViews/PedigreeView.py:
|
||||||
|
* src/Config/__init__.py:
|
||||||
|
* src/gen/utils/longop.py:
|
||||||
|
* src/Editors/_EditLocation.py:
|
||||||
|
* src/DisplayTabs/_TextTab.py:
|
||||||
|
* src/plugins/WebCal.py:
|
||||||
|
* src/plugins/NarrativeWeb.py:
|
||||||
|
* src/plugins/rel_sv.py:
|
||||||
|
* src/plugins/rel_de.py:
|
||||||
|
* src/plugins/MarkerReport.py:
|
||||||
|
* src/plugins/FindDupes.py:
|
||||||
|
* src/plugins/DescendChart.py:
|
||||||
|
* src/plugins/PHPGedViewConnector.py:
|
||||||
|
* src/plugins/rel_pl.py:
|
||||||
|
* src/plugins/FamilyGroup.py:
|
||||||
|
* src/plugins/GVRelGraph.py:
|
||||||
|
* src/plugins/StatisticsChart.py:
|
||||||
|
* src/plugins/WriteGeneWeb.py:
|
||||||
|
* src/ObjectSelector/_FilterFrameBase.py:
|
||||||
|
* src/ObjectSelector/_FamilyPreviewFrame.py:
|
||||||
|
* src/ObjectSelector/_ObjectSelectorWindow.py:
|
||||||
|
* src/ObjectSelector/_PersonTreeFrame.py:
|
||||||
|
* src/ObjectSelector/_FamilyFilterFrame.py:
|
||||||
|
* src/ObjectSelector/_FamilyTreeFrame.py:
|
||||||
|
* src/ObjectSelector/_PersonPreviewFrame.py:
|
||||||
|
* src/ObjectSelector/_PersonFilterFrame.py:
|
||||||
|
* src/GrampsWidgets.py:
|
||||||
|
* src/DbManager.py:
|
||||||
|
* src/Models/_ListCursor.py:
|
||||||
|
* src/Models/_PathCursor.py:
|
||||||
|
* src/GrampsLogger/_GtkHandler.py:
|
||||||
|
* src/DisplayModels/_BaseModel.py:
|
||||||
|
* src/AutoComp.py:
|
||||||
|
* src/UndoHistory.py:
|
||||||
|
* src/GrampsDbUtils/_GedcomUtils.py:
|
||||||
|
* src/docgen/HtmlDoc.py:
|
||||||
|
* src/docgen/SpreadSheetDoc.py:
|
||||||
|
* src/docgen/ODFDoc.py:
|
||||||
|
* src/docgen/LaTeXDoc.py:
|
||||||
|
* src/docgen/ODSDoc.py:
|
||||||
|
* src/docgen/ODSTab.py:
|
||||||
|
* src/docgen/PSDrawDoc.py:
|
||||||
|
* src/Filters/_FilterMenu.py:
|
||||||
|
* src/Filters/_FilterList.py:
|
||||||
|
* src/Filters/SideBar/_MediaSidebarFilter.py:
|
||||||
|
* src/Filters/SideBar/_SourceSidebarFilter.py:
|
||||||
|
* src/Filters/SideBar/_EventSidebarFilter.py:
|
||||||
|
* src/Filters/SideBar/_NoteSidebarFilter.py:
|
||||||
|
* src/Filters/SideBar/_RepoSidebarFilter.py:
|
||||||
|
* src/Filters/Rules/Person/_IsLessThanNthGenerationAncestorOfDefaultPerson.py:
|
||||||
|
* src/Filters/Rules/Person/_RelationshipPathBetweenBookmarks.py:
|
||||||
|
* src/Filters/Rules/Person/_IsLessThanNthGenerationAncestorOfBookmarked.py:
|
||||||
|
* src/Filters/Rules/_MatchesFilterBase.py:
|
||||||
|
* src/DateHandler/_DateParser.py:
|
||||||
|
* src/DateHandler/_Date_fi.py:
|
||||||
|
* src/DateHandler/_Date_fr.py:
|
||||||
|
Patch from Raphael Ackermann
|
||||||
|
Fix 0001538: tabs and spaces are mixed in some source files
|
||||||
|
|
||||||
2008-01-05 Gary Burton <gary.burton@zen.co.uk>
|
2008-01-05 Gary Burton <gary.burton@zen.co.uk>
|
||||||
* src/plugins/Verify.py: Remove a line of redundant code added yesterday.
|
* src/plugins/Verify.py: Remove a line of redundant code added yesterday.
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ class StandardCustomSelector:
|
|||||||
|
|
||||||
To set up the combo box, specify the active key at creation time,
|
To set up the combo box, specify the active key at creation time,
|
||||||
or later (or with custom text) use:
|
or later (or with custom text) use:
|
||||||
type_sel.set_values(i,s)
|
type_sel.set_values(i,s)
|
||||||
|
|
||||||
and later, when or before the dialog is closed, do:
|
and later, when or before the dialog is closed, do:
|
||||||
(i,s) = type_sel.get_values()
|
(i,s) = type_sel.get_values()
|
||||||
@ -232,3 +232,4 @@ class StandardCustomSelector:
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,17 +31,17 @@ from _GrampsIniKeys import *
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
def __upgrade_gconf():
|
def __upgrade_gconf():
|
||||||
import _GrampsGconfKeys as GconfKeys
|
import _GrampsGconfKeys as GconfKeys
|
||||||
print "Upgrading INI file"
|
print "Upgrading INI file"
|
||||||
for key in default_value.keys():
|
for key in default_value.keys():
|
||||||
data = GconfKeys.get(key)
|
data = GconfKeys.get(key)
|
||||||
set(key, data)
|
set(key, data)
|
||||||
|
|
||||||
if not os.path.exists(INIFILE):
|
if not os.path.exists(INIFILE):
|
||||||
try:
|
try:
|
||||||
__upgrade_gconf()
|
__upgrade_gconf()
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print "Cannot upgrade GCONF settings"
|
print "Cannot upgrade GCONF settings"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -368,7 +368,7 @@ class FormattingHelper:
|
|||||||
text += "\n"
|
text += "\n"
|
||||||
text += self.get_place_name(event.get_place_handle())
|
text += self.get_place_name(event.get_place_handle())
|
||||||
if line_count < 5:
|
if line_count < 5:
|
||||||
return text;
|
return text;
|
||||||
break
|
break
|
||||||
if not text:
|
if not text:
|
||||||
text = str(family.get_relationship())
|
text = str(family.get_relationship())
|
||||||
|
@ -207,13 +207,13 @@ class DateParser:
|
|||||||
self.ymd = False
|
self.ymd = False
|
||||||
|
|
||||||
def re_longest_first(self, keys):
|
def re_longest_first(self, keys):
|
||||||
"""
|
"""
|
||||||
returns a string for a RE group which contains the given keys
|
returns a string for a RE group which contains the given keys
|
||||||
sorted so that longest keys match first. Any '.' characters
|
sorted so that longest keys match first. Any '.' characters
|
||||||
are quoted.
|
are quoted.
|
||||||
"""
|
"""
|
||||||
keys.sort(lambda x, y: cmp(len(y), len(x)))
|
keys.sort(lambda x, y: cmp(len(y), len(x)))
|
||||||
return '(' + '|'.join([key.replace('.', '\.') for key in keys]) + ')'
|
return '(' + '|'.join([key.replace('.', '\.') for key in keys]) + ')'
|
||||||
|
|
||||||
def init_strings(self):
|
def init_strings(self):
|
||||||
"""
|
"""
|
||||||
@ -508,7 +508,7 @@ class DateParser:
|
|||||||
match = self._bce_re.match(text)
|
match = self._bce_re.match(text)
|
||||||
bc = False
|
bc = False
|
||||||
if match:
|
if match:
|
||||||
# bce is in the match.group(2)
|
# bce is in the match.group(2)
|
||||||
try:
|
try:
|
||||||
text = match.group(1) + match.group(3)
|
text = match.group(1) + match.group(3)
|
||||||
except:
|
except:
|
||||||
|
@ -98,7 +98,7 @@ class DateParserFI(DateParser):
|
|||||||
|
|
||||||
def init_strings(self):
|
def init_strings(self):
|
||||||
DateParser.init_strings(self)
|
DateParser.init_strings(self)
|
||||||
# date, whitespace
|
# date, whitespace
|
||||||
self._span = re.compile(u"(?P<start>.+)\s+(-)\s+(?P<stop>.+)",
|
self._span = re.compile(u"(?P<start>.+)\s+(-)\s+(?P<stop>.+)",
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
self._range = re.compile(
|
self._range = re.compile(
|
||||||
@ -142,8 +142,8 @@ class DateDisplayFI(DateDisplay):
|
|||||||
if start == Date.EMPTY:
|
if start == Date.EMPTY:
|
||||||
return u""
|
return u""
|
||||||
|
|
||||||
# select numerical date format
|
# select numerical date format
|
||||||
self.format = 1
|
self.format = 1
|
||||||
|
|
||||||
if mod == Date.MOD_SPAN:
|
if mod == Date.MOD_SPAN:
|
||||||
d1 = self.display_cal[cal](start)
|
d1 = self.display_cal[cal](start)
|
||||||
@ -175,7 +175,7 @@ class DateDisplayFI(DateDisplay):
|
|||||||
# append calendar type
|
# append calendar type
|
||||||
text = u"%s %s" % (text, self.calendar[cal])
|
text = u"%s %s" % (text, self.calendar[cal])
|
||||||
|
|
||||||
return text
|
return text
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -167,21 +167,21 @@ class DateParserFR(DateParser):
|
|||||||
self._numeric = re.compile("((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\s*$")
|
self._numeric = re.compile("((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\s*$")
|
||||||
self._span = re.compile(u"(de)\s+(?P<start>.+)\s+(à)\s+(?P<stop>.+)", re.IGNORECASE)
|
self._span = re.compile(u"(de)\s+(?P<start>.+)\s+(à)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||||
self._range = re.compile(u"(entre|ent\.|ent)\s+(?P<start>.+)\s+(et)\s+(?P<stop>.+)", re.IGNORECASE)
|
self._range = re.compile(u"(entre|ent\.|ent)\s+(?P<start>.+)\s+(et)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||||
# This self._text are different from the base
|
# This self._text are different from the base
|
||||||
# by adding ".?" after the first date and removing "\s*$" at the end
|
# by adding ".?" after the first date and removing "\s*$" at the end
|
||||||
#gregorian and julian
|
#gregorian and julian
|
||||||
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
|
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
#hebrew
|
#hebrew
|
||||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
#french
|
#french
|
||||||
self._ftext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._fmon_str,
|
self._ftext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._fmon_str,
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
#persian
|
#persian
|
||||||
self._ptext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._pmon_str,
|
self._ptext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._pmon_str,
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
#islamic
|
#islamic
|
||||||
self._itext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._imon_str,
|
self._itext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._imon_str,
|
||||||
re.IGNORECASE)
|
re.IGNORECASE)
|
||||||
|
|
||||||
@ -221,8 +221,8 @@ class DateDisplayFR(DateDisplay):
|
|||||||
else:
|
else:
|
||||||
value = self._tformat.replace('%m', str(date_val[1]))
|
value = self._tformat.replace('%m', str(date_val[1]))
|
||||||
value = value.replace('%d', str(date_val[0]))
|
value = value.replace('%d', str(date_val[0]))
|
||||||
# base_display :
|
# base_display :
|
||||||
# value = value.replace('%Y', str(abs(date_val[2])))
|
# value = value.replace('%Y', str(abs(date_val[2])))
|
||||||
# value = value.replace('-', '/')
|
# value = value.replace('-', '/')
|
||||||
value = value.replace('%Y', str(date_val[2]))
|
value = value.replace('%Y', str(date_val[2]))
|
||||||
elif self.format == 2:
|
elif self.format == 2:
|
||||||
@ -251,8 +251,8 @@ class DateDisplayFR(DateDisplay):
|
|||||||
else:
|
else:
|
||||||
value = "%s %s" % (self._months[date_val[1]], year)
|
value = "%s %s" % (self._months[date_val[1]], year)
|
||||||
else:
|
else:
|
||||||
# base_display :
|
# base_display :
|
||||||
# value = "%d %s %s" % (date_val[0], self._months[date_val[1]], year)
|
# value = "%d %s %s" % (date_val[0], self._months[date_val[1]], year)
|
||||||
value = "%d. %s %s" % (date_val[0], self._months[date_val[1]], year)
|
value = "%d. %s %s" % (date_val[0], self._months[date_val[1]], year)
|
||||||
else:
|
else:
|
||||||
# Day MON Year
|
# Day MON Year
|
||||||
@ -262,8 +262,8 @@ class DateDisplayFR(DateDisplay):
|
|||||||
else:
|
else:
|
||||||
value = "%s %s" % (self.MONS[date_val[1]], year)
|
value = "%s %s" % (self.MONS[date_val[1]], year)
|
||||||
else:
|
else:
|
||||||
# base_display :
|
# base_display :
|
||||||
# value = "%d %s %s" % (date_val[0], self.MONS[date_val[1]], year)
|
# value = "%d %s %s" % (date_val[0], self.MONS[date_val[1]], year)
|
||||||
value = "%d. %s %s" % (date_val[0], self.MONS[date_val[1]], year)
|
value = "%d. %s %s" % (date_val[0], self.MONS[date_val[1]], year)
|
||||||
if date_val[2] < 0:
|
if date_val[2] < 0:
|
||||||
return self._bce_str % value
|
return self._bce_str % value
|
||||||
|
@ -494,7 +494,7 @@ class DbManager(CLIDbManager):
|
|||||||
self.__rename_revision(path, new_text)
|
self.__rename_revision(path, new_text)
|
||||||
else:
|
else:
|
||||||
"""
|
"""
|
||||||
Check in recent_files.xml if there is another database
|
Check in recent_files.xml if there is another database
|
||||||
or Family Tree with the same name as new_text.
|
or Family Tree with the same name as new_text.
|
||||||
"""
|
"""
|
||||||
if RecentFiles.check_if_recent(new_text):
|
if RecentFiles.check_if_recent(new_text):
|
||||||
|
@ -145,7 +145,7 @@ class BaseModel(gtk.GenericTreeModel):
|
|||||||
self.set_property("leak_references",False)
|
self.set_property("leak_references",False)
|
||||||
self.db = db
|
self.db = db
|
||||||
if sort_map:
|
if sort_map:
|
||||||
self.sort_map = [ f for f in sort_map if f[0]]
|
self.sort_map = [ f for f in sort_map if f[0]]
|
||||||
col = self.sort_map[scol][1]
|
col = self.sort_map[scol][1]
|
||||||
self.sort_func = self.smap[col]
|
self.sort_func = self.smap[col]
|
||||||
else:
|
else:
|
||||||
|
@ -51,7 +51,7 @@ class TextTab(GrampsTab):
|
|||||||
|
|
||||||
def __init__(self, dbstate, uistate, track, obj, title=_('Text')):
|
def __init__(self, dbstate, uistate, track, obj, title=_('Text')):
|
||||||
self.obj = obj
|
self.obj = obj
|
||||||
self.original = self.obj.get_text()
|
self.original = self.obj.get_text()
|
||||||
GrampsTab.__init__(self, dbstate, uistate, track, title)
|
GrampsTab.__init__(self, dbstate, uistate, track, title)
|
||||||
self.show_all()
|
self.show_all()
|
||||||
|
|
||||||
@ -109,4 +109,4 @@ class TextTab(GrampsTab):
|
|||||||
self._set_label()
|
self._set_label()
|
||||||
|
|
||||||
def cancel(self):
|
def cancel(self):
|
||||||
self.obj.set_text(self.original)
|
self.obj.set_text(self.original)
|
||||||
|
@ -114,6 +114,7 @@ class EditLocation(EditSecondary):
|
|||||||
|
|
||||||
def save(self,*obj):
|
def save(self,*obj):
|
||||||
if self.callback:
|
if self.callback:
|
||||||
self.callback(self.obj)
|
self.callback(self.obj)
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ class IsLessThanNthGenerationAncestorOfBookmarked(Rule):
|
|||||||
"not more than N generations away")
|
"not more than N generations away")
|
||||||
|
|
||||||
def prepare(self,db):
|
def prepare(self,db):
|
||||||
self.db = db
|
self.db = db
|
||||||
bookmarks = db.get_bookmarks().get()
|
bookmarks = db.get_bookmarks().get()
|
||||||
if len(bookmarks) == 0:
|
if len(bookmarks) == 0:
|
||||||
self.apply = lambda db,p : False
|
self.apply = lambda db,p : False
|
||||||
@ -66,7 +66,7 @@ class IsLessThanNthGenerationAncestorOfBookmarked(Rule):
|
|||||||
self.bookmarks = set(bookmarks)
|
self.bookmarks = set(bookmarks)
|
||||||
self.apply = self.apply_real
|
self.apply = self.apply_real
|
||||||
for self.bookmarkhandle in self.bookmarks:
|
for self.bookmarkhandle in self.bookmarks:
|
||||||
self.init_ancestor_list(self.bookmarkhandle, 1)
|
self.init_ancestor_list(self.bookmarkhandle, 1)
|
||||||
|
|
||||||
|
|
||||||
def init_ancestor_list(self,handle,gen):
|
def init_ancestor_list(self,handle,gen):
|
||||||
|
@ -52,8 +52,8 @@ class IsLessThanNthGenerationAncestorOfDefaultPerson(Rule):
|
|||||||
"not more than N generations away")
|
"not more than N generations away")
|
||||||
|
|
||||||
def prepare(self,db):
|
def prepare(self,db):
|
||||||
self.db = db
|
self.db = db
|
||||||
p = db.get_default_person()
|
p = db.get_default_person()
|
||||||
if p:
|
if p:
|
||||||
self.def_handle = p.get_handle()
|
self.def_handle = p.get_handle()
|
||||||
self.apply = self.apply_real
|
self.apply = self.apply_real
|
||||||
|
@ -95,19 +95,19 @@ class RelationshipPathBetweenBookmarks(Rule):
|
|||||||
prev_generation = {}
|
prev_generation = {}
|
||||||
for handle in generation:
|
for handle in generation:
|
||||||
try:
|
try:
|
||||||
person = self.db.get_person_from_handle(handle)
|
person = self.db.get_person_from_handle(handle)
|
||||||
if person == None:
|
if person == None:
|
||||||
continue
|
continue
|
||||||
fam_id = person.get_main_parents_family_handle()
|
fam_id = person.get_main_parents_family_handle()
|
||||||
family = self.db.get_family_from_handle(fam_id)
|
family = self.db.get_family_from_handle(fam_id)
|
||||||
if family == None:
|
if family == None:
|
||||||
continue
|
continue
|
||||||
fhandle = family.get_father_handle()
|
fhandle = family.get_father_handle()
|
||||||
mhandle = family.get_mother_handle()
|
mhandle = family.get_mother_handle()
|
||||||
if fhandle:
|
if fhandle:
|
||||||
prev_generation[fhandle] = generation[handle] + [fhandle]
|
prev_generation[fhandle] = generation[handle] + [fhandle]
|
||||||
if mhandle:
|
if mhandle:
|
||||||
prev_generation[mhandle] = generation[handle] + [mhandle]
|
prev_generation[mhandle] = generation[handle] + [mhandle]
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
return prev_generation
|
return prev_generation
|
||||||
@ -123,20 +123,20 @@ class RelationshipPathBetweenBookmarks(Rule):
|
|||||||
map1 = {}
|
map1 = {}
|
||||||
map2 = {}
|
map2 = {}
|
||||||
overlap = set( {} )
|
overlap = set( {} )
|
||||||
for rank in range(1, 50): # Limit depth of search
|
for rank in range(1, 50): # Limit depth of search
|
||||||
try:
|
try:
|
||||||
gmap1 = self.parents(gmap1) # Get previous generation into map
|
gmap1 = self.parents(gmap1) # Get previous generation into map
|
||||||
gmap2 = self.parents(gmap2) # Get previous generation into map
|
gmap2 = self.parents(gmap2) # Get previous generation into map
|
||||||
map1.update(gmap1) # Merge previous generation into map
|
map1.update(gmap1) # Merge previous generation into map
|
||||||
map2.update(gmap2) # Merge previous generation into map
|
map2.update(gmap2) # Merge previous generation into map
|
||||||
overlap = set(map1).intersection(set(map2)) # Any common ancestors?
|
overlap = set(map1).intersection(set(map2)) # Any common ancestors?
|
||||||
if len(overlap) > 0: break # If so, stop walking through generations
|
if len(overlap) > 0: break # If so, stop walking through generations
|
||||||
except: pass
|
except: pass
|
||||||
if len(overlap) < 1: # No common ancestor found
|
if len(overlap) < 1: # No common ancestor found
|
||||||
rel_path[handle1] = handle1 # Results for degenerate case
|
rel_path[handle1] = handle1 # Results for degenerate case
|
||||||
rel_path[handle2] = handle2
|
rel_path[handle2] = handle2
|
||||||
#print " In rel_path_for_two, returning rel_path = ", rel_path
|
#print " In rel_path_for_two, returning rel_path = ", rel_path
|
||||||
return rel_path
|
return rel_path
|
||||||
for handle in overlap: # Handle of common ancestor(s)
|
for handle in overlap: # Handle of common ancestor(s)
|
||||||
for phandle in map1[handle] + map2[handle]:
|
for phandle in map1[handle] + map2[handle]:
|
||||||
rel_path[phandle] = phandle
|
rel_path[phandle] = phandle
|
||||||
@ -147,7 +147,7 @@ class RelationshipPathBetweenBookmarks(Rule):
|
|||||||
Map = {}
|
Map = {}
|
||||||
pathmap = {}
|
pathmap = {}
|
||||||
bmarks = {}
|
bmarks = {}
|
||||||
#
|
|
||||||
# Handle having fewer than 2 bookmarks, or unrelated people.
|
# Handle having fewer than 2 bookmarks, or unrelated people.
|
||||||
nb = 0
|
nb = 0
|
||||||
for handle in self.bookmarks:
|
for handle in self.bookmarks:
|
||||||
@ -157,7 +157,7 @@ class RelationshipPathBetweenBookmarks(Rule):
|
|||||||
#print "bmarks[", nb, "] = ", handle, self.hnm(handle)
|
#print "bmarks[", nb, "] = ", handle, self.hnm(handle)
|
||||||
if nb <= 1: return
|
if nb <= 1: return
|
||||||
#print "bmarks = ", bmarks
|
#print "bmarks = ", bmarks
|
||||||
#
|
#
|
||||||
# Go through all bookmarked individuals, and mark all
|
# Go through all bookmarked individuals, and mark all
|
||||||
# of the people in each of the paths betweent them.
|
# of the people in each of the paths betweent them.
|
||||||
for i in range(1, nb):
|
for i in range(1, nb):
|
||||||
@ -165,12 +165,13 @@ class RelationshipPathBetweenBookmarks(Rule):
|
|||||||
for j in range(i+1, nb+1):
|
for j in range(i+1, nb+1):
|
||||||
handle2 = bmarks[j]
|
handle2 = bmarks[j]
|
||||||
try:
|
try:
|
||||||
pathmap = self.rel_path_for_two(handle1,handle2)
|
pathmap = self.rel_path_for_two(handle1,handle2)
|
||||||
for handle in pathmap:
|
for handle in pathmap:
|
||||||
self.map[handle] = 1
|
self.map[handle] = 1
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def apply(self,db,person):
|
def apply(self,db,person):
|
||||||
return self.map.has_key(person.handle)
|
return self.map.has_key(person.handle)
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,38 +54,38 @@ class MatchesFilterBase(Rule):
|
|||||||
category = _('General filters')
|
category = _('General filters')
|
||||||
|
|
||||||
def prepare(self,db):
|
def prepare(self,db):
|
||||||
if Filters.SystemFilters:
|
if Filters.SystemFilters:
|
||||||
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||||
if filt.get_name() == self.list[0]:
|
if filt.get_name() == self.list[0]:
|
||||||
for rule in filt.flist:
|
for rule in filt.flist:
|
||||||
rule.prepare(db)
|
rule.prepare(db)
|
||||||
if Filters.CustomFilters:
|
if Filters.CustomFilters:
|
||||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
||||||
if filt.get_name() == self.list[0]:
|
if filt.get_name() == self.list[0]:
|
||||||
for rule in filt.flist:
|
for rule in filt.flist:
|
||||||
rule.prepare(db)
|
rule.prepare(db)
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
if Filters.SystemFilters:
|
if Filters.SystemFilters:
|
||||||
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||||
if filt.get_name() == self.list[0]:
|
if filt.get_name() == self.list[0]:
|
||||||
for rule in filt.flist:
|
for rule in filt.flist:
|
||||||
rule.reset()
|
rule.reset()
|
||||||
if Filters.CustomFilters:
|
if Filters.CustomFilters:
|
||||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
||||||
if filt.get_name() == self.list[0]:
|
if filt.get_name() == self.list[0]:
|
||||||
for rule in filt.flist:
|
for rule in filt.flist:
|
||||||
rule.reset()
|
rule.reset()
|
||||||
|
|
||||||
def apply(self,db,obj):
|
def apply(self,db,obj):
|
||||||
if Filters.SystemFilters:
|
if Filters.SystemFilters:
|
||||||
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||||
if filt.get_name() == self.list[0]:
|
if filt.get_name() == self.list[0]:
|
||||||
return filt.check(db,obj.handle)
|
return filt.check(db,obj.handle)
|
||||||
if Filters.CustomFilters:
|
if Filters.CustomFilters:
|
||||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
||||||
if filt.get_name() == self.list[0]:
|
if filt.get_name() == self.list[0]:
|
||||||
return filt.check(db,obj.handle)
|
return filt.check(db,obj.handle)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def find_filter(self):
|
def find_filter(self):
|
||||||
|
@ -76,10 +76,10 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
self.generic = gtk.ComboBox()
|
self.generic = gtk.ComboBox()
|
||||||
cell = gtk.CellRendererText()
|
cell = gtk.CellRendererText()
|
||||||
self.generic.pack_start(cell, True)
|
self.generic.pack_start(cell, True)
|
||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Event')
|
self.on_filters_changed('Event')
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
@ -107,7 +107,7 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
place = unicode(self.filter_place.get_text()).strip()
|
place = unicode(self.filter_place.get_text()).strip()
|
||||||
note = unicode(self.filter_note.get_text()).strip()
|
note = unicode(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
etype = self.filter_event.get_type().xml_str()
|
etype = self.filter_event.get_type().xml_str()
|
||||||
|
|
||||||
empty = not (gid or desc or date or place or note
|
empty = not (gid or desc or date or place or note
|
||||||
@ -133,12 +133,12 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
rule = HasNoteMatchingSubstringOf([note])
|
rule = HasNoteMatchingSubstringOf([note])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
if self.generic.get_active() != 0:
|
||||||
model = self.generic.get_model()
|
model = self.generic.get_model()
|
||||||
node = self.generic.get_active_iter()
|
node = self.generic.get_active_iter()
|
||||||
obj = model.get_value(node, 0)
|
obj = model.get_value(node, 0)
|
||||||
rule = MatchesFilter([obj])
|
rule = MatchesFilter([obj])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
|
@ -69,10 +69,10 @@ class MediaSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
self.generic = gtk.ComboBox()
|
self.generic = gtk.ComboBox()
|
||||||
cell = gtk.CellRendererText()
|
cell = gtk.CellRendererText()
|
||||||
self.generic.pack_start(cell, True)
|
self.generic.pack_start(cell, True)
|
||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('MediaObject')
|
self.on_filters_changed('MediaObject')
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
@ -101,7 +101,7 @@ class MediaSidebarFilter(SidebarFilter):
|
|||||||
date = unicode(self.filter_date.get_text()).strip()
|
date = unicode(self.filter_date.get_text()).strip()
|
||||||
note = unicode(self.filter_note.get_text()).strip()
|
note = unicode(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
|
||||||
empty = not (gid or title or mime or path or date
|
empty = not (gid or title or mime or path or date
|
||||||
or note or regex or gen)
|
or note or regex or gen)
|
||||||
@ -126,12 +126,12 @@ class MediaSidebarFilter(SidebarFilter):
|
|||||||
rule = HasNoteMatchingSubstringOf([note])
|
rule = HasNoteMatchingSubstringOf([note])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
if self.generic.get_active() != 0:
|
||||||
model = self.generic.get_model()
|
model = self.generic.get_model()
|
||||||
node = self.generic.get_active_iter()
|
node = self.generic.get_active_iter()
|
||||||
obj = model.get_value(node, 0)
|
obj = model.get_value(node, 0)
|
||||||
rule = MatchesFilter([obj])
|
rule = MatchesFilter([obj])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
|
@ -72,10 +72,10 @@ class NoteSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
self.generic = gtk.ComboBox()
|
self.generic = gtk.ComboBox()
|
||||||
cell = gtk.CellRendererText()
|
cell = gtk.CellRendererText()
|
||||||
self.generic.pack_start(cell, True)
|
self.generic.pack_start(cell, True)
|
||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Note')
|
self.on_filters_changed('Note')
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
|
@ -76,10 +76,10 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
self.generic = gtk.ComboBox()
|
self.generic = gtk.ComboBox()
|
||||||
cell = gtk.CellRendererText()
|
cell = gtk.CellRendererText()
|
||||||
self.generic.pack_start(cell, True)
|
self.generic.pack_start(cell, True)
|
||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Repository')
|
self.on_filters_changed('Repository')
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
@ -108,7 +108,7 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
rtype = self.repo.get_type().xml_str()
|
rtype = self.repo.get_type().xml_str()
|
||||||
note = unicode(self.filter_note.get_text()).strip()
|
note = unicode(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
|
||||||
empty = not (gid or title or address or url or rtype
|
empty = not (gid or title or address or url or rtype
|
||||||
or note or regex or gen)
|
or note or regex or gen)
|
||||||
@ -133,12 +133,12 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
rule = HasNoteMatchingSubstringOf([note])
|
rule = HasNoteMatchingSubstringOf([note])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
if self.generic.get_active() != 0:
|
||||||
model = self.generic.get_model()
|
model = self.generic.get_model()
|
||||||
node = self.generic.get_active_iter()
|
node = self.generic.get_active_iter()
|
||||||
obj = model.get_value(node, 0)
|
obj = model.get_value(node, 0)
|
||||||
rule = MatchesFilter([obj])
|
rule = MatchesFilter([obj])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
|
@ -67,10 +67,10 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
self.generic = gtk.ComboBox()
|
self.generic = gtk.ComboBox()
|
||||||
cell = gtk.CellRendererText()
|
cell = gtk.CellRendererText()
|
||||||
self.generic.pack_start(cell, True)
|
self.generic.pack_start(cell, True)
|
||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Source')
|
self.on_filters_changed('Source')
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
@ -96,7 +96,7 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
pub = unicode(self.filter_pub.get_text()).strip()
|
pub = unicode(self.filter_pub.get_text()).strip()
|
||||||
note = unicode(self.filter_note.get_text()).strip()
|
note = unicode(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
|
||||||
empty = not (gid or title or author or pub or note or regex or gen)
|
empty = not (gid or title or author or pub or note or regex or gen)
|
||||||
if empty:
|
if empty:
|
||||||
@ -120,12 +120,12 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
rule = HasNoteMatchingSubstringOf([note])
|
rule = HasNoteMatchingSubstringOf([note])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
if self.generic.get_active() != 0:
|
||||||
model = self.generic.get_model()
|
model = self.generic.get_model()
|
||||||
node = self.generic.get_active_iter()
|
node = self.generic.get_active_iter()
|
||||||
obj = model.get_value(node, 0)
|
obj = model.get_value(node, 0)
|
||||||
rule = MatchesFilter([obj])
|
rule = MatchesFilter([obj])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
|
@ -64,17 +64,17 @@ class FilterList:
|
|||||||
self.filter_namespaces[namespace].append(filt)
|
self.filter_namespaces[namespace].append(filt)
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
try:
|
try:
|
||||||
if os.path.isfile(self.file):
|
if os.path.isfile(self.file):
|
||||||
parser = make_parser()
|
parser = make_parser()
|
||||||
parser.setContentHandler(FilterParser(self))
|
parser.setContentHandler(FilterParser(self))
|
||||||
the_file = open(self.file)
|
the_file = open(self.file)
|
||||||
parser.parse(the_file)
|
parser.parse(the_file)
|
||||||
the_file.close()
|
the_file.close()
|
||||||
except (IOError,OSError):
|
except (IOError,OSError):
|
||||||
pass
|
pass
|
||||||
except SAXParseException:
|
except SAXParseException:
|
||||||
print "Parser error"
|
print "Parser error"
|
||||||
|
|
||||||
def fix(self,line):
|
def fix(self,line):
|
||||||
l = line.strip()
|
l = line.strip()
|
||||||
|
@ -71,5 +71,5 @@ def build_filter_model(space, local = [], default=""):
|
|||||||
CustomFilters.get_filters(space)
|
CustomFilters.get_filters(space)
|
||||||
|
|
||||||
for filt in flist:
|
for filt in flist:
|
||||||
model.append(row=[filt.get_name(), filt])
|
model.append(row=[filt.get_name(), filt])
|
||||||
return model
|
return model
|
||||||
|
@ -24,11 +24,11 @@ class GtkHandler(logging.Handler):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self._record = record
|
self._record = record
|
||||||
ErrorView(error_detail=self,rotate_handler=self._rotate_handler)
|
ErrorView(error_detail=self,rotate_handler=self._rotate_handler)
|
||||||
|
|
||||||
def get_formatted_log(self):
|
def get_formatted_log(self):
|
||||||
return self.format(self._record)
|
return self.format(self._record)
|
||||||
|
|
||||||
def get_record(self):
|
def get_record(self):
|
||||||
return self._record
|
return self._record
|
||||||
|
@ -2081,9 +2081,9 @@ class MaskedEntry(gtk.Entry):
|
|||||||
else:
|
else:
|
||||||
# Keep the static char where it is.
|
# Keep the static char where it is.
|
||||||
if direction == DIRECTION_LEFT:
|
if direction == DIRECTION_LEFT:
|
||||||
new_text = new_text + text[i]
|
new_text = new_text + text[i]
|
||||||
else:
|
else:
|
||||||
new_text = text[i] + new_text
|
new_text = text[i] + new_text
|
||||||
i += direction
|
i += direction
|
||||||
|
|
||||||
return new_text
|
return new_text
|
||||||
|
@ -31,21 +31,21 @@ class ListCursor(object):
|
|||||||
records. It should probably also have DB_DUPSORT if you want to
|
records. It should probably also have DB_DUPSORT if you want to
|
||||||
have sorted records.
|
have sorted records.
|
||||||
"""
|
"""
|
||||||
self._cursor = cursor
|
self._cursor = cursor
|
||||||
self._object_cache = {}
|
self._object_cache = {}
|
||||||
|
|
||||||
self.top()
|
self.top()
|
||||||
|
|
||||||
|
|
||||||
def top(self):
|
def top(self):
|
||||||
self._cursor.first()
|
self._cursor.first()
|
||||||
self._index = 0
|
self._index = 0
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
"""
|
"""
|
||||||
Move to the next record.
|
Move to the next record.
|
||||||
"""
|
"""
|
||||||
data = self._cursor.next()
|
data = self._cursor.next()
|
||||||
|
|
||||||
# If there was a next record that data will
|
# If there was a next record that data will
|
||||||
# not be None
|
# not be None
|
||||||
@ -54,13 +54,13 @@ class ListCursor(object):
|
|||||||
# they point to the current record.
|
# they point to the current record.
|
||||||
self._index+= 1
|
self._index+= 1
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def prev(self):
|
def prev(self):
|
||||||
"""
|
"""
|
||||||
Move to the previous record.
|
Move to the previous record.
|
||||||
"""
|
"""
|
||||||
data = self._cursor.prev()
|
data = self._cursor.prev()
|
||||||
|
|
||||||
# If there was a next record that data will
|
# If there was a next record that data will
|
||||||
# not be None
|
# not be None
|
||||||
@ -69,7 +69,7 @@ class ListCursor(object):
|
|||||||
# they point to the current record.
|
# they point to the current record.
|
||||||
self._index -= 1
|
self._index -= 1
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def has_children(self,path):
|
def has_children(self,path):
|
||||||
@ -149,7 +149,7 @@ class ListCursor(object):
|
|||||||
ret = self._unpickle(ret)
|
ret = self._unpickle(ret)
|
||||||
self._object_cache[index] = ret
|
self._object_cache[index] = ret
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def _unpickle(self,rec):
|
def _unpickle(self,rec):
|
||||||
"""
|
"""
|
||||||
@ -174,3 +174,4 @@ class ListCursor(object):
|
|||||||
return self.lookup(path[0])
|
return self.lookup(path[0])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,13 +16,13 @@ class PathCursor(object):
|
|||||||
|
|
||||||
For example, with the following table indexed on Surname::
|
For example, with the following table indexed on Surname::
|
||||||
|
|
||||||
Record Value Index
|
Record Value Index
|
||||||
============ =====
|
============ =====
|
||||||
|
|
||||||
Blogs, Jo [0,0]
|
Blogs, Jo [0,0]
|
||||||
Blogs, Jane [0,1]
|
Blogs, Jane [0,1]
|
||||||
Smith, Wilman [1,0]
|
Smith, Wilman [1,0]
|
||||||
Smith, John [1,1]
|
Smith, John [1,1]
|
||||||
|
|
||||||
@ivar _index: The current index pointed to by the cursor.
|
@ivar _index: The current index pointed to by the cursor.
|
||||||
|
|
||||||
@ -43,21 +43,21 @@ class PathCursor(object):
|
|||||||
records. It should probably also have DB_DUPSORT if you want to
|
records. It should probably also have DB_DUPSORT if you want to
|
||||||
have sorted records.
|
have sorted records.
|
||||||
"""
|
"""
|
||||||
self._cursor = cursor
|
self._cursor = cursor
|
||||||
self._object_cache = {}
|
self._object_cache = {}
|
||||||
|
|
||||||
self.top()
|
self.top()
|
||||||
|
|
||||||
|
|
||||||
def top(self):
|
def top(self):
|
||||||
self._cursor.first()
|
self._cursor.first()
|
||||||
self._index = [0,0]
|
self._index = [0,0]
|
||||||
|
|
||||||
def next_nodup(self):
|
def next_nodup(self):
|
||||||
"""
|
"""
|
||||||
Move to the next non-duplcate record.
|
Move to the next non-duplcate record.
|
||||||
"""
|
"""
|
||||||
data = self._cursor.next_nodup()
|
data = self._cursor.next_nodup()
|
||||||
|
|
||||||
# If there was a next record that data will
|
# If there was a next record that data will
|
||||||
# not be None
|
# not be None
|
||||||
@ -67,13 +67,13 @@ class PathCursor(object):
|
|||||||
self._index[0] += 1
|
self._index[0] += 1
|
||||||
self._index[1] = 0
|
self._index[1] = 0
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def prev_nodup(self):
|
def prev_nodup(self):
|
||||||
"""
|
"""
|
||||||
Move to the previous non-duplicate record.
|
Move to the previous non-duplicate record.
|
||||||
"""
|
"""
|
||||||
data = self._cursor.prev_nodup()
|
data = self._cursor.prev_nodup()
|
||||||
|
|
||||||
# If there was a next record that data will
|
# If there was a next record that data will
|
||||||
# not be None
|
# not be None
|
||||||
@ -83,13 +83,13 @@ class PathCursor(object):
|
|||||||
self._index[0] -= 1
|
self._index[0] -= 1
|
||||||
self._index[1] = 0
|
self._index[1] = 0
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def next_dup(self):
|
def next_dup(self):
|
||||||
"""
|
"""
|
||||||
Move to the next record with a duplicate key to the current record.
|
Move to the next record with a duplicate key to the current record.
|
||||||
"""
|
"""
|
||||||
data = self._cursor.next_dup()
|
data = self._cursor.next_dup()
|
||||||
|
|
||||||
# If there was a next record that data will
|
# If there was a next record that data will
|
||||||
# not be None
|
# not be None
|
||||||
@ -97,7 +97,7 @@ class PathCursor(object):
|
|||||||
# Update the secondary index.
|
# Update the secondary index.
|
||||||
self._index[1] += 1
|
self._index[1] += 1
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def has_children(self,path):
|
def has_children(self,path):
|
||||||
"""
|
"""
|
||||||
@ -228,7 +228,7 @@ class PathCursor(object):
|
|||||||
ret = self._unpickle(ret)
|
ret = self._unpickle(ret)
|
||||||
self._object_cache[index] = {'primary':ret}
|
self._object_cache[index] = {'primary':ret}
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def _unpickle(self,rec):
|
def _unpickle(self,rec):
|
||||||
"""
|
"""
|
||||||
@ -322,3 +322,4 @@ class PathCursor(object):
|
|||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,34 +36,34 @@ class FamilyFilterFrame(FilterFrameBase):
|
|||||||
__default_border_width = 5
|
__default_border_width = 5
|
||||||
|
|
||||||
def __init__(self,filter_spec=None,label="Filter"):
|
def __init__(self,filter_spec=None,label="Filter"):
|
||||||
FilterFrameBase.__init__(self,filter_spec,label)
|
FilterFrameBase.__init__(self,filter_spec,label)
|
||||||
|
|
||||||
# Gramps ID
|
# Gramps ID
|
||||||
self._id_check,self._id_label,self._id_edit = \
|
self._id_check,self._id_label,self._id_edit = \
|
||||||
self.make_text_widget("Gramps ID")
|
self.make_text_widget("Gramps ID")
|
||||||
|
|
||||||
# Name
|
# Name
|
||||||
self._name_check,self._name_label,self._name_edit = \
|
self._name_check,self._name_label,self._name_edit = \
|
||||||
self.make_text_widget("Name")
|
self.make_text_widget("Name")
|
||||||
|
|
||||||
# Mar
|
# Mar
|
||||||
self._mar_check, self._m_edit, \
|
self._mar_check, self._m_edit, \
|
||||||
self._m_before, self._m_after, \
|
self._m_before, self._m_after, \
|
||||||
self._m_unknown = self.make_year_widget("Marriage Year")
|
self._m_unknown = self.make_year_widget("Marriage Year")
|
||||||
|
|
||||||
# Filter
|
# Filter
|
||||||
default_filters = []
|
default_filters = []
|
||||||
|
|
||||||
# don't currently support filters that need an attribute.
|
# don't currently support filters that need an attribute.
|
||||||
filters = [ filter for filter in default_filters if \
|
filters = [ filter for filter in default_filters if \
|
||||||
not hasattr(filter,'labels') or len(filter.labels) == 0 ]
|
not hasattr(filter,'labels') or len(filter.labels) == 0 ]
|
||||||
|
|
||||||
self._filter_list = gtk.ListStore(str,object)
|
self._filter_list = gtk.ListStore(str,object)
|
||||||
|
|
||||||
for filter in filters:
|
for filter in filters:
|
||||||
self._filter_list.append([filter.name,filter])
|
self._filter_list.append([filter.name,filter])
|
||||||
|
|
||||||
self._filter_check,self._filter_label,self._filter_combo = \
|
self._filter_check,self._filter_label,self._filter_combo = \
|
||||||
self.make_combo_widget("Filter",self._filter_list)
|
self.make_combo_widget("Filter",self._filter_list)
|
||||||
|
|
||||||
self._reset_widgets()
|
self._reset_widgets()
|
||||||
|
@ -41,11 +41,9 @@ class FamilyPreviewFrame(PreviewFrameBase):
|
|||||||
__default_border_width = 5
|
__default_border_width = 5
|
||||||
|
|
||||||
def __init__(self,dbstate,label="Preview"):
|
def __init__(self,dbstate,label="Preview"):
|
||||||
PreviewFrameBase.__init__(self,label)
|
PreviewFrameBase.__init__(self,label)
|
||||||
|
|
||||||
self._dbstate = dbstate
|
self._dbstate = dbstate
|
||||||
|
align = gtk.Alignment()
|
||||||
align = gtk.Alignment()
|
|
||||||
|
|
||||||
# Image
|
# Image
|
||||||
self._image_l = gtk.Image()
|
self._image_l = gtk.Image()
|
||||||
@ -70,10 +68,9 @@ class FamilyPreviewFrame(PreviewFrameBase):
|
|||||||
box.pack_start(image_box,False,False)
|
box.pack_start(image_box,False,False)
|
||||||
box.pack_start(label)
|
box.pack_start(label)
|
||||||
|
|
||||||
|
|
||||||
# align
|
# align
|
||||||
|
|
||||||
align.add(box)
|
align.add(box)
|
||||||
align.set_padding(self.__class__.__default_border_width,
|
align.set_padding(self.__class__.__default_border_width,
|
||||||
self.__class__.__default_border_width,
|
self.__class__.__default_border_width,
|
||||||
self.__class__.__default_border_width,
|
self.__class__.__default_border_width,
|
||||||
@ -81,8 +78,7 @@ class FamilyPreviewFrame(PreviewFrameBase):
|
|||||||
align.set(0.5,0.5,
|
align.set(0.5,0.5,
|
||||||
1.0,1.0)
|
1.0,1.0)
|
||||||
|
|
||||||
|
self.add(align)
|
||||||
self.add(align)
|
|
||||||
|
|
||||||
self.clear_object()
|
self.clear_object()
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class FamilyTreeFrame(TreeFrameBase):
|
|||||||
|
|
||||||
|
|
||||||
def __init__(self,dbstate):
|
def __init__(self,dbstate):
|
||||||
TreeFrameBase.__init__(self)
|
TreeFrameBase.__init__(self)
|
||||||
|
|
||||||
self._selection = None
|
self._selection = None
|
||||||
self._model = None
|
self._model = None
|
||||||
|
@ -235,3 +235,4 @@ class FilterFrameBase(gtk.Frame):
|
|||||||
if gtk.pygtk_version < (2,8,0):
|
if gtk.pygtk_version < (2,8,0):
|
||||||
gobject.type_register(FilterFrameBase)
|
gobject.type_register(FilterFrameBase)
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ class ObjectSelectorWindow(gtk.Window,ManagedWindow):
|
|||||||
ManagedWindow.__init__(self,uistate,track,self)
|
ManagedWindow.__init__(self,uistate,track,self)
|
||||||
|
|
||||||
# Init the Window
|
# Init the Window
|
||||||
gtk.Window.__init__(self)
|
gtk.Window.__init__(self)
|
||||||
|
|
||||||
self._dbstate = dbstate
|
self._dbstate = dbstate
|
||||||
self._uistate = dbstate
|
self._uistate = dbstate
|
||||||
@ -157,25 +157,25 @@ class ObjectSelectorWindow(gtk.Window,ManagedWindow):
|
|||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
person_pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(const.IMAGE_DIR,"person.svg"))
|
person_pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(const.IMAGE_DIR,"person.svg"))
|
||||||
flist_pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(const.IMAGE_DIR,"flist.svg"))
|
flist_pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(const.IMAGE_DIR,"flist.svg"))
|
||||||
|
|
||||||
self._tool_list = gtk.ListStore(gtk.gdk.Pixbuf, str,int)
|
self._tool_list = gtk.ListStore(gtk.gdk.Pixbuf, str,int)
|
||||||
|
|
||||||
d={ObjectTypes.PERSON: [person_pixbuf,'People',ObjectTypes.PERSON],
|
d={ObjectTypes.PERSON: [person_pixbuf,'People',ObjectTypes.PERSON],
|
||||||
ObjectTypes.FAMILY: [flist_pixbuf,'Families',ObjectTypes.FAMILY],
|
ObjectTypes.FAMILY: [flist_pixbuf,'Families',ObjectTypes.FAMILY],
|
||||||
ObjectTypes.EVENT: [person_pixbuf,'Events',ObjectTypes.EVENT]}
|
ObjectTypes.EVENT: [person_pixbuf,'Events',ObjectTypes.EVENT]}
|
||||||
|
|
||||||
self._object_type_column = 2
|
self._object_type_column = 2
|
||||||
|
|
||||||
except gobject.GError:
|
except gobject.GError:
|
||||||
self._tool_list = gtk.ListStore(str,int)
|
self._tool_list = gtk.ListStore(str,int)
|
||||||
|
|
||||||
d={ObjectTypes.PERSON: ['People',ObjectTypes.PERSON],
|
d={ObjectTypes.PERSON: ['People',ObjectTypes.PERSON],
|
||||||
ObjectTypes.FAMILY: ['Families',ObjectTypes.FAMILY],
|
ObjectTypes.FAMILY: ['Families',ObjectTypes.FAMILY],
|
||||||
ObjectTypes.EVENT: ['Events',ObjectTypes.EVENT]}
|
ObjectTypes.EVENT: ['Events',ObjectTypes.EVENT]}
|
||||||
|
|
||||||
self._object_type_column = 1
|
self._object_type_column = 1
|
||||||
|
|
||||||
|
|
||||||
for object_type in self._object_list:
|
for object_type in self._object_list:
|
||||||
@ -288,7 +288,7 @@ class ObjectSelectorWindow(gtk.Window,ManagedWindow):
|
|||||||
align.add(box)
|
align.add(box)
|
||||||
align.show()
|
align.show()
|
||||||
|
|
||||||
self.add(align)
|
self.add(align)
|
||||||
|
|
||||||
self._set_object_type(default_object_type)
|
self._set_object_type(default_object_type)
|
||||||
self.set_default_size(700,300)
|
self.set_default_size(700,300)
|
||||||
@ -313,9 +313,9 @@ class ObjectSelectorWindow(gtk.Window,ManagedWindow):
|
|||||||
store = self._tool_list
|
store = self._tool_list
|
||||||
it = store.get_iter_first()
|
it = store.get_iter_first()
|
||||||
while it:
|
while it:
|
||||||
if store.get(it, self._object_type_column)[0] == selected_object_type:
|
if store.get(it, self._object_type_column)[0] == selected_object_type:
|
||||||
break
|
break
|
||||||
it = store.iter_next(it)
|
it = store.iter_next(it)
|
||||||
|
|
||||||
if it != None:
|
if it != None:
|
||||||
self._tool_combo.set_active_iter(it)
|
self._tool_combo.set_active_iter(it)
|
||||||
@ -345,3 +345,4 @@ class ObjectSelectorWindow(gtk.Window,ManagedWindow):
|
|||||||
if gtk.pygtk_version < (2,8,0):
|
if gtk.pygtk_version < (2,8,0):
|
||||||
gobject.type_register(ObjectSelectorWindow)
|
gobject.type_register(ObjectSelectorWindow)
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,17 +43,17 @@ class PersonFilterFrame(FilterFrameBase):
|
|||||||
__default_border_width = 5
|
__default_border_width = 5
|
||||||
|
|
||||||
def __init__(self,filter_spec=None,label="Filter"):
|
def __init__(self,filter_spec=None,label="Filter"):
|
||||||
FilterFrameBase.__init__(self,filter_spec,label)
|
FilterFrameBase.__init__(self,filter_spec,label)
|
||||||
|
|
||||||
# Build the filter widgets, the make_* methods are
|
# Build the filter widgets, the make_* methods are
|
||||||
# in the FilterFrameBase base class.
|
# in the FilterFrameBase base class.
|
||||||
|
|
||||||
# Gramps ID
|
# Gramps ID
|
||||||
self._id_check,self._id_label,self._id_edit = \
|
self._id_check,self._id_label,self._id_edit = \
|
||||||
self.make_text_widget("Gramps ID")
|
self.make_text_widget("Gramps ID")
|
||||||
|
|
||||||
# Name
|
# Name
|
||||||
self._name_check,self._name_label,self._name_edit = \
|
self._name_check,self._name_label,self._name_edit = \
|
||||||
self.make_text_widget("Name")
|
self.make_text_widget("Name")
|
||||||
|
|
||||||
# Gender
|
# Gender
|
||||||
@ -61,21 +61,21 @@ class PersonFilterFrame(FilterFrameBase):
|
|||||||
[_("Female"),gen.lib.Person.FEMALE],
|
[_("Female"),gen.lib.Person.FEMALE],
|
||||||
[_("Unknown"),gen.lib.Person.UNKNOWN]]
|
[_("Unknown"),gen.lib.Person.UNKNOWN]]
|
||||||
|
|
||||||
self._gender_list = gtk.ListStore(str,int)
|
self._gender_list = gtk.ListStore(str,int)
|
||||||
|
|
||||||
for entry in genders:
|
for entry in genders:
|
||||||
self._gender_list.append(entry)
|
self._gender_list.append(entry)
|
||||||
|
|
||||||
self._gender_check,self._gender_label, self._gender_combo = \
|
self._gender_check,self._gender_label, self._gender_combo = \
|
||||||
self.make_combo_widget("Gender",self._gender_list)
|
self.make_combo_widget("Gender",self._gender_list)
|
||||||
|
|
||||||
# Birth
|
# Birth
|
||||||
self._birth_check, self._b_edit, \
|
self._birth_check, self._b_edit, \
|
||||||
self._b_before, self._b_after, \
|
self._b_before, self._b_after, \
|
||||||
self._b_unknown = self.make_year_widget("Birth Year")
|
self._b_unknown = self.make_year_widget("Birth Year")
|
||||||
|
|
||||||
# Death
|
# Death
|
||||||
self._death_check, self._d_edit, \
|
self._death_check, self._d_edit, \
|
||||||
self._d_before, self._d_after, \
|
self._d_before, self._d_after, \
|
||||||
self._d_unknown = self.make_year_widget("Death Year")
|
self._d_unknown = self.make_year_widget("Death Year")
|
||||||
|
|
||||||
@ -106,16 +106,16 @@ class PersonFilterFrame(FilterFrameBase):
|
|||||||
Rules.Person.IsFemale,
|
Rules.Person.IsFemale,
|
||||||
]
|
]
|
||||||
|
|
||||||
# don't currently support filters that need an attribute.
|
# don't currently support filters that need an attribute.
|
||||||
filters = [ filter for filter in default_filters if \
|
filters = [ filter for filter in default_filters if \
|
||||||
not hasattr(filter,'labels') or len(filter.labels) == 0 ]
|
not hasattr(filter,'labels') or len(filter.labels) == 0 ]
|
||||||
|
|
||||||
self._filter_list = gtk.ListStore(str,object)
|
self._filter_list = gtk.ListStore(str,object)
|
||||||
|
|
||||||
for filter in filters:
|
for filter in filters:
|
||||||
self._filter_list.append([filter.name,filter])
|
self._filter_list.append([filter.name,filter])
|
||||||
|
|
||||||
self._filter_check,self._filter_label,self._filter_combo = \
|
self._filter_check,self._filter_label,self._filter_combo = \
|
||||||
self.make_combo_widget("Filter",self._filter_list)
|
self.make_combo_widget("Filter",self._filter_list)
|
||||||
|
|
||||||
self._reset_widgets()
|
self._reset_widgets()
|
||||||
@ -223,7 +223,7 @@ class PersonFilterFrame(FilterFrameBase):
|
|||||||
if self._filter_check.get_active():
|
if self._filter_check.get_active():
|
||||||
filter.add_rule(self._filter_list.get_value(self._filter_combo.get_active_iter(),1)([]))
|
filter.add_rule(self._filter_list.get_value(self._filter_combo.get_active_iter(),1)([]))
|
||||||
|
|
||||||
self.emit('apply-filter',filter)
|
self.emit('apply-filter',filter)
|
||||||
|
|
||||||
if gtk.pygtk_version < (2,8,0):
|
if gtk.pygtk_version < (2,8,0):
|
||||||
gobject.type_register(PersonFilterFrame)
|
gobject.type_register(PersonFilterFrame)
|
||||||
|
@ -53,11 +53,9 @@ class PersonPreviewFrame(PreviewFrameBase):
|
|||||||
__default_border_width = 5
|
__default_border_width = 5
|
||||||
|
|
||||||
def __init__(self,dbstate,label="Preview"):
|
def __init__(self,dbstate,label="Preview"):
|
||||||
PreviewFrameBase.__init__(self,label)
|
PreviewFrameBase.__init__(self,label)
|
||||||
|
|
||||||
self._dbstate = dbstate
|
self._dbstate = dbstate
|
||||||
|
align = gtk.Alignment()
|
||||||
align = gtk.Alignment()
|
|
||||||
|
|
||||||
# Image
|
# Image
|
||||||
self._image = gtk.Image()
|
self._image = gtk.Image()
|
||||||
@ -77,10 +75,8 @@ class PersonPreviewFrame(PreviewFrameBase):
|
|||||||
box.pack_start(self._image,False,False)
|
box.pack_start(self._image,False,False)
|
||||||
box.pack_start(label)
|
box.pack_start(label)
|
||||||
|
|
||||||
|
|
||||||
# align
|
# align
|
||||||
|
align.add(box)
|
||||||
align.add(box)
|
|
||||||
align.set_padding(self.__class__.__default_border_width,
|
align.set_padding(self.__class__.__default_border_width,
|
||||||
self.__class__.__default_border_width,
|
self.__class__.__default_border_width,
|
||||||
self.__class__.__default_border_width,
|
self.__class__.__default_border_width,
|
||||||
@ -88,9 +84,7 @@ class PersonPreviewFrame(PreviewFrameBase):
|
|||||||
align.set(0.5,0.5,
|
align.set(0.5,0.5,
|
||||||
1.0,1.0)
|
1.0,1.0)
|
||||||
|
|
||||||
|
self.add(align)
|
||||||
self.add(align)
|
|
||||||
|
|
||||||
self._label = label
|
self._label = label
|
||||||
|
|
||||||
def _get_text_preview(self,person):
|
def _get_text_preview(self,person):
|
||||||
|
@ -54,7 +54,7 @@ class PersonTreeFrame(TreeFrameBase):
|
|||||||
|
|
||||||
|
|
||||||
def __init__(self,dbstate):
|
def __init__(self,dbstate):
|
||||||
TreeFrameBase.__init__(self)
|
TreeFrameBase.__init__(self)
|
||||||
|
|
||||||
self._dbstate = dbstate
|
self._dbstate = dbstate
|
||||||
self._selection = None
|
self._selection = None
|
||||||
|
@ -164,7 +164,7 @@ class UndoHistory(ManagedWindow.ManagedWindow):
|
|||||||
self._move(nsteps)
|
self._move(nsteps)
|
||||||
elif response_id == gtk.RESPONSE_APPLY:
|
elif response_id == gtk.RESPONSE_APPLY:
|
||||||
self._clear_clicked()
|
self._clear_clicked()
|
||||||
elif response_id == gtk.RESPONSE_DELETE_EVENT:
|
elif response_id == gtk.RESPONSE_DELETE_EVENT:
|
||||||
self.close(obj)
|
self.close(obj)
|
||||||
|
|
||||||
def build_menu_names(self,obj):
|
def build_menu_names(self,obj):
|
||||||
|
@ -270,7 +270,7 @@ class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
|
|||||||
if style.get_bottom_border():
|
if style.get_bottom_border():
|
||||||
bottom = 'thin solid #000000'
|
bottom = 'thin solid #000000'
|
||||||
if style.get_left_border():
|
if style.get_left_border():
|
||||||
left = 'thin solid #000000'
|
left = 'thin solid #000000'
|
||||||
if style.get_right_border():
|
if style.get_right_border():
|
||||||
right = 'thin solid #000000'
|
right = 'thin solid #000000'
|
||||||
text.append('.%s {\n'
|
text.append('.%s {\n'
|
||||||
@ -298,7 +298,7 @@ class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
|
|||||||
if style.get_bottom_border():
|
if style.get_bottom_border():
|
||||||
bottom = 'thin solid #000000'
|
bottom = 'thin solid #000000'
|
||||||
if style.get_left_border():
|
if style.get_left_border():
|
||||||
left = 'thin solid #000000'
|
left = 'thin solid #000000'
|
||||||
if style.get_right_border():
|
if style.get_right_border():
|
||||||
right = 'thin solid #000000'
|
right = 'thin solid #000000'
|
||||||
|
|
||||||
@ -470,7 +470,7 @@ class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
|
|||||||
text = text.replace('</super>','</sup>')
|
text = text.replace('</super>','</sup>')
|
||||||
if text != "":
|
if text != "":
|
||||||
self.empty = 0
|
self.empty = 0
|
||||||
self.f.write(text)
|
self.f.write(text)
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -452,7 +452,7 @@ class LaTeXDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
|
|||||||
if self.bborder == 1:
|
if self.bborder == 1:
|
||||||
self.doline = 1
|
self.doline = 1
|
||||||
elif self.curcol == 1:
|
elif self.curcol == 1:
|
||||||
self.skipfirst = 1
|
self.skipfirst = 1
|
||||||
|
|
||||||
if self.tborder != 0:
|
if self.tborder != 0:
|
||||||
self.f.write('\\hline\n')
|
self.f.write('\\hline\n')
|
||||||
|
@ -244,21 +244,21 @@ class ODFDoc(BaseDoc.BaseDoc, BaseDoc.TextDoc, BaseDoc.DrawDoc):
|
|||||||
self.cntnt.write('<style:paragraph-properties ')
|
self.cntnt.write('<style:paragraph-properties ')
|
||||||
|
|
||||||
if style.get_padding() != 0.0:
|
if style.get_padding() != 0.0:
|
||||||
self.cntnt.write('fo:padding="%.2fcm" ' % style.get_padding())
|
self.cntnt.write('fo:padding="%.2fcm" ' % style.get_padding())
|
||||||
if style.get_header_level() > 0:
|
if style.get_header_level() > 0:
|
||||||
self.cntnt.write('fo:keep-with-next="true" ')
|
self.cntnt.write('fo:keep-with-next="true" ')
|
||||||
|
|
||||||
align = style.get_alignment()
|
align = style.get_alignment()
|
||||||
if align == BaseDoc.PARA_ALIGN_LEFT:
|
if align == BaseDoc.PARA_ALIGN_LEFT:
|
||||||
self.cntnt.write('fo:text-align="start" ')
|
self.cntnt.write('fo:text-align="start" ')
|
||||||
elif align == BaseDoc.PARA_ALIGN_RIGHT:
|
elif align == BaseDoc.PARA_ALIGN_RIGHT:
|
||||||
self.cntnt.write('fo:text-align="end" ')
|
self.cntnt.write('fo:text-align="end" ')
|
||||||
elif align == BaseDoc.PARA_ALIGN_CENTER:
|
elif align == BaseDoc.PARA_ALIGN_CENTER:
|
||||||
self.cntnt.write('fo:text-align="center" ')
|
self.cntnt.write('fo:text-align="center" ')
|
||||||
self.cntnt.write('style:justify-single-word="false" ')
|
self.cntnt.write('style:justify-single-word="false" ')
|
||||||
else:
|
else:
|
||||||
self.cntnt.write('fo:text-align="justify" ')
|
self.cntnt.write('fo:text-align="justify" ')
|
||||||
self.cntnt.write('style:justify-single-word="false" ')
|
self.cntnt.write('style:justify-single-word="false" ')
|
||||||
font = style.get_font()
|
font = style.get_font()
|
||||||
if font.get_type_face() == BaseDoc.FONT_SANS_SERIF:
|
if font.get_type_face() == BaseDoc.FONT_SANS_SERIF:
|
||||||
self.cntnt.write('style:font-name="Arial" ')
|
self.cntnt.write('style:font-name="Arial" ')
|
||||||
@ -288,12 +288,12 @@ class ODFDoc(BaseDoc.BaseDoc, BaseDoc.TextDoc, BaseDoc.DrawDoc):
|
|||||||
self.cntnt.write('<style:text-properties ')
|
self.cntnt.write('<style:text-properties ')
|
||||||
align = style.get_alignment()
|
align = style.get_alignment()
|
||||||
if align == BaseDoc.PARA_ALIGN_LEFT:
|
if align == BaseDoc.PARA_ALIGN_LEFT:
|
||||||
self.cntnt.write('fo:text-align="start" ')
|
self.cntnt.write('fo:text-align="start" ')
|
||||||
elif align == BaseDoc.PARA_ALIGN_RIGHT:
|
elif align == BaseDoc.PARA_ALIGN_RIGHT:
|
||||||
self.cntnt.write('fo:text-align="end" ')
|
self.cntnt.write('fo:text-align="end" ')
|
||||||
elif align == BaseDoc.PARA_ALIGN_CENTER:
|
elif align == BaseDoc.PARA_ALIGN_CENTER:
|
||||||
self.cntnt.write('fo:text-align="center" ')
|
self.cntnt.write('fo:text-align="center" ')
|
||||||
self.cntnt.write('style:justify-single-word="false" ')
|
self.cntnt.write('style:justify-single-word="false" ')
|
||||||
font = style.get_font()
|
font = style.get_font()
|
||||||
if font.get_type_face() == BaseDoc.FONT_SANS_SERIF:
|
if font.get_type_face() == BaseDoc.FONT_SANS_SERIF:
|
||||||
self.cntnt.write('style:font-name="Arial" ')
|
self.cntnt.write('style:font-name="Arial" ')
|
||||||
@ -680,22 +680,22 @@ class ODFDoc(BaseDoc.BaseDoc, BaseDoc.TextDoc, BaseDoc.DrawDoc):
|
|||||||
self.sfile.write('fo:margin-bottom="0.212cm"\n')
|
self.sfile.write('fo:margin-bottom="0.212cm"\n')
|
||||||
|
|
||||||
if style.get_padding() != 0.0:
|
if style.get_padding() != 0.0:
|
||||||
self.sfile.write('fo:padding="%.2fcm" ' % style.get_padding())
|
self.sfile.write('fo:padding="%.2fcm" ' % style.get_padding())
|
||||||
if style.get_header_level() > 0:
|
if style.get_header_level() > 0:
|
||||||
self.sfile.write('fo:keep-with-next="always" ')
|
self.sfile.write('fo:keep-with-next="always" ')
|
||||||
|
|
||||||
align = style.get_alignment()
|
align = style.get_alignment()
|
||||||
if align == BaseDoc.PARA_ALIGN_LEFT:
|
if align == BaseDoc.PARA_ALIGN_LEFT:
|
||||||
self.sfile.write('fo:text-align="start" ')
|
self.sfile.write('fo:text-align="start" ')
|
||||||
self.sfile.write('style:justify-single-word="false" ')
|
self.sfile.write('style:justify-single-word="false" ')
|
||||||
elif align == BaseDoc.PARA_ALIGN_RIGHT:
|
elif align == BaseDoc.PARA_ALIGN_RIGHT:
|
||||||
self.sfile.write('fo:text-align="end" ')
|
self.sfile.write('fo:text-align="end" ')
|
||||||
elif align == BaseDoc.PARA_ALIGN_CENTER:
|
elif align == BaseDoc.PARA_ALIGN_CENTER:
|
||||||
self.sfile.write('fo:text-align="center" ')
|
self.sfile.write('fo:text-align="center" ')
|
||||||
self.sfile.write('style:justify-single-word="false" ')
|
self.sfile.write('style:justify-single-word="false" ')
|
||||||
else:
|
else:
|
||||||
self.sfile.write('fo:text-align="justify" ')
|
self.sfile.write('fo:text-align="justify" ')
|
||||||
self.sfile.write('style:justify-single-word="false" ')
|
self.sfile.write('style:justify-single-word="false" ')
|
||||||
self.sfile.write('fo:text-indent="%.2fcm" ' % style.get_first_indent())
|
self.sfile.write('fo:text-indent="%.2fcm" ' % style.get_first_indent())
|
||||||
self.sfile.write('style:auto-text-indent="false"/> ')
|
self.sfile.write('style:auto-text-indent="false"/> ')
|
||||||
self.sfile.write('<style:text-properties ')
|
self.sfile.write('<style:text-properties ')
|
||||||
|
@ -113,11 +113,11 @@ class ODSDoc(SpreadSheetDoc):
|
|||||||
self.f.write('</office:font-face-decls>\n')
|
self.f.write('</office:font-face-decls>\n')
|
||||||
|
|
||||||
self.f.write('<office:automatic-styles>\n')
|
self.f.write('<office:automatic-styles>\n')
|
||||||
for key in self.table_styles.keys():
|
for key in self.table_styles.keys():
|
||||||
table = self.table_styles[key]
|
table = self.table_styles[key]
|
||||||
self.f.write('<style:style style:name="')
|
self.f.write('<style:style style:name="')
|
||||||
self.f.write(key)
|
self.f.write(key)
|
||||||
self.f.write('" style:family="table" ')
|
self.f.write('" style:family="table" ')
|
||||||
self.f.write('style:master-page-name="Default"> \n')
|
self.f.write('style:master-page-name="Default"> \n')
|
||||||
self.f.write('<style:table-properties table:display="true" ')
|
self.f.write('<style:table-properties table:display="true" ')
|
||||||
self.f.write('style:writing-mode="lr-tb" /> \n')
|
self.f.write('style:writing-mode="lr-tb" /> \n')
|
||||||
@ -151,20 +151,20 @@ class ODSDoc(SpreadSheetDoc):
|
|||||||
self.f.write('style:text-outline="false" ')
|
self.f.write('style:text-outline="false" ')
|
||||||
self.f.write('style:text-crossing-out="none" ')
|
self.f.write('style:text-crossing-out="none" ')
|
||||||
if font.get_type_face() == BaseDoc.FONT_SERIF:
|
if font.get_type_face() == BaseDoc.FONT_SERIF:
|
||||||
self.f.write('style:font-name="Times New Roman" ')
|
self.f.write('style:font-name="Times New Roman" ')
|
||||||
else:
|
else:
|
||||||
self.f.write('style:font-name="Arial" ')
|
self.f.write('style:font-name="Arial" ')
|
||||||
self.f.write('fo:font-size="%dpt" ' % font.get_size())
|
self.f.write('fo:font-size="%dpt" ' % font.get_size())
|
||||||
if font.get_italic():
|
if font.get_italic():
|
||||||
self.f.write('fo:font-style="italic" ')
|
self.f.write('fo:font-style="italic" ')
|
||||||
else:
|
else:
|
||||||
self.f.write('fo:font-style="normal" ')
|
self.f.write('fo:font-style="normal" ')
|
||||||
self.f.write('fo:text-shadow="none" ')
|
self.f.write('fo:text-shadow="none" ')
|
||||||
self.f.write('style:text-underline="none" ')
|
self.f.write('style:text-underline="none" ')
|
||||||
if font.get_bold():
|
if font.get_bold():
|
||||||
self.f.write('fo:font-weight="bold"/>\n')
|
self.f.write('fo:font-weight="bold"/>\n')
|
||||||
else:
|
else:
|
||||||
self.f.write('fo:font-weight="normal"/>\n')
|
self.f.write('fo:font-weight="normal"/>\n')
|
||||||
self.f.write('</style:style>\n')
|
self.f.write('</style:style>\n')
|
||||||
self.f.write('</office:automatic-styles>\n')
|
self.f.write('</office:automatic-styles>\n')
|
||||||
self.f.write('<office:body>\n')
|
self.f.write('<office:body>\n')
|
||||||
@ -190,19 +190,19 @@ class ODSDoc(SpreadSheetDoc):
|
|||||||
self.f.write('</table:table-row>\n')
|
self.f.write('</table:table-row>\n')
|
||||||
|
|
||||||
def start_cell(self,style_name,span=1):
|
def start_cell(self,style_name,span=1):
|
||||||
self.content = 0
|
self.content = 0
|
||||||
self.span = span
|
self.span = span
|
||||||
self.f.write('<table:table-cell table:style-name="')
|
self.f.write('<table:table-cell table:style-name="')
|
||||||
self.f.write(style_name)
|
self.f.write(style_name)
|
||||||
self.f.write('" table:value-type="string"')
|
self.f.write('" table:value-type="string"')
|
||||||
if span > 1:
|
if span > 1:
|
||||||
self.f.write(' table:number-columns-spanned="' + str(span) + '">\n')
|
self.f.write(' table:number-columns-spanned="' + str(span) + '">\n')
|
||||||
else:
|
else:
|
||||||
self.f.write('>\n')
|
self.f.write('>\n')
|
||||||
|
|
||||||
def end_cell(self):
|
def end_cell(self):
|
||||||
if self.content == 0:
|
if self.content == 0:
|
||||||
self.f.write('<text:p/>\n')
|
self.f.write('<text:p/>\n')
|
||||||
else:
|
else:
|
||||||
self.f.write('</text:p>\n')
|
self.f.write('</text:p>\n')
|
||||||
self.f.write('</table:table-cell>\n')
|
self.f.write('</table:table-cell>\n')
|
||||||
@ -389,22 +389,22 @@ class ODSDoc(SpreadSheetDoc):
|
|||||||
self.f.close()
|
self.f.close()
|
||||||
|
|
||||||
def start_page(self,name,style_name):
|
def start_page(self,name,style_name):
|
||||||
table = self.table_styles[style_name]
|
table = self.table_styles[style_name]
|
||||||
self.f.write('<table:table table:name="')
|
self.f.write('<table:table table:name="')
|
||||||
self.f.write(name)
|
self.f.write(name)
|
||||||
self.f.write('" table:style-name="')
|
self.f.write('" table:style-name="')
|
||||||
self.f.write(style_name)
|
self.f.write(style_name)
|
||||||
self.f.write('">\n')
|
self.f.write('">\n')
|
||||||
for col in range(0,table.get_columns()):
|
for col in range(0,table.get_columns()):
|
||||||
self.f.write('<table:table-column table:style-name="')
|
self.f.write('<table:table-column table:style-name="')
|
||||||
self.f.write(style_name + '_' + str(col) +'"/>\n')
|
self.f.write(style_name + '_' + str(col) +'"/>\n')
|
||||||
|
|
||||||
def end_page(self):
|
def end_page(self):
|
||||||
self.f.write('</table:table>\n')
|
self.f.write('</table:table>\n')
|
||||||
|
|
||||||
def write_text(self,text,mark=None):
|
def write_text(self,text,mark=None):
|
||||||
if text == "":
|
if text == "":
|
||||||
return
|
return
|
||||||
if self.content == 0:
|
if self.content == 0:
|
||||||
self.f.write('<text:p>')
|
self.f.write('<text:p>')
|
||||||
self.content = 1
|
self.content = 1
|
||||||
@ -413,7 +413,7 @@ class ODSDoc(SpreadSheetDoc):
|
|||||||
text = text.replace('>','>')
|
text = text.replace('>','>')
|
||||||
text = text.replace('\t','<text:tab-stop/>')
|
text = text.replace('\t','<text:tab-stop/>')
|
||||||
text = text.replace('\n','<text:line-break/>')
|
text = text.replace('\n','<text:line-break/>')
|
||||||
self.f.write(unicode(text))
|
self.f.write(unicode(text))
|
||||||
|
|
||||||
def _write_manifest(self):
|
def _write_manifest(self):
|
||||||
self.manifest_xml = tempfile.mktemp()
|
self.manifest_xml = tempfile.mktemp()
|
||||||
|
@ -145,7 +145,7 @@ class ODSTab(TabbedDoc):
|
|||||||
self.f.write('</table:table-row>\n')
|
self.f.write('</table:table-row>\n')
|
||||||
|
|
||||||
def write_cell(self, text):
|
def write_cell(self, text):
|
||||||
self.f.write('<table:table-cell office:value-type="string">')
|
self.f.write('<table:table-cell office:value-type="string">')
|
||||||
self.f.write('>\n')
|
self.f.write('>\n')
|
||||||
|
|
||||||
self.f.write('<text:p>')
|
self.f.write('<text:p>')
|
||||||
@ -154,7 +154,7 @@ class ODSTab(TabbedDoc):
|
|||||||
text = text.replace('>','>')
|
text = text.replace('>','>')
|
||||||
text = text.replace('\t','<text:tab-stop/>')
|
text = text.replace('\t','<text:tab-stop/>')
|
||||||
text = text.replace('\n','<text:line-break/>')
|
text = text.replace('\n','<text:line-break/>')
|
||||||
self.f.write(unicode(text))
|
self.f.write(unicode(text))
|
||||||
|
|
||||||
self.f.write('</text:p>\n')
|
self.f.write('</text:p>\n')
|
||||||
self.f.write('</table:table-cell>\n')
|
self.f.write('</table:table-cell>\n')
|
||||||
@ -342,8 +342,8 @@ class ODSTab(TabbedDoc):
|
|||||||
|
|
||||||
def start_page(self):
|
def start_page(self):
|
||||||
self.f.write('<table:table table:name="ta1">')
|
self.f.write('<table:table table:name="ta1">')
|
||||||
for col in range(0,self.columns):
|
for col in range(0,self.columns):
|
||||||
self.f.write('<table:table-column table:style-name="co1"/>\n')
|
self.f.write('<table:table-column table:style-name="co1"/>\n')
|
||||||
|
|
||||||
def end_page(self):
|
def end_page(self):
|
||||||
self.f.write('</table:table>\n')
|
self.f.write('</table:table>\n')
|
||||||
|
@ -155,7 +155,7 @@ class PSDrawDoc(BaseDoc.BaseDoc,BaseDoc.DrawDoc):
|
|||||||
self.f.close()
|
self.f.close()
|
||||||
if self.print_req:
|
if self.print_req:
|
||||||
if print_label == _("Print a copy"):
|
if print_label == _("Print a copy"):
|
||||||
run_print_dialog (self.filename)
|
run_print_dialog (self.filename)
|
||||||
elif print_label:
|
elif print_label:
|
||||||
app = Mime.get_application(_apptype)
|
app = Mime.get_application(_apptype)
|
||||||
Utils.launch(app[0],self.filename)
|
Utils.launch(app[0],self.filename)
|
||||||
|
@ -42,7 +42,7 @@ class SpreadSheetDoc:
|
|||||||
self.font = BaseDoc.FontStyle()
|
self.font = BaseDoc.FontStyle()
|
||||||
self.actfont = self.font
|
self.actfont = self.font
|
||||||
self.style_list = {}
|
self.style_list = {}
|
||||||
self.table_styles = {}
|
self.table_styles = {}
|
||||||
self.cell_styles = {}
|
self.cell_styles = {}
|
||||||
self.name = ""
|
self.name = ""
|
||||||
|
|
||||||
|
@ -26,11 +26,11 @@ class LongOpStatus(GrampsDBCallback):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def long(self):
|
def long(self):
|
||||||
status = LongOpStatus("doing long job", 100, 10)
|
status = LongOpStatus("doing long job", 100, 10)
|
||||||
|
|
||||||
for i in xrange(0,99):
|
for i in xrange(0,99):
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
status.heartbeat()
|
status.heartbeat()
|
||||||
|
|
||||||
status.end()
|
status.end()
|
||||||
|
|
||||||
@ -38,19 +38,19 @@ class LongOpStatus(GrampsDBCallback):
|
|||||||
class MyListener(object):
|
class MyListener(object):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._op = MyClass()
|
self._op = MyClass()
|
||||||
self._op.connect('op-start', self.start)
|
self._op.connect('op-start', self.start)
|
||||||
self._current_op = None
|
self._current_op = None
|
||||||
|
|
||||||
def start(self,long_op):
|
def start(self,long_op):
|
||||||
self._current_op.connect('op-heartbeat', self.heartbeat)
|
self._current_op.connect('op-heartbeat', self.heartbeat)
|
||||||
self._current_op.connect('op-end', self.stop)
|
self._current_op.connect('op-end', self.stop)
|
||||||
|
|
||||||
def hearbeat(self):
|
def hearbeat(self):
|
||||||
# update status display
|
# update status display
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
# close the status display
|
# close the status display
|
||||||
self._current_op = None
|
self._current_op = None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ class LongOpStatus(GrampsDBCallback):
|
|||||||
|
|
||||||
@return: estimated seconds to complete.
|
@return: estimated seconds to complete.
|
||||||
@rtype: int
|
@rtype: int
|
||||||
"""
|
"""
|
||||||
return self._secs_left
|
return self._secs_left
|
||||||
|
|
||||||
def cancel(self):
|
def cancel(self):
|
||||||
|
@ -376,7 +376,7 @@ class DescendChart(Report):
|
|||||||
self.doc.draw_line('DC2-line', xlast, ystop, xnext, ystop)
|
self.doc.draw_line('DC2-line', xlast, ystop, xnext, ystop)
|
||||||
|
|
||||||
if x%2:
|
if x%2:
|
||||||
phys_x +=1
|
phys_x +=1
|
||||||
phys_y += 1
|
phys_y += 1
|
||||||
|
|
||||||
if not self.force_fit:
|
if not self.force_fit:
|
||||||
|
@ -179,11 +179,11 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
|
|||||||
_("No matches found"),
|
_("No matches found"),
|
||||||
_("No potential duplicate people were found"))
|
_("No potential duplicate people were found"))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
ShowMatches(self.dbstate,self.uistate,self.track,
|
ShowMatches(self.dbstate,self.uistate,self.track,
|
||||||
self.list,self.map,self.update)
|
self.list,self.map,self.update)
|
||||||
except Errors.WindowActiveError:
|
except Errors.WindowActiveError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def find_potentials(self,thresh):
|
def find_potentials(self,thresh):
|
||||||
self.progress = Utils.ProgressMeter(_('Find duplicates'),
|
self.progress = Utils.ProgressMeter(_('Find duplicates'),
|
||||||
@ -336,12 +336,12 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
|
|||||||
f2 = self.db.get_family_from_handle(f2_id)
|
f2 = self.db.get_family_from_handle(f2_id)
|
||||||
dad1_id = f1.get_father_handle()
|
dad1_id = f1.get_father_handle()
|
||||||
if dad1_id:
|
if dad1_id:
|
||||||
dad1 = get_name_obj(self.db.get_person_from_handle(dad1_id))
|
dad1 = get_name_obj(self.db.get_person_from_handle(dad1_id))
|
||||||
else:
|
else:
|
||||||
dad1 = None
|
dad1 = None
|
||||||
dad2_id = f2.get_father_handle()
|
dad2_id = f2.get_father_handle()
|
||||||
if dad2_id:
|
if dad2_id:
|
||||||
dad2 = get_name_obj(self.db.get_person_from_handle(dad2_id))
|
dad2 = get_name_obj(self.db.get_person_from_handle(dad2_id))
|
||||||
else:
|
else:
|
||||||
dad2 = None
|
dad2 = None
|
||||||
|
|
||||||
@ -354,12 +354,12 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
|
|||||||
|
|
||||||
mom1_id = f1.get_mother_handle()
|
mom1_id = f1.get_mother_handle()
|
||||||
if mom1_id:
|
if mom1_id:
|
||||||
mom1 = get_name_obj(self.db.get_person_from_handle(mom1_id))
|
mom1 = get_name_obj(self.db.get_person_from_handle(mom1_id))
|
||||||
else:
|
else:
|
||||||
mom1 = None
|
mom1 = None
|
||||||
mom2_id = f2.get_mother_handle()
|
mom2_id = f2.get_mother_handle()
|
||||||
if mom2_id:
|
if mom2_id:
|
||||||
mom2 = get_name_obj(self.db.get_person_from_handle(mom2_id))
|
mom2 = get_name_obj(self.db.get_person_from_handle(mom2_id))
|
||||||
else:
|
else:
|
||||||
mom2 = None
|
mom2 = None
|
||||||
|
|
||||||
|
@ -275,9 +275,9 @@ class RelGraphReport(Report):
|
|||||||
color = self.colors['unknown']
|
color = self.colors['unknown']
|
||||||
elif self.colorize == 'filled':
|
elif self.colorize == 'filled':
|
||||||
if style != "":
|
if style != "":
|
||||||
style += ",filled"
|
style += ",filled"
|
||||||
else:
|
else:
|
||||||
style = "filled"
|
style = "filled"
|
||||||
if gender == person.MALE:
|
if gender == person.MALE:
|
||||||
fill = self.colors['male']
|
fill = self.colors['male']
|
||||||
elif gender == person.FEMALE:
|
elif gender == person.FEMALE:
|
||||||
@ -512,3 +512,4 @@ register_report(
|
|||||||
author_email ="brian@gramps-project.org"
|
author_email ="brian@gramps-project.org"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -462,8 +462,8 @@ class MarkerOptions(ReportOptions):
|
|||||||
nextint = self.max_non_custom+1
|
nextint = self.max_non_custom+1
|
||||||
custommarkers = dialog.db.get_marker_types()
|
custommarkers = dialog.db.get_marker_types()
|
||||||
for item in custommarkers:
|
for item in custommarkers:
|
||||||
int_to_string_map[nextint] = item
|
int_to_string_map[nextint] = item
|
||||||
nextint += 1
|
nextint += 1
|
||||||
|
|
||||||
marker_index = 0
|
marker_index = 0
|
||||||
for int, str in int_to_string_map.items() :
|
for int, str in int_to_string_map.items() :
|
||||||
|
@ -232,9 +232,9 @@ class BasePage:
|
|||||||
return of
|
return of
|
||||||
|
|
||||||
def link_path(self,name,path):
|
def link_path(self,name,path):
|
||||||
path = "%s/%s/%s" % (path,name[0].lower(),name[1].lower())
|
path = "%s/%s/%s" % (path,name[0].lower(),name[1].lower())
|
||||||
path = self.build_name(path,name)
|
path = self.build_name(path,name)
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def create_link_file(self,name,path):
|
def create_link_file(self,name,path):
|
||||||
self.cur_name = self.link_path(name,path)
|
self.cur_name = self.link_path(name,path)
|
||||||
@ -1708,8 +1708,8 @@ class IndividualPage(BasePage):
|
|||||||
family = self.db.get_family_from_handle(handle)
|
family = self.db.get_family_from_handle(handle)
|
||||||
media_list += family.get_media_list()
|
media_list += family.get_media_list()
|
||||||
for evt_ref in family.get_event_ref_list():
|
for evt_ref in family.get_event_ref_list():
|
||||||
event = self.db.get_event_from_handle(evt_ref.ref)
|
event = self.db.get_event_from_handle(evt_ref.ref)
|
||||||
media_list += event.get_media_list()
|
media_list += event.get_media_list()
|
||||||
for evt_ref in self.person.get_primary_event_ref_list():
|
for evt_ref in self.person.get_primary_event_ref_list():
|
||||||
event = self.db.get_event_from_handle(evt_ref.ref)
|
event = self.db.get_event_from_handle(evt_ref.ref)
|
||||||
if event:
|
if event:
|
||||||
|
@ -267,7 +267,7 @@ class PHPGedViewConnector:
|
|||||||
result.append(line.strip())
|
result.append(line.strip())
|
||||||
line = f.readline()
|
line = f.readline()
|
||||||
if len(result) > 0:
|
if len(result) > 0:
|
||||||
return result
|
return result
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ class Extract:
|
|||||||
if place_handle:
|
if place_handle:
|
||||||
place = self.db.get_place_from_handle(place_handle).get_title()
|
place = self.db.get_place_from_handle(place_handle).get_title()
|
||||||
if place:
|
if place:
|
||||||
places.append(place)
|
places.append(place)
|
||||||
else:
|
else:
|
||||||
places.append(_("Place missing"))
|
places.append(_("Place missing"))
|
||||||
return places
|
return places
|
||||||
@ -503,15 +503,15 @@ class StatisticsChart(Report):
|
|||||||
'year_from': year_from,
|
'year_from': year_from,
|
||||||
'year_to': year_to
|
'year_to': year_to
|
||||||
}
|
}
|
||||||
self.progress = ProgressMeter(_('Statistics Charts'))
|
self.progress = ProgressMeter(_('Statistics Charts'))
|
||||||
|
|
||||||
# extract requested items from the database and count them
|
# extract requested items from the database and count them
|
||||||
self.progress.set_pass(_('Collecting data...'), 1)
|
self.progress.set_pass(_('Collecting data...'), 1)
|
||||||
tables = _Extract.collect_data(database, filterfun, options,
|
tables = _Extract.collect_data(database, filterfun, options,
|
||||||
gender, year_from, year_to, options['no_years'])
|
gender, year_from, year_to, options['no_years'])
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
|
|
||||||
self.progress.set_pass(_('Sorting data...'), len(tables))
|
self.progress.set_pass(_('Sorting data...'), len(tables))
|
||||||
self.data = []
|
self.data = []
|
||||||
sortby = options['sortby']
|
sortby = options['sortby']
|
||||||
reverse = options['reverse']
|
reverse = options['reverse']
|
||||||
@ -525,8 +525,8 @@ class StatisticsChart(Report):
|
|||||||
else:
|
else:
|
||||||
heading = _("Persons born %(year_from)04d-%(year_to)04d: %(chart_title)s") % mapping
|
heading = _("Persons born %(year_from)04d-%(year_to)04d: %(chart_title)s") % mapping
|
||||||
self.data.append((heading, table[0], table[1], lookup))
|
self.data.append((heading, table[0], table[1], lookup))
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
#DEBUG
|
#DEBUG
|
||||||
#print heading
|
#print heading
|
||||||
#print table[1]
|
#print table[1]
|
||||||
|
|
||||||
@ -558,7 +558,7 @@ class StatisticsChart(Report):
|
|||||||
def write_report(self):
|
def write_report(self):
|
||||||
"output the selected statistics..."
|
"output the selected statistics..."
|
||||||
|
|
||||||
self.progress.set_pass(_('Saving charts...'), len(self.data))
|
self.progress.set_pass(_('Saving charts...'), len(self.data))
|
||||||
for data in self.data:
|
for data in self.data:
|
||||||
self.doc.start_page()
|
self.doc.start_page()
|
||||||
if len(data[2]) < self.bar_items:
|
if len(data[2]) < self.bar_items:
|
||||||
@ -566,8 +566,8 @@ class StatisticsChart(Report):
|
|||||||
else:
|
else:
|
||||||
self.output_barchart(data[0], data[1], data[2], data[3])
|
self.output_barchart(data[0], data[1], data[2], data[3])
|
||||||
self.doc.end_page()
|
self.doc.end_page()
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
self.progress.close()
|
self.progress.close()
|
||||||
|
|
||||||
|
|
||||||
def output_piechart(self, title, typename, data, lookup):
|
def output_piechart(self, title, typename, data, lookup):
|
||||||
@ -591,8 +591,8 @@ class StatisticsChart(Report):
|
|||||||
chart_data.append((style, data[key], text))
|
chart_data.append((style, data[key], text))
|
||||||
color = (color+1) % 7 # There are only 7 color styles defined
|
color = (color+1) % 7 # There are only 7 color styles defined
|
||||||
|
|
||||||
margin = 1.0
|
margin = 1.0
|
||||||
legendx = 2.0
|
legendx = 2.0
|
||||||
|
|
||||||
# output data...
|
# output data...
|
||||||
radius = middle - 2*margin
|
radius = middle - 2*margin
|
||||||
@ -600,8 +600,8 @@ class StatisticsChart(Report):
|
|||||||
ReportUtils.draw_pie_chart(self.doc, middle, yoffset, radius, chart_data, -90)
|
ReportUtils.draw_pie_chart(self.doc, middle, yoffset, radius, chart_data, -90)
|
||||||
yoffset = yoffset + radius + margin
|
yoffset = yoffset + radius + margin
|
||||||
|
|
||||||
text = _("%s (persons):") % typename
|
text = _("%s (persons):") % typename
|
||||||
ReportUtils.draw_legend(self.doc, legendx, yoffset, chart_data, text,'SC-legend')
|
ReportUtils.draw_legend(self.doc, legendx, yoffset, chart_data, text,'SC-legend')
|
||||||
|
|
||||||
|
|
||||||
def output_barchart(self, title, typename, data, lookup):
|
def output_barchart(self, title, typename, data, lookup):
|
||||||
@ -622,10 +622,10 @@ class StatisticsChart(Report):
|
|||||||
for key in lookup:
|
for key in lookup:
|
||||||
max_value = max(data[key], max_value)
|
max_value = max(data[key], max_value)
|
||||||
# horizontal area for the gfx bars
|
# horizontal area for the gfx bars
|
||||||
margin = 1.0
|
margin = 1.0
|
||||||
middle = width/2.0
|
middle = width/2.0
|
||||||
textx = middle + margin/2.0
|
textx = middle + margin/2.0
|
||||||
stopx = middle - margin/2.0
|
stopx = middle - margin/2.0
|
||||||
maxsize = stopx - margin
|
maxsize = stopx - margin
|
||||||
|
|
||||||
# start output
|
# start output
|
||||||
@ -634,10 +634,10 @@ class StatisticsChart(Report):
|
|||||||
yoffset = pt2cm(pstyle.get_font().get_size())
|
yoffset = pt2cm(pstyle.get_font().get_size())
|
||||||
#print title
|
#print title
|
||||||
|
|
||||||
# header
|
# header
|
||||||
yoffset += (row_h + pad)
|
yoffset += (row_h + pad)
|
||||||
text = _("%s (persons):") % typename
|
text = _("%s (persons):") % typename
|
||||||
self.doc.draw_text('SC-text', text, textx, yoffset)
|
self.doc.draw_text('SC-text', text, textx, yoffset)
|
||||||
|
|
||||||
for key in lookup:
|
for key in lookup:
|
||||||
yoffset += (row_h + pad)
|
yoffset += (row_h + pad)
|
||||||
@ -651,8 +651,8 @@ class StatisticsChart(Report):
|
|||||||
value = data[key]
|
value = data[key]
|
||||||
startx = stopx - (maxsize * value / max_value)
|
startx = stopx - (maxsize * value / max_value)
|
||||||
self.doc.draw_box('SC-bar',"",startx,yoffset,stopx-startx,row_h)
|
self.doc.draw_box('SC-bar',"",startx,yoffset,stopx-startx,row_h)
|
||||||
# text after bar
|
# text after bar
|
||||||
text = "%s (%d)" % (key, data[key])
|
text = "%s (%d)" % (key, data[key])
|
||||||
self.doc.draw_text('SC-text', text, textx, yoffset)
|
self.doc.draw_text('SC-text', text, textx, yoffset)
|
||||||
#print key + ":",
|
#print key + ":",
|
||||||
|
|
||||||
|
@ -539,9 +539,9 @@ class WebReport(Report):
|
|||||||
if first:
|
if first:
|
||||||
first = False
|
first = False
|
||||||
if day_col > 1:
|
if day_col > 1:
|
||||||
of.write(' <td colspan="%s" class="cal_cell"> </td>\n' % str(day_col))
|
of.write(' <td colspan="%s" class="cal_cell"> </td>\n' % str(day_col))
|
||||||
elif day_col == 1:
|
elif day_col == 1:
|
||||||
of.write(' <td class="cal_cell"> </td>\n')
|
of.write(' <td class="cal_cell"> </td>\n')
|
||||||
of.write(' <td class="%s">%s' % (cellclass,str(thisday.day)))
|
of.write(' <td class="%s">%s' % (cellclass,str(thisday.day)))
|
||||||
something_this_week = 1
|
something_this_week = 1
|
||||||
if list > []:
|
if list > []:
|
||||||
@ -570,7 +570,7 @@ class WebReport(Report):
|
|||||||
if week_row == 5:
|
if week_row == 5:
|
||||||
of.write(' class="cal_note">')
|
of.write(' class="cal_note">')
|
||||||
if self.Note[month-1].strip() != '':
|
if self.Note[month-1].strip() != '':
|
||||||
of.write(self.Note[month-1])
|
of.write(self.Note[month-1])
|
||||||
else:
|
else:
|
||||||
of.write(" ")
|
of.write(" ")
|
||||||
of.write('</td>\n')
|
of.write('</td>\n')
|
||||||
|
@ -332,7 +332,7 @@ class GeneWebWriter:
|
|||||||
return
|
return
|
||||||
|
|
||||||
if reflist:
|
if reflist:
|
||||||
for sr in reflist:
|
for sr in reflist:
|
||||||
sbase = sr.get_reference_handle()
|
sbase = sr.get_reference_handle()
|
||||||
if sbase:
|
if sbase:
|
||||||
source = self.db.get_source_from_handle(sbase)
|
source = self.db.get_source_from_handle(sbase)
|
||||||
|
@ -375,7 +375,7 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
if other_person.get_gender() == gen.lib.Person.MALE:
|
if other_person.get_gender() == gen.lib.Person.MALE:
|
||||||
return (self.get_nephew(firstRel-secondRel,secondRel),common)
|
return (self.get_nephew(firstRel-secondRel,secondRel),common)
|
||||||
else:
|
else:
|
||||||
return (self.get_niece(firstRel-secondRel,secondRel),common)
|
return (self.get_niece(firstRel-secondRel,secondRel),common)
|
||||||
else: # obviously secondRel == firstRel
|
else: # obviously secondRel == firstRel
|
||||||
if other_person.get_gender() == gen.lib.Person.MALE:
|
if other_person.get_gender() == gen.lib.Person.MALE:
|
||||||
return (self.get_male_cousin(firstRel-1),common)
|
return (self.get_male_cousin(firstRel-1),common)
|
||||||
|
@ -274,20 +274,20 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
# other_level+orig_level=stopień pokrewieństwa (degree of kinship)
|
# other_level+orig_level=stopień pokrewieństwa (degree of kinship)
|
||||||
|
|
||||||
def get_junior_male_cousin_father_uncle(self,other_level,orig_level):
|
def get_junior_male_cousin_father_uncle(self,other_level,orig_level):
|
||||||
if other_level == orig_level == 2:
|
if other_level == orig_level == 2:
|
||||||
return "brat stryjeczny"
|
return "brat stryjeczny"
|
||||||
else:
|
else:
|
||||||
return "daleki kuzyn (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
return "daleki kuzyn (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
||||||
|
|
||||||
def get_junior_male_cousin_mother_uncle(self,other_level,orig_level):
|
def get_junior_male_cousin_mother_uncle(self,other_level,orig_level):
|
||||||
if other_level == orig_level == 2:
|
if other_level == orig_level == 2:
|
||||||
return "brat wujeczny"
|
return "brat wujeczny"
|
||||||
else:
|
else:
|
||||||
return "daleki kuzyn (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
return "daleki kuzyn (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
||||||
|
|
||||||
def get_junior_male_cousin_aunt(self,other_level,orig_level):
|
def get_junior_male_cousin_aunt(self,other_level,orig_level):
|
||||||
if other_level == orig_level == 2:
|
if other_level == orig_level == 2:
|
||||||
return "brat cioteczny"
|
return "brat cioteczny"
|
||||||
else:
|
else:
|
||||||
return "daleki kuzyn (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
return "daleki kuzyn (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
||||||
|
|
||||||
@ -304,20 +304,20 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
return "daleki %s (%d. stopień pokrewieństwa)" % (_brother_level_of_female[level],other_level+orig_level)
|
return "daleki %s (%d. stopień pokrewieństwa)" % (_brother_level_of_female[level],other_level+orig_level)
|
||||||
|
|
||||||
def get_junior_female_cousin_father_uncle(self,other_level,orig_level):
|
def get_junior_female_cousin_father_uncle(self,other_level,orig_level):
|
||||||
if other_level == orig_level == 2:
|
if other_level == orig_level == 2:
|
||||||
return "siostra stryjeczna"
|
return "siostra stryjeczna"
|
||||||
else:
|
else:
|
||||||
return "daleka kuzynka (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
return "daleka kuzynka (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
||||||
|
|
||||||
def get_junior_female_cousin_mother_uncle(self,other_level,orig_level):
|
def get_junior_female_cousin_mother_uncle(self,other_level,orig_level):
|
||||||
if other_level == orig_level == 2:
|
if other_level == orig_level == 2:
|
||||||
return "siostra wujeczna"
|
return "siostra wujeczna"
|
||||||
else:
|
else:
|
||||||
return "daleka kuzynka (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
return "daleka kuzynka (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
||||||
|
|
||||||
def get_junior_female_cousin_aunt(self,other_level,orig_level):
|
def get_junior_female_cousin_aunt(self,other_level,orig_level):
|
||||||
if other_level == orig_level == 2:
|
if other_level == orig_level == 2:
|
||||||
return "siostra cioteczna"
|
return "siostra cioteczna"
|
||||||
else:
|
else:
|
||||||
return "daleka kuzynka (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
return "daleka kuzynka (%d. stopień pokrewieństwa)" % (other_level+orig_level)
|
||||||
|
|
||||||
@ -349,14 +349,14 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
|
|
||||||
def get_mother(self,other_level,orig_level):
|
def get_mother(self,other_level,orig_level):
|
||||||
level=other_level
|
level=other_level
|
||||||
if level>len(_mother_level)-1:
|
if level>len(_mother_level)-1:
|
||||||
return "oddalona pra*babcia (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalona pra*babcia (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _mother_level[level]
|
return _mother_level[level]
|
||||||
|
|
||||||
def get_daughter(self,other_level,orig_level):
|
def get_daughter(self,other_level,orig_level):
|
||||||
level=orig_level
|
level=orig_level
|
||||||
if level>len(_daughter_level)-1:
|
if level>len(_daughter_level)-1:
|
||||||
return "oddalona pra*wnuczka (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalona pra*wnuczka (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _daughter_level[level]
|
return _daughter_level[level]
|
||||||
@ -390,56 +390,56 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
return _brother_level_of_female[level]
|
return _brother_level_of_female[level]
|
||||||
|
|
||||||
def get_nephew_of_brothers_son(self,other_level,orig_level):
|
def get_nephew_of_brothers_son(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_nephew_level_of_brothers_son)-1:
|
if level>len(_nephew_level_of_brothers_son)-1:
|
||||||
return "oddalony pra*wnuk bratanka (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalony pra*wnuk bratanka (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _nephew_level_of_brothers_son[level]
|
return _nephew_level_of_brothers_son[level]
|
||||||
|
|
||||||
def get_nephew_of_brothers_daughter(self,other_level,orig_level):
|
def get_nephew_of_brothers_daughter(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_nephew_level_of_brothers_daughter)-1:
|
if level>len(_nephew_level_of_brothers_daughter)-1:
|
||||||
return "oddalony pra*wnuk bratanicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalony pra*wnuk bratanicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _nephew_level_of_brothers_daughter[level]
|
return _nephew_level_of_brothers_daughter[level]
|
||||||
|
|
||||||
def get_nephew_of_sisters_son(self,other_level,orig_level):
|
def get_nephew_of_sisters_son(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_nephew_level_of_sisters_son)-1:
|
if level>len(_nephew_level_of_sisters_son)-1:
|
||||||
return "oddalony pra*wnuk siostrzeńca (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalony pra*wnuk siostrzeńca (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _nephew_level_of_sisters_son[level]
|
return _nephew_level_of_sisters_son[level]
|
||||||
|
|
||||||
def get_nephew_of_sisters_daughter(self,other_level,orig_level):
|
def get_nephew_of_sisters_daughter(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_nephew_level_of_sisters_daughter)-1:
|
if level>len(_nephew_level_of_sisters_daughter)-1:
|
||||||
return "oddalony pra*wnuk siostrzenicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalony pra*wnuk siostrzenicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _nephew_level_of_sisters_daughter[level]
|
return _nephew_level_of_sisters_daughter[level]
|
||||||
|
|
||||||
def get_niece_of_brothers_son(self,other_level,orig_level):
|
def get_niece_of_brothers_son(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_niece_level_of_brothers_son)-1:
|
if level>len(_niece_level_of_brothers_son)-1:
|
||||||
return "oddalona pra*wnuczka bratanka (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalona pra*wnuczka bratanka (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _niece_level_of_brothers_son[level]
|
return _niece_level_of_brothers_son[level]
|
||||||
|
|
||||||
def get_niece_of_brothers_daughter(self,other_level,orig_level):
|
def get_niece_of_brothers_daughter(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_niece_level_of_brothers_daughter)-1:
|
if level>len(_niece_level_of_brothers_daughter)-1:
|
||||||
return "oddalona pra*wnuczka bratanicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalona pra*wnuczka bratanicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _niece_level_of_brothers_daughter[level]
|
return _niece_level_of_brothers_daughter[level]
|
||||||
|
|
||||||
def get_niece_of_sisters_son(self,other_level,orig_level):
|
def get_niece_of_sisters_son(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_niece_level_of_sisters_son)-1:
|
if level>len(_niece_level_of_sisters_son)-1:
|
||||||
return "oddalona pra*wnuczka siostrzeńca (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalona pra*wnuczka siostrzeńca (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
return _niece_level_of_sisters_son[level]
|
return _niece_level_of_sisters_son[level]
|
||||||
|
|
||||||
def get_niece_of_sisters_daughter(self,other_level,orig_level):
|
def get_niece_of_sisters_daughter(self,other_level,orig_level):
|
||||||
level=orig_level-1
|
level=orig_level-1
|
||||||
if level>len(_niece_level_of_sisters_daughter)-1:
|
if level>len(_niece_level_of_sisters_daughter)-1:
|
||||||
return "oddalona pra*wnuczka siostrzenicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
return "oddalona pra*wnuczka siostrzenicy (%d. stopień pokrewieństwa)" %(other_level+orig_level)
|
||||||
else:
|
else:
|
||||||
@ -688,7 +688,7 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
else:
|
else:
|
||||||
return (self.get_senior_female_cousin_of_female(secondRel-firstRel+1,firstRel,secondRel),common)
|
return (self.get_senior_female_cousin_of_female(secondRel-firstRel+1,firstRel,secondRel),common)
|
||||||
else:
|
else:
|
||||||
families1 = db.get_person_from_handle(common[0]).get_family_handle_list()
|
families1 = db.get_person_from_handle(common[0]).get_family_handle_list()
|
||||||
families2 = None
|
families2 = None
|
||||||
if len(common) >1:
|
if len(common) >1:
|
||||||
families2 = db.get_person_from_handle(common[1]).get_family_handle_list()
|
families2 = db.get_person_from_handle(common[1]).get_family_handle_list()
|
||||||
@ -704,32 +704,32 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
children = ancFamily.get_child_ref_list()
|
children = ancFamily.get_child_ref_list()
|
||||||
for sibling_handle in children:
|
for sibling_handle in children:
|
||||||
if sibling_handle.ref in firstList:
|
if sibling_handle.ref in firstList:
|
||||||
for other_sibling_handle in children:
|
for other_sibling_handle in children:
|
||||||
if other_sibling_handle.ref in secondList:
|
if other_sibling_handle.ref in secondList:
|
||||||
sibling = db.get_person_from_handle(sibling_handle.ref)
|
sibling = db.get_person_from_handle(sibling_handle.ref)
|
||||||
other_sibling = db.get_person_from_handle(other_sibling_handle.ref)
|
other_sibling = db.get_person_from_handle(other_sibling_handle.ref)
|
||||||
if other_person.get_gender() == gen.lib.Person.MALE:
|
if other_person.get_gender() == gen.lib.Person.MALE:
|
||||||
if other_sibling.get_gender() == gen.lib.Person.MALE:
|
if other_sibling.get_gender() == gen.lib.Person.MALE:
|
||||||
if sibling.get_gender() == gen.lib.Person.MALE:
|
if sibling.get_gender() == gen.lib.Person.MALE:
|
||||||
# brat stryjeczny
|
# brat stryjeczny
|
||||||
return (self.get_junior_male_cousin_father_uncle(secondRel,firstRel),common)
|
return (self.get_junior_male_cousin_father_uncle(secondRel,firstRel),common)
|
||||||
else:
|
else:
|
||||||
# brat wujeczny
|
# brat wujeczny
|
||||||
return (self.get_junior_male_cousin_mother_uncle(secondRel,firstRel),common)
|
return (self.get_junior_male_cousin_mother_uncle(secondRel,firstRel),common)
|
||||||
else:
|
else:
|
||||||
# brat cioteczny
|
# brat cioteczny
|
||||||
return (self.get_junior_male_cousin_aunt(secondRel,firstRel),common)
|
return (self.get_junior_male_cousin_aunt(secondRel,firstRel),common)
|
||||||
else:
|
else:
|
||||||
if other_sibling.get_gender() == gen.lib.Person.MALE:
|
if other_sibling.get_gender() == gen.lib.Person.MALE:
|
||||||
if sibling.get_gender() == gen.lib.Person.MALE:
|
if sibling.get_gender() == gen.lib.Person.MALE:
|
||||||
# siostra stryjeczna
|
# siostra stryjeczna
|
||||||
return (self.get_junior_female_cousin_father_uncle(secondRel,firstRel),common)
|
return (self.get_junior_female_cousin_father_uncle(secondRel,firstRel),common)
|
||||||
else:
|
else:
|
||||||
# siostra wujeczna
|
# siostra wujeczna
|
||||||
return (self.get_junior_female_cousin_mother_uncle(secondRel,firstRel),common)
|
return (self.get_junior_female_cousin_mother_uncle(secondRel,firstRel),common)
|
||||||
else:
|
else:
|
||||||
# siostra cioteczna
|
# siostra cioteczna
|
||||||
return (self.get_junior_female_cousin_aunt(secondRel,firstRel),common)
|
return (self.get_junior_female_cousin_aunt(secondRel,firstRel),common)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -93,7 +93,7 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
item = ""
|
item = ""
|
||||||
result.append(word)
|
result.append(word)
|
||||||
continue
|
continue
|
||||||
if item:
|
if item:
|
||||||
if word == 'syster':
|
if word == 'syster':
|
||||||
item = item[0:-1]
|
item = item[0:-1]
|
||||||
word = 'ster'
|
word = 'ster'
|
||||||
@ -186,11 +186,11 @@ class RelationshipCalculator(Relationship.RelationshipCalculator):
|
|||||||
removed = len(rel_string_long)-len(rel_string_short)-1
|
removed = len(rel_string_long)-len(rel_string_short)-1
|
||||||
level = len(rel_string_short)-1
|
level = len(rel_string_short)-1
|
||||||
if level:
|
if level:
|
||||||
result.append(self._get_cousin(level,step,inlaw))
|
result.append(self._get_cousin(level,step,inlaw))
|
||||||
elif rel_string_long[removed] == 'f':
|
elif rel_string_long[removed] == 'f':
|
||||||
result.append('bror')
|
result.append('bror')
|
||||||
else:
|
else:
|
||||||
result.append('syster')
|
result.append('syster')
|
||||||
for ix in range(removed-1,-1,-1):
|
for ix in range(removed-1,-1,-1):
|
||||||
if rel_string_long[ix] == 'f':
|
if rel_string_long[ix] == 'f':
|
||||||
result.append('son')
|
result.append('son')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user