Faster loading of pages, Improvements to filters

svn: r1340
This commit is contained in:
Don Allingham
2003-03-12 03:02:08 +00:00
parent 6ec5b41dd1
commit 177c14d082
14 changed files with 499 additions and 454 deletions

View File

@ -50,6 +50,7 @@ import gtk
import const import const
import RelLib import RelLib
import Date import Date
import Calendar
from intl import gettext as _ from intl import gettext as _
from Utils import for_each_ancestor from Utils import for_each_ancestor
@ -61,9 +62,9 @@ from Utils import for_each_ancestor
def date_cmp(rule,value): def date_cmp(rule,value):
sd = rule.get_start_date() sd = rule.get_start_date()
s = sd.mode s = sd.mode
if s == Date.SingleDate.before: if s == Calendar.BEFORE:
return Date.compare_dates(rule,value) == 1 return Date.compare_dates(rule,value) == 1
elif s == Date.SingleDate.after: elif s == Calendar.AFTER:
return Date.compare_dates(rule,value) == -1 return Date.compare_dates(rule,value) == -1
elif sd.month == Date.UNDEF and sd.year != Date.UNDEF: elif sd.month == Date.UNDEF and sd.year != Date.UNDEF:
return sd.year == value.get_start_date().year return sd.year == value.get_start_date().year
@ -325,13 +326,16 @@ class HasEvent(Rule):
val = 1 val = 1
if self.list[0] and event.getName() != self.list[0]: if self.list[0] and event.getName() != self.list[0]:
val = 0 val = 0
if self.list[3] and find(event.getDescription(),self.list[3])==-1: if self.list[3] and find(event.getDescription().upper(),
self.list[3].upper())==-1:
val = 0 val = 0
if self.date: if self.date:
if date_cmp(self.date,event.getDateObj()): if date_cmp(self.date,event.getDateObj()):
val = 0 val = 0
if self.list[2] and find(p.getPlaceName(),self.list[2]) == -1: if self.list[2]:
val = 0 pn = event.getPlaceName()
if find(pn.upper(),self.list[2].upper()) == -1:
val = 0
if val == 1: if val == 1:
return 1 return 1
return 0 return 0
@ -365,12 +369,13 @@ class HasFamilyEvent(Rule):
if self.list[0] and event.getName() != self.list[0]: if self.list[0] and event.getName() != self.list[0]:
val = 0 val = 0
v = self.list[3] v = self.list[3]
if v and find(event.getDescription(),v)==-1: if v and find(event.getDescription().upper(),v.upper())==-1:
val = 0 val = 0
if self.date: if self.date:
if date_cmp(self.date,event.getDateObj()): if date_cmp(self.date,event.getDateObj()):
val = 0 val = 0
if self.list[2] and find(p.getPlaceName(),self.list[2]) == -1: pn = event.getPlaceName().upper()
if self.list[2] and find(pn,self.list[2].upper()) == -1:
val = 0 val = 0
if val == 1: if val == 1:
return 1 return 1
@ -449,12 +454,14 @@ class HasBirth(Rule):
def apply(self,db,p): def apply(self,db,p):
event = p.getBirth() event = p.getBirth()
if len(self.list) > 2 and find(event.getDescription(),self.list[2])==-1: ed = event.getDescription().upper()
if len(self.list) > 2 and find(ed,self.list[2].upper())==-1:
return 0 return 0
if self.date: if self.date:
if date_cmp(self.date,event.getDateObj()) == 0: if date_cmp(self.date,event.getDateObj()) == 0:
return 0 return 0
if len(self.list) > 1 and find(event.getPlaceName(),self.list[1]) == -1: pn = event.getPlaceName().upper()
if len(self.list) > 1 and find(pn,self.list[1].upper()) == -1:
return 0 return 0
return 1 return 1
@ -481,12 +488,14 @@ class HasDeath(Rule):
def apply(self,db,p): def apply(self,db,p):
event = p.getDeath() event = p.getDeath()
if self.list[2] and find(event.getDescription(),self.list[2])==-1: ed = event.getDescription().upper()
if self.list[2] and find(ed,self.list[2].upper())==-1:
return 0 return 0
if self.date: if self.date:
if date_cmp(self.date,event.getDateObj()) == 0: if date_cmp(self.date,event.getDateObj()) == 0:
return 0 return 0
if self.list[1] and find(p.getPlaceName(),self.list[1]) == -1: pn = p.getPlaceName().upper()
if self.list[1] and find(pn,self.list[1].upper()) == -1:
return 0 return 0
return 1 return 1
@ -507,7 +516,8 @@ class HasAttribute(Rule):
for event in p.getAttributes(): for event in p.getAttributes():
if self.list[0] and event.getType() != self.list[0]: if self.list[0] and event.getType() != self.list[0]:
return 0 return 0
if self.list[1] and find(event.getValue(),self.list[1])==-1: ev = event.getValue().upper()
if self.list[1] and find(ev,self.list[1].upper())==-1:
return 0 return 0
return 1 return 1
@ -530,7 +540,8 @@ class HasFamilyAttribute(Rule):
val = 1 val = 1
if self.list[0] and event.getType() != self.list[0]: if self.list[0] and event.getType() != self.list[0]:
val = 0 val = 0
if self.list[1] and find(event.getValue(),self.list[1])==-1: ev = event.getValue().upper()
if self.list[1] and find(ev,self.list[1].upper())==-1:
val = 0 val = 0
if val == 1: if val == 1:
return 1 return 1
@ -556,13 +567,13 @@ class HasNameOf(Rule):
self.t = self.list[3] self.t = self.list[3]
for name in [p.getPrimaryName()] + p.getAlternateNames(): for name in [p.getPrimaryName()] + p.getAlternateNames():
val = 1 val = 1
if self.f and find(name.getFirstName(),self.f) == -1: if self.f and find(name.getFirstName().upper(),self.f.upper()) == -1:
val = 0 val = 0
if self.l and find(name.getSurname(),self.l) == -1: if self.l and find(name.getSurname().upper(),self.l.upper()) == -1:
val = 0 val = 0
if self.s and find(name.getSuffix(),self.s) == -1: if self.s and find(name.getSuffix().upper(),self.s.upper()) == -1:
val = 0 val = 0
if self.t and find(name.getTitle(),self.t) == -1: if self.t and find(name.getTitle().upper(),self.t.upper()) == -1:
val = 0 val = 0
if val == 1: if val == 1:
return 1 return 1
@ -638,6 +649,9 @@ class GenericFilter:
def add_rule(self,rule): def add_rule(self,rule):
self.flist.append(rule) self.flist.append(rule)
def delete_rule(self,rule):
self.flist.remove(rule)
def set_rules(self,rules): def set_rules(self,rules):
self.flist = rules self.flist = rules
@ -756,8 +770,9 @@ class GenericFilterList:
parser = make_parser() parser = make_parser()
parser.setContentHandler(FilterParser(self)) parser.setContentHandler(FilterParser(self))
if self.file[0:7] != "file://": if self.file[0:7] != "file://":
self.file = "file://" + self.file parser.parse("file://" + self.file)
parser.parse(self.file) else:
parser.parse(self.file)
except (IOError,OSError,SAXParseException): except (IOError,OSError,SAXParseException):
pass pass
@ -769,10 +784,12 @@ class GenericFilterList:
return replace(l,'"','"') return replace(l,'"','"')
def save(self): def save(self):
try: # try:
f = open(self.file,'w') # f = open(self.file,'w')
except: # except:
return # return
f = open(self.file,'w')
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n") f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
f.write('<filters>\n') f.write('<filters>\n')
@ -878,45 +895,18 @@ if not CustomFilters:
def build_filter_menu(local_filters = []): def build_filter_menu(local_filters = []):
menu = gtk.Menu() menu = gtk.Menu()
menuitem = gtk.MenuItem(_("Local Filters"))
menu.append(menuitem)
menuitem.show()
menuitem.set_sensitive(0)
menuitem = gtk.MenuItem()
menuitem.show()
menu.append(menuitem)
for filter in local_filters: for filter in local_filters:
menuitem = gtk.MenuItem(filter.get_name()) menuitem = gtk.MenuItem(filter.get_name())
menuitem.show() menuitem.show()
menu.append(menuitem) menu.append(menuitem)
menuitem.set_data("filter", filter) menuitem.set_data("filter", filter)
menuitem = gtk.MenuItem(_("System Filters"))
menuitem.show()
menu.append(menuitem)
menuitem.set_sensitive(0)
menuitem = gtk.MenuItem()
menuitem.show()
menu.append(menuitem)
for filter in SystemFilters.get_filters(): for filter in SystemFilters.get_filters():
menuitem = gtk.MenuItem(_(filter.get_name())) menuitem = gtk.MenuItem(_(filter.get_name()))
menuitem.show() menuitem.show()
menu.append(menuitem) menu.append(menuitem)
menuitem.set_data("filter", filter) menuitem.set_data("filter", filter)
menuitem = gtk.MenuItem(_("Custom Filters"))
menu.append(menuitem)
menuitem.show()
menuitem.set_sensitive(0)
menuitem = gtk.MenuItem()
menuitem.show()
menu.append(menuitem)
for filter in CustomFilters.get_filters(): for filter in CustomFilters.get_filters():
menuitem = gtk.MenuItem(_(filter.get_name())) menuitem = gtk.MenuItem(_(filter.get_name()))
menuitem.show() menuitem.show()

