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

View File

@ -84,13 +84,13 @@ except:
# Constants
#
#-------------------------------------------------------------------------
_HOMEPAGE = "http://gramps.sourceforge.net"
_MAILLIST = "http://sourceforge.net/mail/?group_id=25770"
_HOMEPAGE = "http://gramps.sourceforge.net"
_MAILLIST = "http://sourceforge.net/mail/?group_id=25770"
_BUGREPORT = "http://sourceforge.net/tracker/?group_id=25770&atid=385137"
pl_titles = [ (_('Name'),5,250), (_('ID'),1,50),(_('Gender'),2,70),
(_('Birth date'),6,150),(_('Death date'),7,150), ('',5,0),
('',6,0), ('',7,0) ]
pl_titles = [ (_('Name'),5,250), (_('ID'),1,50),(_('Gender'),2,70),
(_('Birth date'),6,150),(_('Death date'),7,150), ('',5,0),
('',6,0), ('',7,0) ]
_sel_mode = gtk.SELECTION_MULTIPLE
@ -103,6 +103,8 @@ class Gramps:
def __init__(self,arg):
import sys
self.program = gnome.program_init("gramps",const.version)
self.DataFilter = Filter.Filter("")
@ -199,6 +201,7 @@ class Gramps:
self.alpha_page = {}
self.model2page = {}
self.model_used = {}
self.tab_list = []
self.filter_list = self.gtop.get_widget("filter_list")
@ -315,14 +318,13 @@ class Gramps:
self.enable_sidebar(self.use_sidebar)
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):
self.person_tree = self.pl_page[page]
self.person_list = self.pl_page[page].tree
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):
cpage = self.notebook.get_current_page()
@ -564,7 +566,7 @@ class Gramps:
"""Prompt for permission to close the current 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 '
'to create a new database'),
_('Create New Database'),
@ -589,6 +591,7 @@ class Gramps:
self.tab_list = []
self.alpha_page = {}
self.model2page = {}
self.model_used = {}
self.person_tree = self.pl_page[-1]
self.person_list = self.pl_page[-1].tree
@ -717,6 +720,7 @@ class Gramps:
_('Load saved database'),
self.loadsaved_file)
else:
self.active_person = None
self.read_file(filename)
def autosave_query(self):
@ -939,12 +943,19 @@ class Gramps:
def goto_active_person(self):
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)
return
id = self.active_person.getId()
if self.id2col.has_key(id):
(model,iter) = self.id2col[id]
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.select_iter(iter);
itpath = model.model.get_path(iter)
@ -958,6 +969,7 @@ class Gramps:
val = 1
else:
val = 0
self.report_menu.set_sensitive(val)
self.tools_menu.set_sensitive(val)
self.report_button.set_sensitive(val)
@ -1328,13 +1340,33 @@ class Gramps:
for key in keys:
self.alpha_page[key].new_model()
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:
self.alpha_page[key].connect_model()
self.goto_active_person()
self.modify_statusbar()
def apply_filter(self):
def apply_filter(self,current_model=None):
self.status_text(_('Updating display...'))
datacomp = self.DataFilter.compare
for key in self.db.getPersonKeys():
@ -1356,15 +1388,18 @@ class Gramps:
else:
model = self.default_list
iter = model.add([val[0],val[1],val[2],val[3],val[4],val[5],
val[6],val[7]],key)
self.id2col[key] = (model,iter)
if current_model == None or current_model == model:
iter = model.add([val[0],val[1],val[2],val[3],val[4],val[5],
val[6],val[7]],key)
self.id2col[key] = (model,iter)
else:
if self.id2col.has_key(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:
i.sort()
self.modify_statusbar()
def create_new_panel(self,pg):
display = gtk.ScrolledWindow()
@ -1395,7 +1430,9 @@ class Gramps:
for index in range(0,len(self.tab_list)):
model = self.alpha_page[self.tab_list[index]]
self.model2page[model] = index
self.model_used[model] = 0
self.model2page[self.default_list] = len(self.tab_list)
self.model_used[self.default_list] = 0
def on_home_clicked(self,obj):
temp = self.db.getDefaultPerson()

View File

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

View File

@ -46,6 +46,7 @@ import sort
import Utils
import TextDoc
import OpenSpreadSheet
import const
from QuestionDialog import WarningDialog
from intl import gettext as _
@ -131,20 +132,34 @@ class EventComparison:
self.filterDialog = gtk.glade.XML(self.glade_file,"filters")
self.filterDialog.signal_autoconnect({
"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
})
top =self.filterDialog.get_widget("filters")
filters = self.filterDialog.get_widget("filter_list")
self.filters = self.filterDialog.get_widget("filter_list")
all = GenericFilter.GenericFilter()
all.set_name(_("Entire Database"))
all.add_rule(GenericFilter.Everyone([]))
Utils.set_titles(top,self.filterDialog.get_widget('title'),
_('Event comparison filter selection'))
self.filter_menu = GenericFilter.build_filter_menu([all])
filters.set_menu(self.filter_menu)
self.all = GenericFilter.GenericFilter()
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()
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):
cfilter = self.filter_menu.get_active().get_data("filter")
@ -201,6 +216,9 @@ class DisplayChart:
self.top = self.topDialog.get_widget("view")
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)

View File

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

View File

@ -525,7 +525,7 @@ class IndivSummaryDialog(Report.TextReportDialog):
font.set_size(12)
p = TextDoc.ParagraphStyle()
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)
def setup_report_options(self):

View File

@ -368,7 +368,7 @@ class IndivSummaryDialog(Report.TextReportDialog):
font.set_size(12)
p = TextDoc.ParagraphStyle()
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)
def setup_report_options(self):

View File

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

View File

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

View File

@ -147,6 +147,7 @@ class TimeLine:
def write_report(self):
(low,high) = self.find_year_range()
st_size = self.name_size()
font = self.d.style_list['Name'].get_font()
@ -273,12 +274,17 @@ class TimeLine:
high = max(high,b)
if d != Date.UNDEF:
low = min(low,b)
high = max(high,b)
low = min(low,d)
high = max(high,d)
low = (low/10)*10
high = ((high+9)/10)*10
if low == Date.UNDEF:
low = high
if high == Date.UNDEF:
high = low
return (low,high)
def name_size(self):
@ -370,7 +376,7 @@ class TimeLineDialog(Report.DrawReportDialog):
f.set_type_face(TextDoc.FONT_SANS_SERIF)
p = TextDoc.ParagraphStyle()
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)
f = TextDoc.FontStyle()
@ -378,7 +384,7 @@ class TimeLineDialog(Report.DrawReportDialog):
f.set_type_face(TextDoc.FONT_SANS_SERIF)
p = TextDoc.ParagraphStyle()
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)
f = TextDoc.FontStyle()

View File

@ -1,147 +1,119 @@
<?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>
<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="GtkVBox" id="dialog-vbox1">
<property name="homogeneous">no</property>
<property name="spacing">0</property>
<property name="visible">yes</property>
<widget class="GtkDialog" id="top">
<property name="visible">True</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</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">
<widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="border_width">10</property>
<property name="homogeneous">yes</property>
<property name="spacing">5</property>
<property name="visible">yes</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox1">
<property name="layout_style">GTK_BUTTONBOX_END</property>
<property name="spacing">30</property>
<property name="visible">yes</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="button1">
<property name="can_default">yes</property>
<property name="can_focus">yes</property>
<property name="visible">yes</property>
<property name="label">gtk-close</property>
<property name="use_stock">yes</property>
<property name="use_underline">yes</property>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<property name="spacing">30</property>
<signal name="clicked" handler="destroy_passed_object" object="top" />
</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">no</property>
<property name="fill">yes</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="button1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-close</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<signal name="clicked" handler="destroy_passed_object" object="top"/>
</widget>
</child>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox1">
<property name="homogeneous">no</property>
<property name="spacing">0</property>
<property name="visible">yes</property>
<child>
<widget class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label1">
<property name="label" translatable="yes">Descendant Browser</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">no</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="visible">yes</property>
</widget>
<packing>
<property name="padding">10</property>
<property name="expand">no</property>
<property name="fill">no</property>
</packing>
</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_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">10</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkHSeparator" id="hseparator1">
<property name="visible">yes</property>
</widget>
<packing>
<property name="padding">10</property>
<property name="expand">no</property>
<property name="fill">yes</property>
</packing>
</child>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="width-request">350</property>
<property name="height-request">350</property>
<property name="visible">yes</property>
<child>
<widget class="GtkTreeView" id="tree1">
<property name="visible">True</property>
<property name="headers_visible">True</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</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>

View File

@ -284,7 +284,7 @@
<widget class="GtkDialog" id="view">
<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="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
@ -292,7 +292,7 @@
<property name="default_height">400</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox3">
@ -349,9 +349,9 @@
<property name="column_spacing">0</property>
<child>
<widget class="GtkLabel" id="label10">
<widget class="GtkLabel" id="title">
<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_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
@ -378,7 +378,7 @@
<property name="visible">True</property>
<property name="hscrollbar_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>
<child>
@ -412,13 +412,14 @@
<widget class="GtkDialog" id="filters">
<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="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="default_width">400</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox5">
@ -449,10 +450,10 @@
<property name="visible">True</property>
<property name="can_default">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="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"/>
</widget>
</child>
@ -466,15 +467,109 @@
</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="n_rows">3</property>
<property name="n_columns">3</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>
<widget class="GtkLabel" id="title">
<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_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
@ -486,79 +581,18 @@
<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="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>
<property name="left_attach">0</property>
<property name="right_attach">3</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>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</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="expand">True</property>
<property name="fill">True</property>
</packing>
</child>

View File

@ -19,7 +19,7 @@
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="mergeTitle">
<widget class="GtkLabel" id="title">
<property name="visible">True</property>
<property name="label" translatable="yes">Determining Possible Merges</property>
<property name="use_underline">False</property>
@ -39,17 +39,6 @@
</packing>
</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>
<widget class="GtkLabel" id="label44">
<property name="visible">True</property>
@ -115,15 +104,15 @@
<widget class="GtkDialog" id="mergelist">
<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="window_position">GTK_WIN_POS_NONE</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="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox3">
@ -141,7 +130,7 @@
<property name="visible">True</property>
<property name="can_default">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="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
@ -172,14 +161,15 @@
<child>
<widget class="GtkVBox" id="vbox5">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<property name="spacing">12</property>
<child>
<widget class="GtkLabel" id="label59">
<widget class="GtkLabel" id="title">
<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_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
@ -197,17 +187,6 @@
</packing>
</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>
<widget class="GtkScrolledWindow" id="scrolledwindow3">
<property name="visible">True</property>
@ -246,13 +225,14 @@
<widget class="GtkDialog" id="dialog">
<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="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="default_width">350</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox4">
@ -301,14 +281,15 @@
<child>
<widget class="GtkVBox" id="vbox6">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<property name="spacing">6</property>
<child>
<widget class="GtkLabel" id="label45">
<widget class="GtkLabel" id="title">
<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_markup">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
@ -320,30 +301,90 @@
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="padding">6</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkHSeparator" id="hseparator7">
<widget class="GtkTable" id="table1">
<property name="border_width">12</property>
<property name="visible">True</property>
</widget>
<packing>
<property name="padding">5</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<property name="n_rows">5</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<widget class="GtkFrame" id="frame2">
<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="GtkLabel" id="label62">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Match Threshold&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">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>
<widget class="GtkOptionMenu" id="menu">
@ -358,105 +399,12 @@
</widget>
</child>
</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>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<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>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
</widget>

View File

@ -9,8 +9,8 @@
<property name="type">GTK_WINDOW_TOPLEVEL</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="default_width">600</property>
<property name="default_height">450</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="icon">gramps.png</property>
@ -953,6 +953,27 @@
</packing>
</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>
<widget class="GtkScrolledWindow" id="scrolledwindow3">
<property name="visible">True</property>