Final translations
svn: r439
This commit is contained in:
parent
f4e0704b2a
commit
f9004fd84e
@ -190,10 +190,16 @@ def loadData(database, filename, callback=None):
|
||||
|
||||
if __name__ == "__main__":
|
||||
import profile
|
||||
import cPickle
|
||||
|
||||
database = RelDataBase()
|
||||
t1 = time.time()
|
||||
profile.run('loadData(database, sys.argv[1])')
|
||||
#loadData(database,sys.argv[1])
|
||||
#profile.run('loadData(database, sys.argv[1])')
|
||||
loadData(database,sys.argv[1])
|
||||
t2 = time.time()
|
||||
print t2-t1
|
||||
f = gzip.open("autosave","w")
|
||||
p = cPickle.dump(database,f)
|
||||
f.close()
|
||||
t3 = time.time()
|
||||
print t3-t2
|
||||
|
@ -550,4 +550,4 @@ def exportData(database, filename, callback):
|
||||
|
||||
g.write("</database>\n")
|
||||
g.close()
|
||||
|
||||
|
||||
|
@ -75,7 +75,7 @@ gtkrcFile = rootDir + os.sep + "gtkrc"
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
progName = "gramps"
|
||||
version = "0.5.1pre"
|
||||
version = "0.5.1"
|
||||
copyright = "(C) 2001 Donald N. Allingham"
|
||||
authors = ["Donald N. Allingham"]
|
||||
comments = _("Gramps (Genealogical Research and Analysis Management Programming System) is a personal genealogy program that can be extended by using the Python programming language.")
|
||||
|
@ -3005,7 +3005,7 @@ def menu_report(obj,task):
|
||||
#-------------------------------------------------------------------------
|
||||
def menu_tools(obj,task):
|
||||
if active_person:
|
||||
task(database,active_person,update_display)
|
||||
task(database,active_person,tool_callback)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
Binary file not shown.
@ -1,562 +0,0 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000 Donald N. Allingham
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
"Generate files/Individual web pages"
|
||||
|
||||
from RelLib import *
|
||||
import const
|
||||
import utils
|
||||
import intl
|
||||
_ = intl.gettext
|
||||
|
||||
import os
|
||||
import re
|
||||
import sort
|
||||
import string
|
||||
import time
|
||||
|
||||
from gtk import *
|
||||
from gnome.ui import *
|
||||
from libglade import *
|
||||
|
||||
titleRe = re.compile(r"<TITLE>")
|
||||
active_person = None
|
||||
db = None
|
||||
topDialog = None
|
||||
glade_file = None
|
||||
ind_list = []
|
||||
restrict = 1
|
||||
restrict_photos = 0
|
||||
no_photos = 0
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def individual_filter(database,person,list):
|
||||
list.append(person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def ancestor_filter(database,person,list):
|
||||
|
||||
if person == None:
|
||||
return
|
||||
if person not in list:
|
||||
list.append(person)
|
||||
family = person.getMainFamily()
|
||||
if family != None:
|
||||
ancestor_filter(database,family.getFather(),list)
|
||||
ancestor_filter(database,family.getMother(),list)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def descendant_filter(database,person,list):
|
||||
|
||||
if person == None or person in list:
|
||||
return
|
||||
if person not in list:
|
||||
list.append(person)
|
||||
for family in person.getFamilyList():
|
||||
for child in family.getChildList():
|
||||
descendant_filter(database,child,list)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def an_des_filter(database,person,list):
|
||||
|
||||
descendant_filter(database,person,list)
|
||||
ancestor_filter(database,person,list)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def entire_db_filter(database,person,list):
|
||||
|
||||
for entry in database.getPersonMap().values():
|
||||
list.append(entry)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def an_des_of_gparents_filter(database,person,list):
|
||||
|
||||
my_list = []
|
||||
|
||||
family = person.getMainFamily()
|
||||
if family == None:
|
||||
return
|
||||
|
||||
mother = family.getMother()
|
||||
father = family.getFather()
|
||||
if mother:
|
||||
mfamily = mother.getMainFamily()
|
||||
if mfamily:
|
||||
if mfamily.getFather():
|
||||
my_list.append(mfamily.getFather())
|
||||
if mfamily.getMother():
|
||||
my_list.append(mfamily.getMother())
|
||||
if father:
|
||||
ffamily = father.getMainFamily()
|
||||
if ffamily:
|
||||
if ffamily.getFather():
|
||||
my_list.append(ffamily.getFather())
|
||||
if ffamily.getMother():
|
||||
my_list.append(ffamily.getMother())
|
||||
|
||||
for person in my_list:
|
||||
descendant_filter(database,person,list)
|
||||
ancestor_filter(database,person,list)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
filter_map = {
|
||||
_("Individual") : individual_filter,
|
||||
_("Ancestors") : ancestor_filter,
|
||||
_("Descendants") : descendant_filter,
|
||||
_("Ancestors and descendants") : an_des_filter,
|
||||
_("Grandparent's ancestors and descendants") : an_des_of_gparents_filter,
|
||||
_("Entire database") : entire_db_filter
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def probably_alive(person):
|
||||
|
||||
if person == None:
|
||||
return 1
|
||||
|
||||
if restrict == 0:
|
||||
return 0
|
||||
|
||||
death = person.getDeath()
|
||||
birth = person.getBirth()
|
||||
|
||||
if death.getDate() != "":
|
||||
return 0
|
||||
if birth.getDate() != "":
|
||||
year = birth.getDateObj().get_start_date().getYear()
|
||||
time_struct = time.localtime(time.time())
|
||||
current_year = time_struct[0]
|
||||
if year != -1 and current_year - year > 110:
|
||||
return 0
|
||||
return 1
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
global active_person
|
||||
global topDialog
|
||||
global glade_file
|
||||
global db
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
|
||||
base = os.path.dirname(__file__)
|
||||
glade_file = base + os.sep + "htmlreport.glade"
|
||||
dic = {
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_nophotos_toggled" : on_nophotos_toggled,
|
||||
"on_ok_clicked" : on_ok_clicked,
|
||||
}
|
||||
|
||||
topDialog = GladeXML(glade_file,"top")
|
||||
topDialog.signal_autoconnect(dic)
|
||||
|
||||
top = topDialog.get_widget("top")
|
||||
topDialog.get_widget("targetDirectory").set_default_path(os.getcwd())
|
||||
filterName = topDialog.get_widget("filterName")
|
||||
|
||||
popdown_strings = filter_map.keys()
|
||||
popdown_strings.sort()
|
||||
filterName.set_popdown_strings(popdown_strings)
|
||||
|
||||
name = person.getPrimaryName().getName()
|
||||
topDialog.get_widget("personName").set_text(name)
|
||||
topDialog.get_widget("prefix").get_text()
|
||||
|
||||
top.show()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_nophotos_toggled(obj):
|
||||
if obj.get_active():
|
||||
topDialog.get_widget("restrict_photos").set_sensitive(0)
|
||||
else:
|
||||
topDialog.get_widget("restrict_photos").set_sensitive(1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_ok_clicked(obj):
|
||||
global active_person
|
||||
global filter_map
|
||||
global db
|
||||
global glade_file
|
||||
global ind_list
|
||||
global restrict_photos
|
||||
global restrict
|
||||
global no_photos
|
||||
|
||||
start = re.compile(r"<!--\s*START\s*-->")
|
||||
stop = re.compile(r"<!--\s*STOP\s*-->")
|
||||
top = []
|
||||
bottom = []
|
||||
|
||||
filterName = topDialog.get_widget("filter").get_text()
|
||||
directoryName = topDialog.get_widget("targetDirectory").get_full_path(0)
|
||||
templateName = topDialog.get_widget("htmlTemplate").get_full_path(0)
|
||||
prefix = topDialog.get_widget("prefix").get_text()
|
||||
|
||||
restrict = topDialog.get_widget("restrict").get_active()
|
||||
restrict_photos = topDialog.get_widget("restrict_photos").get_active()
|
||||
no_photos = topDialog.get_widget("nophotos").get_active()
|
||||
|
||||
if directoryName == None:
|
||||
directoryName = os.getcwd()
|
||||
elif not os.path.isdir(directoryName):
|
||||
parent_dir = os.path.dirname(directoryName)
|
||||
if not os.path.isdir(parent_dir):
|
||||
GnomeErrorDialog(_("Neither %s nor %s are directories") % \
|
||||
(directoryName,parent_dir))
|
||||
return
|
||||
else:
|
||||
try:
|
||||
os.mkdir(directoryName)
|
||||
except IOError, value:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
directoryName + "\n" + value[1])
|
||||
return
|
||||
except:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
directoryName)
|
||||
return
|
||||
|
||||
if templateName == None:
|
||||
templateName = const.dataDir + os.sep + "family.html"
|
||||
|
||||
try:
|
||||
templateFile = open(templateName,"r")
|
||||
except IOError, value:
|
||||
GnomeErrorDialog(_("Could not open the template file (%s)") % templateName + \
|
||||
"\n" + value[1])
|
||||
return
|
||||
except:
|
||||
GnomeErrorDialog(_("Could not open the template file (%s)") % templateName)
|
||||
return
|
||||
|
||||
top_add = 1
|
||||
bottom_add = 0
|
||||
for line in templateFile.readlines():
|
||||
if top_add == 1:
|
||||
top.append(line)
|
||||
match = start.search(line)
|
||||
if match != None:
|
||||
top_add = 0
|
||||
elif bottom_add == 0:
|
||||
match = stop.search(line)
|
||||
if match != None:
|
||||
bottom_add = 1
|
||||
bottom.append(line)
|
||||
else:
|
||||
bottom.append(line)
|
||||
templateFile.close()
|
||||
|
||||
if top_add == 1:
|
||||
GnomeErrorDialog("The HTML template (" + templateName + ")\n" + \
|
||||
"did not have a '<!-- START -->' comment at the\n" + \
|
||||
"beginning of a line. The comment tells GRAMPS where\n" + \
|
||||
"to insert the data in the template. Please fix the template\n" + \
|
||||
"and try again.")
|
||||
return
|
||||
|
||||
if bottom_add == 0 :
|
||||
GnomeErrorDialog("The HTML template (" + templateName + ")\n" + \
|
||||
"did not have a '<!-- STOP -->' comment at the\n" + \
|
||||
"beginning of a line. The comment tells GRAMPS where\n" + \
|
||||
"to resume the template. Please fix the template\n" + \
|
||||
"and try again.")
|
||||
return
|
||||
|
||||
filter = filter_map[filterName]
|
||||
ind_list = []
|
||||
|
||||
filter(db,active_person,ind_list)
|
||||
|
||||
for person in ind_list:
|
||||
dump_person(person,prefix,top,bottom,directoryName)
|
||||
|
||||
if len(ind_list) > 1:
|
||||
dump_index(ind_list,"index.html",prefix,top,bottom,directoryName)
|
||||
|
||||
utils.destroy_passed_object(obj)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def print_event(html,name,event):
|
||||
if event == None:
|
||||
return
|
||||
|
||||
date = event.getDate()
|
||||
place = event.getPlaceName()
|
||||
|
||||
if date != "" or place != "":
|
||||
html.write("<H2>%s</H2>\n" % name)
|
||||
html.write("<UL>\n")
|
||||
if date != "":
|
||||
html.write("<LI>%s : %s</LI>\n" % (_("Date"),date))
|
||||
if place != "":
|
||||
html.write("<LI>%s : %s</LI>\n" % (_("Place"),place))
|
||||
html.write("</UL>\n")
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def name_or_link(individual, prefix):
|
||||
|
||||
name = individual.getPrimaryName().getRegularName()
|
||||
if individual in ind_list:
|
||||
id = individual.getId()
|
||||
return "<A HREF=\"" + prefix + id + ".html\">" + name + "</A>"
|
||||
else:
|
||||
return name
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def write_reference(html, parent, prefix):
|
||||
if parent != None and parent.getPrimaryName() != None:
|
||||
html.write("<LI>")
|
||||
html.write(name_or_link(parent,prefix))
|
||||
html.write("</LI>\n")
|
||||
|
||||
#########################################################################
|
||||
#
|
||||
# Write a web page for a specific person represented by the key
|
||||
#
|
||||
#########################################################################
|
||||
|
||||
def dump_person(person,prefix,templateTop,templateBottom,targetDir):
|
||||
|
||||
filebase = "%s%s.html" % (prefix,person.getId())
|
||||
html = open(targetDir + os.sep + filebase,"w")
|
||||
|
||||
name = person.getPrimaryName().getRegularName()
|
||||
|
||||
alive = probably_alive(person)
|
||||
|
||||
for line in templateTop:
|
||||
html.write(line)
|
||||
|
||||
regex_match = titleRe.search(line)
|
||||
if regex_match != None:
|
||||
txt = _("Family Tree")
|
||||
html.write("%s - %s\n" % (txt,name) )
|
||||
|
||||
html.write("<H1>%s</H1>\n" % person.getPrimaryName().getRegularName())
|
||||
|
||||
photo_list = person.getPhotoList()
|
||||
|
||||
if no_photos or (alive and restrict_photos == 1):
|
||||
pass
|
||||
elif len(photo_list) > 0:
|
||||
import GdkImlib
|
||||
file = photo_list[0].getPath()
|
||||
image = GdkImlib.Image(file)
|
||||
width = int( (float(image.rgb_width) * 200.0) / float(image.rgb_height))
|
||||
base = os.path.basename(file)
|
||||
image_name = targetDir + os.sep + base
|
||||
cmd = "%s -size %dx200 '%s' '%s'" % (const.convert,width,file,image_name)
|
||||
os.system(cmd)
|
||||
html.write('<IMG SRC="' + base + '" ALT="')
|
||||
html.write(photo_list[0].getDescription())
|
||||
html.write('" WIDTH="' + str(width) + '" HEIGHT="200">\n')
|
||||
|
||||
if not alive:
|
||||
print_event(html,_("Birth"),person.getBirth())
|
||||
print_event(html,_("Death"),person.getDeath())
|
||||
for event in person.getEventList():
|
||||
print_event(html,event.getName(),event)
|
||||
|
||||
family = person.getMainFamily()
|
||||
if family != None:
|
||||
html.write("<H2>%s</H2>\n" % _("Parents"))
|
||||
html.write("<UL>\n")
|
||||
write_reference(html,family.getFather(), prefix)
|
||||
write_reference(html,family.getMother(), prefix)
|
||||
html.write("</UL>\n")
|
||||
|
||||
|
||||
for family in person.getFamilyList():
|
||||
|
||||
html.write("<H2>%s</H2>\n" % _("Spouse"))
|
||||
html.write("<UL>\n")
|
||||
if person.getGender() == Person.male:
|
||||
spouse = family.getMother()
|
||||
else:
|
||||
spouse = family.getFather()
|
||||
|
||||
if spouse == None:
|
||||
name = None
|
||||
spouse_alive = 0
|
||||
else:
|
||||
name = spouse.getPrimaryName()
|
||||
spouse_alive = probably_alive(spouse)
|
||||
|
||||
if name == None or name.getRegularName() == "":
|
||||
txt = _("Spouse's name is not known")
|
||||
html.write("<LI>%s</LI>\n" % txt)
|
||||
else:
|
||||
write_reference(html,spouse,prefix)
|
||||
|
||||
marriage = family.getMarriage()
|
||||
if marriage and not alive and not spouse_alive:
|
||||
place = marriage.getPlaceName()
|
||||
date = marriage.getDate()
|
||||
if place:
|
||||
txt = _("Marriage place")
|
||||
html.write("<LI>%s :%s</LI>\n" % (txt,place))
|
||||
if date:
|
||||
txt = _("Marriage date")
|
||||
html.write("<LI>%s :%s</LI>\n" % (txt,date))
|
||||
|
||||
if spouse:
|
||||
sp_family = spouse.getMainFamily()
|
||||
if sp_family:
|
||||
sp_father = sp_family.getFather()
|
||||
sp_mother = sp_family.getMother()
|
||||
if sp_father and sp_mother:
|
||||
txt = _("Spouse's parents: %s and %s") % \
|
||||
(name_or_link(sp_father,prefix),\
|
||||
name_or_link(sp_mother,prefix))
|
||||
html.write("<LI>%s</LI>\n" % txt)
|
||||
elif sp_father:
|
||||
txt = _("Spouse's father: %s") % \
|
||||
name_or_link(sp_father,prefix)
|
||||
html.write("<LI>%s</LI>\n" % txt)
|
||||
elif sp_mother:
|
||||
txt = _("Spouse's mother: %s") % \
|
||||
name_or_link(sp_mother,prefix)
|
||||
html.write("<LI>%s</LI>\n" % txt)
|
||||
|
||||
html.write("</UL>\n")
|
||||
|
||||
childList = family.getChildList()
|
||||
if len(childList) > 0:
|
||||
html.write("<H3>%s</H3>\n" % _("Children"))
|
||||
html.write("<UL>\n")
|
||||
for child in childList:
|
||||
write_reference(html,child,prefix)
|
||||
html.write("</UL>\n")
|
||||
|
||||
|
||||
note = person.getNote()
|
||||
if note != "":
|
||||
html.write("<H2>%s</H2>\n" % _("Notes"))
|
||||
noteList = string.split(note,"\n")
|
||||
for text in noteList:
|
||||
html.write("<P>" + text + "</P>\n")
|
||||
|
||||
for line in templateBottom:
|
||||
html.write(line)
|
||||
|
||||
html.close()
|
||||
|
||||
#########################################################################
|
||||
#
|
||||
# Write a web page for a specific person represented by the key
|
||||
#
|
||||
#########################################################################
|
||||
|
||||
def dump_index(person_list,filename,prefix,templateTop,templateBottom,targetDir):
|
||||
|
||||
html = open(targetDir + os.sep + filename,"w")
|
||||
|
||||
for line in templateTop:
|
||||
html.write(line)
|
||||
|
||||
regex_match = titleRe.search(line)
|
||||
if regex_match != None:
|
||||
html.write("%s\n" % _("Family Tree - Index"))
|
||||
|
||||
html.write("<H1>%s</H1>\n" % _("Family Tree Index"))
|
||||
|
||||
person_list.sort(sort.by_last_name)
|
||||
for person in person_list:
|
||||
name = person.getPrimaryName().getName()
|
||||
id = person.getId()
|
||||
html.write("<A HREF=\"%s%s.html\">%s</A><BR>\n" % (prefix,id,name))
|
||||
|
||||
for line in templateBottom:
|
||||
html.write(line)
|
||||
|
||||
html.close()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
from Plugins import register_report
|
||||
|
||||
register_report(
|
||||
report,
|
||||
_("Individual web pages"),
|
||||
category=_("Generate Files"),
|
||||
description=_("Generates web (HTML) pages for individuals, or a set of individuals.")
|
||||
)
|
||||
|
@ -496,6 +496,7 @@ class GedcomParser:
|
||||
elif matches[1] == "CHIL":
|
||||
mrel,frel = self.parse_ftw_relations(2)
|
||||
child = self.db.findPerson(matches[2],self.pmap)
|
||||
print child.getPrimaryName().getName(),mrel,frel
|
||||
self.family.addChild(child)
|
||||
if (mrel == "Birth" or mrel == "") and \
|
||||
(frel == "Birth" or frel == "") :
|
||||
|
@ -1,501 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>HtmlReport</name>
|
||||
<program_name>htmlreport</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory>pixmaps</pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GtkWindow</class>
|
||||
<name>top</name>
|
||||
<title>Generate HTML reports</title>
|
||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||
<position>GTK_WIN_POS_CENTER</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<rows>7</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>htmlTemplate</name>
|
||||
<history_id>2</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>HTML Template</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>html_template</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>targetDirectory</name>
|
||||
<width>400</width>
|
||||
<history_id>htmldir</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Target Directory</title>
|
||||
<directory>True</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>combo-entry1</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkSpinButton</class>
|
||||
<name>spinbutton1</name>
|
||||
<can_focus>True</can_focus>
|
||||
<climb_rate>1</climb_rate>
|
||||
<digits>0</digits>
|
||||
<numeric>True</numeric>
|
||||
<update_policy>GTK_UPDATE_ALWAYS</update_policy>
|
||||
<snap>False</snap>
|
||||
<wrap>False</wrap>
|
||||
<value>4</value>
|
||||
<lower>0</lower>
|
||||
<upper>100</upper>
|
||||
<step>1</step>
|
||||
<page>10</page>
|
||||
<page_size>10</page_size>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>5</top_attach>
|
||||
<bottom_attach>6</bottom_attach>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<name>prefix</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>6</top_attach>
|
||||
<bottom_attach>7</bottom_attach>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkCombo</class>
|
||||
<name>filterName</name>
|
||||
<value_in_list>False</value_in_list>
|
||||
<ok_if_empty>True</ok_if_empty>
|
||||
<case_sensitive>False</case_sensitive>
|
||||
<use_arrows>True</use_arrows>
|
||||
<use_arrows_always>False</use_arrows_always>
|
||||
<items></items>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>4</top_attach>
|
||||
<bottom_attach>5</bottom_attach>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GtkCombo:entry</child_name>
|
||||
<name>filter</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>False</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>personName</name>
|
||||
<label>Person</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator1</name>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label3</name>
|
||||
<label>Target Directory</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>4</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label4</name>
|
||||
<label>HTML Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>4</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label6</name>
|
||||
<label>Filter</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>4</top_attach>
|
||||
<bottom_attach>5</bottom_attach>
|
||||
<xpad>4</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label7</name>
|
||||
<label>File Prefix</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>6</top_attach>
|
||||
<bottom_attach>7</bottom_attach>
|
||||
<xpad>4</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label5</name>
|
||||
<label>Generations</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>5</top_attach>
|
||||
<bottom_attach>6</bottom_attach>
|
||||
<xpad>4</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>options</name>
|
||||
<border_width>10</border_width>
|
||||
<label>Privacy Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkCheckButton</class>
|
||||
<name>restrict</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Restrict information on living people</label>
|
||||
<active>True</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkCheckButton</class>
|
||||
<name>nophotos</name>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>toggled</name>
|
||||
<handler>on_nophotos_toggled</handler>
|
||||
<last_modification_time>Sat, 31 Mar 2001 21:59:36 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Do not use images</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkCheckButton</class>
|
||||
<name>restrict_photos</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Do not use images for living people</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<name>hbuttonbox1</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>30</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>ok</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_ok_clicked</handler>
|
||||
<object>top</object>
|
||||
<last_modification_time>Sun, 12 Nov 2000 00:45:16 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button2</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>top</object>
|
||||
<last_modification_time>Sun, 12 Nov 2000 00:45:38 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
1765
src/po/fr.po
1765
src/po/fr.po
File diff suppressed because it is too large
Load Diff
@ -2387,7 +2387,7 @@ msgid "Pe_digree"
|
||||
msgstr "_Anor"
|
||||
|
||||
#: glade.c:1087
|
||||
msgid "Pedigree"
|
||||
msgid "Pedegree"
|
||||
msgstr "Anor"
|
||||
|
||||
#: glade.c:1090 glade.c:1789
|
||||
|
Loading…
Reference in New Issue
Block a user