View File

@ -84,13 +84,13 @@ except:
# Constants # Constants
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
_HOMEPAGE = "http://gramps.sourceforge.net" _HOMEPAGE = "http://gramps.sourceforge.net"
_MAILLIST = "http://sourceforge.net/mail/?group_id=25770" _MAILLIST = "http://sourceforge.net/mail/?group_id=25770"
_BUGREPORT = "http://sourceforge.net/tracker/?group_id=25770&atid=385137" _BUGREPORT = "http://sourceforge.net/tracker/?group_id=25770&atid=385137"
pl_titles = [ (_('Name'),5,250), (_('ID'),1,50),(_('Gender'),2,70), pl_titles = [ (_('Name'),5,250), (_('ID'),1,50),(_('Gender'),2,70),
(_('Birth date'),6,150),(_('Death date'),7,150), ('',5,0), (_('Birth date'),6,150),(_('Death date'),7,150), ('',5,0),
('',6,0), ('',7,0) ] ('',6,0), ('',7,0) ]
_sel_mode = gtk.SELECTION_MULTIPLE _sel_mode = gtk.SELECTION_MULTIPLE
@ -103,6 +103,8 @@ class Gramps:
def __init__(self,arg): def __init__(self,arg):
import sys
self.program = gnome.program_init("gramps",const.version) self.program = gnome.program_init("gramps",const.version)
self.DataFilter = Filter.Filter("") self.DataFilter = Filter.Filter("")
@ -199,6 +201,7 @@ class Gramps:
self.alpha_page = {} self.alpha_page = {}
self.model2page = {} self.model2page = {}
self.model_used = {}
self.tab_list = [] self.tab_list = []
self.filter_list = self.gtop.get_widget("filter_list") self.filter_list = self.gtop.get_widget("filter_list")
@ -315,14 +318,13 @@ class Gramps:
self.enable_sidebar(self.use_sidebar) self.enable_sidebar(self.use_sidebar)
self.enable_filter(self.use_filter) self.enable_filter(self.use_filter)
# WarningDialog("This is a non-stable, prerelease version of GRAMPS.\n"
# "Significant bugs may exist in this version, so please "
# "use at your own risk.")
def change_alpha_page(self,obj,junk,page): def change_alpha_page(self,obj,junk,page):
self.person_tree = self.pl_page[page] self.person_tree = self.pl_page[page]
self.person_list = self.pl_page[page].tree self.person_list = self.pl_page[page].tree
self.person_model = self.pl_page[page].model self.person_model = self.pl_page[page].model
if not self.model_used.has_key(self.person_tree) or self.model_used[self.person_tree] == 0:
self.model_used[self.person_tree] = 1
self.apply_filter(self.person_tree)
def edit_button_clicked(self,obj): def edit_button_clicked(self,obj):
cpage = self.notebook.get_current_page() cpage = self.notebook.get_current_page()
@ -564,7 +566,7 @@ class Gramps:
"""Prompt for permission to close the current database""" """Prompt for permission to close the current database"""
QuestionDialog(_('Create a New Database'), QuestionDialog(_('Create a New Database'),
_('Creating a new database will close the existing database, ', _('Creating a new database will close the existing database, '
'discarding any unsaved changes. You will then be prompted ' 'discarding any unsaved changes. You will then be prompted '
'to create a new database'), 'to create a new database'),
_('Create New Database'), _('Create New Database'),
@ -589,6 +591,7 @@ class Gramps:
self.tab_list = [] self.tab_list = []
self.alpha_page = {} self.alpha_page = {}
self.model2page = {} self.model2page = {}
self.model_used = {}
self.person_tree = self.pl_page[-1] self.person_tree = self.pl_page[-1]
self.person_list = self.pl_page[-1].tree self.person_list = self.pl_page[-1].tree
@ -717,6 +720,7 @@ class Gramps:
_('Load saved database'), _('Load saved database'),
self.loadsaved_file) self.loadsaved_file)
else: else:
self.active_person = None
self.read_file(filename) self.read_file(filename)
def autosave_query(self): def autosave_query(self):
@ -939,12 +943,19 @@ class Gramps:
def goto_active_person(self): def goto_active_person(self):
if not self.active_person: if not self.active_person:
self.person_tree = self.pl_page[0]
self.person_list = self.pl_page[0].tree
self.person_model = self.pl_page[0].model
self.ptabs.set_current_page(0) self.ptabs.set_current_page(0)
return return
id = self.active_person.getId() id = self.active_person.getId()
if self.id2col.has_key(id): if self.id2col.has_key(id):
(model,iter) = self.id2col[id] (model,iter) = self.id2col[id]
self.ptabs.set_current_page(self.model2page[model]) self.ptabs.set_current_page(self.model2page[model])
if self.model_used[model] == 0:
self.model_used[model] = 1
self.apply_filter(model)
model.selection.unselect_all() model.selection.unselect_all()
model.selection.select_iter(iter); model.selection.select_iter(iter);
itpath = model.model.get_path(iter) itpath = model.model.get_path(iter)
@ -958,6 +969,7 @@ class Gramps:
val = 1 val = 1
else: else:
val = 0 val = 0
self.report_menu.set_sensitive(val) self.report_menu.set_sensitive(val)
self.tools_menu.set_sensitive(val) self.tools_menu.set_sensitive(val)
self.report_button.set_sensitive(val) self.report_button.set_sensitive(val)
@ -1328,13 +1340,33 @@ class Gramps:
for key in keys: for key in keys:
self.alpha_page[key].new_model() self.alpha_page[key].new_model()
self.id2col = {} self.id2col = {}
self.apply_filter() self.model_used = {}
for key in self.db.getPersonKeys():
person = self.db.getPerson(key)
val = self.db.getPersonDisplay(key)
pg = val[5]
if pg:
pg = pg[0]
else:
pg = ''
if pg != '@':
if not self.alpha_page.has_key(pg):
self.create_new_panel(pg)
model = self.alpha_page[pg]
else:
model = self.default_list
# self.apply_filter()
for key in keys: for key in keys:
self.alpha_page[key].connect_model() self.alpha_page[key].connect_model()
self.goto_active_person()
self.modify_statusbar() self.modify_statusbar()
def apply_filter(self): def apply_filter(self,current_model=None):
self.status_text(_('Updating display...'))
datacomp = self.DataFilter.compare datacomp = self.DataFilter.compare
for key in self.db.getPersonKeys(): for key in self.db.getPersonKeys():
@ -1356,15 +1388,18 @@ class Gramps:
else: else:
model = self.default_list model = self.default_list
iter = model.add([val[0],val[1],val[2],val[3],val[4],val[5], if current_model == None or current_model == model:
val[6],val[7]],key) iter = model.add([val[0],val[1],val[2],val[3],val[4],val[5],
self.id2col[key] = (model,iter) val[6],val[7]],key)
self.id2col[key] = (model,iter)
else: else:
if self.id2col.has_key(key): if self.id2col.has_key(key):
(model,iter) = self.id2col[key] (model,iter) = self.id2col[key]
model.remove(iter) if current_model == None or current_model == model:
model.remove(iter)
for i in self.pl_page: for i in self.pl_page:
i.sort() i.sort()
self.modify_statusbar()
def create_new_panel(self,pg): def create_new_panel(self,pg):
display = gtk.ScrolledWindow() display = gtk.ScrolledWindow()
@ -1395,7 +1430,9 @@ class Gramps:
for index in range(0,len(self.tab_list)): for index in range(0,len(self.tab_list)):
model = self.alpha_page[self.tab_list[index]] model = self.alpha_page[self.tab_list[index]]
self.model2page[model] = index self.model2page[model] = index
self.model_used[model] = 0
self.model2page[self.default_list] = len(self.tab_list) self.model2page[self.default_list] = len(self.tab_list)
self.model_used[self.default_list] = 0
def on_home_clicked(self,obj): def on_home_clicked(self,obj):
temp = self.db.getDefaultPerson() temp = self.db.getDefaultPerson()

