* src/gramps_main.py (tool_callback): Typo.

* src/QuestionDialog.py: Use gramps icon.
* src/plugins/EventCmp.py: HIG; single instance; help.
* src/plugins/eventcmp.glade: HIG; help.
* src/plugins/Desbrowser.py: HIG, help, rebuild model after edit.
* src/plugins/desbrowse.glade: help, info label.
* src/plugins/PatchNames.py: HIG, help, single instance.
* src/plugins/patchnames.glade: HIG, help.
* src/plugins/Merge.py: HIG, help, single instance.
* src/plugins/merge.glade: HIG, help.
* src/plugins/ChangeNames.py: HIG, help, single instance.


svn: r4230
This commit is contained in:
Alex Roitman 2005-03-24 06:22:25 +00:00
parent 3d0f39acd7
commit fbd8c05dd8
12 changed files with 447 additions and 191 deletions

View File

@ -14,6 +14,18 @@
results; help for the settings window; single instance of the tool. results; help for the settings window; single instance of the tool.
* src/plugins/verify.glade: HIG compliance, break things into tabs. * src/plugins/verify.glade: HIG compliance, break things into tabs.
* src/gramps_main.py (tool_callback): Typo.
* src/QuestionDialog.py: Use gramps icon.
* src/plugins/EventCmp.py: HIG; single instance; help.
* src/plugins/eventcmp.glade: HIG; help.
* src/plugins/Desbrowser.py: HIG, help, rebuild model after edit.
* src/plugins/desbrowse.glade: help, info label.
* src/plugins/PatchNames.py: HIG, help, single instance.
* src/plugins/patchnames.glade: HIG, help.
* src/plugins/Merge.py: HIG, help, single instance.
* src/plugins/merge.glade: HIG, help.
* src/plugins/ChangeNames.py: HIG, help, single instance.
2005-03-22 Alex Roitman <shura@gramps-project.org> 2005-03-22 Alex Roitman <shura@gramps-project.org>
* src/RelLib.py (MediaBase): Add base class for media references; * src/RelLib.py (MediaBase): Add base class for media references;
(BaseObject): Add has_handle_reference, remove_handle_references, (BaseObject): Add has_handle_reference, remove_handle_references,

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2000-2003 Donald N. Allingham # Copyright (C) 2000-2005 Donald N. Allingham
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -18,17 +18,39 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
# $Id$
#-------------------------------------------------------------------------
#
# Standard python modules
#
#-------------------------------------------------------------------------
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# GNOME/GTK+ modules
#
#-------------------------------------------------------------------------
import gtk import gtk
import gtk.glade import gtk.glade
from gtk.gdk import pixbuf_new_from_file
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
import const import const
import GrampsKeys import GrampsKeys
from gettext import gettext as _ ICON = pixbuf_new_from_file(const.icon)
class SaveDialog: class SaveDialog:
def __init__(self,msg1,msg2,task1,task2,parent=None): def __init__(self,msg1,msg2,task1,task2,parent=None):
self.xml = gtk.glade.XML(const.errdialogsFile,"savedialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"savedialog","gramps")
self.top = self.xml.get_widget('savedialog') self.top = self.xml.get_widget('savedialog')
self.top.set_icon(ICON)
self.dontask = self.xml.get_widget('dontask') self.dontask = self.xml.get_widget('dontask')
self.task1 = task1 self.task1 = task1
self.task2 = task2 self.task2 = task2
@ -40,7 +62,6 @@ class SaveDialog:
label2 = self.xml.get_widget('label2') label2 = self.xml.get_widget('label2')
label2.set_text(msg2) label2.set_text(msg2)
label2.set_use_markup(True) label2.set_use_markup(True)
self.top.show() self.top.show()
if parent: if parent:
self.top.set_transient_for(parent) self.top.set_transient_for(parent)
@ -57,6 +78,7 @@ class QuestionDialog:
def __init__(self,msg1,msg2,label,task,parent=None): def __init__(self,msg1,msg2,label,task,parent=None):
self.xml = gtk.glade.XML(const.errdialogsFile,"questiondialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"questiondialog","gramps")
self.top = self.xml.get_widget('questiondialog') self.top = self.xml.get_widget('questiondialog')
self.top.set_icon(ICON)
self.top.set_title('') self.top.set_title('')
label1 = self.xml.get_widget('label1') label1 = self.xml.get_widget('label1')
@ -81,6 +103,7 @@ class QuestionDialog2:
def __init__(self,msg1,msg2,label_msg1,label_msg2,parent=None): def __init__(self,msg1,msg2,label_msg1,label_msg2,parent=None):
self.xml = gtk.glade.XML(const.errdialogsFile,"questiondialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"questiondialog","gramps")
self.top = self.xml.get_widget('questiondialog') self.top = self.xml.get_widget('questiondialog')
self.top.set_icon(ICON)
self.top.set_title('') self.top.set_title('')
label1 = self.xml.get_widget('label1') label1 = self.xml.get_widget('label1')
@ -106,6 +129,7 @@ class OptionDialog:
def __init__(self,msg1,msg2,btnmsg1,task1,btnmsg2,task2,parent=None): def __init__(self,msg1,msg2,btnmsg1,task1,btnmsg2,task2,parent=None):
self.xml = gtk.glade.XML(const.errdialogsFile,"optiondialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"optiondialog","gramps")
self.top = self.xml.get_widget('optiondialog') self.top = self.xml.get_widget('optiondialog')
self.top.set_icon(ICON)
self.top.set_title('') self.top.set_title('')
label1 = self.xml.get_widget('label1') label1 = self.xml.get_widget('label1')
@ -138,6 +162,7 @@ class ErrorDialog:
self.xml = gtk.glade.XML(const.errdialogsFile,"errdialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"errdialog","gramps")
self.top = self.xml.get_widget('errdialog') self.top = self.xml.get_widget('errdialog')
self.top.set_icon(ICON)
label1 = self.xml.get_widget('label1') label1 = self.xml.get_widget('label1')
label2 = self.xml.get_widget('label2') label2 = self.xml.get_widget('label2')
@ -155,6 +180,7 @@ class WarningDialog:
self.xml = gtk.glade.XML(const.errdialogsFile,"warndialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"warndialog","gramps")
self.top = self.xml.get_widget('warndialog') self.top = self.xml.get_widget('warndialog')
self.top.set_icon(ICON)
label1 = self.xml.get_widget('label1') label1 = self.xml.get_widget('label1')
label2 = self.xml.get_widget('label2') label2 = self.xml.get_widget('label2')
@ -172,6 +198,7 @@ class OkDialog:
self.xml = gtk.glade.XML(const.errdialogsFile,"okdialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"okdialog","gramps")
self.top = self.xml.get_widget('okdialog') self.top = self.xml.get_widget('okdialog')
self.top.set_icon(ICON)
label1 = self.xml.get_widget('label1') label1 = self.xml.get_widget('label1')
label2 = self.xml.get_widget('label2') label2 = self.xml.get_widget('label2')
@ -188,6 +215,7 @@ class MissingMediaDialog:
def __init__(self,msg1,msg2,task1,task2,task3,parent=None): def __init__(self,msg1,msg2,task1,task2,task3,parent=None):
self.xml = gtk.glade.XML(const.errdialogsFile,"missmediadialog","gramps") self.xml = gtk.glade.XML(const.errdialogsFile,"missmediadialog","gramps")
self.top = self.xml.get_widget('missmediadialog') self.top = self.xml.get_widget('missmediadialog')
self.top.set_icon(ICON)
self.task1 = task1 self.task1 = task1
self.task2 = task2 self.task2 = task2
self.task3 = task3 self.task3 = task3

View File

@ -1079,7 +1079,7 @@ class Gramps:
"""Clear out the database if permission was granted""" """Clear out the database if permission was granted"""
return return
def tool_callback(self,val): def tool_callback(self,epo,val):
if val: if val:
self.import_tool_callback() self.import_tool_callback()

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2000-2004 Donald N. Allingham # Copyright (C) 2000-2005 Donald N. Allingham
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -29,6 +29,7 @@
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import os import os
import re import re
from gettext import gettext as _
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -38,6 +39,7 @@ import re
import gobject import gobject
import gtk import gtk
import gtk.glade import gtk.glade
from gnome import help_display
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -46,7 +48,6 @@ import gtk.glade
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import Utils import Utils
from QuestionDialog import OkDialog from QuestionDialog import OkDialog
from gettext import gettext as _
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -73,9 +74,11 @@ class ChangeNames:
self.cb = callback self.cb = callback
self.db = db self.db = db
self.parent = parent self.parent = parent
if self.parent.child_windows.has_key(self.__class__):
self.parent.child_windows[self.__class__].present(None)
return
self.win_key = self.__class__
self.trans = db.transaction_begin() self.trans = db.transaction_begin()
self.win_key = self
self.child_windows = {}
self.name_list = [] self.name_list = []
for name in self.db.get_surname_list(): for name in self.db.get_surname_list():
@ -95,9 +98,11 @@ class ChangeNames:
self.top = gtk.glade.XML(glade_file,"top","gramps") self.top = gtk.glade.XML(glade_file,"top","gramps")
self.window = self.top.get_widget('top') self.window = self.top.get_widget('top')
self.window.set_icon(self.parent.topWindow.get_icon())
self.top.signal_autoconnect({ self.top.signal_autoconnect({
"destroy_passed_object" : self.close, "destroy_passed_object" : self.close,
"on_ok_clicked" : self.on_ok_clicked, "on_ok_clicked" : self.on_ok_clicked,
"on_help_clicked" : self.on_help_clicked,
"on_delete_event" : self.on_delete_event "on_delete_event" : self.on_delete_event
}) })
self.list = self.top.get_widget("list") self.list = self.top.get_widget("list")
@ -132,6 +137,10 @@ class ChangeNames:
self.add_itself_to_menu() self.add_itself_to_menu()
self.window.show() self.window.show()
def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
help_display('gramps-manual','tools-db')
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.remove_itself_from_menu() self.remove_itself_from_menu()
@ -175,7 +184,7 @@ class ChangeNames:
if anychange: if anychange:
self.db.transaction_commit(self.trans,_("Capitalization changes")) self.db.transaction_commit(self.trans,_("Capitalization changes"))
self.close(obj) self.close(obj)
self.cb(1) self.cb(None,1)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2000-2004 Donald N. Allingham # Copyright (C) 2000-2005 Donald N. Allingham
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -28,6 +28,7 @@
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import os import os
from gettext import gettext as _
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -35,7 +36,6 @@ import os
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import Utils import Utils
from gettext import gettext as _
import NameDisplay import NameDisplay
#------------------------------------------------------------------------ #------------------------------------------------------------------------
@ -46,6 +46,7 @@ import NameDisplay
import gobject import gobject
import gtk import gtk
import gtk.glade import gtk.glade
from gnome import help_display
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -73,28 +74,38 @@ class DesBrowse:
self.glade = gtk.glade.XML(glade_file,"top","gramps") self.glade = gtk.glade.XML(glade_file,"top","gramps")
self.glade.signal_autoconnect({ self.glade.signal_autoconnect({
"destroy_passed_object" : self.close, "destroy_passed_object" : self.close,
"on_help_clicked" : self.on_help_clicked,
"on_delete_event": self.on_delete_event, "on_delete_event": self.on_delete_event,
}) })
self.window = self.glade.get_widget("top") self.window = self.glade.get_widget("top")
self.window.set_icon(self.parent.topWindow.get_icon())
self.active_name = _("Descendant Browser: %s") \
% NameDisplay.displayer.display(self.active)
Utils.set_titles(self.window,self.glade.get_widget('title'), Utils.set_titles(self.window,self.glade.get_widget('title'),
_("Descendant Browser")) self.active_name)
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)
self.model = gtk.TreeStore(gobject.TYPE_STRING,gobject.TYPE_PYOBJECT)
self.tree.set_model(self.model)
self.tree.set_rules_hint(True) self.tree.set_rules_hint(True)
self.tree.set_headers_visible(False) self.tree.set_headers_visible(False)
self.add_to_tree(None,None,self.active.get_handle())
self.tree.expand_all()
self.tree.connect('event',self.button_press_event) self.tree.connect('event',self.button_press_event)
self.make_new_model()
self.add_itself_to_menu() self.add_itself_to_menu()
self.window.show() self.window.show()
def make_new_model(self):
self.model = gtk.TreeStore(gobject.TYPE_STRING,gobject.TYPE_PYOBJECT)
self.tree.set_model(self.model)
self.add_to_tree(None,None,self.active.get_handle())
self.tree.expand_all()
def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
help_display('gramps-manual','tools-ae')
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.remove_itself_from_menu() self.remove_itself_from_menu()
@ -104,7 +115,7 @@ class DesBrowse:
def add_itself_to_menu(self): def add_itself_to_menu(self):
self.parent.child_windows[self.win_key] = self self.parent.child_windows[self.win_key] = self
self.parent_menu_item = gtk.MenuItem(_("Descendant Browser tool")) self.parent_menu_item = gtk.MenuItem(self.active_name)
self.parent_menu_item.connect("activate",self.present) self.parent_menu_item.connect("activate",self.present)
self.parent_menu_item.show() self.parent_menu_item.show()
self.parent.winsmenu.append(self.parent_menu_item) self.parent.winsmenu.append(self.parent_menu_item)
@ -136,7 +147,11 @@ class DesBrowse:
if iter: if iter:
person_handle = store.get_value(iter,1) person_handle = store.get_value(iter,1)
person = self.db.get_person_from_handle(person_handle) person = self.db.get_person_from_handle(person_handle)
EditPerson.EditPerson(self.parent,person,self.db,self.callback) EditPerson.EditPerson(self.parent,person,self.db,self.this_callback)
def this_callback(self,epo,val):
self.callback(epo,val)
self.make_new_model()
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2000-2004 Donald N. Allingham # Copyright (C) 2000-2005 Donald N. Allingham
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -28,6 +28,7 @@
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import os import os
from gettext import gettext as _
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -36,6 +37,7 @@ import os
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import gtk import gtk
import gtk.glade import gtk.glade
from gnome import help_display
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -49,9 +51,7 @@ import Utils
import BaseDoc import BaseDoc
import OpenSpreadSheet import OpenSpreadSheet
import const import const
from QuestionDialog import WarningDialog from QuestionDialog import WarningDialog
from gettext import gettext as _
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -127,8 +127,10 @@ class EventComparison:
def __init__(self,database,parent): def __init__(self,database,parent):
self.db = database self.db = database
self.parent = parent self.parent = parent
self.win_key = self if self.parent.child_windows.has_key(self.__class__):
self.child_windows = {} self.parent.child_windows[self.__class__].present(None)
return
self.win_key = self.__class__
base = os.path.dirname(__file__) base = os.path.dirname(__file__)
self.glade_file = base + os.sep + "eventcmp.glade" self.glade_file = base + os.sep + "eventcmp.glade"
@ -140,10 +142,12 @@ class EventComparison:
"on_editor_clicked" : self.filter_editor_clicked, "on_editor_clicked" : self.filter_editor_clicked,
"on_filter_list_enter" : self.filter_list_enter, "on_filter_list_enter" : self.filter_list_enter,
"on_filters_delete_event": self.on_delete_event, "on_filters_delete_event": self.on_delete_event,
"on_help_clicked" : self.on_help_clicked,
"destroy_passed_object" : self.close "destroy_passed_object" : self.close
}) })
self.window = self.filterDialog.get_widget("filters") self.window = self.filterDialog.get_widget("filters")
self.window.set_icon(self.parent.topWindow.get_icon())
self.filters = self.filterDialog.get_widget("filter_list") self.filters = self.filterDialog.get_widget("filter_list")
self.label = _('Event comparison filter selection') self.label = _('Event comparison filter selection')
@ -160,36 +164,26 @@ class EventComparison:
self.add_itself_to_menu() self.add_itself_to_menu()
self.window.show() self.window.show()
def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
help_display('gramps-manual','tools-util')
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.close_child_windows()
self.remove_itself_from_menu() self.remove_itself_from_menu()
def close(self,obj): def close(self,obj):
self.close_child_windows()
self.remove_itself_from_menu() self.remove_itself_from_menu()
self.window.destroy() self.window.destroy()
def close_child_windows(self):
for child_window in self.child_windows.values():
child_window.close(None)
self.child_windows = {}
def add_itself_to_menu(self): def add_itself_to_menu(self):
self.parent.child_windows[self.win_key] = self self.parent.child_windows[self.win_key] = self
self.parent_menu_item = gtk.MenuItem(_("Event Comparison tool")) self.parent_menu_item = gtk.MenuItem(_("Event Comparison tool"))
self.parent_menu_item.set_submenu(gtk.Menu()) self.parent_menu_item.connect("activate",self.present)
self.parent_menu_item.show() self.parent_menu_item.show()
self.parent.winsmenu.append(self.parent_menu_item) self.parent.winsmenu.append(self.parent_menu_item)
self.winsmenu = self.parent_menu_item.get_submenu()
self.menu_item = gtk.MenuItem(_('Filter Selection'))
self.menu_item.connect("activate",self.present)
self.menu_item.show()
self.winsmenu.append(self.menu_item)
def remove_itself_from_menu(self): def remove_itself_from_menu(self):
del self.parent.child_windows[self.win_key] del self.parent.child_windows[self.win_key]
self.menu_item.destroy()
self.winsmenu.destroy()
self.parent_menu_item.destroy() self.parent_menu_item.destroy()
def present(self,obj): def present(self,obj):
@ -211,7 +205,7 @@ class EventComparison:
if len(plist) == 0: if len(plist) == 0:
WarningDialog(_("No matches were found")) WarningDialog(_("No matches were found"))
else: else:
DisplayChart(self.db,plist,self) DisplayChart(self.db,plist,self.parent)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
@ -259,14 +253,16 @@ class DisplayChart:
self.topDialog.signal_autoconnect({ self.topDialog.signal_autoconnect({
"on_write_table" : self.on_write_table, "on_write_table" : self.on_write_table,
"destroy_passed_object" : self.close, "destroy_passed_object" : self.close,
"on_help_clicked" : self.on_help_clicked,
"on_view_delete_event" : self.on_delete_event, "on_view_delete_event" : self.on_delete_event,
}) })
self.window = self.topDialog.get_widget("view") self.window = self.topDialog.get_widget("view")
self.window.set_icon(self.parent.topWindow.get_icon())
self.eventlist = self.topDialog.get_widget('treeview') self.eventlist = self.topDialog.get_widget('treeview')
Utils.set_titles(self.window, self.topDialog.get_widget('title'), Utils.set_titles(self.window, self.topDialog.get_widget('title'),
_('Event Comparison')) _('Event Comparison Results'))
self.sort = Sort.Sort(self.db) self.sort = Sort.Sort(self.db)
self.my_list.sort(self.sort.by_last_name) self.my_list.sort(self.sort.by_last_name)
@ -277,6 +273,10 @@ class DisplayChart:
self.add_itself_to_menu() self.add_itself_to_menu()
self.window.show() self.window.show()
def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
help_display('gramps-manual','tools-ae')
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.remove_itself_from_menu() self.remove_itself_from_menu()
if self.save_form: if self.save_form:
@ -290,7 +290,7 @@ class DisplayChart:
def add_itself_to_menu(self): def add_itself_to_menu(self):
self.parent.child_windows[self.win_key] = self self.parent.child_windows[self.win_key] = self
self.parent_menu_item = gtk.MenuItem(_("Event Comparison")) self.parent_menu_item = gtk.MenuItem(_("Event Comparison Results"))
self.parent_menu_item.connect("activate",self.present) self.parent_menu_item.connect("activate",self.present)
self.parent_menu_item.show() self.parent_menu_item.show()
self.parent.winsmenu.append(self.parent_menu_item) self.parent.winsmenu.append(self.parent_menu_item)

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2000-2004 Donald N. Allingham # Copyright (C) 2000-2005 Donald N. Allingham
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -22,6 +22,23 @@
"Database Processing/Merge people" "Database Processing/Merge people"
#-------------------------------------------------------------------------
#
# standard python models
#
#-------------------------------------------------------------------------
import os
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# GNOME libraries
#
#-------------------------------------------------------------------------
import gtk
import gtk.glade
from gnome import help_display
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# GRAMPS modules # GRAMPS modules
@ -33,23 +50,6 @@ import soundex
import NameDisplay import NameDisplay
import ListModel import ListModel
import MergeData import MergeData
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# standard python models
#
#-------------------------------------------------------------------------
import string
import os
#-------------------------------------------------------------------------
#
# GNOME libraries
#
#-------------------------------------------------------------------------
import gtk
import gtk.glade
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -75,7 +75,10 @@ class Merge:
def __init__(self,database,callback,parent): def __init__(self,database,callback,parent):
self.db = database self.db = database
self.parent = parent self.parent = parent
self.win_key = self if self.parent.child_windows.has_key(self.__class__):
self.parent.child_windows[self.__class__].present(None)
return
self.win_key = self.__class__
self.map = {} self.map = {}
self.list = [] self.list = []
self.index = 0 self.index = 0
@ -110,24 +113,30 @@ 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)
self.dialog_window = top.get_widget('dialog') self.window = top.get_widget('dialog')
Utils.set_titles(self.dialog_window, top.get_widget('title'), self.window.set_icon(self.parent.topWindow.get_icon())
Utils.set_titles(self.window, top.get_widget('title'),
_('Merge people')) _('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" : self.close, "destroy_passed_object" : self.close,
"on_delete_merge_event" : self.on_delete_event, "on_help_clicked" : self.on_help_clicked,
"on_delete_merge_event" : self.on_delete_event,
}) })
self.add_itself_to_menu() self.add_itself_to_menu()
self.dialog_window.show() self.window.show()
def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
help_display('gramps-manual','tools-db')
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.remove_itself_from_menu() self.remove_itself_from_menu()
def close(self,obj): def close(self,obj):
self.remove_itself_from_menu() self.remove_itself_from_menu()
self.dialog_window.destroy() self.window.destroy()
def add_itself_to_menu(self): def add_itself_to_menu(self):
self.parent.child_windows[self.win_key] = self self.parent.child_windows[self.win_key] = self
@ -141,7 +150,7 @@ class Merge:
self.parent_menu_item.destroy() self.parent_menu_item.destroy()
def present(self,obj): def present(self,obj):
self.dialog_window.present() self.window.present()
def ancestors_of(self,p1_id,id_list): def ancestors_of(self,p1_id,id_list):
if (not p1_id) or (p1_id in id_list): if (not p1_id) or (p1_id in id_list):
@ -174,6 +183,7 @@ class Merge:
def find_potentials(self,thresh): def find_potentials(self,thresh):
top = gtk.glade.XML(self.glade_file,"message","gramps") top = gtk.glade.XML(self.glade_file,"message","gramps")
self.topWin = top.get_widget("message") self.topWin = top.get_widget("message")
self.topWin.set_icon(self.parent.topWindow.get_icon())
self.progress = top.get_widget("progressbar1") self.progress = top.get_widget("progressbar1")
Utils.set_titles(self.topWin,top.get_widget('title'), Utils.set_titles(self.topWin,top.get_widget('title'),
@ -241,16 +251,17 @@ class Merge:
def show(self): def show(self):
top = gtk.glade.XML(self.glade_file,"mergelist","gramps") top = gtk.glade.XML(self.glade_file,"mergelist","gramps")
self.window = top.get_widget("mergelist") self.window = top.get_widget("mergelist")
self.win_show_key = self.window self.window.set_icon(self.parent.topWindow.get_icon())
Utils.set_titles(self.window, top.get_widget('title'), Utils.set_titles(self.window, top.get_widget('title'),
_('Potential Merges')) _('Potential Merges'))
self.mlist = top.get_widget("mlist") self.mlist = top.get_widget("mlist")
top.signal_autoconnect({ top.signal_autoconnect({
"destroy_passed_object" : self.close_show, "destroy_passed_object" : self.close,
"on_do_merge_clicked" : self.on_do_merge_clicked, "on_do_merge_clicked" : self.on_do_merge_clicked,
"on_delete_show_event" : self.on_delete_show_event, "on_help_show_clicked" : self.on_help_clicked,
"on_delete_show_event" : self.on_delete_event,
}) })
mtitles = [(_('Rating'),3,75),(_('First Person'),1,200), mtitles = [(_('Rating'),3,75),(_('First Person'),1,200),
@ -259,30 +270,9 @@ class Merge:
event_func=self.on_do_merge_clicked) event_func=self.on_do_merge_clicked)
self.redraw() self.redraw()
self.add_show_to_menu() self.add_itself_to_menu()
self.window.show() self.window.show()
def on_delete_show_event(self,obj,b):
self.remove_show_from_menu()
def close_show(self,obj):
self.remove_show_from_menu()
self.window.destroy()
def add_show_to_menu(self):
self.parent.child_windows[self.win_show_key] = self.window
self.show_parent_menu_item = gtk.MenuItem(_('Potential Merges'))
self.show_parent_menu_item.connect("activate",self.present_show)
self.show_parent_menu_item.show()
self.parent.winsmenu.append(self.show_parent_menu_item)
def remove_show_from_menu(self):
del self.parent.child_windows[self.win_show_key]
self.show_parent_menu_item.destroy()
def present_show(self,obj):
self.window.present()
def redraw(self): def redraw(self):
list = [] list = []
for p1key in self.map.keys(): for p1key in self.map.keys():
@ -423,8 +413,8 @@ class Merge:
if name.get_first_name() == name1.get_first_name(): if name.get_first_name() == name1.get_first_name():
return 1 return 1
else: else:
list1 = string.split(name.get_first_name()) list1 = name.get_first_name().split()
list2 = string.split(name1.get_first_name()) list2 = name1.get_first_name().split()
if len(list1) < len(list2): if len(list1) < len(list2):
return self.list_reduce(list1,list2) return self.list_reduce(list1,list2)
@ -452,8 +442,8 @@ class Merge:
if name1 == name2: if name1 == name2:
return 1 return 1
list1 = string.split(string.replace(name1,","," ")) list1 = name1.replace(","," ").split()
list2 = string.split(string.replace(name2,","," ")) list2 = name2.replace(","," ").split()
value = 0 value = 0
for name in list1: for name in list1:

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2000-2004 Donald N. Allingham # Copyright (C) 2000-2005 Donald N. Allingham
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -29,6 +29,7 @@
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import os import os
import re import re
from gettext import gettext as _
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -38,6 +39,7 @@ import re
import gobject import gobject
import gtk import gtk
import gtk.glade import gtk.glade
from gnome import help_display
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -46,7 +48,6 @@ import gtk.glade
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import Utils import Utils
from QuestionDialog import OkDialog from QuestionDialog import OkDialog
from gettext import gettext as _
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -92,9 +93,11 @@ class PatchNames:
self.cb = callback self.cb = callback
self.db = db self.db = db
self.parent = parent self.parent = parent
if self.parent.child_windows.has_key(self.__class__):
self.parent.child_windows[self.__class__].present(None)
return
self.win_key = self.__class__
self.trans = db.transaction_begin() self.trans = db.transaction_begin()
self.win_key = self
self.child_windows = {}
self.title_list = [] self.title_list = []
self.nick_list = [] self.nick_list = []
self.prefix1_list = [] self.prefix1_list = []
@ -144,9 +147,11 @@ class PatchNames:
self.top = gtk.glade.XML(glade_file,"top","gramps") self.top = gtk.glade.XML(glade_file,"top","gramps")
self.window = self.top.get_widget('top') self.window = self.top.get_widget('top')
self.window.set_icon(self.parent.topWindow.get_icon())
self.top.signal_autoconnect({ self.top.signal_autoconnect({
"destroy_passed_object" : self.close, "destroy_passed_object" : self.close,
"on_ok_clicked" : self.on_ok_clicked, "on_ok_clicked" : self.on_ok_clicked,
"on_help_clicked" : self.on_help_clicked,
"on_delete_event" : self.on_delete_event "on_delete_event" : self.on_delete_event
}) })
self.list = self.top.get_widget("list") self.list = self.top.get_widget("list")
@ -228,6 +233,10 @@ class PatchNames:
self.add_itself_to_menu() self.add_itself_to_menu()
self.window.show() self.window.show()
def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
help_display('gramps-manual','tools-db')
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.remove_itself_from_menu() self.remove_itself_from_menu()
@ -292,7 +301,7 @@ class PatchNames:
self.db.transaction_commit(self.trans,_("Extract information from names")) self.db.transaction_commit(self.trans,_("Extract information from names"))
self.close(obj) self.close(obj)
self.cb(1) self.cb(None,1)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #

View File

@ -18,7 +18,7 @@
<property name="skip_pager_hint">False</property> <property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="has_separator">True</property> <property name="has_separator">False</property>
<signal name="delete_event" handler="on_delete_event" last_modification_time="Mon, 10 May 2004 22:50:36 GMT"/> <signal name="delete_event" handler="on_delete_event" last_modification_time="Mon, 10 May 2004 22:50:36 GMT"/>
<child internal-child="vbox"> <child internal-child="vbox">
@ -45,6 +45,20 @@
<signal name="clicked" handler="destroy_passed_object" object="top"/> <signal name="clicked" handler="destroy_passed_object" object="top"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button2">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
<signal name="clicked" handler="on_help_clicked" last_modification_time="Thu, 24 Mar 2005 04:36:39 GMT"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -105,6 +119,27 @@
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;i&gt;Double-click on the row to edit personal information&lt;/i&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.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> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -110,6 +110,7 @@
<property name="directory_entry">False</property> <property name="directory_entry">False</property>
<property name="modal">False</property> <property name="modal">False</property>
<property name="use_filechooser">False</property> <property name="use_filechooser">False</property>
<property name="filechooser_action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
<child internal-child="entry"> <child internal-child="entry">
<widget class="GtkEntry" id="filename"> <widget class="GtkEntry" id="filename">
@ -121,7 +122,7 @@
<property name="max_length">0</property> <property name="max_length">0</property>
<property name="text" translatable="yes"></property> <property name="text" translatable="yes"></property>
<property name="has_frame">True</property> <property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property> <property name="invisible_char">*</property>
<property name="activates_default">False</property> <property name="activates_default">False</property>
</widget> </widget>
</child> </child>
@ -202,6 +203,20 @@
<signal name="clicked" handler="on_write_table" object="view"/> <signal name="clicked" handler="on_write_table" object="view"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button30">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
<signal name="clicked" handler="on_help_clicked" last_modification_time="Thu, 24 Mar 2005 04:06:52 GMT"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -286,7 +301,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes"></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_CENTER</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="default_width">400</property>
<property name="resizable">True</property> <property name="resizable">True</property>
@ -294,7 +309,7 @@
<property name="decorated">True</property> <property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property> <property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property> <property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="has_separator">False</property> <property name="has_separator">False</property>
<signal name="delete_event" handler="on_filters_delete_event" last_modification_time="Mon, 10 May 2004 00:54:23 GMT"/> <signal name="delete_event" handler="on_filters_delete_event" last_modification_time="Mon, 10 May 2004 00:54:23 GMT"/>
@ -337,6 +352,20 @@
<signal name="clicked" handler="on_apply_clicked" object="filters"/> <signal name="clicked" handler="on_apply_clicked" object="filters"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button29">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
<signal name="clicked" handler="on_help_clicked" last_modification_time="Thu, 24 Mar 2005 04:05:22 GMT"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -77,7 +77,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property> <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
<property name="fraction">0</property> <property name="fraction">0</property>
<property name="pulse_step">0.1</property> <property name="pulse_step">0.10000000149</property>
</widget> </widget>
<packing> <packing>
<property name="padding">20</property> <property name="padding">20</property>
@ -152,6 +152,20 @@
<signal name="clicked" handler="on_do_merge_clicked"/> <signal name="clicked" handler="on_do_merge_clicked"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button13">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
<signal name="clicked" handler="on_help_show_clicked" last_modification_time="Thu, 24 Mar 2005 06:04:48 GMT"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -280,6 +294,20 @@
<signal name="clicked" handler="on_merge_ok_clicked" object="dialog"/> <signal name="clicked" handler="on_merge_ok_clicked" object="dialog"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button14">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
<signal name="clicked" handler="on_help_clicked" last_modification_time="Thu, 24 Mar 2005 06:05:18 GMT"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -3,7 +3,7 @@
<glade-interface> <glade-interface>
<widget class="GtkWindow" id="top"> <widget class="GtkDialog" id="top">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes"></property> <property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
@ -16,93 +16,35 @@
<property name="decorated">True</property> <property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property> <property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property> <property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<signal name="delete_event" handler="on_delete_event" last_modification_time="Mon, 10 May 2004 00:32:54 GMT"/> <property name="has_separator">False</property>
<signal name="delete_event" handler="on_delete_event" last_modification_time="Thu, 24 Mar 2005 06:19:34 GMT"/>
<child> <child internal-child="vbox">
<widget class="GtkVBox" id="vbox2"> <widget class="GtkVBox" id="dialog-vbox1">
<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">0</property>
<child> <child internal-child="action_area">
<widget class="GtkLabel" id="title"> <widget class="GtkHButtonBox" id="dialog-action_area1">
<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">0</property>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="label" translatable="yes">Below is a list of the nicknames, titles and family name prefixes that GRAMPS can extract from the
current database. If you accept the changes, GRAMPS will modify the entries
that have been selected.</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">10</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="scrolledwindow2">
<property name="visible">True</property>
<property name="can_focus">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="GtkTreeView" id="list">
<property name="visible">True</property>
<property name="can_focus">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>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property> <property name="layout_style">GTK_BUTTONBOX_END</property>
<property name="spacing">6</property>
<child>
<widget class="GtkButton" id="helpbutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
<signal name="clicked" handler="on_help_clicked" last_modification_time="Thu, 24 Mar 2005 05:34:31 GMT"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button6"> <widget class="GtkButton" id="button6">
@ -113,6 +55,7 @@ that have been selected.</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="focus_on_click">True</property> <property name="focus_on_click">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="top" last_modification_time="Wed, 16 Apr 2003 05:06:50 GMT"/> <signal name="clicked" handler="destroy_passed_object" object="top" last_modification_time="Wed, 16 Apr 2003 05:06:50 GMT"/>
</widget> </widget>
</child> </child>
@ -122,17 +65,175 @@ that have been selected.</property>
<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">_Accept changes and close</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property> <property name="focus_on_click">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_ok_clicked" object="top" last_modification_time="Wed, 16 Apr 2003 05:07:24 GMT"/> <signal name="clicked" handler="on_ok_clicked" object="top" last_modification_time="Wed, 16 Apr 2003 05:07:24 GMT"/>
<child>
<widget class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xscale">0</property>
<property name="yscale">0</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">0</property>
<property name="right_padding">0</property>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">2</property>
<child>
<widget class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-ok</property>
<property name="icon_size">4</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>
<child>
<widget class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="label" translatable="yes">_Accept and close</property>
<property name="use_underline">True</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="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
</widget> </widget>
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="padding">6</property> <property name="padding">0</property>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox2">
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<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">0</property>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="label" translatable="yes">Below is a list of the nicknames, titles and family name prefixes that GRAMPS can extract from the
current database. If you accept the changes, GRAMPS will modify the entries
that have been selected.</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">10</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="scrolledwindow2">
<property name="visible">True</property>
<property name="can_focus">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="GtkTreeView" id="list">
<property name="visible">True</property>
<property name="can_focus">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>
<child>
<widget class="GtkHButtonBox" id="hbuttonbox2">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<property name="spacing">6</property>
</widget>
<packing>
<property name="padding">6</property>
<property name="expand">False</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> <property name="fill">True</property>
</packing> </packing>
</child> </child>