Bug 2888: FindDupes.py - convert from libglade to gtkbuilder

svn: r12451
This commit is contained in:
Gerald Britton
2009-04-15 20:51:10 +00:00
parent 82aac3836f
commit b0e8509989
2 changed files with 435 additions and 567 deletions

View File

@@ -36,7 +36,6 @@ import os
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import gtk import gtk
from gtk import glade
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@@ -72,6 +71,7 @@ _val2label = {
WIKI_HELP_PAGE = '%s_-_Tools' % const.URL_MANUAL_PAGE WIKI_HELP_PAGE = '%s_-_Tools' % const.URL_MANUAL_PAGE
WIKI_HELP_SEC = _('manual|Find_Possible_Duplicate_People...') WIKI_HELP_SEC = _('manual|Find_Possible_Duplicate_People...')
_GLADE_FILE = "merge.glade" _GLADE_FILE = "merge.glade"
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# #
@@ -88,7 +88,7 @@ def is_initial(name):
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# # The Actual tool.
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class Merge(Tool.Tool,ManagedWindow.ManagedWindow): class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
@@ -113,34 +113,33 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
os.path.split(__file__)[0], os.path.split(__file__)[0],
_GLADE_FILE) _GLADE_FILE)
top = glade.XML(glade_file,"dialog","gramps") top = gtk.Builder()
top.add_from_file(glade_file)
# retrieve options # retrieve options
threshold = self.options.handler.options_dict['threshold'] threshold = self.options.handler.options_dict['threshold']
use_soundex = self.options.handler.options_dict['soundex'] use_soundex = self.options.handler.options_dict['soundex']
my_menu = gtk.Menu() my_menu = gtk.ListStore(str, object)
vals = _val2label.keys() vals = _val2label.keys()
vals.sort() vals.sort()
for val in vals: for val in vals:
item = gtk.MenuItem(_val2label[val]) my_menu.append([_val2label[val], val])
item.set_data("v",val)
item.show()
my_menu.append(item)
my_menu.set_active(vals.index(threshold))
self.soundex_obj = top.get_widget("soundex") self.soundex_obj = top.get_object("soundex")
self.soundex_obj.set_active(use_soundex) self.soundex_obj.set_active(use_soundex)
self.soundex_obj.show() self.soundex_obj.show()
self.menu = top.get_widget("menu") self.menu = top.get_object("menu")
self.menu.set_menu(my_menu) self.menu.set_model(my_menu)
self.menu.set_active(0)
window = top.get_widget('dialog') window = top.get_object('dialog')
self.set_window(window, top.get_widget('title'), window.show()
self.set_window(window, top.get_object('title'),
_('Find Possible Duplicate People')) _('Find Possible Duplicate People'))
top.signal_autoconnect({ top.connect_signals({
"on_merge_ok_clicked" : self.on_merge_ok_clicked, "on_merge_ok_clicked" : self.on_merge_ok_clicked,
"destroy_passed_object" : self.close, "destroy_passed_object" : self.close,
"on_help_clicked" : self.on_help_clicked, "on_help_clicked" : self.on_help_clicked,
@@ -169,7 +168,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
self.ancestors_of(f1.get_mother_handle(),id_list) self.ancestors_of(f1.get_mother_handle(),id_list)
def on_merge_ok_clicked(self, obj): def on_merge_ok_clicked(self, obj):
threshold = self.menu.get_menu().get_active().get_data("v") threshold = self.menu.get_model()[self.menu.get_active()][1]
self.use_soundex = int(self.soundex_obj.get_active()) self.use_soundex = int(self.soundex_obj.get_active())
try: try:
self.find_potentials(threshold) self.find_potentials(threshold)
@@ -237,7 +236,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
index = 0 index = 0
for p2key in remaining: for p2key in remaining:
index = index + 1 index += 1
if p1key == p2key: if p1key == p2key:
continue continue
p2 = self.db.get_person_from_handle(p2key) p2 = self.db.get_person_from_handle(p2key)
@@ -306,25 +305,25 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
birth2.get_date_object()) birth2.get_date_object())
if value == -1 : if value == -1 :
return -1 return -1
chance = chance + value chance =+ value
value = self.date_match(death1.get_date_object(), value = self.date_match(death1.get_date_object(),
death2.get_date_object()) death2.get_date_object())
if value == -1 : if value == -1 :
return -1 return -1
chance = chance + value chance =+ value
value = self.place_match(birth1.get_place_handle(), value = self.place_match(birth1.get_place_handle(),
birth2.get_place_handle()) birth2.get_place_handle())
if value == -1 : if value == -1 :
return -1 return -1
chance = chance + value chance =+ value
value = self.place_match(death1.get_place_handle(), value = self.place_match(death1.get_place_handle(),
death2.get_place_handle()) death2.get_place_handle())
if value == -1 : if value == -1 :
return -1 return -1
chance = chance + value chance =+ value
ancestors = [] ancestors = []
self.ancestors_of(p1.get_handle(),ancestors) self.ancestors_of(p1.get_handle(),ancestors)
@@ -358,7 +357,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
if value == -1: if value == -1:
return -1 return -1
chance = chance + value chance += value
mom1_id = f1.get_mother_handle() mom1_id = f1.get_mother_handle()
if mom1_id: if mom1_id:
@@ -375,7 +374,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
if value == -1: if value == -1:
return -1 return -1
chance = chance + value chance += value
for f1_id in p1.get_family_handle_list(): for f1_id in p1.get_family_handle_list():
f1 = self.db.get_family_from_handle(f1_id) f1 = self.db.get_family_from_handle(f1_id)
@@ -386,7 +385,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
father2_id = f2.get_father_handle() father2_id = f2.get_father_handle()
if father1_id and father2_id: if father1_id and father2_id:
if father1_id == father2_id: if father1_id == father2_id:
chance = chance + 1 chance += 1
else: else:
father1 = self.db.get_person_from_handle(father1_id) father1 = self.db.get_person_from_handle(father1_id)
father2 = self.db.get_person_from_handle(father2_id) father2 = self.db.get_person_from_handle(father2_id)
@@ -394,13 +393,13 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
fname2 = get_name_obj(father2) fname2 = get_name_obj(father2)
value = self.name_match(fname1,fname2) value = self.name_match(fname1,fname2)
if value != -1: if value != -1:
chance = chance + value chance += value
else: else:
mother1_id = f1.get_mother_handle() mother1_id = f1.get_mother_handle()
mother2_id = f2.get_mother_handle() mother2_id = f2.get_mother_handle()
if mother1_id and mother2_id: if mother1_id and mother2_id:
if mother1_id == mother2_id: if mother1_id == mother2_id:
chance = chance + 1 chance += 1
else: else:
mother1 = self.db.get_person_from_handle(mother1_id) mother1 = self.db.get_person_from_handle(mother1_id)
mother2 = self.db.get_person_from_handle(mother2_id) mother2 = self.db.get_person_from_handle(mother2_id)
@@ -408,7 +407,7 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
mname2 = get_name_obj(mother2) mname2 = get_name_obj(mother2)
value = self.name_match(mname1,mname2) value = self.name_match(mname1,mname2)
if value != -1: if value != -1:
chance = chance + value chance += value
return chance return chance
def name_compare(self,s1,s2): def name_compare(self,s1,s2):
@@ -445,20 +444,20 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
stop_date_1 = date1.get_stop_date()[0:3] stop_date_1 = date1.get_stop_date()[0:3]
stop_date_2 = date2.get_stop_date()[0:3] stop_date_2 = date2.get_stop_date()[0:3]
if date1.is_compound() and date2.is_compound(): if date1.is_compound() and date2.is_compound():
if start_date_1 >= start_date_2 and start_date_1 <= stop_date_2 or \ if start_date_2 <= start_date_1 <= stop_date_2 or \
start_date_2 >= start_date_1 and start_date_2 <= stop_date_1 or \ start_date_1 <= start_date_2 <= stop_date_1 or \
stop_date_1 >= start_date_2 and stop_date_1 <= stop_date_2 or \ start_date_2 <= stop_date_1 <= stop_date_2 or \
stop_date_2 >= start_date_1 and stop_date_2 <= stop_date_1: start-date_1 <= stop_date_2 <= stop_date_1:
return 0.5 return 0.5
else: else:
return -1 return -1
elif date2.is_compound(): elif date2.is_compound():
if start_date_1 >= start_date_2 and start_date_1 <= stop_date_2: if start_date_2 <= start_date_1 <= stop_date_2:
return 0.5 return 0.5
else: else:
return -1 return -1
else: else:
if start_date_2 >= start_date_1 and start_date_2 <= stop_date_1: if start_date_1 <= start_date_2 <= stop_date_1:
return 0.5 return 0.5
else: else:
return -1 return -1
@@ -518,36 +517,24 @@ class Merge(Tool.Tool,ManagedWindow.ManagedWindow):
for name in list1: for name in list1:
for name2 in list2: for name2 in list2:
if name == name2: if name == name2:
value = value + 0.5 value += 0.5
break elif name[0] == name2[0] and self.name_compare(name, name2):
if name[0] == name2[0] and self.name_compare(name, name2): value += 0.25
value = value + 0.25 return min(value,1) if value else -1
break
if value == 0:
return -1
else:
return min(value,1)
def list_reduce(self,list1,list2): def list_reduce(self,list1,list2):
value = 0 value = 0
for name in list1: for name in list1:
for name2 in list2: for name2 in list2:
if is_initial(name) and name[0] == name2[0]: if is_initial(name) and name[0] == name2[0]:
value = value + 0.25 value += 0.25
break elif is_initial(name2) and name2[0] == name[0]:
if is_initial(name2) and name2[0] == name[0]: value += 0.25
value = value + 0.25 elif name == name2:
break value += 0.5
if name == name2: elif name[0] == name2[0] and self.name_compare(name, name2):
value = value + 0.5 value += 0.25
break return min(value,1) if value else -1
if name[0] == name2[0] and self.name_compare(name, name2):
value = value + 0.25
break
if value == 0:
return -1
else:
return min(value,1)
class ShowMatches(ManagedWindow.ManagedWindow): class ShowMatches(ManagedWindow.ManagedWindow):
@@ -564,23 +551,32 @@ class ShowMatches(ManagedWindow.ManagedWindow):
self.dbstate = dbstate self.dbstate = dbstate
self.uistate = uistate self.uistate = uistate
base = os.path.dirname(__file__) glade_file = os.path.join(
self.glade_file = "%s/%s" % (base,"merge.glade") os.path.split(__file__)[0],
top = glade.XML(self.glade_file,"mergelist","gramps") _GLADE_FILE)
window = top.get_widget("mergelist")
self.set_window(window, top.get_widget('title'), top = gtk.Builder()
top.add_from_file(glade_file)
window = top.get_object("mergelist")
window.show()
self.set_window(window, top.get_object('title'),
_('Potential Merges')) _('Potential Merges'))
self.mlist = top.get_widget("mlist") self.mlist = top.get_object("mlist")
top.signal_autoconnect({ top.connect_signals({
"destroy_passed_object" : self.close, "destroy_passed_object" : self.close,
"on_do_merge_clicked" : self.on_do_merge_clicked, "on_do_merge_clicked" : self.on_do_merge_clicked,
"on_help_show_clicked" : self.on_help_clicked, "on_help_show_clicked" : self.on_help_clicked,
"on_delete_show_event" : self.close, "on_delete_show_event" : self.close,
}) })
mtitles = [(_('Rating'),3,75),(_('First Person'),1,200), mtitles = [
(_('Second Person'),2,200),('',-1,0)] (_('Rating'),3,75),
(_('First Person'),1,200),
(_('Second Person'),2,200),
('',-1,0)
]
self.list = ListModel.ListModel(self.mlist,mtitles, self.list = ListModel.ListModel(self.mlist,mtitles,
event_func=self.on_do_merge_clicked) event_func=self.on_do_merge_clicked)

View File

@@ -1,501 +1,373 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> <?xml version="1.0"?>
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> <interface>
<requires lib="gtk+" version="2.16"/>
<glade-interface> <!-- interface-naming-policy toplevel-contextual -->
<object class="GtkWindow" id="message">
<widget class="GtkWindow" id="message"> <property name="modal">True</property>
<property name="visible">True</property> <child>
<property name="title" translatable="yes"></property> <object class="GtkVBox" id="vbox2">
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="visible">True</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="border_width">12</property>
<property name="modal">True</property> <child>
<property name="resizable">True</property> <object class="GtkLabel" id="title">
<property name="destroy_with_parent">False</property> <property name="visible">True</property>
<property name="decorated">True</property> <property name="justify">center</property>
<property name="skip_taskbar_hint">False</property> </object>
<property name="skip_pager_hint">False</property> <packing>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="expand">False</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="fill">False</property>
<property name="focus_on_map">True</property> <property name="padding">6</property>
<property name="urgency_hint">False</property> <property name="position">0</property>
</packing>
<child> </child>
<widget class="GtkVBox" id="vbox2"> <child>
<property name="border_width">12</property> <object class="GtkLabel" id="label44">
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">False</property> <property name="ypad">10</property>
<property name="spacing">0</property> <property name="label" translatable="yes">Please be patient. This may take a while.</property>
<property name="justify">center</property>
<child> <property name="wrap">True</property>
<widget class="GtkLabel" id="title"> </object>
<property name="visible">True</property> <packing>
<property name="label" translatable="yes"></property> <property name="expand">False</property>
<property name="use_underline">False</property> <property name="fill">False</property>
<property name="use_markup">False</property> <property name="padding">20</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="position">1</property>
<property name="wrap">False</property> </packing>
<property name="selectable">False</property> </child>
<property name="xalign">0.5</property> <child>
<property name="yalign">0.5</property> <object class="GtkHBox" id="hbox4">
<property name="xpad">0</property> <property name="visible">True</property>
<property name="ypad">0</property> <child>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <object class="GtkProgressBar" id="progressbar1">
<property name="width_chars">-1</property> <property name="visible">True</property>
<property name="single_line_mode">False</property> <property name="pulse_step">0.10000000149</property>
<property name="angle">0</property> </object>
</widget> <packing>
<packing> <property name="padding">20</property>
<property name="padding">6</property> <property name="position">0</property>
<property name="expand">False</property> </packing>
<property name="fill">False</property> </child>
</packing> </object>
</child> <packing>
<property name="expand">False</property>
<child> <property name="fill">False</property>
<widget class="GtkLabel" id="label44"> <property name="position">2</property>
<property name="visible">True</property> </packing>
<property name="label" translatable="yes">Please be patient. This may take a while.</property> </child>
<property name="use_underline">False</property> </object>
<property name="use_markup">False</property> </child>
<property name="justify">GTK_JUSTIFY_CENTER</property> </object>
<property name="wrap">True</property> <object class="GtkListStore" id="liststore1">
<property name="selectable">False</property> <columns>
<property name="xalign">0.5</property> <!-- column-name gchararray1 -->
<property name="yalign">0.5</property> <column type="gchararray"/>
<property name="xpad">0</property> </columns>
<property name="ypad">10</property> </object>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <object class="GtkDialog" id="mergelist">
<property name="width_chars">-1</property> <property name="default_width">500</property>
<property name="single_line_mode">False</property> <property name="default_height">350</property>
<property name="angle">0</property> <property name="type_hint">dialog</property>
</widget> <property name="has_separator">False</property>
<packing> <signal name="delete_event" handler="on_delete_show_event"/>
<property name="padding">20</property> <child internal-child="vbox">
<property name="expand">False</property> <object class="GtkVBox" id="dialog-vbox3">
<property name="fill">False</property> <property name="visible">True</property>
</packing> <property name="spacing">8</property>
</child> <child>
<object class="GtkVBox" id="vbox5">
<child> <property name="visible">True</property>
<widget class="GtkHBox" id="hbox4"> <property name="border_width">6</property>
<property name="visible">True</property> <property name="spacing">12</property>
<property name="homogeneous">False</property> <child>
<property name="spacing">0</property> <object class="GtkLabel" id="title">
<property name="visible">True</property>
<child> <property name="ypad">6</property>
<widget class="GtkProgressBar" id="progressbar1"> <property name="justify">center</property>
<property name="visible">True</property> </object>
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property> <packing>
<property name="fraction">0</property> <property name="expand">False</property>
<property name="pulse_step">0.10000000149</property> <property name="fill">False</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <property name="position">0</property>
</widget> </packing>
<packing> </child>
<property name="padding">20</property> <child>
<property name="expand">True</property> <object class="GtkScrolledWindow" id="scrolledwindow3">
<property name="fill">True</property> <property name="visible">True</property>
</packing> <property name="can_focus">False</property>
</child> <property name="hscrollbar_policy">automatic</property>
</widget> <property name="vscrollbar_policy">automatic</property>
<packing> <property name="shadow_type">in</property>
<property name="padding">0</property> <child>
<property name="expand">False</property> <object class="GtkTreeView" id="mlist">
<property name="fill">False</property> <property name="visible">True</property>
</packing> <property name="can_focus">True</property>
</child> <property name="rules_hint">True</property>
</widget> </object>
</child> </child>
</widget> </object>
<packing>
<widget class="GtkDialog" id="mergelist"> <property name="position">1</property>
<property name="visible">True</property> </packing>
<property name="title" translatable="yes"></property> </child>
<property name="type">GTK_WINDOW_TOPLEVEL</property> </object>
<property name="window_position">GTK_WIN_POS_NONE</property> <packing>
<property name="modal">False</property> <property name="position">1</property>
<property name="default_width">500</property> </packing>
<property name="default_height">350</property> </child>
<property name="resizable">True</property> <child internal-child="action_area">
<property name="destroy_with_parent">False</property> <object class="GtkHButtonBox" id="dialog-action_area3">
<property name="decorated">True</property> <property name="visible">True</property>
<property name="skip_taskbar_hint">False</property> <property name="layout_style">end</property>
<property name="skip_pager_hint">False</property> <child>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <object class="GtkButton" id="button9">
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="label">gtk-close</property>
<property name="focus_on_map">True</property> <property name="visible">True</property>
<property name="urgency_hint">False</property> <property name="can_focus">True</property>
<property name="has_separator">False</property> <property name="can_default">True</property>
<signal name="delete_event" handler="on_delete_show_event" last_modification_time="Mon, 10 May 2004 23:33:31 GMT"/> <property name="receives_default">False</property>
<property name="use_stock">True</property>
<child internal-child="vbox"> <signal name="clicked" handler="destroy_passed_object" object="mergelist"/>
<widget class="GtkVBox" id="dialog-vbox3"> </object>
<property name="visible">True</property> <packing>
<property name="homogeneous">False</property> <property name="expand">False</property>
<property name="spacing">8</property> <property name="fill">False</property>
<property name="position">0</property>
<child internal-child="action_area"> </packing>
<widget class="GtkHButtonBox" id="dialog-action_area3"> </child>
<property name="visible">True</property> <child>
<property name="layout_style">GTK_BUTTONBOX_END</property> <object class="GtkButton" id="button7">
<property name="label" translatable="yes">Co_mpare</property>
<child> <property name="visible">True</property>
<widget class="GtkButton" id="button9"> <property name="can_focus">True</property>
<property name="visible">True</property> <property name="can_default">True</property>
<property name="can_default">True</property> <property name="receives_default">False</property>
<property name="can_focus">True</property> <property name="use_underline">True</property>
<property name="label">gtk-close</property> <signal name="clicked" handler="on_do_merge_clicked"/>
<property name="use_stock">True</property> </object>
<property name="relief">GTK_RELIEF_NORMAL</property> <packing>
<property name="focus_on_click">True</property> <property name="expand">False</property>
<property name="response_id">0</property> <property name="fill">False</property>
<signal name="clicked" handler="destroy_passed_object" object="mergelist"/> <property name="position">1</property>
</widget> </packing>
</child> </child>
<child>
<child> <object class="GtkButton" id="button13">
<widget class="GtkButton" id="button7"> <property name="label">gtk-help</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_focus">True</property>
<property name="can_focus">True</property> <property name="can_default">True</property>
<property name="label" translatable="yes">Co_mpare</property> <property name="receives_default">False</property>
<property name="use_underline">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <signal name="clicked" handler="on_help_show_clicked"/>
<property name="focus_on_click">True</property> </object>
<property name="response_id">0</property> <packing>
<signal name="clicked" handler="on_do_merge_clicked"/> <property name="expand">False</property>
</widget> <property name="fill">False</property>
</child> <property name="position">2</property>
</packing>
<child> </child>
<widget class="GtkButton" id="button13"> </object>
<property name="visible">True</property> <packing>
<property name="can_default">True</property> <property name="expand">False</property>
<property name="can_focus">True</property> <property name="pack_type">end</property>
<property name="label">gtk-help</property> <property name="position">0</property>
<property name="use_stock">True</property> </packing>
<property name="relief">GTK_RELIEF_NORMAL</property> </child>
<property name="focus_on_click">True</property> </object>
<property name="response_id">-11</property> </child>
<signal name="clicked" handler="on_help_show_clicked" last_modification_time="Thu, 24 Mar 2005 06:04:48 GMT"/> <action-widgets>
</widget> <action-widget response="0">button9</action-widget>
</child> <action-widget response="0">button7</action-widget>
</widget> <action-widget response="-11">button13</action-widget>
<packing> </action-widgets>
<property name="padding">0</property> </object>
<property name="expand">False</property> <object class="GtkDialog" id="dialog">
<property name="fill">True</property> <property name="default_width">350</property>
<property name="pack_type">GTK_PACK_END</property> <property name="type_hint">dialog</property>
</packing> <property name="has_separator">False</property>
</child> <signal name="delete_event" handler="on_delete_merge_event"/>
<child internal-child="vbox">
<child> <object class="GtkVBox" id="dialog-vbox4">
<widget class="GtkVBox" id="vbox5"> <property name="visible">True</property>
<property name="border_width">6</property> <property name="spacing">8</property>
<property name="visible">True</property> <child>
<property name="homogeneous">False</property> <object class="GtkVBox" id="vbox6">
<property name="spacing">12</property> <property name="visible">True</property>
<property name="border_width">6</property>
<child> <property name="spacing">6</property>
<widget class="GtkLabel" id="title"> <child>
<property name="visible">True</property> <object class="GtkLabel" id="title">
<property name="label" translatable="yes"></property> <property name="visible">True</property>
<property name="use_underline">False</property> <property name="justify">center</property>
<property name="use_markup">False</property> </object>
<property name="justify">GTK_JUSTIFY_CENTER</property> <packing>
<property name="wrap">False</property> <property name="expand">False</property>
<property name="selectable">False</property> <property name="fill">False</property>
<property name="xalign">0.5</property> <property name="padding">6</property>
<property name="yalign">0.5</property> <property name="position">0</property>
<property name="xpad">0</property> </packing>
<property name="ypad">6</property> </child>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <child>
<property name="width_chars">-1</property> <object class="GtkTable" id="table1">
<property name="single_line_mode">False</property> <property name="visible">True</property>
<property name="angle">0</property> <property name="border_width">12</property>
</widget> <property name="n_rows">5</property>
<packing> <property name="n_columns">2</property>
<property name="padding">0</property> <property name="column_spacing">12</property>
<property name="expand">False</property> <property name="row_spacing">6</property>
<property name="fill">False</property> <child>
</packing> <object class="GtkLabel" id="label62">
</child> <property name="visible">True</property>
<property name="xalign">0</property>
<child> <property name="label" translatable="yes">&lt;b&gt;Match Threshold&lt;/b&gt;</property>
<widget class="GtkScrolledWindow" id="scrolledwindow3"> <property name="use_markup">True</property>
<property name="visible">True</property> </object>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <packing>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="right_attach">2</property>
<property name="shadow_type">GTK_SHADOW_IN</property> <property name="x_options">GTK_FILL</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="y_options"></property>
</packing>
<child> </child>
<widget class="GtkTreeView" id="mlist"> <child>
<property name="visible">True</property> <object class="GtkLabel" id="label63">
<property name="can_focus">True</property> <property name="visible">True</property>
<property name="headers_visible">True</property> <property name="xalign">0</property>
<property name="rules_hint">True</property> <property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
<property name="reorderable">False</property> <property name="use_markup">True</property>
<property name="enable_search">True</property> </object>
<property name="fixed_height_mode">False</property> <packing>
<property name="hover_selection">False</property> <property name="right_attach">2</property>
<property name="hover_expand">False</property> <property name="top_attach">3</property>
</widget> <property name="bottom_attach">4</property>
</child> <property name="x_options">GTK_FILL</property>
</widget> <property name="y_options"></property>
<packing> </packing>
<property name="padding">0</property> </child>
<property name="expand">True</property> <child>
<property name="fill">True</property> <object class="GtkCheckButton" id="soundex">
</packing> <property name="label" translatable="yes">Use soundex codes</property>
</child> <property name="visible">True</property>
</widget> <property name="can_focus">True</property>
<packing> <property name="receives_default">False</property>
<property name="padding">0</property> <property name="use_underline">True</property>
<property name="expand">True</property> <property name="active">True</property>
<property name="fill">True</property> <property name="draw_indicator">True</property>
</packing> </object>
</child> <packing>
</widget> <property name="left_attach">1</property>
</child> <property name="right_attach">2</property>
</widget> <property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<widget class="GtkDialog" id="dialog"> <property name="x_options">GTK_FILL</property>
<property name="visible">True</property> <property name="y_options"></property>
<property name="title" translatable="yes"></property> </packing>
<property name="type">GTK_WINDOW_TOPLEVEL</property> </child>
<property name="window_position">GTK_WIN_POS_NONE</property> <child>
<property name="modal">False</property> <object class="GtkComboBox" id="menu">
<property name="default_width">350</property> <property name="visible">True</property>
<property name="resizable">True</property> <property name="model">liststore1</property>
<property name="destroy_with_parent">False</property> <child>
<property name="decorated">True</property> <object class="GtkCellRendererText" id="cellrenderertext1"/>
<property name="skip_taskbar_hint">False</property> <attributes>
<property name="skip_pager_hint">False</property> <attribute name="text">0</attribute>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> </attributes>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> </child>
<property name="focus_on_map">True</property> </object>
<property name="urgency_hint">False</property> <packing>
<property name="has_separator">False</property> <property name="left_attach">1</property>
<signal name="delete_event" handler="on_delete_merge_event" last_modification_time="Mon, 10 May 2004 23:33:50 GMT"/> <property name="right_attach">2</property>
<property name="top_attach">1</property>
<child internal-child="vbox"> <property name="bottom_attach">2</property>
<widget class="GtkVBox" id="dialog-vbox4"> </packing>
<property name="visible">True</property> </child>
<property name="homogeneous">False</property> <child>
<property name="spacing">8</property> <placeholder/>
</child>
<child internal-child="action_area"> <child>
<widget class="GtkHButtonBox" id="dialog-action_area4"> <placeholder/>
<property name="visible">True</property> </child>
<property name="layout_style">GTK_BUTTONBOX_END</property> <child>
<placeholder/>
<child> </child>
<widget class="GtkButton" id="button12"> <child>
<property name="visible">True</property> <placeholder/>
<property name="can_default">True</property> </child>
<property name="can_focus">True</property> </object>
<property name="label">gtk-cancel</property> <packing>
<property name="use_stock">True</property> <property name="position">1</property>
<property name="relief">GTK_RELIEF_NORMAL</property> </packing>
<property name="focus_on_click">True</property> </child>
<property name="response_id">0</property> </object>
<signal name="clicked" handler="destroy_passed_object" object="dialog"/> <packing>
</widget> <property name="position">1</property>
</child> </packing>
</child>
<child> <child internal-child="action_area">
<widget class="GtkButton" id="button10"> <object class="GtkHButtonBox" id="dialog-action_area4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="layout_style">end</property>
<property name="can_focus">True</property> <child>
<property name="label">gtk-ok</property> <object class="GtkButton" id="button12">
<property name="use_stock">True</property> <property name="label">gtk-cancel</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="visible">True</property>
<property name="focus_on_click">True</property> <property name="can_focus">True</property>
<property name="response_id">0</property> <property name="can_default">True</property>
<signal name="clicked" handler="on_merge_ok_clicked" object="dialog"/> <property name="receives_default">False</property>
</widget> <property name="use_stock">True</property>
</child> <signal name="clicked" handler="destroy_passed_object" object="dialog"/>
</object>
<child> <packing>
<widget class="GtkButton" id="button14"> <property name="expand">False</property>
<property name="visible">True</property> <property name="fill">False</property>
<property name="can_default">True</property> <property name="position">0</property>
<property name="can_focus">True</property> </packing>
<property name="label">gtk-help</property> </child>
<property name="use_stock">True</property> <child>
<property name="relief">GTK_RELIEF_NORMAL</property> <object class="GtkButton" id="button10">
<property name="focus_on_click">True</property> <property name="label">gtk-ok</property>
<property name="response_id">-11</property> <property name="visible">True</property>
<signal name="clicked" handler="on_help_clicked" last_modification_time="Thu, 24 Mar 2005 06:05:18 GMT"/> <property name="can_focus">True</property>
</widget> <property name="can_default">True</property>
</child> <property name="receives_default">False</property>
</widget> <property name="use_stock">True</property>
<packing> <signal name="clicked" handler="on_merge_ok_clicked" object="dialog"/>
<property name="padding">0</property> </object>
<property name="expand">False</property> <packing>
<property name="fill">True</property> <property name="expand">False</property>
<property name="pack_type">GTK_PACK_END</property> <property name="fill">False</property>
</packing> <property name="position">1</property>
</child> </packing>
</child>
<child> <child>
<widget class="GtkVBox" id="vbox6"> <object class="GtkButton" id="button14">
<property name="border_width">6</property> <property name="label">gtk-help</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">False</property> <property name="can_focus">True</property>
<property name="spacing">6</property> <property name="can_default">True</property>
<property name="receives_default">False</property>
<child> <property name="use_stock">True</property>
<widget class="GtkLabel" id="title"> <signal name="clicked" handler="on_help_clicked"/>
<property name="visible">True</property> </object>
<property name="label" translatable="yes"></property> <packing>
<property name="use_underline">False</property> <property name="expand">False</property>
<property name="use_markup">False</property> <property name="fill">False</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="position">2</property>
<property name="wrap">False</property> </packing>
<property name="selectable">False</property> </child>
<property name="xalign">0.5</property> </object>
<property name="yalign">0.5</property> <packing>
<property name="xpad">0</property> <property name="expand">False</property>
<property name="ypad">0</property> <property name="pack_type">end</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> <property name="position">0</property>
<property name="width_chars">-1</property> </packing>
<property name="single_line_mode">False</property> </child>
<property name="angle">0</property> </object>
</widget> </child>
<packing> <action-widgets>
<property name="padding">6</property> <action-widget response="0">button12</action-widget>
<property name="expand">False</property> <action-widget response="0">button10</action-widget>
<property name="fill">False</property> <action-widget response="-11">button14</action-widget>
</packing> </action-widgets>
</child> </object>
</interface>
<child>
<widget class="GtkTable" id="table1">
<property name="border_width">12</property>
<property name="visible">True</property>
<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="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>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">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>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">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="focus_on_click">True</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">
<property name="border_width">5</property>
<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="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>
<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>
</glade-interface>