View File

@ -71,6 +71,10 @@ class DesBrowse:
"destroy_passed_object" : Utils.destroy_passed_object, "destroy_passed_object" : Utils.destroy_passed_object,
}) })
top = self.glade.get_widget("top") top = self.glade.get_widget("top")
Utils.set_titles(top,self.glade.get_widget('title'),
_("Descendant Browser"))
self.tree= self.glade.get_widget("tree1") self.tree= self.glade.get_widget("tree1")
col = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0) col = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
self.tree.append_column(col) self.tree.append_column(col)

View File

@ -46,6 +46,7 @@ import sort
import Utils import Utils
import TextDoc import TextDoc
import OpenSpreadSheet import OpenSpreadSheet
import const
from QuestionDialog import WarningDialog from QuestionDialog import WarningDialog
from intl import gettext as _ from intl import gettext as _
@ -131,20 +132,34 @@ class EventComparison:
self.filterDialog = gtk.glade.XML(self.glade_file,"filters") self.filterDialog = gtk.glade.XML(self.glade_file,"filters")
self.filterDialog.signal_autoconnect({ self.filterDialog.signal_autoconnect({
"on_apply_clicked" : self.on_apply_clicked, "on_apply_clicked" : self.on_apply_clicked,
"on_editor_clicked" : self.filter_editor_clicked,
"on_filter_list_enter" : self.filter_list_enter,
"destroy_passed_object" : Utils.destroy_passed_object "destroy_passed_object" : Utils.destroy_passed_object
}) })
top =self.filterDialog.get_widget("filters") top =self.filterDialog.get_widget("filters")
filters = self.filterDialog.get_widget("filter_list") self.filters = self.filterDialog.get_widget("filter_list")
all = GenericFilter.GenericFilter() Utils.set_titles(top,self.filterDialog.get_widget('title'),
all.set_name(_("Entire Database")) _('Event comparison filter selection'))
all.add_rule(GenericFilter.Everyone([]))
self.filter_menu = GenericFilter.build_filter_menu([all]) self.all = GenericFilter.GenericFilter()
filters.set_menu(self.filter_menu) self.all.set_name(_("Entire Database"))
self.all.add_rule(GenericFilter.Everyone([]))
self.filter_menu = GenericFilter.build_filter_menu([self.all])
self.filters.set_menu(self.filter_menu)
top.show() top.show()
def filter_editor_clicked(self,obj):
import FilterEditor
FilterEditor.FilterEditor(const.custom_filters,self.db)
def filter_list_enter(self,obj):
self.filter_menu = GenericFilter.build_filter_menu([self.all])
self.filters.set_menu(self.filter_menu)
def on_apply_clicked(self,obj): def on_apply_clicked(self,obj):
cfilter = self.filter_menu.get_active().get_data("filter") cfilter = self.filter_menu.get_active().get_data("filter")
@ -201,6 +216,9 @@ class DisplayChart:
self.top = self.topDialog.get_widget("view") self.top = self.topDialog.get_widget("view")
self.eventlist = self.topDialog.get_widget('treeview') self.eventlist = self.topDialog.get_widget('treeview')
Utils.set_titles(self.top, self.topDialog.get_widget('title'),
_('Event Comparison'))
self.my_list.sort(sort.by_last_name) self.my_list.sort(sort.by_last_name)

View File

@ -114,7 +114,7 @@ class FilterEditor:
def delete_filter(self,obj): def delete_filter(self,obj):
store,iter = self.clist.get_selected() store,iter = self.clist.get_selected()
if iter: if iter:
fil = self.clist.get_object(iter) filter = self.clist.get_object(iter)
self.filterdb.get_filters().remove(filter) self.filterdb.get_filters().remove(filter)
self.draw_filters() self.draw_filters()
@ -313,8 +313,11 @@ class FilterEditor:
self.draw_rules() self.draw_rules()
def rule_changed(self,obj): def rule_changed(self,obj):
page = self.name2page[obj.get_text()] try:
self.notebook.set_current_page(page) page = self.name2page[obj.get_text()]
self.notebook.set_current_page(page)
except:
pass
def rule_ok(self,obj): def rule_ok(self,obj):
name = self.rname.entry.get_text() name = self.rname.entry.get_text()
@ -325,9 +328,9 @@ class FilterEditor:
value_list.append(x.get_text()) value_list.append(x.get_text())
new_rule = c(value_list) new_rule = c(value_list)
store,iter = self.rlist.get_selected() store,iter = self.rlist.get_selected()
if iter: # if iter:
rule = self.rlist.get_object(iter) # rule = self.rlist.get_object(iter)
self.filter.delete_rule(rule) # self.filter.delete_rule(rule)
self.filter.add_rule(new_rule) self.filter.add_rule(new_rule)
self.draw_rules() self.draw_rules()
self.rule_top.destroy() self.rule_top.destroy()
@ -339,8 +342,11 @@ class ShowResults:
def __init__(self,plist): def __init__(self,plist):
self.glade = gtk.glade.XML(const.filterFile,'test') self.glade = gtk.glade.XML(const.filterFile,'test')
self.top = self.glade.get_widget('test') self.top = self.glade.get_widget('test')
self.top.set_title('%s - GRAMPS' % _('Test Filter'))
text = self.glade.get_widget('text') text = self.glade.get_widget('text')
Utils.set_titles(self.top, self.glade.get_widget('title'),
_('Filter Test'))
self.glade.signal_autoconnect({ self.glade.signal_autoconnect({
'on_close_clicked' : self.close, 'on_close_clicked' : self.close,
}) })

View File

@ -525,7 +525,7 @@ class IndivSummaryDialog(Report.TextReportDialog):
font.set_size(12) font.set_size(12)
p = TextDoc.ParagraphStyle() p = TextDoc.ParagraphStyle()
p.set_font(font) p.set_font(font)
para.set_description(_('The basic style used for the text display.')) p.set_description(_('The basic style used for the text display.'))
self.default_style.add_style("Normal",p) self.default_style.add_style("Normal",p)
def setup_report_options(self): def setup_report_options(self):

View File

@ -368,7 +368,7 @@ class IndivSummaryDialog(Report.TextReportDialog):
font.set_size(12) font.set_size(12)
p = TextDoc.ParagraphStyle() p = TextDoc.ParagraphStyle()
p.set_font(font) p.set_font(font)
para.set_description(_('The basic style used for the text display.')) p.set_description(_('The basic style used for the text display.'))
self.default_style.add_style("Normal",p) self.default_style.add_style("Normal",p)
def setup_report_options(self): def setup_report_options(self):

View File

@ -121,6 +121,9 @@ class Merge:
self.menu = top.get_widget("menu") self.menu = top.get_widget("menu")
self.menu.set_menu(my_menu) self.menu.set_menu(my_menu)
Utils.set_titles(top.get_widget('dialog'), top.get_widget('title'),
_('Merge people'))
top.signal_autoconnect({ top.signal_autoconnect({
"on_merge_ok_clicked" : self.on_merge_ok_clicked, "on_merge_ok_clicked" : self.on_merge_ok_clicked,
"destroy_passed_object" : Utils.destroy_passed_object "destroy_passed_object" : Utils.destroy_passed_object
@ -134,7 +137,7 @@ class Merge:
self.show() self.show()
def progress_update(self,val): def progress_update(self,val):
self.progress.update(val/100.0) self.progress.set_fraction(val/100.0)
while gtk.events_pending(): while gtk.events_pending():
gtk.mainiteration() gtk.mainiteration()
@ -142,8 +145,10 @@ class Merge:
top = gtk.glade.XML(self.glade_file,"message") top = gtk.glade.XML(self.glade_file,"message")
self.topWin = top.get_widget("message") self.topWin = top.get_widget("message")
self.progress = top.get_widget("progressbar1") self.progress = top.get_widget("progressbar1")
self.topWin.show()
Utils.set_titles(self.topWin,top.get_widget('title'),
_('Determining possible merges'))
index = 0 index = 0
males = {} males = {}
@ -205,6 +210,10 @@ class Merge:
def show(self): def show(self):
top = gtk.glade.XML(self.glade_file,"mergelist") top = gtk.glade.XML(self.glade_file,"mergelist")
self.window = top.get_widget("mergelist") self.window = top.get_widget("mergelist")
Utils.set_titles(self.window, top.get_widget('title'),
_('Potential Merges'))
self.mlist = top.get_widget("mlist") self.mlist = top.get_widget("mlist")
top.signal_autoconnect({ top.signal_autoconnect({
"destroy_passed_object" : Utils.destroy_passed_object, "destroy_passed_object" : Utils.destroy_passed_object,

View File

@ -147,7 +147,7 @@ def importData(database, filename, cb=None):
except Errors.GedcomError, val: except Errors.GedcomError, val:
msg = str(val) msg = str(val)
Utils.destroy_passed_object(statusWindow) Utils.destroy_passed_object(statusWindow)
gnome.ui.GnomeErrorDialog(msg) ErrorDialog(msg)
return return
except: except:
import DisplayTrace import DisplayTrace

View File

@ -147,6 +147,7 @@ class TimeLine:
def write_report(self): def write_report(self):
(low,high) = self.find_year_range() (low,high) = self.find_year_range()
st_size = self.name_size() st_size = self.name_size()
font = self.d.style_list['Name'].get_font() font = self.d.style_list['Name'].get_font()
@ -273,12 +274,17 @@ class TimeLine:
high = max(high,b) high = max(high,b)
if d != Date.UNDEF: if d != Date.UNDEF:
low = min(low,b) low = min(low,d)
high = max(high,b) high = max(high,d)
low = (low/10)*10 low = (low/10)*10
high = ((high+9)/10)*10 high = ((high+9)/10)*10
if low == Date.UNDEF:
low = high
if high == Date.UNDEF:
high = low
return (low,high) return (low,high)
def name_size(self): def name_size(self):
@ -370,7 +376,7 @@ class TimeLineDialog(Report.DrawReportDialog):
f.set_type_face(TextDoc.FONT_SANS_SERIF) f.set_type_face(TextDoc.FONT_SANS_SERIF)
p = TextDoc.ParagraphStyle() p = TextDoc.ParagraphStyle()
p.set_font(f) p.set_font(f)
para.set_description(_("The style used for the person's name.")) p.set_description(_("The style used for the person's name."))
self.default_style.add_style("Name",p) self.default_style.add_style("Name",p)
f = TextDoc.FontStyle() f = TextDoc.FontStyle()
@ -378,7 +384,7 @@ class TimeLineDialog(Report.DrawReportDialog):
f.set_type_face(TextDoc.FONT_SANS_SERIF) f.set_type_face(TextDoc.FONT_SANS_SERIF)
p = TextDoc.ParagraphStyle() p = TextDoc.ParagraphStyle()
p.set_font(f) p.set_font(f)
para.set_description(_("The style used for the year labels.")) p.set_description(_("The style used for the year labels."))
self.default_style.add_style("Label",p) self.default_style.add_style("Label",p)
f = TextDoc.FontStyle() f = TextDoc.FontStyle()

View File

@ -1,147 +1,119 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd" > <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface> <glade-interface>
<widget class="GtkDialog" id="top">
<property name="title" translatable="yes">Descendant Browser - GRAMPS</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="modal">no</property>
<property name="allow_shrink">yes</property>
<property name="allow_grow">yes</property>
<property name="visible">yes</property>
<property name="window-position">GTK_WIN_POS_NONE</property>
<child internal-child="vbox"> <widget class="GtkDialog" id="top">
<widget class="GtkVBox" id="dialog-vbox1"> <property name="visible">True</property>
<property name="homogeneous">no</property> <property name="title" translatable="yes"></property>
<property name="spacing">0</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="visible">yes</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="default_width">450</property>
<property name="default_height">400</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<child internal-child="action_area"> <child internal-child="vbox">
<widget class="GtkHButtonBox" id="dialog-action_area1"> <widget class="GtkVBox" id="dialog-vbox1">
<property name="border_width">10</property> <property name="visible">True</property>
<property name="homogeneous">yes</property> <property name="homogeneous">False</property>
<property name="spacing">5</property> <property name="spacing">0</property>
<property name="visible">yes</property>
<child> <child internal-child="action_area">
<widget class="GtkHButtonBox" id="hbuttonbox1"> <widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="layout_style">GTK_BUTTONBOX_END</property> <property name="visible">True</property>
<property name="spacing">30</property> <property name="layout_style">GTK_BUTTONBOX_END</property>
<property name="visible">yes</property>
<child> <child>
<widget class="GtkButton" id="button1"> <widget class="GtkHButtonBox" id="hbuttonbox1">
<property name="can_default">yes</property> <property name="visible">True</property>
<property name="can_focus">yes</property> <property name="layout_style">GTK_BUTTONBOX_END</property>
<property name="visible">yes</property> <property name="spacing">30</property>
<property name="label">gtk-close</property>
<property name="use_stock">yes</property>
<property name="use_underline">yes</property>
<signal name="clicked" handler="destroy_passed_object" object="top" /> <child>
</widget> <widget class="GtkButton" id="button1">
</child> <property name="visible">True</property>
</widget> <property name="can_default">True</property>
<packing> <property name="can_focus">True</property>
<property name="padding">0</property> <property name="label">gtk-close</property>
<property name="expand">yes</property> <property name="use_stock">True</property>
<property name="fill">yes</property> <property name="relief">GTK_RELIEF_NORMAL</property>
</packing> <signal name="clicked" handler="destroy_passed_object" object="top"/>
</child> </widget>
</widget> </child>
<packing> </widget>
<property name="padding">0</property> </child>
<property name="expand">no</property> </widget>
<property name="fill">yes</property> <packing>
<property name="pack_type">GTK_PACK_END</property> <property name="padding">0</property>
</packing> <property name="expand">False</property>
</child> <property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child> <child>
<widget class="GtkVBox" id="vbox1"> <widget class="GtkVBox" id="vbox1">
<property name="homogeneous">no</property> <property name="visible">True</property>
<property name="spacing">0</property> <property name="homogeneous">False</property>
<property name="visible">yes</property> <property name="spacing">0</property>
<child> <child>
<widget class="GtkLabel" id="label1"> <widget class="GtkLabel" id="title">
<property name="label" translatable="yes">Descendant Browser</property> <property name="visible">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="label" translatable="yes"></property>
<property name="wrap">no</property> <property name="use_underline">False</property>
<property name="xalign">0.5</property> <property name="use_markup">False</property>
<property name="yalign">0.5</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="xpad">0</property> <property name="wrap">False</property>
<property name="ypad">0</property> <property name="selectable">False</property>
<property name="visible">yes</property> <property name="xalign">0.5</property>
</widget> <property name="yalign">0.5</property>
<packing> <property name="xpad">0</property>
<property name="padding">10</property> <property name="ypad">0</property>
<property name="expand">no</property> </widget>
<property name="fill">no</property> <packing>
</packing> <property name="padding">10</property>
</child> <property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child> <child>
<widget class="GtkHSeparator" id="hseparator1"> <widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">yes</property> <property name="visible">True</property>
</widget> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<packing> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="padding">10</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="expand">no</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<property name="fill">yes</property>
</packing>
</child>
<child> <child>
<widget class="GtkScrolledWindow" id="scrolledwindow1"> <widget class="GtkTreeView" id="tree1">
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="visible">True</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="headers_visible">True</property>
<property name="width-request">350</property> <property name="rules_hint">False</property>
<property name="height-request">350</property> <property name="reorderable">False</property>
<property name="visible">yes</property> <property name="enable_search">True</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
</child>
</widget>
<child>
<widget class="GtkViewport" id="viewport1">
<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="visible">yes</property>
<child>
<widget class="GtkTreeView" id="tree1">
<property name="visible">yes</property>
</widget>
</child>
</widget>
</child>
<child internal-child="hscrollbar">
<widget class="GtkHScrollbar" id="convertwidget1">
<property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
<property name="visible">yes</property>
</widget>
</child>
<child internal-child="vscrollbar">
<widget class="GtkVScrollbar" id="convertwidget2">
<property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
<property name="visible">yes</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">yes</property>
<property name="fill">yes</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">yes</property>
<property name="fill">yes</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface> </glade-interface>

View File

@ -284,7 +284,7 @@
<widget class="GtkDialog" id="view"> <widget class="GtkDialog" id="view">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">Event Comparison - GRAMPS</property> <property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
@ -292,7 +292,7 @@
<property name="default_height">400</property> <property name="default_height">400</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="has_separator">True</property> <property name="has_separator">False</property>
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox3"> <widget class="GtkVBox" id="dialog-vbox3">
@ -349,9 +349,9 @@
<property name="column_spacing">0</property> <property name="column_spacing">0</property>
<child> <child>
<widget class="GtkLabel" id="label10"> <widget class="GtkLabel" id="title">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Event Comparison</property> <property name="label" translatable="yes"></property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">False</property> <property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -378,7 +378,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
@ -412,13 +412,14 @@
<widget class="GtkDialog" id="filters"> <widget class="GtkDialog" id="filters">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">Event Comparison - GRAMPS</property> <property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
<property name="default_width">400</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="has_separator">True</property> <property name="has_separator">False</property>
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox5"> <widget class="GtkVBox" id="dialog-vbox5">
@ -449,10 +450,10 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-cancel</property> <property name="label">gtk-close</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">-7</property>
<signal name="clicked" handler="destroy_passed_object" object="filters"/> <signal name="clicked" handler="destroy_passed_object" object="filters"/>
</widget> </widget>
</child> </child>
@ -466,15 +467,109 @@
</child> </child>
<child> <child>
<widget class="GtkVBox" id="vbox2"> <widget class="GtkTable" id="table1">
<property name="border_width">12</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="n_rows">3</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
<property name="spacing">0</property> <property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<widget class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="label" translatable="yes">_Filter:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">5</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">filter_list</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="label" translatable="yes">The event comparison utility uses the filters defined in the Custom Filter Editor.</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button28">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">_Custom filter editor</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<signal name="clicked" handler="on_editor_clicked" last_modification_time="Wed, 12 Mar 2003 00:28:59 GMT"/>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkOptionMenu" id="filter_list">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="history">-1</property>
<signal name="enter" handler="on_filter_list_enter" last_modification_time="Wed, 12 Mar 2003 00:38:33 GMT"/>
<child internal-child="menu">
<widget class="GtkMenu" id="convertwidget3">
<property name="visible">True</property>
</widget>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child> <child>
<widget class="GtkLabel" id="title"> <widget class="GtkLabel" id="title">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Event Comparison</property> <property name="label" translatable="yes"></property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">False</property> <property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -486,79 +581,18 @@
<property name="ypad">0</property> <property name="ypad">0</property>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="left_attach">0</property>
<property name="expand">False</property> <property name="right_attach">3</property>
<property name="fill">False</property> <property name="top_attach">0</property>
</packing> <property name="bottom_attach">1</property>
</child> <property name="x_options">fill</property>
<property name="y_options"></property>
<child>
<widget class="GtkHSeparator" id="hseparator3">
<property name="visible">True</property>
</widget>
<packing>
<property name="padding">5</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing> </packing>
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="label" translatable="yes">Filter</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">5</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkOptionMenu" id="filter_list">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="history">-1</property>
<child internal-child="menu">
<widget class="GtkMenu" id="convertwidget3">
<property name="visible">True</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
</child> </child>

View File

@ -19,7 +19,7 @@
<property name="spacing">0</property> <property name="spacing">0</property>
<child> <child>
<widget class="GtkLabel" id="mergeTitle"> <widget class="GtkLabel" id="title">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Determining Possible Merges</property> <property name="label" translatable="yes">Determining Possible Merges</property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
@ -39,17 +39,6 @@
</packing> </packing>
</child> </child>
<child>
<widget class="GtkHSeparator" id="hseparator6">
<property name="visible">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child> <child>
<widget class="GtkLabel" id="label44"> <widget class="GtkLabel" id="label44">
<property name="visible">True</property> <property name="visible">True</property>
@ -115,15 +104,15 @@
<widget class="GtkDialog" id="mergelist"> <widget class="GtkDialog" id="mergelist">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">Merge List - GRAMPS</property> <property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
<property name="default_width">450</property> <property name="default_width">500</property>
<property name="default_height">350</property> <property name="default_height">350</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="has_separator">True</property> <property name="has_separator">False</property>
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox3"> <widget class="GtkVBox" id="dialog-vbox3">
@ -141,7 +130,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label" translatable="yes">Merge</property> <property name="label" translatable="yes">_Merge</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">0</property>
@ -172,14 +161,15 @@
<child> <child>
<widget class="GtkVBox" id="vbox5"> <widget class="GtkVBox" id="vbox5">
<property name="border_width">6</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
<property name="spacing">0</property> <property name="spacing">12</property>
<child> <child>
<widget class="GtkLabel" id="label59"> <widget class="GtkLabel" id="title">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Potential Merges</property> <property name="label" translatable="yes"></property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">False</property> <property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -197,17 +187,6 @@
</packing> </packing>
</child> </child>
<child>
<widget class="GtkHSeparator" id="hseparator9">
<property name="visible">True</property>
</widget>
<packing>
<property name="padding">10</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
<child> <child>
<widget class="GtkScrolledWindow" id="scrolledwindow3"> <widget class="GtkScrolledWindow" id="scrolledwindow3">
<property name="visible">True</property> <property name="visible">True</property>
@ -246,13 +225,14 @@
<widget class="GtkDialog" id="dialog"> <widget class="GtkDialog" id="dialog">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">Merge People - GRAMPS</property> <property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
<property name="default_width">350</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="has_separator">True</property> <property name="has_separator">False</property>
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox4"> <widget class="GtkVBox" id="dialog-vbox4">
@ -301,14 +281,15 @@
<child> <child>
<widget class="GtkVBox" id="vbox6"> <widget class="GtkVBox" id="vbox6">
<property name="border_width">6</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
<property name="spacing">0</property> <property name="spacing">6</property>
<child> <child>
<widget class="GtkLabel" id="label45"> <widget class="GtkLabel" id="title">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Merge People</property> <property name="label" translatable="yes"></property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">False</property> <property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -320,30 +301,90 @@
<property name="ypad">0</property> <property name="ypad">0</property>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">6</property>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property> <property name="fill">False</property>
</packing> </packing>
</child> </child>
<child> <child>
<widget class="GtkHSeparator" id="hseparator7"> <widget class="GtkTable" id="table1">
<property name="border_width">12</property>
<property name="visible">True</property> <property name="visible">True</property>
</widget> <property name="n_rows">5</property>
<packing> <property name="n_columns">2</property>
<property name="padding">5</property> <property name="homogeneous">False</property>
<property name="expand">True</property> <property name="row_spacing">6</property>
<property name="fill">True</property> <property name="column_spacing">12</property>
</packing>
</child>
<child> <child>
<widget class="GtkFrame" id="frame2"> <widget class="GtkLabel" id="label62">
<property name="border_width">8</property> <property name="visible">True</property>
<property name="visible">True</property> <property name="label" translatable="yes">&lt;b&gt;Match Threshold&lt;/b&gt;</property>
<property name="label_xalign">0</property> <property name="use_underline">False</property>
<property name="label_yalign">0.5</property> <property name="use_markup">True</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> <property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label63">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="soundex">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Use soundex codes</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child> <child>
<widget class="GtkOptionMenu" id="menu"> <widget class="GtkOptionMenu" id="menu">
@ -358,105 +399,12 @@
</widget> </widget>
</child> </child>
</widget> </widget>
</child>
<child>
<widget class="GtkLabel" id="label60">
<property name="visible">True</property>
<property name="label" translatable="yes">Match Threshold</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing> <packing>
<property name="type">label_item</property> <property name="left_attach">1</property>
</packing> <property name="right_attach">2</property>
</child> <property name="top_attach">1</property>
</widget> <property name="bottom_attach">2</property>
<packing> <property name="y_options"></property>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkFrame" id="frame1">
<property name="border_width">8</property>
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="label_yalign">0.5</property>
<property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
<child>
<widget class="GtkVBox" id="vbox4">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkCheckButton" id="soundex">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Use SoundEx codes for name matches</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label55">
<property name="visible">True</property>
<property name="label" translatable="yes">(Recommended only for English)</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
</child>
<child>
<widget class="GtkLabel" id="label61">
<property name="visible">True</property>
<property name="label" translatable="yes">Options</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing> </packing>
</child> </child>
</widget> </widget>

View File

@ -9,8 +9,8 @@
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
<property name="default_width">450</property> <property name="default_width">600</property>
<property name="default_height">400</property> <property name="default_height">450</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="icon">gramps.png</property> <property name="icon">gramps.png</property>
@ -953,6 +953,27 @@
</packing> </packing>
</child> </child>
<child>
<widget class="GtkLabel" id="title">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">6</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child> <child>
<widget class="GtkScrolledWindow" id="scrolledwindow3"> <widget class="GtkScrolledWindow" id="scrolledwindow3">
<property name="visible">True</property> <property name="visible">True</property>