Updated dialogs

svn: r1314
This commit is contained in:
Don Allingham 2003-02-24 04:51:57 +00:00
parent 7778b0c754
commit 0f616d0b90
56 changed files with 1906 additions and 714 deletions

6
NEWS
View File

@ -1,3 +1,9 @@
Version 0.9.1
* Custom paper sizes may be set for reports
* Witnesses may be added to an event. The witnesses do not have to be in
the database, in which case only a string for a name is kept.
* Improved Dialogs to be compliant with GNOME Human Interface Guidelines.
Version 0.9.0 Version 0.9.0
* GNOME 2.0 support. Requires pygtk2 and gnome-python2. * GNOME 2.0 support. Requires pygtk2 and gnome-python2.
* The single person list has been replaced with a tabbed person list, sort on * The single person list has been replaced with a tabbed person list, sort on

Binary file not shown.

View File

@ -100,8 +100,9 @@ class AddMediaObject:
external = self.glade.get_widget("private") external = self.glade.get_widget("private")
if os.path.exists(filename) == 0: if os.path.exists(filename) == 0:
msgstr = _("%s is not a valid file name or does not exist.") msgstr = _("Cannot import %s")
ErrorDialog(msgstr % filename) msgstr2 = _("The filename supplied could not be found.")
ErrorDialog(msgstr % filename, msgstr2)
return return
type = Utils.get_mime_type(filename) type = Utils.get_mime_type(filename)

View File

@ -114,8 +114,8 @@ class Bookmarks :
up.connect('clicked', self.up_clicked) up.connect('clicked', self.up_clicked)
down.connect('clicked',self.down_clicked) down.connect('clicked',self.down_clicked)
delete.connect('clicked',self.delete_clicked) delete.connect('clicked',self.delete_clicked)
self.top.add_button(gtk.STOCK_OK,0)
self.top.add_button(gtk.STOCK_CANCEL,1) self.top.add_button(gtk.STOCK_CANCEL,1)
self.top.add_button(gtk.STOCK_OK,0)
bbox.add(up) bbox.add(up)
bbox.add(down) bbox.add(down)
bbox.add(delete) bbox.add(delete)

View File

@ -51,7 +51,7 @@ import AutoComp
import ListModel import ListModel
import RelLib import RelLib
from DateEdit import DateEdit from DateEdit import DateEdit
from QuestionDialog import QuestionDialog, WarningDialog, ErrorDialog from QuestionDialog import QuestionDialog, WarningDialog, ErrorDialog, SaveDialog
from intl import gettext as _ from intl import gettext as _
@ -799,20 +799,28 @@ class EditPerson:
"""If the data has changed, give the user a chance to cancel """If the data has changed, give the user a chance to cancel
the close window""" the close window"""
if self.did_data_change(): if self.did_data_change():
QuestionDialog(_('Abandon Changes'), n = "<i>%s</i>" % self.person.getPrimaryName().getRegularName()
_("Are you sure you want to abandon your changes?"), SaveDialog(_('Save Changes to %s?' % n),
self.cancel_callback) _('If you close without saving, the changes you '
'have made will be lost'),
self.cancel_callback,
self.save)
else: else:
self.gallery.close() self.gallery.close()
self.window.destroy() self.window.destroy()
def save(self):
self.on_apply_person_clicked(None)
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
"""If the data has changed, give the user a chance to cancel """If the data has changed, give the user a chance to cancel
the close window""" the close window"""
if self.did_data_change(): if self.did_data_change():
QuestionDialog(_('Abandon Changes'), SaveDialog(_('Save Changes to %s?' % n),
_("Are you sure you want to abandon your changes?"), _('If you close without saving, the changes you '
self.cancel_callback) 'have made will be lost'),
self.cancel_callback,
self.save)
return 1 return 1
else: else:
self.gallery.close() self.gallery.close()
@ -1306,6 +1314,7 @@ class EditPerson:
Utils.modified() Utils.modified()
if error == 1: if error == 1:
msg2 = _("Problem changing the gender")
msg = _("Changing the gender caused problems " msg = _("Changing the gender caused problems "
"with marriage information.\nPlease check " "with marriage information.\nPlease check "
"the person's marriages.") "the person's marriages.")

View File

@ -35,6 +35,7 @@ import const
import Utils import Utils
import GrampsCfg import GrampsCfg
import ImageSelect import ImageSelect
import ListModel
from intl import gettext as _ from intl import gettext as _
@ -150,31 +151,35 @@ class EditSource:
f_attr_list.append((name,v.getType())) f_attr_list.append((name,v.getType()))
slist = self.top_window.get_widget('slist') slist = self.top_window.get_widget('slist')
titles = [(_('Source Type'),0,150),(_('Object'),1,150),(_('Value'),2,150)]
self.model = ListModel.ListModel(slist,titles)
if len(p_event_list) > 0: if len(p_event_list) > 0:
for p in p_event_list: for p in p_event_list:
slist.append([_("Individual Events"),p[0], self.model.add([_("Individual Events"),p[0],
const.display_pevent(p[1])]) const.display_pevent(p[1])])
if len(p_attr_list) > 0: if len(p_attr_list) > 0:
for p in p_attr_list: for p in p_attr_list:
slist.append([_("Individual Attributes"),p[0], self.model.add([_("Individual Attributes"),p[0],
const.display_pattr(p[1])]) const.display_pattr(p[1])])
if len(p_name_list) > 0: if len(p_name_list) > 0:
for p in p_name_list: for p in p_name_list:
slist.append([_("Individual Names"),p[0],p[1]]) self.model.add([_("Individual Names"),p[0],p[1]])
if len(f_event_list) > 0: if len(f_event_list) > 0:
for p in f_event_list: for p in f_event_list:
slist.append([_("Family Events"),p[0], self.model.add([_("Family Events"),p[0],
const.display_fevent(p[1])]) const.display_fevent(p[1])])
if len(f_attr_list) > 0: if len(f_attr_list) > 0:
for p in f_event_list: for p in f_event_list:
slist.append([_("Family Attributes"),p[0], self.model.add([_("Family Attributes"),p[0],
const.display_fattr(p[1])]) const.display_fattr(p[1])])
if len(m_list) > 0: if len(m_list) > 0:
for p in m_list: for p in m_list:
slist.append([_("Media Objects"),p,'']) self.model.add([_("Media Objects"),p,''])
if len(p_list) > 0: if len(p_list) > 0:
for p in p_list: for p in p_list:
slist.append([_("Places"),p,'']) self.model.add([_("Places"),p,''])
def on_source_apply_clicked(self,obj): def on_source_apply_clicked(self,obj):

View File

@ -34,6 +34,7 @@ import gtk.glade
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import Sources import Sources
import Witness
import const import const
import Utils import Utils
import GrampsCfg import GrampsCfg
@ -66,9 +67,13 @@ class EventEditor:
if event: if event:
self.srcreflist = self.event.getSourceRefList() self.srcreflist = self.event.getSourceRefList()
self.witnesslist = self.event.get_witness_list()
if not self.witnesslist:
self.witnesslist = []
self.date = Date.Date(self.event.getDateObj()) self.date = Date.Date(self.event.getDateObj())
else: else:
self.srcreflist = [] self.srcreflist = []
self.witnesslist = []
self.date = Date.Date(None) self.date = Date.Date(None)
self.top = gtk.glade.XML(const.dialogFile, "event_edit") self.top = gtk.glade.XML(const.dialogFile, "event_edit")
@ -77,6 +82,7 @@ class EventEditor:
self.place_field = self.top.get_widget("eventPlace") self.place_field = self.top.get_widget("eventPlace")
self.cause_field = self.top.get_widget("eventCause") self.cause_field = self.top.get_widget("eventCause")
self.slist = self.top.get_widget("slist") self.slist = self.top.get_widget("slist")
self.wlist = self.top.get_widget("wlist")
self.place_combo = self.top.get_widget("eventPlace_combo") self.place_combo = self.top.get_widget("eventPlace_combo")
self.date_field = self.top.get_widget("eventDate") self.date_field = self.top.get_widget("eventDate")
self.cause_field = self.top.get_widget("eventCause") self.cause_field = self.top.get_widget("eventCause")
@ -101,6 +107,11 @@ class EventEditor:
self.top.get_widget('add_src'), self.top.get_widget('add_src'),
self.top.get_widget('del_src')) self.top.get_widget('del_src'))
self.witnesstab = Witness.WitnessTab(self.witnesslist,self.parent,
self.top,self.wlist,
self.top.get_widget('add_witness'),
self.top.get_widget('del_witness'))
AutoComp.AutoCombo(self.event_menu,list) AutoComp.AutoCombo(self.event_menu,list)
AutoComp.AutoEntry(self.place_field,self.pmap.keys()) AutoComp.AutoEntry(self.place_field,self.pmap.keys())
@ -192,6 +203,7 @@ class EventEditor:
if self.event == None: if self.event == None:
self.event = RelLib.Event() self.event = RelLib.Event()
self.event.setSourceRefList(self.srcreflist) self.event.setSourceRefList(self.srcreflist)
self.event.set_witness_list(self.witnesslist)
self.parent.elist.append(self.event) self.parent.elist.append(self.event)
self.update_event(ename,self.date,eplace_obj,edesc,enote,epriv,ecause) self.update_event(ename,self.date,eplace_obj,edesc,enote,epriv,ecause)
@ -219,6 +231,7 @@ class EventEditor:
dobj = self.event.getDateObj() dobj = self.event.getDateObj()
self.event.setSourceRefList(self.srcreflist) self.event.setSourceRefList(self.srcreflist)
self.event.set_witness_list(self.witnesslist)
if Date.compare_dates(dobj,date) != 0: if Date.compare_dates(dobj,date) != 0:
self.event.setDateObj(date) self.event.setDateObj(date)

View File

@ -66,7 +66,12 @@ class FamilyView:
def __init__(self,parent): def __init__(self,parent):
self.parent = parent self.parent = parent
self.top = parent.gtop self.top = parent.gtop
self.ap_data = self.top.get_widget('ap_data').get_buffer() self.ap_data = self.top.get_widget('ap_data')
self.ap_model = gtk.ListStore(gobject.TYPE_STRING)
self.ap_data.set_model(self.ap_model)
column = gtk.TreeViewColumn('',gtk.CellRendererText(),text=0)
self.ap_data.append_column(column)
self.ap_data.connect('button-press-event',self.edit_active_person)
self.swap_btn = self.top.get_widget('swap_spouse_btn') self.swap_btn = self.top.get_widget('swap_spouse_btn')
self.add_spouse_btn = self.top.get_widget('add_spouse') self.add_spouse_btn = self.top.get_widget('add_spouse')
@ -142,6 +147,10 @@ class FamilyView:
(_('Gender'),100,-1), (_('Birth Date'),150,-1), (_('Gender'),100,-1), (_('Birth Date'),150,-1),
(_('Status'),150,-1), ('',0,-1) ]) (_('Status'),150,-1), ('',0,-1) ])
def edit_active_person(self,obj,event):
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
self.parent.load_person(self.person)
def on_child_list_button_press(self,obj,event): def on_child_list_button_press(self,obj,event):
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1: if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
model, iter = self.child_selection.get_selected() model, iter = self.child_selection.get_selected()
@ -217,9 +226,13 @@ class FamilyView:
def remove_spouse(self,obj): def remove_spouse(self,obj):
if self.selected_spouse: if self.selected_spouse:
name = GrampsCfg.nameof(self.selected_spouse) nap = GrampsCfg.nameof(self.person)
QuestionDialog(_('Delete Spouse'), nsp = GrampsCfg.nameof(self.selected_spouse)
_('Do you wish to remove %s as a spouse?') % name, QuestionDialog(_('Remove %s as a spouse of %s?') % (nsp,nap),
_('Removing a spouse removes the relationship betwen '
'the spouse and the active person. It does not '
'remove the spouse from the database'),
_('Remove Spouse'),
self.really_remove_spouse) self.really_remove_spouse)
elif self.family and not self.family.getChildList(): elif self.family and not self.family.getChildList():
self.really_remove_spouse() self.really_remove_spouse()
@ -288,7 +301,7 @@ class FamilyView:
self.child_model.clear() self.child_model.clear()
self.sp_parents_model.clear() self.sp_parents_model.clear()
self.ap_parents_model.clear() self.ap_parents_model.clear()
self.ap_data.set_text('') self.ap_model.clear()
def load_family(self,family=None): def load_family(self,family=None):
self.person = self.parent.active_person self.person = self.parent.active_person
@ -300,10 +313,10 @@ class FamilyView:
self.person.getBirth().getDate(), self.person.getBirth().getDate(),
self.person.getDeath().getDate()) self.person.getDeath().getDate())
try: self.ap_model.clear()
self.ap_data.set_text(n,len(n)) self.ap_data.get_selection().set_mode(gtk.SELECTION_NONE)
except TypeError: iter = self.ap_model.append()
self.ap_data.set_text(n) self.ap_model.set(iter,0,n)
self.selected_spouse = None self.selected_spouse = None
self.spouse_model.clear() self.spouse_model.clear()
@ -462,8 +475,13 @@ class FamilyView:
def del_parents_clicked(self,obj): def del_parents_clicked(self,obj):
if len(self.person.getParentList()) == 0: if len(self.person.getParentList()) == 0:
return return
QuestionDialog(_('Delete Parents'), n = GrampsCfg.nameof(self.person)
_('Do you wish to remove the selected parents?'), QuestionDialog(_('Remove Parents of %s') % n,
_('Removing the parents of a person removes the person as a '
'child of the parents. The parents are not removed from the '
'database, and the relationship between the parents '
'is not removed.'),
_('Remove Parents'),
self.really_del_parents) self.really_del_parents)
def really_del_parents(self): def really_del_parents(self):
@ -472,8 +490,12 @@ class FamilyView:
def del_sp_parents(self,obj): def del_sp_parents(self,obj):
if not self.selected_spouse or len(self.selected_spouse.getParentList()) == 0: if not self.selected_spouse or len(self.selected_spouse.getParentList()) == 0:
return return
QuestionDialog(_('Delete Parents'), QuestionDialog(_('Remove Parents of %s') % n,
_('Do you wish to remove the selected parents?'), _('Removing the parents of a person removes the person as a '
'child of the parents. The parents are not removed from the '
'database, and the relationship between the parents '
'is not removed.'),
_('Remove Parents'),
self.really_del_sp_parents) self.really_del_sp_parents)
def really_del_sp_parents(self): def really_del_sp_parents(self):

View File

@ -174,6 +174,12 @@ class GrampsParser:
else: else:
self.placeobj.set_main_location(loc) self.placeobj.set_main_location(loc)
self.locations = self.locations + 1 self.locations = self.locations + 1
def start_witness(self,attrs):
if attrs.has_key('ref'):
self.witness = RelLib.Witness(RelLib.Event.ID,attrs['ref'])
if attrs.has_key('name'):
self.witness = RelLib.Witness(RelLib.Event.NAME,attrs['name'])
def start_coord(self,attrs): def start_coord(self,attrs):
if attrs.has_key('lat'): if attrs.has_key('lat'):
@ -484,6 +490,10 @@ class GrampsParser:
def stop_attribute(self,tag): def stop_attribute(self,tag):
self.attribute = None self.attribute = None
def stop_witness(self,tag):
self.witness.set_comment(tag)
self.event.add_witness(self.witness)
def stop_attr_type(self,tag): def stop_attr_type(self,tag):
self.attribute.setType(tag) self.attribute.setType(tag)
@ -740,6 +750,7 @@ class GrampsParser:
"attr_type" : (None,stop_attr_type), "attr_type" : (None,stop_attr_type),
"attr_value" : (None,stop_attr_value), "attr_value" : (None,stop_attr_value),
"bookmark" : (start_bmark, None), "bookmark" : (start_bmark, None),
"witness" : (start_witness,stop_witness),
"bookmarks" : (None, None), "bookmarks" : (None, None),
"child" : (start_child,None), "child" : (start_child,None),
"childof" : (start_childof,None), "childof" : (start_childof,None),

View File

@ -24,7 +24,7 @@ from ZODB.dbmStorage import gdbmStorage
from ZODB.DB import DB from ZODB.DB import DB
from BTrees.OOBTree import OOBTree from BTrees.OOBTree import OOBTree
from UserDict import UserDict from UserDict import UserDict
from RelLib import GrampsDB, Person import RelLib
import const import const
class PersistentReference(Persistent): class PersistentReference(Persistent):
@ -93,7 +93,7 @@ class PersonWrapper:
self._notifyChange() self._notifyChange()
for key, value in Person.__dict__.items(): for key, value in RelLib.Person.__dict__.items():
if not key.startswith('_'): if not key.startswith('_'):
code = ("def %s(self, *args, **kw): " code = ("def %s(self, *args, **kw): "
"return apply(self._real.%s, args, kw)") % (key, key) "return apply(self._real.%s, args, kw)") % (key, key)
@ -122,11 +122,11 @@ class PersonMap(Persistent, UserDict):
# This probably shouldn't be called anyway. # This probably shouldn't be called anyway.
raise NotImplementedError raise NotImplementedError
class GrampsZODB(GrampsDB): class GrampsZODB(RelLib.GrampsDB):
def __init__(self): def __init__(self):
self.conn = None self.conn = None
GrampsDB.__init__(self) RelLib.GrampsDB.__init__(self)
def get_type(self): def get_type(self):
return 'GrampsZODB' return 'GrampsZODB'
@ -141,7 +141,7 @@ class GrampsZODB(GrampsDB):
return 0 return 0
def new(self): def new(self):
GrampsDB.new(self) RelLib.GrampsDB.new(self)
self.familyMap = OOBTree() self.familyMap = OOBTree()
self.personMap = PersonMap() self.personMap = PersonMap()
self.sourceMap = OOBTree() self.sourceMap = OOBTree()
@ -234,7 +234,7 @@ class GrampsZODB(GrampsDB):
def setDefaultPerson(self,person): def setDefaultPerson(self,person):
"""sets the default Person to the passed instance""" """sets the default Person to the passed instance"""
GrampsDB.setDefaultPerson(self,person) RelLib.GrampsDB.setDefaultPerson(self,person)
self.root['default'] = person self.root['default'] = person

View File

@ -140,7 +140,9 @@ class ImageSelect:
description = self.description.get_text() description = self.description.get_text()
if os.path.exists(filename) == 0: if os.path.exists(filename) == 0:
ErrorDialog(_("That is not a valid file name.")); msgstr = _("Cannot import %s")
msgstr2 = _("The filename supplied could not be found.")
ErrorDialog(msgstr,msgstr2)
return return
already_imported = None already_imported = None
@ -432,8 +434,7 @@ class Gallery(ImageSelect):
tfile,headers = u.retrieve(d) tfile,headers = u.retrieve(d)
except IOError, msg: except IOError, msg:
t = _("Could not import %s") % d t = _("Could not import %s") % d
ErrorDialog(t,str(msg))
ErrorDialog("%s\n%s %d" % (t,msg[0],msg[1]))
return return
mime = Utils.get_mime_type(tfile) mime = Utils.get_mime_type(tfile)
photo = RelLib.Photo() photo = RelLib.Photo()

View File

@ -21,6 +21,11 @@
from gobject import TYPE_STRING, TYPE_PYOBJECT from gobject import TYPE_STRING, TYPE_PYOBJECT
import gtk import gtk
#-------------------------------------------------------------------------
#
# ListModel
#
#-------------------------------------------------------------------------
class ListModel: class ListModel:
def __init__(self,tree,dlist,select_func=None,event_func=None,mode=gtk.SELECTION_SINGLE): def __init__(self,tree,dlist,select_func=None,event_func=None,mode=gtk.SELECTION_SINGLE):
self.tree = tree self.tree = tree

View File

@ -396,10 +396,12 @@ class Marriage:
if self.did_data_change(): if self.did_data_change():
global quit global quit
self.quit = obj self.quit = obj
QuestionDialog(_('Abandon Changes'),
_("Data was modified. Are you sure you " SaveDialog(_('Save Changes?' % n),
"want to abandon your changes?"), _('If you close without saving, the changes you '
self.cancel_callback) 'have made will be lost'),
self.cancel_callback,
self.save)
else: else:
Utils.destroy_passed_object(obj) Utils.destroy_passed_object(obj)
@ -407,6 +409,9 @@ class Marriage:
self.on_cancel_edit(obj) self.on_cancel_edit(obj)
def on_close_marriage_editor(self,obj): def on_close_marriage_editor(self,obj):
self.save()
def save(self):
idval = self.gid.get_text() idval = self.gid.get_text()
family = self.family family = self.family
if idval != family.getId(): if idval != family.getId():

View File

@ -255,9 +255,12 @@ class MediaView:
mobj = self.db.getObject(id) mobj = self.db.getObject(id)
if self.is_object_used(mobj): if self.is_object_used(mobj):
ans = ImageSelect.DeleteMediaQuery(mobj,self.db,self.update) ans = ImageSelect.DeleteMediaQuery(mobj,self.db,self.update)
QuestionDialog(_('Delete Object'), QuestionDialog(_('Delete Media Object?'),
_("This media object is currently being used. " _('This media object is currently being used. '
"Delete anyway?"), 'If you delete this object, it will be removed '
'from the database and from all records that '
'reference it.'),
_('Delete Media Object?'),
ans.query_response) ans.query_response)
else: else:
self.db.removeObject(mobj.getId()) self.db.removeObject(mobj.getId())
@ -326,9 +329,7 @@ class MediaView:
try: try:
tfile,headers = u.retrieve(d) tfile,headers = u.retrieve(d)
except IOError, msg: except IOError, msg:
t = _("Could not import %s") % d ErrorDialog(t,str(msg))
ErrorDialog("%s\n%s %d" % (t,msg[0],msg[1]))
return return
mime = Utils.get_mime_type(tfile) mime = Utils.get_mime_type(tfile)
photo = RelLib.Photo() photo = RelLib.Photo()

View File

@ -123,6 +123,7 @@ try:
parser = make_parser() parser = make_parser()
parser.setContentHandler(PageSizeParser(paper_sizes)) parser.setContentHandler(PageSizeParser(paper_sizes))
parser.parse(const.papersize) parser.parse(const.papersize)
paper_sizes.append(TextDoc.PaperStyle(_("Custom Size"),-1,-1))
except (IOError,OSError,SAXParseException): except (IOError,OSError,SAXParseException):
paper_sizes = [ paper_sizes = [
TextDoc.PaperStyle("Letter",27.94,21.59), TextDoc.PaperStyle("Letter",27.94,21.59),
@ -133,5 +134,7 @@ except (IOError,OSError,SAXParseException):
TextDoc.PaperStyle("B6",17.6,12.5), TextDoc.PaperStyle("B6",17.6,12.5),
TextDoc.PaperStyle("C4",32.4,22.9), TextDoc.PaperStyle("C4",32.4,22.9),
TextDoc.PaperStyle("C5",22.9,16.2), TextDoc.PaperStyle("C5",22.9,16.2),
TextDoc.PaperStyle("C6",16.2,11.4) TextDoc.PaperStyle("C6",16.2,11.4),
TextDoc.PaperStyle(_("Custom Size"),-1,-1)
] ]

View File

@ -132,8 +132,9 @@ class PlaceView:
self.selection.selected_foreach(self.blist,mlist) self.selection.selected_foreach(self.blist,mlist)
if len(mlist) != 2: if len(mlist) != 2:
msg = _("Exactly two places must be selected to perform a merge") msg = _("Cannot merge people.")
ErrorDialog(msg) msg2 = _("Exactly two people must be selected to perform a merge.")
ErrorDialog(msg,msg2)
else: else:
import MergeData import MergeData
MergeData.MergePlaces(self.db,mlist[0],mlist[1],self.load_places) MergeData.MergePlaces(self.db,mlist[0],mlist[1],self.load_places)
@ -187,8 +188,12 @@ class PlaceView:
if used == 1: if used == 1:
ans = EditPlace.DeletePlaceQuery(place,self.db,self.update_display) ans = EditPlace.DeletePlaceQuery(place,self.db,self.update_display)
QuestionDialog(_('Delete Place'), QuestionDialog(_('Delete %s') % place.get_title(),
_("%s is currently being used.\nDelete anyway?" % place.get_title()), _('This place is currently being used at least one '
'record in the database. Deleting it will remove it '
'from the database and remove it from all records '
'the reference it.'),
_('Delete Place'),
ans.query_response) ans.query_response)
else: else:
self.db.removePlace(place.getId()) self.db.removePlace(place.getId())

View File

@ -19,65 +19,86 @@
# #
import gtk import gtk
import gtk.glade
import const
from intl import gettext as _ from intl import gettext as _
class QuestionDialog: class SaveDialog:
def __init__(self,title,msg,task1,task2=None): def __init__(self,msg1,msg2,task1,task2):
title = '%s - GRAMPS' % title self.xml = gtk.glade.XML(const.errdialogsFile,"savedialog")
self.top = self.xml.get_widget('savedialog')
self.top = gtk.Dialog()
self.top.set_title(title)
label = gtk.Label(msg)
label.show()
hbox = gtk.HBox()
image = gtk.Image()
image.set_from_stock(gtk.STOCK_DIALOG_QUESTION,gtk.ICON_SIZE_DIALOG)
hbox.set_spacing(10)
hbox.pack_start(image)
hbox.add(label)
self.top.vbox.pack_start(hbox)
self.top.set_default_size(300,150)
self.task2 = task2
self.task1 = task1 self.task1 = task1
self.top.add_button(gtk.STOCK_YES,0) self.task2 = task2
self.top.add_button(gtk.STOCK_NO,1)
self.top.set_response_sensitive(1,gtk.TRUE) label1 = self.xml.get_widget('label1')
self.top.set_response_sensitive(0,gtk.TRUE) label1.set_text('<span weight="bold" size="larger">%s</span>' % msg1)
self.top.show_all() label1.set_use_markup(gtk.TRUE)
if self.top.run():
self.my_task2() label2 = self.xml.get_widget('label2')
else: label2.set_text(msg2)
self.my_task1() label2.set_use_markup(gtk.TRUE)
def my_task1(self): response = self.top.run()
if self.task1: if response == gtk.RESPONSE_NO:
self.task1() self.task1()
self.top.destroy() elif response == gtk.RESPONSE_YES:
def my_task2(self):
if self.task2:
self.task2() self.task2()
self.top.destroy() self.top.destroy()
class ErrorDialog: class QuestionDialog:
def __init__(self,msg): def __init__(self,msg1,msg2,label,task):
title = '%s - GRAMPS' % _('Error') self.xml = gtk.glade.XML(const.errdialogsFile,"questiondialog")
self.top = self.xml.get_widget('questiondialog')
self.top.set_title('')
label1 = self.xml.get_widget('label1')
label1.set_text('<span weight="bold" size="larger">%s</span>' % msg1)
label1.set_use_markup(gtk.TRUE)
self.top = gtk.Dialog() label2 = self.xml.get_widget('label2')
self.top.set_title(title) label2.set_text(msg2)
label = gtk.Label(msg) label2.set_use_markup(gtk.TRUE)
label.show()
hbox = gtk.HBox() self.xml.get_widget('okbutton').set_label(label)
image = gtk.Image()
image.set_from_stock(gtk.STOCK_DIALOG_ERROR,gtk.ICON_SIZE_DIALOG) response = self.top.run()
hbox.set_spacing(10) if response == gtk.RESPONSE_ACCEPT:
hbox.pack_start(image) task()
hbox.add(label) self.top.destroy()
self.top.vbox.pack_start(hbox)
self.top.set_default_size(300,150) class OptionDialog:
self.top.add_button(gtk.STOCK_OK,0) def __init__(self,msg1,msg2,label1,task1,label2,task2):
self.top.set_response_sensitive(0,gtk.TRUE) self.xml = gtk.glade.XML(const.errdialogsFile,"optiondialog")
self.top.show_all() self.top = self.xml.get_widget('optiondialog')
self.top.set_title('')
label1 = self.xml.get_widget('label1')
label1.set_text('<span weight="bold" size="larger">%s</span>' % msg1)
label1.set_use_markup(gtk.TRUE)
label2 = self.xml.get_widget('label2')
label2.set_text(msg2)
label2.set_use_markup(gtk.TRUE)
response = self.top.run()
if response == gtk.RESPONSE_NO:
task1()
else:
task2()
self.top.destroy()
class ErrorDialog:
def __init__(self,msg1,msg2=""):
self.xml = gtk.glade.XML(const.errdialogsFile,"errdialog")
self.top = self.xml.get_widget('errdialog')
label1 = self.xml.get_widget('label1')
label2 = self.xml.get_widget('label2')
label1.set_text('<span weight="bold" size="larger">%s</span>' % msg1)
label1.set_use_markup(gtk.TRUE)
label2.set_text(msg2)
self.top.run() self.top.run()
self.top.destroy() self.top.destroy()

View File

@ -81,22 +81,22 @@ def importData(database, filename, callback):
else: else:
xml_file = open(filename,"r") xml_file = open(filename,"r")
except IOError,msg: except IOError,msg:
ErrorDialog(_("%s could not be opened\n") % filename + str(msg)) ErrorDialog(_("%s could not be opened") % filename,str(msg))
return 0 return 0
except: except:
ErrorDialog(_("%s could not be opened\n") % filename) ErrorDialog(_("%s could not be opened") % filename)
return 0 return 0
try: try:
parser.parse(xml_file) parser.parse(xml_file)
except IOError,msg: except IOError,msg:
ErrorDialog(_("Error reading %s") % filename + "\n" + str(msg)) ErrorDialog(_("Error reading %s") % filename,str(msg))
import traceback import traceback
traceback.print_exc() traceback.print_exc()
return 0 return 0
except ExpatError, msg: except ExpatError, msg:
ErrorDialog(_("Error reading %s") % filename + "\n" + \ ErrorDialog(_("Error reading %s") % filename,
_("The file is probably either corrupt or not a valid GRAMPS database.") + "\n" + str(msg)) _("The file is probably either corrupt or not a valid GRAMPS database."))
return 0 return 0
except ValueError, msg: except ValueError, msg:
if str(msg)[0:16] == "Incorrect length": if str(msg)[0:16] == "Incorrect length":
@ -150,18 +150,17 @@ def loadData(database, filename, callback=None):
else: else:
xml_file = open(filename,"r") xml_file = open(filename,"r")
except IOError,msg: except IOError,msg:
filemsg = _("%s could not be opened\n") % filename filemsg = _("%s could not be opened.") % filename
ErrorDialog(filemsg + str(msg)) ErrorDialog(filemsg,str(msg))
return 0 return 0
except: except:
ErrorDialog(_("%s could not be opened\n") % filename) ErrorDialog(_("%s could not be opened.") % filename)
return 0 return 0
try: try:
parser.parse(xml_file) parser.parse(xml_file)
except IOError,msg: except IOError,msg:
errmsg = "%s\n%s" % (_("Error reading %s") % filename,str(msg)) ErrorDialog(_("Error reading %s") % filename, str(msg))
ErrorDialog(errmsg)
import traceback import traceback
traceback.print_exc() traceback.print_exc()
return 0 return 0
@ -194,8 +193,7 @@ def loadRevision(database, file, filename, revision, callback=None):
try: try:
parser.parse(file) parser.parse(file)
except IOError,msg: except IOError,msg:
errmsg = "%s\n%s" % (_("Error reading %s") % filename, str(msg)) ErrorDialog(_("Error reading %s") % filename,str(msg))
ErrorDialog(errmsg)
import traceback import traceback
traceback.print_exc() traceback.print_exc()
return 0 return 0

View File

@ -53,7 +53,8 @@ def import_media_object(filename,path,base):
import shutil import shutil
if not os.path.exists(filename): if not os.path.exists(filename):
ErrorDialog(_("Could not import %s\nThe file has been moved or deleted") % filename) ErrorDialog(_("Could not import %s") % filename,
_("The file has been moved or deleted"))
return "" return ""
ext = os.path.splitext(filename)[1] ext = os.path.splitext(filename)[1]
@ -67,7 +68,7 @@ def import_media_object(filename,path,base):
if not os.path.exists(thumb): if not os.path.exists(thumb):
os.mkdir(thumb) os.mkdir(thumb)
except IOError,msg: except IOError,msg:
ErrorDialog(_("Could not create %s") % thumb + "\n" + str(msg)) ErrorDialog(_("Could not create %s") % thumb,str(msg))
return "" return ""
except: except:
ErrorDialog(_("Could not create %s") % thumb) ErrorDialog(_("Could not create %s") % thumb)
@ -77,13 +78,13 @@ def import_media_object(filename,path,base):
path = "%s/%s.jpg" % (thumb,base) path = "%s/%s.jpg" % (thumb,base)
mk_thumb(filename,path,const.thumbScale) mk_thumb(filename,path,const.thumbScale)
except: except:
ErrorDialog(_("Error creating the thumbnail : %s")) ErrorDialog(_("Error creating the thumbnail: %s"))
return "" return ""
try: try:
shutil.copy(filename,name) shutil.copy(filename,name)
except IOError,msg: except IOError,msg:
ErrorDialog(_("Error copying %s") % filename + "\n" + msg) ErrorDialog(_("Error copying %s") % filename,str(msg))
return "" return ""
else: else:
@ -131,7 +132,7 @@ def mk_thumb(source,dest,size):
if not os.path.exists(dir): if not os.path.exists(dir):
os.mkdir(dir) os.mkdir(dir)
except IOError,msg: except IOError,msg:
ErrorDialog(_("Could not create %s") % dir + "\n" + str(msg)) ErrorDialog(_("Could not create %s") % dir, str(msg))
return return
except: except:
ErrorDialog(_("Could not create %s") % dir) ErrorDialog(_("Could not create %s") % dir)
@ -142,19 +143,20 @@ def mk_thumb(source,dest,size):
os.remove(dest) os.remove(dest)
except IOError,msg: except IOError,msg:
errmsg = _("Could not replace %s") % dir errmsg = _("Could not replace %s") % dir
ErrorDialog(errmsg + "\n" + msg) ErrorDialog(errmsg,msg)
return return
if not os.path.exists(source): if not os.path.exists(source):
ErrorDialog(_("Could not create a thumbnail for %s\nThe file has been moved or deleted") % source) ErrorDialog(_("Could not create a thumbnail for %s") % source,
_("The file has been moved or deleted."))
try: try:
img = ImgManip.ImgManip(source) img = ImgManip.ImgManip(source)
img.jpg_thumbnail(dest,size,size) img.jpg_thumbnail(dest,size,size)
except: except:
import sys import sys
msg = "%s\n%s %s" % (source,sys.exc_type,sys.exc_value) ErrorDialog(_("Could not create a thumbnail for %s") % source,
ErrorDialog(_("Could not create a thumbnail for %s") % msg) "%s %s" % (sys.exc_type,sys.exc_value))
return return
#------------------------------------------------------------------------- #-------------------------------------------------------------------------

View File

@ -1334,10 +1334,12 @@ class Person(Persistent):
return not_too_old(self.birth.getDateObj().get_start_date()) return not_too_old(self.birth.getDateObj().get_start_date())
return 1 return 1
class Event(DataObj): class Event(DataObj):
"""Event record, recording the event type, description, place, and date """Event record, recording the event type, description, place, and date
of a particular event""" of a particular event"""
NAME = 0
ID = 1
def __init__(self,source=None): def __init__(self,source=None):
"""creates a new Event instance, copying from the source if present""" """creates a new Event instance, copying from the source if present"""
@ -1350,13 +1352,33 @@ class Event(DataObj):
self.description = source.description self.description = source.description
self.name = source.name self.name = source.name
self.cause = source.cause self.cause = source.cause
if source.witness:
self.witness = source.witness[:]
else:
self.witness = None
else: else:
self.place = None self.place = None
self.date = None self.date = None
self.description = "" self.description = ""
self.name = "" self.name = ""
self.cause = "" self.cause = ""
self.witness = None
def get_witness_list(self):
return self.witness
def set_witness_list(self,list):
if list:
self.witness = list[:]
else:
self.witness = None
def add_witness(self,value):
if self.witness:
self.witness.append(value)
else:
self.witness = [value]
def is_empty(self): def is_empty(self):
date = self.getDateObj() date = self.getDateObj()
place = self.getPlace() place = self.getPlace()
@ -1469,6 +1491,29 @@ class Event(DataObj):
"""sets the Date object associated with the Event""" """sets the Date object associated with the Event"""
self.date = date self.date = date
class Witness:
def __init__(self,type=Event.NAME,val="",comment=""):
self.set_type(type)
self.set_value(val)
self.set_comment(comment)
def set_type(self,type):
self.type = type
def get_type(self):
return self.type
def set_value(self,val):
self.val = val
def get_value(self):
return self.val
def set_comment(self,comment):
self.comment = comment
def get_comment(self):
return self.comment
class Family(Persistent): class Family(Persistent):
"""Represents a family unit in the gramps database""" """Represents a family unit in the gramps database"""

View File

@ -142,7 +142,6 @@ class Report:
self.ptop = gtk.Dialog() self.ptop = gtk.Dialog()
self.ptop.set_title(title) self.ptop.set_title(title)
self.ptop.vbox.add(gtk.Label(header)) self.ptop.vbox.add(gtk.Label(header))
self.ptop.vbox.add(gtk.HSeparator())
self.ptop.vbox.set_spacing(10) self.ptop.vbox.set_spacing(10)
self.pbar = gtk.ProgressBar() self.pbar = gtk.ProgressBar()
self.pbar_max = total self.pbar_max = total
@ -174,7 +173,7 @@ class ReportDialog:
""" """
frame_pad = 5 frame_pad = 5
border_pad = 2 border_pad = 6
def __init__(self,database,person): def __init__(self,database,person):
"""Initialize a dialog to request that the user select options """Initialize a dialog to request that the user select options
@ -196,10 +195,12 @@ class ReportDialog:
self.frames = {} self.frames = {}
self.window = gtk.Dialog('GRAMPS') self.window = gtk.Dialog('GRAMPS')
self.ok = self.window.add_button(gtk.STOCK_OK,0)
self.ok.connect('clicked',self.on_ok_clicked)
self.cancel = self.window.add_button(gtk.STOCK_CANCEL,1) self.cancel = self.window.add_button(gtk.STOCK_CANCEL,1)
self.ok = self.window.add_button(gtk.STOCK_OK,0)
self.ok.connect('clicked',self.on_ok_clicked)
self.cancel.connect('clicked',self.on_cancel) self.cancel.connect('clicked',self.on_cancel)
self.window.set_response_sensitive(0,gtk.TRUE) self.window.set_response_sensitive(0,gtk.TRUE)
self.window.set_response_sensitive(1,gtk.TRUE) self.window.set_response_sensitive(1,gtk.TRUE)
self.window.set_resize_mode(0) self.window.set_resize_mode(0)
@ -465,9 +466,10 @@ class ReportDialog:
title = self.get_header(self.name) title = self.get_header(self.name)
label = gtk.Label(title) label = gtk.Label(title)
label.set_padding(12,12)
label.set_size_request(450,10) label.set_size_request(450,10)
self.window.vbox.pack_start(label,gtk.TRUE,gtk.TRUE,ReportDialog.border_pad) self.window.vbox.pack_start(label,gtk.TRUE,gtk.TRUE,ReportDialog.border_pad)
self.window.vbox.add(gtk.HSeparator()) self.window.vbox.set_border_width(12)
def setup_target_frame(self): def setup_target_frame(self):
"""Set up the target frame of the dialog. This function """Set up the target frame of the dialog. This function
@ -498,7 +500,7 @@ class ReportDialog:
self.window.vbox.add(frame) self.window.vbox.add(frame)
self.target_fileentry.set_default_path(self.get_default_directory()) self.target_fileentry.set_default_path(self.get_default_directory())
if (self.get_target_is_directory()): if self.get_target_is_directory():
self.target_fileentry.set_directory_entry(1) self.target_fileentry.set_directory_entry(1)
self.target_fileentry.set_filename(self.get_default_directory()) self.target_fileentry.set_filename(self.get_default_directory())
@ -575,6 +577,17 @@ class ReportDialog:
self.output_notebook.set_show_border(0) self.output_notebook.set_show_border(0)
self.output_notebook.set_current_page(self.notebook_page) self.output_notebook.set_current_page(self.notebook_page)
self.window.vbox.add(self.output_notebook) self.window.vbox.add(self.output_notebook)
def size_changed(self,obj):
paper = self.papersize_menu.get_menu().get_active().get_data('i')
if paper.get_width() <= 0:
self.pwidth.set_sensitive(1)
self.pheight.set_sensitive(1)
else:
self.pwidth.set_sensitive(0)
self.pheight.set_sensitive(0)
self.pwidth.set_text("%.2f" % paper.get_width())
self.pheight.set_text("%.2f" % paper.get_height())
def setup_paper_frame(self): def setup_paper_frame(self):
"""Set up the paper selection frame of the dialog. This """Set up the paper selection frame of the dialog. This
@ -583,19 +596,45 @@ class ReportDialog:
its strings should be.""" its strings should be."""
(pagecount_map, start_text) = self.get_print_pagecount_map() (pagecount_map, start_text) = self.get_print_pagecount_map()
table = gtk.Table(2,4) table = gtk.Table(2,5)
self.paper_frame.add(table) self.paper_frame.add(table)
self.papersize_menu = gtk.OptionMenu() self.papersize_menu = gtk.OptionMenu()
self.papersize_menu.connect('changed',self.size_changed)
self.orientation_menu = gtk.OptionMenu() self.orientation_menu = gtk.OptionMenu()
l = gtk.Label(_("Size")) l = gtk.Label(_("Size"))
pad = ReportDialog.border_pad pad = ReportDialog.border_pad
l.set_alignment(1.0,0.5) l.set_alignment(1.0,0.5)
table.attach(l,0,1,0,1,gtk.FILL,gtk.FILL,pad,pad) table.attach(l,0,1,0,1,gtk.FILL,gtk.FILL,pad,pad)
table.attach(self.papersize_menu,1,2,0,1,xpadding=pad,ypadding=pad) table.attach(self.papersize_menu,1,2,0,1,xpadding=pad,ypadding=pad)
l = gtk.Label(_("Height"))
l.set_alignment(1.0,0.5)
table.attach(l,2,3,0,1,xpadding=pad,ypadding=pad)
self.pheight = gtk.Entry()
self.pheight.set_sensitive(0)
table.attach(self.pheight,3,4,0,1,xpadding=pad,ypadding=pad)
l = gtk.Label(_("cm"))
l.set_alignment(0.0,0.5)
table.attach(l,4,5,0,1,xpadding=pad,ypadding=pad)
l = gtk.Label(_("Orientation")) l = gtk.Label(_("Orientation"))
l.set_alignment(1.0,0.5) l.set_alignment(1.0,0.5)
table.attach(l,2,3,0,1,gtk.FILL,gtk.FILL,pad,pad) table.attach(l,0,1,1,2,gtk.FILL,gtk.FILL,pad,pad)
table.attach(self.orientation_menu,3,4,0,1,xpadding=pad,ypadding=pad) table.attach(self.orientation_menu,1,2,1,2,xpadding=pad,ypadding=pad)
l = gtk.Label(_("Width"))
l.set_alignment(1.0,0.5)
table.attach(l,2,3,1,2,xpadding=pad,ypadding=pad)
self.pwidth = gtk.Entry()
self.pwidth.set_sensitive(0)
table.attach(self.pwidth,3,4,1,2,xpadding=pad,ypadding=pad)
l = gtk.Label(_("cm"))
l.set_alignment(0.0,0.5)
table.attach(l,4,5,1,2,xpadding=pad,ypadding=pad)
PaperMenu.make_paper_menu(self.papersize_menu) PaperMenu.make_paper_menu(self.papersize_menu)
PaperMenu.make_orientation_menu(self.orientation_menu) PaperMenu.make_orientation_menu(self.orientation_menu)
@ -754,8 +793,12 @@ class ReportDialog:
if string: if string:
self.extra_textbox_label = gtk.Label(et_label) self.extra_textbox_label = gtk.Label(et_label)
self.extra_textbox_label.set_alignment(1.0,0) self.extra_textbox_label.set_alignment(1.0,0)
swin = gtk.ScrolledWindow()
swin.set_shadow_type(gtk.SHADOW_IN)
swin.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
self.extra_textbox = gtk.TextView() self.extra_textbox = gtk.TextView()
swin.add(self.extra_textbox)
try: try:
self.extra_textbox.get_buffer().set_text(string,len(string)) self.extra_textbox.get_buffer().set_text(string,len(string))
except TypeError: except TypeError:
@ -765,7 +808,7 @@ class ReportDialog:
self.add_tooltip(self.extra_textbox,et_tip) self.add_tooltip(self.extra_textbox,et_tip)
table.attach(self.extra_textbox_label,0,1,row,row+1,xoptions=gtk.FILL, table.attach(self.extra_textbox_label,0,1,row,row+1,xoptions=gtk.FILL,
yoptions=0,xpadding=pad,ypadding=pad) yoptions=0,xpadding=pad,ypadding=pad)
table.attach(self.extra_textbox,1,2,row,row+1, table.attach(swin,1,2,row,row+1,
yoptions=0,xpadding=pad,ypadding=pad) yoptions=0,xpadding=pad,ypadding=pad)
row = row + 1 row = row + 1
@ -817,7 +860,8 @@ class ReportDialog:
return None return None
if not self.get_target_is_directory() and os.path.isdir(self.target_path): if not self.get_target_is_directory() and os.path.isdir(self.target_path):
ErrorDialog(_("The filename that you gave is a directory.\n" ErrorDialog(_("Invalid file name"),
_("The filename that you gave is a directory.\n"
"You need to provide a valid filename.")) "You need to provide a valid filename."))
return None return None
@ -844,6 +888,21 @@ class ReportDialog:
is displayed on the screen. The subclass will know which ones is displayed on the screen. The subclass will know which ones
it has enabled. This is for simplicity of programming.""" it has enabled. This is for simplicity of programming."""
self.paper = self.papersize_menu.get_menu().get_active().get_data("i") self.paper = self.papersize_menu.get_menu().get_active().get_data("i")
if self.paper.get_height() <= 0 or self.paper.get_width() <= 0:
try:
h = float(self.pheight.get_text())
w = float(self.pwidth.get_text())
if h <= 1.0 or w <= 1.0:
self.paper.set_height(29.7)
self.paper.set_width(21.0)
else:
self.paper.set_height(h)
self.paper.set_width(w)
except:
self.paper.set_height(29.7)
self.paper.set_width(21.0)
self.orien = self.orientation_menu.get_menu().get_active().get_data("i") self.orien = self.orientation_menu.get_menu().get_active().get_data("i")
if self.pagecount_menu == None: if self.pagecount_menu == None:
self.pagecount = 0 self.pagecount = 0

View File

@ -125,8 +125,11 @@ class SourceView:
if self.is_used(source): if self.is_used(source):
ans = EditSource.DelSrcQuery(source,self.db,self.update) ans = EditSource.DelSrcQuery(source,self.db,self.update)
QuestionDialog(_('Delete Source'), QuestionDialog(_('Delete %s?') % source.getTitle(),
_("This source is currently being used. Delete anyway?"), _('This source is currently being used. Deleting it '
'will remove it from the database and from all '
'records that reference it.'),
_('Delete Source'),
ans.query_response) ans.query_response)
else: else:
self.db.removeSource(source.getId()) self.db.removeSource(source.getId())

View File

@ -207,7 +207,6 @@ class SourceEditor:
self.source_ref = srcref self.source_ref = srcref
self.showSource = gtk.glade.XML(const.srcselFile, "sourceDisplay") self.showSource = gtk.glade.XML(const.srcselFile, "sourceDisplay")
self.showSource.signal_autoconnect({ self.showSource.signal_autoconnect({
"on_combo_insert_text" : Utils.combo_insert_text,
"on_sourceok_clicked" : self.on_sourceok_clicked, "on_sourceok_clicked" : self.on_sourceok_clicked,
"on_source_changed" : self.on_source_changed, "on_source_changed" : self.on_source_changed,
"destroy_passed_object" : Utils.destroy_passed_object "destroy_passed_object" : Utils.destroy_passed_object
@ -256,7 +255,6 @@ class SourceEditor:
self.pub_field.set_text("") self.pub_field.set_text("")
values = self.db.getSourceMap().values() values = self.db.getSourceMap().values()
# values.sort(by_title)
sel_child = None sel_child = None
list = [] list = []
@ -311,14 +309,6 @@ class SourceEditor:
if self.active_source: if self.active_source:
self.author_field.set_text(self.active_source.getAuthor()) self.author_field.set_text(self.active_source.getAuthor())
self.pub_field.set_text(self.active_source.getPubInfo()) self.pub_field.set_text(self.active_source.getPubInfo())
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def by_title(a,b):
return cmp(a.getTitle(),b.getTitle())

View File

@ -102,7 +102,7 @@ class StyleListDisplay:
self.sheetlist.save() self.sheetlist.save()
except IOError,msg: except IOError,msg:
from QuestionDialog import ErrorDialog from QuestionDialog import ErrorDialog
ErrorDialog(_("Error saving stylesheet") + "\n" + str(msg)) ErrorDialog(_("Error saving stylesheet"),str(msg))
except: except:
import DisplayTrace import DisplayTrace
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()

View File

@ -25,6 +25,11 @@ import os
_BLKSIZE=512 _BLKSIZE=512
nul = '\0' nul = '\0'
#------------------------------------------------------------------------
#
# TarFile
#
#------------------------------------------------------------------------
class TarFile: class TarFile:
def __init__(self,name): def __init__(self,name):
self.name = name self.name = name
@ -69,13 +74,17 @@ class TarFile:
self.f.write('\0' * rem) self.f.write('\0' * rem)
self.pos = self.pos + rem self.pos = self.pos + rem
def close(self): def close(self):
rem = (_BLKSIZE*20) - (self.pos % (_BLKSIZE*20)) rem = (_BLKSIZE*20) - (self.pos % (_BLKSIZE*20))
if rem != 0: if rem != 0:
self.f.write('\0' * rem) self.f.write('\0' * rem)
self.f.close() self.f.close()
#------------------------------------------------------------------------
#
# ReadTarFile
#
#------------------------------------------------------------------------
class ReadTarFile: class ReadTarFile:
def __init__(self,name,wd): def __init__(self,name,wd):
self.name = name self.name = name
@ -91,7 +100,7 @@ class ReadTarFile:
return return
index = 0 index = 0
for b in buf: for b in buf:
if b != '\0': if b != nul:
index = index + 1 index = index + 1
else: else:
if index == 0: if index == 0:
@ -122,7 +131,7 @@ class ReadTarFile:
return return
index = 0 index = 0
for b in buf: for b in buf:
if b != '\0': if b != nul:
index = index + 1 index = index + 1
else: else:
if index == 0: if index == 0:
@ -131,7 +140,6 @@ class ReadTarFile:
filename = buf[0:index] filename = buf[0:index]
self.f.read(24) # modes self.f.read(24) # modes
l = self.f.read(12) l = self.f.read(12)
# length = int(l,8)
length_string = ""; length_string = "";
for char in l: for char in l:
if ord(char) != 0: if ord(char) != 0:
@ -143,7 +151,7 @@ class ReadTarFile:
self.f.read(64) self.f.read(64)
self.f.read(183) self.f.read(183)
foo = open(self.wd + os.sep + filename,"wb") foo = open("%s/%s" % (self.wd,filename),"wb")
foo.write(self.f.read(length)) foo.write(self.f.read(length))
foo.close() foo.close()
self.f.read(_BLKSIZE-(length%_BLKSIZE)) self.f.read(_BLKSIZE-(length%_BLKSIZE))
@ -151,7 +159,3 @@ class ReadTarFile:
def close(self): def close(self):
self.f.close() self.f.close()
if __name__ == "__main__":
a = ReadTarFile("out.gpkg",".")
a.extract()
a.close()

View File

@ -412,102 +412,6 @@ def thumb_path(dir,mobj):
else: else:
return find_icon(type) return find_icon(type)
#-------------------------------------------------------------------------
#
# Sets up a delayed (0.005 sec) handler for text completion. Text
# completion cannot be handled directly in this routine because, for
# some reason, the select_region() function doesn't work when called
# from signal handlers. Go figure.
#
# Thanks to iain@nodata.demon.co.uk (in mail from 1999) for the idea
# to use a timer to get away from the problems with signal handlers
# and the select_region function.
#
#-------------------------------------------------------------------------
def combo_insert_text(combo,new_text,new_text_len,i_dont_care):
# One time setup to clear selected region when user moves on
if (not combo.get_data("signal_set")):
combo.set_data("signal_set",1)
combo.entry.connect("focus_out_event", combo_lost_focus, combo)
# Nuke the current timer if the user types fast enough
timer = combo.get_data("timer");
if (timer):
gtk.timeout_remove(timer)
# Setup a callback timer so we can operate outside of a signal handler
timer = gtk.timeout_add(5, combo_timer_callback, combo)
combo.set_data("timer", timer);
#-------------------------------------------------------------------------
#
# The combo box entry field lost focus. Go clear any selection. Why
# this form of a select_region() call works in a signal handler and
# the other form doesn't is a mystery.
#
#-------------------------------------------------------------------------
def combo_lost_focus(entry,a,b):
entry.select_region(0, 0)
#-------------------------------------------------------------------------
#
# The workhorse routine of file completion. This routine grabs the
# current text of the entry box, and grubs through the list item
# looking for any case insensitive matches. This routine relies on
# public knowledge of the Combo data structure, not on any private
# data.
#
# These three completion routines have only one gramps specific hook,
# and can be easily ported to any program.
#
#-------------------------------------------------------------------------
def combo_timer_callback(combo):
# Clear any timer
timer = combo.get_data("timer");
if (timer):
gtk.timeout_remove(timer)
# Get the user's text
entry = combo.entry
typed = entry.get_text()
if (not typed):
return
typed_lc = string.lower(typed)
# Walk the List in the combo box
for item in combo.list.get_children():
# Each item is a ListItem, whose first and only child is a
# Label. This is the magic.
label = item.get_children()[0]
label_text = label.get()
if (not label_text):
continue
# Gramps specific code to remove trailing '[id]' from the
# label.
index = string.rfind(label_text,'[')
if (index > 0):
label_text = label_text[:index]
label_text = string.rstrip(label_text)
# Back to the generic code. Convert to lower case
label_text_lc = string.lower(label_text)
# If equal, no need to add any text
if (typed_lc == label_text_lc):
return
# If typed text is a substring of the label text, then fill in
# the entry field with the full text (and correcting
# capitalization), and then select all the characters that
# don't match. With the user's enxt keystroke these will be
# replaced if they are incorrect.
if (string.find(label_text_lc,typed_lc) == 0):
entry.set_text(label_text)
entry.set_position(len(typed))
entry.select_region(len(typed), -1)
return
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# #

View File

@ -41,7 +41,7 @@ import const
import GrampsCfg import GrampsCfg
import Calendar import Calendar
import Gregorian import Gregorian
from RelLib import * import RelLib
from intl import gettext as _ from intl import gettext as _
from QuestionDialog import ErrorDialog from QuestionDialog import ErrorDialog
@ -74,8 +74,9 @@ def exportData(database, filename, callback):
except: except:
import DisplayTrace import DisplayTrace
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()
ErrorDialog(_("Failure writing %s, original file restored") % filename) ErrorDialog(_("Failure writing %s") % filename,
_("An attempt is begin made to recover the original file"))
shutil.copy(filename + ".bak", filename) shutil.copy(filename + ".bak", filename)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -198,9 +199,9 @@ class XmlWriter:
count = count + 1 count = count + 1
self.write_id("person",person,2) self.write_id("person",person,2)
if person.getGender() == Person.male: if person.getGender() == RelLib.Person.male:
self.write_line("gender","M",3) self.write_line("gender","M",3)
elif person.getGender() == Person.female: elif person.getGender() == RelLib.Person.female:
self.write_line("gender","F",3) self.write_line("gender","F",3)
else: else:
self.write_line("gender","U",3) self.write_line("gender","U",3)
@ -358,6 +359,17 @@ class XmlWriter:
if event: if event:
self.dump_my_event(event.getName(),event,index) self.dump_my_event(event.getName(),event,index)
def write_witness(self,witness_list,index):
if not witness_list:
return
for w in witness_list:
sp = " "*index
com = self.fix(w.get_comment())
if w.get_type() == RelLib.Event.ID:
self.g.write('%s<witness ref="%s">%s</witness>\n' % (sp,w.get_value(),com))
else:
self.g.write('%s<witness name="%s">%s</witness>\n' % (sp,w.get_value(),com))
def dump_my_event(self,name,event,index=1): def dump_my_event(self,name,event,index=1):
if not event or event.is_empty(): if not event or event.is_empty():
return return
@ -365,6 +377,8 @@ class XmlWriter:
sp = " " * index sp = " " * index
self.g.write('%s<event type="%s"%s>\n' % (sp,self.fix(name),conf_priv(event))) self.g.write('%s<event type="%s"%s>\n' % (sp,self.fix(name),conf_priv(event)))
self.write_date(event.getDateObj(),index+1) self.write_date(event.getDateObj(),index+1)
self.write_witness(event.get_witness_list(),index+1)
self.write_ref("place",event.getPlace(),index+1) self.write_ref("place",event.getPlace(),index+1)
self.write_line("cause",event.getCause(),index+1) self.write_line("cause",event.getCause(),index+1)
self.write_line("description",event.getDescription(),index+1) self.write_line("description",event.getDescription(),index+1)

View File

@ -82,6 +82,7 @@ srcselFile = "%s/srcsel.glade" % rootDir
findFile = "%s/find.glade" % rootDir findFile = "%s/find.glade" % rootDir
mergeFile = "%s/mergedata.glade" % rootDir mergeFile = "%s/mergedata.glade" % rootDir
filterFile = "%s/rule.glade" % rootDir filterFile = "%s/rule.glade" % rootDir
errdialogsFile = "%s/errdialogs.glade" % rootDir
pluginsDir = "%s/plugins" % rootDir pluginsDir = "%s/plugins" % rootDir
calendarDir = "%s/calendars" % rootDir calendarDir = "%s/calendars" % rootDir

View File

@ -82,6 +82,7 @@ srcselFile = "%s/srcsel.glade" % rootDir
findFile = "%s/find.glade" % rootDir findFile = "%s/find.glade" % rootDir
mergeFile = "%s/mergedata.glade" % rootDir mergeFile = "%s/mergedata.glade" % rootDir
filterFile = "%s/rule.glade" % rootDir filterFile = "%s/rule.glade" % rootDir
errdialogsFile = "%s/errdialogs.glade" % rootDir
pluginsDir = "%s/plugins" % rootDir pluginsDir = "%s/plugins" % rootDir
calendarDir = "%s/calendars" % rootDir calendarDir = "%s/calendars" % rootDir

View File

@ -33,11 +33,11 @@
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="has_default">True</property> <property name="has_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-ok</property> <property name="label">gtk-cancel</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">-6</property>
<signal name="clicked" handler="on_event_edit_ok_clicked" object="event_edit"/> <signal name="clicked" handler="destroy_passed_object" object="event_edit" last_modification_time="Tue, 18 Feb 2003 15:04:15 GMT"/>
</widget> </widget>
</child> </child>
@ -46,11 +46,11 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-cancel</property> <property name="label">gtk-ok</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">-5</property>
<signal name="clicked" handler="destroy_passed_object" object="event_edit"/> <signal name="clicked" handler="on_event_edit_ok_clicked" object="event_edit" last_modification_time="Tue, 18 Feb 2003 15:03:59 GMT"/>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -667,6 +667,99 @@
<property name="type">tab</property> <property name="type">tab</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkVBox" id="vbox43">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow29">
<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="wlist">
<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="hbuttonbox5">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="spacing">0</property>
<child>
<widget class="GtkButton" id="add_witness">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-add</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="del_witness">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-remove</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="tab_expand">False</property>
<property name="tab_fill">True</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label291">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Witnesses&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.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="type">tab</property>
</packing>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -707,6 +800,19 @@
<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>
<child>
<widget class="GtkButton" id="button116">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="attr_edit"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button115"> <widget class="GtkButton" id="button115">
<property name="visible">True</property> <property name="visible">True</property>
@ -720,19 +826,6 @@
<signal name="clicked" handler="on_attr_edit_ok_clicked" object="attr_edit"/> <signal name="clicked" handler="on_attr_edit_ok_clicked" object="attr_edit"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button116">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="attr_edit"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -1166,6 +1259,19 @@
<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>
<child>
<widget class="GtkButton" id="button119">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="loc_edit"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button118"> <widget class="GtkButton" id="button118">
<property name="visible">True</property> <property name="visible">True</property>
@ -1179,19 +1285,6 @@
<signal name="clicked" handler="on_loc_edit_ok_clicked" object="loc_edit"/> <signal name="clicked" handler="on_loc_edit_ok_clicked" object="loc_edit"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button119">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="loc_edit"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -1523,6 +1616,19 @@
<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>
<child>
<widget class="GtkButton" id="button122">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="addr_edit"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button121"> <widget class="GtkButton" id="button121">
<property name="visible">True</property> <property name="visible">True</property>
@ -1537,19 +1643,6 @@
<signal name="clicked" handler="on_addr_edit_ok_clicked" object="addr_edit"/> <signal name="clicked" handler="on_addr_edit_ok_clicked" object="addr_edit"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button122">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="addr_edit"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -2211,6 +2304,19 @@
<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>
<child>
<widget class="GtkButton" id="button125">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="url_edit"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button124"> <widget class="GtkButton" id="button124">
<property name="visible">True</property> <property name="visible">True</property>
@ -2225,19 +2331,6 @@
<signal name="clicked" handler="on_url_edit_ok_clicked" object="url_edit"/> <signal name="clicked" handler="on_url_edit_ok_clicked" object="url_edit"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button125">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="url_edit"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -2462,6 +2555,20 @@
<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>
<child>
<widget class="GtkButton" id="button119">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Reject changes and close</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="name_edit"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button118"> <widget class="GtkButton" id="button118">
<property name="visible">True</property> <property name="visible">True</property>
@ -2476,20 +2583,6 @@
<signal name="clicked" handler="on_name_edit_ok_clicked" object="name_edit"/> <signal name="clicked" handler="on_name_edit_ok_clicked" object="name_edit"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button119">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Reject changes and close</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="name_edit"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -3173,4 +3266,348 @@
</child> </child>
</widget> </widget>
<widget class="GtkDialog" id="witness_edit">
<property name="visible">True</property>
<property name="title" translatable="yes">Edit Witness</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="icon">gramps.png</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox2">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area2">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="cancelbutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-6</property>
<signal name="clicked" handler="cancel_clicked" last_modification_time="Tue, 18 Feb 2003 16:46:57 GMT"/>
</widget>
</child>
<child>
<widget class="GtkButton" id="ok">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-5</property>
<signal name="clicked" handler="ok_clicked" last_modification_time="Tue, 18 Feb 2003 16:46:37 GMT"/>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox44">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkTable" id="table28">
<property name="visible">True</property>
<property name="n_rows">4</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<child>
<widget class="GtkLabel" id="label293">
<property name="visible">True</property>
<property name="label" translatable="yes">Person</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">1</property>
<property name="yalign">0.5</property>
<property name="xpad">5</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label294">
<property name="visible">True</property>
<property name="label" translatable="yes">Comment</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">1</property>
<property name="yalign">0.5</property>
<property name="xpad">5</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</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="GtkLabel" id="label295">
<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</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label296">
<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</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="name">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_padding">3</property>
<property name="y_padding">3</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkScrolledWindow" id="scrolledwindow30">
<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="GtkTextView" id="comment">
<property name="border_width">1</property>
<property name="width_request">400</property>
<property name="height_request">200</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="justification">GTK_JUSTIFY_LEFT</property>
<property name="wrap_mode">GTK_WRAP_WORD</property>
<property name="cursor_visible">True</property>
<property name="pixels_above_lines">0</property>
<property name="pixels_below_lines">0</property>
<property name="pixels_inside_wrap">0</property>
<property name="left_margin">0</property>
<property name="right_margin">0</property>
<property name="indent">0</property>
<property name="text" translatable="yes"></property>
</widget>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_padding">3</property>
<property name="y_padding">3</property>
<property name="x_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="in_db">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Person is in the Database</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_toggled" last_modification_time="Thu, 20 Feb 2003 03:30:27 GMT"/>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_padding">3</property>
<property name="y_padding">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label297">
<property name="visible">True</property>
<property name="label" translatable="yes">ID</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">1</property>
<property name="yalign">0.5</property>
<property name="xpad">5</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label298">
<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</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="id">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes"></property>
<property name="has_frame">True</property>
<property name="invisible_char" translatable="yes">*</property>
<property name="activates_default">False</property>
<signal name="changed" handler="on_id_changed" last_modification_time="Thu, 20 Feb 2003 03:44:43 GMT"/>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_padding">3</property>
<property name="y_padding">3</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> </glade-interface>

View File

@ -124,7 +124,6 @@ class HtmlDoc(TextDoc.TextDoc):
def set_keywords(self,keywords): def set_keywords(self,keywords):
self.meta = string.join(keywords,",") self.meta = string.join(keywords,",")
print self.meta
def load_tpkg(self): def load_tpkg(self):
start = re.compile(r"<!--\s*START\s*-->") start = re.compile(r"<!--\s*START\s*-->")

View File

@ -28,6 +28,19 @@
<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>
<child>
<widget class="GtkButton" id="button15">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="editPerson"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="applyPerson"> <widget class="GtkButton" id="applyPerson">
<property name="visible">True</property> <property name="visible">True</property>
@ -42,19 +55,6 @@
<signal name="clicked" handler="on_apply_person_clicked" object="editPerson"/> <signal name="clicked" handler="on_apply_person_clicked" object="editPerson"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button15">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="editPerson"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">2</property> <property name="padding">2</property>
@ -2180,7 +2180,7 @@
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
@ -2203,6 +2203,7 @@
<child> <child>
<widget class="GtkHButtonBox" id="hbuttonbox14"> <widget class="GtkHButtonBox" id="hbuttonbox14">
<property name="border_width">5</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property> <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="spacing">30</property> <property name="spacing">30</property>
@ -2863,7 +2864,7 @@
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
@ -2886,6 +2887,7 @@
<child> <child>
<widget class="GtkHButtonBox" id="hbuttonbox10"> <widget class="GtkHButtonBox" id="hbuttonbox10">
<property name="border_width">5</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property> <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="spacing">30</property> <property name="spacing">30</property>
@ -3334,7 +3336,7 @@
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
@ -3357,6 +3359,7 @@
<child> <child>
<widget class="GtkHButtonBox" id="hbuttonbox16"> <widget class="GtkHButtonBox" id="hbuttonbox16">
<property name="border_width">6</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property> <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="spacing">30</property> <property name="spacing">30</property>
@ -4169,7 +4172,7 @@
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
@ -4192,6 +4195,7 @@
<child> <child>
<widget class="GtkHButtonBox" id="hbuttonbox17"> <widget class="GtkHButtonBox" id="hbuttonbox17">
<property name="border_width">5</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property> <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="spacing">30</property> <property name="spacing">30</property>
@ -4326,7 +4330,7 @@
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property> <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
@ -4351,6 +4355,7 @@
<child> <child>
<widget class="GtkHButtonBox" id="hbuttonbox13"> <widget class="GtkHButtonBox" id="hbuttonbox13">
<property name="border_width">5</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property> <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="spacing">15</property> <property name="spacing">15</property>
@ -4799,7 +4804,7 @@
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
@ -4822,6 +4827,7 @@
<child> <child>
<widget class="GtkHButtonBox" id="hbuttonbox15"> <widget class="GtkHButtonBox" id="hbuttonbox15">
<property name="border_width">5</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_SPREAD</property> <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
<property name="spacing">30</property> <property name="spacing">30</property>
@ -5127,7 +5133,7 @@
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="top_attach">1</property> <property name="top_attach">1</property>
<property name="bottom_attach">2</property> <property name="bottom_attach">2</property>
<property name="x_padding">3</property> <property name="x_padding">5</property>
<property name="y_padding">3</property> <property name="y_padding">3</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
@ -5398,7 +5404,7 @@
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="top_attach">1</property> <property name="top_attach">1</property>
<property name="bottom_attach">2</property> <property name="bottom_attach">2</property>
<property name="x_padding">3</property> <property name="x_padding">5</property>
<property name="y_padding">3</property> <property name="y_padding">3</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
@ -5717,7 +5723,7 @@
<property name="right_attach">2</property> <property name="right_attach">2</property>
<property name="top_attach">1</property> <property name="top_attach">1</property>
<property name="bottom_attach">2</property> <property name="bottom_attach">2</property>
<property name="x_padding">3</property> <property name="x_padding">5</property>
<property name="y_padding">3</property> <property name="y_padding">3</property>
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>

571
src/errdialogs.glade Normal file
View File

@ -0,0 +1,571 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkDialog" id="errdialog">
<property name="visible">True</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="default_width">450</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="okbutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-5</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="table1">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">label2</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">24</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-dialog-error</property>
<property name="icon_size">6</property>
<property name="xalign">0.5</property>
<property name="yalign">0</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">label1</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">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">expand|shrink|fill</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>
</child>
</widget>
<widget class="GtkDialog" id="savedialog">
<property name="visible">True</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox2">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area2">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="button1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Close without Saving</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-9</property>
</widget>
</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-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-6</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="button3">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-save</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-8</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="table2">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">label2</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">24</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="stock">gtk-dialog-warning</property>
<property name="icon_size">6</property>
<property name="xalign">0.5</property>
<property name="yalign">0</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">label1</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">expand|shrink|fill</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>
</child>
</widget>
<widget class="GtkDialog" id="questiondialog">
<property name="visible">True</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="button4">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-6</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="okbutton">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-3</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="table3">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">label2</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">24</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="stock">gtk-dialog-warning</property>
<property name="icon_size">6</property>
<property name="xalign">0.5</property>
<property name="yalign">0</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">label1</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">expand|shrink|fill</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>
</child>
</widget>
<widget class="GtkDialog" id="optiondialog">
<property name="visible">True</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="hbuttonbox2">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="option1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-9</property>
</widget>
</child>
<child>
<widget class="GtkButton" id="option2">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-8</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkTable" id="table4">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<child>
<widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">label2</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">24</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="stock">gtk-dialog-warning</property>
<property name="icon_size">6</property>
<property name="xalign">0.5</property>
<property name="yalign">0</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">label1</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">True</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">6</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">expand|shrink|fill</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>
</child>
</widget>
</glade-interface>

View File

@ -1,7 +1,7 @@
[Desktop Entry] [Desktop Entry]
Name=Genealogy (GRAMPS) Name=GRAMPS Genealogy System
Name[sv]=GRAMPS Name[sv]=GRAMPS
Comment=Genealogy Program Comment=Manage genealogical information, perform genealogical research and analysis
Comment[sv]=Ett släktforskningsprogram Comment[sv]=Ett släktforskningsprogram
Exec=gramps Exec=gramps
Icon=gramps.png Icon=gramps.png

View File

@ -77,7 +77,7 @@
<signal name="activate" handler="on_revert_activate"/> <signal name="activate" handler="on_revert_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image96"> <widget class="GtkImage" id="image118">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-revert-to-saved</property> <property name="stock">gtk-revert-to-saved</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -113,7 +113,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image97"> <widget class="GtkImage" id="image119">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-convert</property> <property name="stock">gtk-convert</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -134,7 +134,7 @@
<signal name="activate" handler="on_reload_plugins_activate"/> <signal name="activate" handler="on_reload_plugins_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image98"> <widget class="GtkImage" id="image120">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-refresh</property> <property name="stock">gtk-refresh</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -182,7 +182,7 @@
<signal name="activate" handler="on_find_activate"/> <signal name="activate" handler="on_find_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image99"> <widget class="GtkImage" id="image121">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-find</property> <property name="stock">gtk-find</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -203,7 +203,7 @@
<signal name="activate" handler="on_merge_activate"/> <signal name="activate" handler="on_merge_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image100"> <widget class="GtkImage" id="image122">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-convert</property> <property name="stock">gtk-convert</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -271,7 +271,7 @@
<accelerator key="D" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="D" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image101"> <widget class="GtkImage" id="image123">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-index</property> <property name="stock">gtk-index</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -293,7 +293,7 @@
<accelerator key="B" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="B" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image102"> <widget class="GtkImage" id="image124">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gnome-stock-book-open</property> <property name="stock">gnome-stock-book-open</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -350,10 +350,10 @@
<widget class="GtkMenu" id="settings1_menu"> <widget class="GtkMenu" id="settings1_menu">
<child> <child>
<widget class="GtkImageMenuItem" id="preferences"> <widget class="GtkImageMenuItem" id="preferences1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock_item">GNOMEUIINFO_MENU_PROPERTIES_ITEM</property> <property name="stock_item">GNOMEUIINFO_MENU_PREFERENCES_ITEM</property>
<signal name="activate" handler="on_preferences_activate"/> <signal name="activate" handler="on_preferences1_activate"/>
</widget> </widget>
</child> </child>
@ -365,7 +365,7 @@
<signal name="activate" handler="on_default_person_activate"/> <signal name="activate" handler="on_default_person_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image103"> <widget class="GtkImage" id="image125">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-home</property> <property name="stock">gtk-home</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -399,7 +399,7 @@
<signal name="activate" handler="on_contents_activate"/> <signal name="activate" handler="on_contents_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image104"> <widget class="GtkImage" id="image126">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gnome-stock-book-red</property> <property name="stock">gnome-stock-book-red</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -420,7 +420,7 @@
<signal name="activate" handler="on_writing_extensions_activate"/> <signal name="activate" handler="on_writing_extensions_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image105"> <widget class="GtkImage" id="image127">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gnome-stock-book-blue</property> <property name="stock">gnome-stock-book-blue</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -441,7 +441,7 @@
<signal name="activate" handler="on_gramps_home_page_activate"/> <signal name="activate" handler="on_gramps_home_page_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image106"> <widget class="GtkImage" id="image128">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-jump-to</property> <property name="stock">gtk-jump-to</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -462,7 +462,7 @@
<signal name="activate" handler="on_gramps_mailing_lists_activate"/> <signal name="activate" handler="on_gramps_mailing_lists_activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image107"> <widget class="GtkImage" id="image129">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gnome-stock-mail</property> <property name="stock">gnome-stock-mail</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1312,20 +1312,14 @@
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
<widget class="GtkTextView" id="ap_data"> <widget class="GtkTreeView" id="ap_data">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip" translatable="yes">Double-click to edit the active person</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="editable">False</property> <property name="headers_visible">False</property>
<property name="justification">GTK_JUSTIFY_LEFT</property> <property name="rules_hint">True</property>
<property name="wrap_mode">GTK_WRAP_NONE</property> <property name="reorderable">False</property>
<property name="cursor_visible">False</property> <property name="enable_search">False</property>
<property name="pixels_above_lines">0</property>
<property name="pixels_below_lines">0</property>
<property name="pixels_inside_wrap">0</property>
<property name="left_margin">0</property>
<property name="right_margin">0</property>
<property name="indent">0</property>
<property name="text" translatable="yes"></property>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -2790,19 +2784,6 @@
<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>
<child>
<widget class="GtkButton" id="spouse_ok">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_select_spouse_clicked" object="spouseDialog"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button117"> <widget class="GtkButton" id="button117">
<property name="visible">True</property> <property name="visible">True</property>
@ -2815,6 +2796,19 @@
<signal name="clicked" handler="destroy_passed_object" object="spouseDialog"/> <signal name="clicked" handler="destroy_passed_object" object="spouseDialog"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="spouse_ok">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_select_spouse_clicked" object="spouseDialog"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">10</property> <property name="padding">10</property>
@ -3074,6 +3068,19 @@
<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>
<child>
<widget class="GtkButton" id="button44">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="familyDialog"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button42"> <widget class="GtkButton" id="button42">
<property name="visible">True</property> <property name="visible">True</property>
@ -3087,19 +3094,6 @@
<signal name="clicked" handler="on_save_parents_clicked" object="familyDialog"/> <signal name="clicked" handler="on_save_parents_clicked" object="familyDialog"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button44">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="familyDialog"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -3965,6 +3959,19 @@
<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>
<child>
<widget class="GtkButton" id="button49">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="selectChild"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button48"> <widget class="GtkButton" id="button48">
<property name="visible">True</property> <property name="visible">True</property>
@ -3978,19 +3985,6 @@
<signal name="clicked" handler="on_save_child_clicked" object="selectChild"/> <signal name="clicked" handler="on_save_child_clicked" object="selectChild"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button49">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="selectChild"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -4568,6 +4562,19 @@
<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>
<child>
<widget class="GtkButton" id="button54">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="marriageQuery"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button52"> <widget class="GtkButton" id="button52">
<property name="visible">True</property> <property name="visible">True</property>
@ -4581,19 +4588,6 @@
<signal name="clicked" handler="on_marriageQuery_clicked" object="marriageQuery"/> <signal name="clicked" handler="on_marriageQuery_clicked" object="marriageQuery"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button54">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="marriageQuery"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -4713,7 +4707,7 @@
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
<property name="default_width">450</property> <property name="default_width">500</property>
<property name="default_height">350</property> <property name="default_height">350</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
@ -4731,6 +4725,20 @@
<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>
<child>
<widget class="GtkButton" id="button90">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Reject changes and close</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="sourceEditor"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button88"> <widget class="GtkButton" id="button88">
<property name="visible">True</property> <property name="visible">True</property>
@ -4745,20 +4753,6 @@
<signal name="clicked" handler="on_sourceapply_clicked" object="sourceEditor"/> <signal name="clicked" handler="on_sourceapply_clicked" object="sourceEditor"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button90">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Reject changes and close</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="sourceEditor"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -4800,7 +4794,7 @@
<property name="visible">True</property> <property name="visible">True</property>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">3</property>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
@ -4980,7 +4974,7 @@
<child> <child>
<widget class="GtkLabel" id="label204"> <widget class="GtkLabel" id="label204">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;&lt;i&gt;General&lt;/i&gt;&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;General&lt;/b&gt;</property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -5031,7 +5025,7 @@
<child> <child>
<widget class="GtkLabel" id="label205"> <widget class="GtkLabel" id="label205">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;&lt;i&gt;Note&lt;/i&gt;&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;Note&lt;/b&gt;</property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -5130,7 +5124,7 @@
<child> <child>
<widget class="GtkLabel" id="label206"> <widget class="GtkLabel" id="label206">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;&lt;i&gt;Gallery&lt;/i&gt;&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;Gallery&lt;/b&gt;</property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -5150,8 +5144,8 @@
<widget class="GtkScrolledWindow" id="scrolledwindow38"> <widget class="GtkScrolledWindow" id="scrolledwindow38">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_NONE</property> <property name="shadow_type">GTK_SHADOW_NONE</property>
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
@ -5175,7 +5169,7 @@
<child> <child>
<widget class="GtkLabel" id="label274"> <widget class="GtkLabel" id="label274">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;&lt;i&gt;References&lt;/i&gt;&lt;/b&gt;</property> <property name="label" translatable="yes">&lt;b&gt;References&lt;/b&gt;</property>
<property name="use_underline">False</property> <property name="use_underline">False</property>
<property name="use_markup">True</property> <property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_CENTER</property> <property name="justify">GTK_JUSTIFY_CENTER</property>
@ -5230,6 +5224,19 @@
<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>
<child>
<widget class="GtkButton" id="button122">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="addperson"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button121"> <widget class="GtkButton" id="button121">
<property name="visible">True</property> <property name="visible">True</property>
@ -5243,19 +5250,6 @@
<signal name="clicked" handler="on_addfather_close" object="addperson"/> <signal name="clicked" handler="on_addfather_close" object="addperson"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button122">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="addperson"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -5571,6 +5565,19 @@
<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>
<child>
<widget class="GtkButton" id="open_cancel">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_open_cancel_clicked" object="opendb"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="open_ok"> <widget class="GtkButton" id="open_ok">
<property name="visible">True</property> <property name="visible">True</property>
@ -5584,19 +5591,6 @@
<signal name="clicked" handler="on_open_ok_clicked" object="opendb"/> <signal name="clicked" handler="on_open_ok_clicked" object="opendb"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="open_cancel">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_open_cancel_clicked" object="opendb"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -5889,6 +5883,19 @@ or create a new relationship.</property>
<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>
<child>
<widget class="GtkButton" id="button154">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="familyDialog"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button153"> <widget class="GtkButton" id="button153">
<property name="visible">True</property> <property name="visible">True</property>
@ -5902,19 +5909,6 @@ or create a new relationship.</property>
<signal name="clicked" handler="on_save_parents_clicked" object="familyDialog"/> <signal name="clicked" handler="on_save_parents_clicked" object="familyDialog"/>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button154">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="familyDialog"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -57,7 +57,7 @@ import PlaceView
import FamilyView import FamilyView
import SourceView import SourceView
from QuestionDialog import QuestionDialog, ErrorDialog, WarningDialog from QuestionDialog import QuestionDialog, ErrorDialog, WarningDialog, SaveDialog
import DisplayTrace import DisplayTrace
import Filter import Filter
@ -294,7 +294,7 @@ class Gramps:
"on_sidebar1_activate" : self.on_sidebar_activate, "on_sidebar1_activate" : self.on_sidebar_activate,
"on_filter1_activate" : self.on_filter_activate, "on_filter1_activate" : self.on_filter_activate,
"on_places_activate" : self.on_places_activate, "on_places_activate" : self.on_places_activate,
"on_preferences_activate" : self.on_preferences_activate, "on_preferences1_activate" : self.on_preferences_activate,
"on_reload_plugins_activate" : Plugins.reload_plugins, "on_reload_plugins_activate" : Plugins.reload_plugins,
"on_reports_clicked" : self.on_reports_clicked, "on_reports_clicked" : self.on_reports_clicked,
"on_revert_activate" : self.on_revert_activate, "on_revert_activate" : self.on_revert_activate,
@ -473,8 +473,11 @@ class Gramps:
mlist = self.person_tree.get_selected_objects() mlist = self.person_tree.get_selected_objects()
if len(mlist) != 2: if len(mlist) != 2:
msg = _("Exactly two people must be selected to perform a merge") msg = _("Cannot merge people.")
ErrorDialog(msg) msg2 = _("Exactly two people must be selected to perform a merge. "
"A second person can be selected by holding down the "
"control key while clicking on a the desired person.")
ErrorDialog(msg,msg2)
else: else:
import MergeData import MergeData
p1 = self.db.getPerson(mlist[0]) p1 = self.db.getPerson(mlist[0])
@ -494,10 +497,12 @@ class Gramps:
"""Prompt to save on exit if needed""" """Prompt to save on exit if needed"""
if Utils.wasModified(): if Utils.wasModified():
self.delobj = obj self.delobj = obj
QuestionDialog(_('Abandon Changes'), SaveDialog(_('Save Changes Made to the Database?'),
_("Unsaved changes exist in the current database\n" _("Unsaved changes exist in the current database. If you "
"Do you wish to save the changes?"), "close without saving, the changes you have made will "
self.save_query,self.quit) "be lost."),
self.quit,
self.save_query)
else: else:
self.db.close() self.db.close()
gtk.mainquit() gtk.mainquit()
@ -549,8 +554,12 @@ class Gramps:
def on_new_clicked(self,obj): def on_new_clicked(self,obj):
"""Prompt for permission to close the current database""" """Prompt for permission to close the current database"""
msg = _("Do you want to close the current database and create a new one?") QuestionDialog(_('Create a New Database'),
QuestionDialog(_('New Database'),msg, self.new_database_response) _('Creating a new database will close the existing database, ',
'discarding any unsaved changes. You will then be prompted '
'to create a new database'),
_('Create New Database'),
self.new_database_response)
def new_database_response(self): def new_database_response(self):
import DbPrompter import DbPrompter
@ -661,6 +670,7 @@ class Gramps:
if filename == "" or filename == None: if filename == "" or filename == None:
return return
filename = os.path.normpath(os.path.abspath(filename))
self.clear_database(0) self.clear_database(0)
@ -673,6 +683,7 @@ class Gramps:
def auto_save_load(self,filename): def auto_save_load(self,filename):
filename = os.path.normpath(os.path.abspath(filename))
if os.path.isdir(filename): if os.path.isdir(filename):
dirname = filename dirname = filename
else: else:
@ -685,8 +696,17 @@ class Gramps:
self.yname = autosave self.yname = autosave
self.nname = filename self.nname = filename
QuestionDialog(_('Autosave File'),q,self.autosave_query, OptionDialog(_('An autosave file was detected'),
self.loadsaved_file) _('GRAMPS has detected an autosave file for the '
'selected database. This file is more recent than '
'the last saved database. This typically happens '
'when GRAMPS was unexpected shutdown before the '
'data was saved. You may load this file to try to '
'recover any missing data.'),
_('Load autosave file'),
self.autosave_query,
_('Load saved database'),
self.loadsaved_file)
else: else:
self.read_file(filename) self.read_file(filename)
@ -699,6 +719,7 @@ class Gramps:
def read_gedcom(self,filename): def read_gedcom(self,filename):
import ReadGedcom import ReadGedcom
filename = os.path.normpath(os.path.abspath(filename))
self.topWindow.set_title("%s - GRAMPS" % filename) self.topWindow.set_title("%s - GRAMPS" % filename)
try: try:
ReadGedcom.importData(self.db,filename) ReadGedcom.importData(self.db,filename)
@ -707,13 +728,19 @@ class Gramps:
self.full_update() self.full_update()
def read_file(self,filename): def read_file(self,filename):
filename = os.path.normpath(os.path.abspath(filename))
base = os.path.basename(filename) base = os.path.basename(filename)
if base == const.xmlFile: if base == const.xmlFile:
filename = os.path.dirname(filename) filename = os.path.dirname(filename)
elif base == "autosave.gramps": elif base == "autosave.gramps":
filename = os.path.dirname(filename) filename = os.path.dirname(filename)
elif not os.path.isdir(filename): elif not os.path.isdir(filename):
self.displayError(_("%s is not a directory") % filename) self.displayError(_("Database could not be opened"),
_("%s is not a directory.") % filename + ' ' + \
_("The file you should attempt to open should be "
"a directory that contains a data.gramps file or "
"a gramps.zodb file."))
return return
self.status_text(_("Loading %s ...") % filename) self.status_text(_("Loading %s ...") % filename)
@ -729,6 +756,7 @@ class Gramps:
def on_ok_button2_clicked(self,obj): def on_ok_button2_clicked(self,obj):
filename = obj.get_filename() filename = obj.get_filename()
filename = os.path.normpath(os.path.abspath(filename))
if filename: if filename:
Utils.destroy_passed_object(obj) Utils.destroy_passed_object(obj)
if GrampsCfg.usevc and GrampsCfg.vc_comment: if GrampsCfg.usevc and GrampsCfg.vc_comment:
@ -739,7 +767,7 @@ class Gramps:
def save_file(self,filename,comment): def save_file(self,filename,comment):
path = filename path = filename
filename = os.path.normpath(filename) filename = os.path.normpath(os.path.abspath(filename))
autosave = "%s/autosave.gramps" % filename autosave = "%s/autosave.gramps" % filename
self.status_text(_("Saving %s ...") % filename) self.status_text(_("Saving %s ...") % filename)
@ -749,17 +777,23 @@ class Gramps:
if os.path.exists(filename): if os.path.exists(filename):
if os.path.isdir(filename) == 0: if os.path.isdir(filename) == 0:
self.displayError(_("%s is not a directory") % filename) self.displayError(_("Database could not be opened"),
_("%s is not a directory.") % filename + ' ' + \
_("The file you should attempt to open should be "
"a directory that contains a data.gramps file or "
"a gramps.zodb file."))
return return
else: else:
try: try:
os.mkdir(filename) os.mkdir(filename)
except (OSError,IOError), msg: except (OSError,IOError), msg:
emsg = _("Could not create %s") % filename + "\n" + str(msg) emsg = _("Could not create %s") % filename
ErrorDialog(emsg) ErrorDialog(emsg,_("An was detected while attempting to create the file. ",
'The operating system reported "%s"' % str(msg)))
return return
except: except:
ErrorDialog(_("Could not create %s") % filename) ErrorDialog(_("Could not create %s") % filename,
_("An error was detected while trying to create the file"))
return return
old_file = filename old_file = filename
@ -767,8 +801,8 @@ class Gramps:
try: try:
self.db.save(filename,self.load_progress) self.db.save(filename,self.load_progress)
except (OSError,IOError), msg: except (OSError,IOError), msg:
emsg = _("Could not create %s") % filename + "\n" + str(msg) emsg = _("Could not create %s") % filename
ErrorDialog(emsg) ErrorDialog(emsg,_("An error was detected while trying to create the file"))
return return
self.db.setSavePath(old_file) self.db.setSavePath(old_file)
@ -796,7 +830,7 @@ class Gramps:
if not path: if not path:
return return
filename = os.path.normpath(path) filename = os.path.normpath(os.path.abspath(filename))
Utils.clear_timer() Utils.clear_timer()
filename = "%s/autosave.gramps" % (self.db.getSavePath()) filename = "%s/autosave.gramps" % (self.db.getSavePath())
@ -833,9 +867,15 @@ class Gramps:
for sel in mlist: for sel in mlist:
p = self.db.getPerson(sel) p = self.db.getPerson(sel)
name = GrampsCfg.nameof(p) name = GrampsCfg.nameof(p)
msg = _("Do you really wish to delete %s?") % name
QuestionDialog(_('Delete Person'), msg, self.delete_person_response) QuestionDialog(_('Delete %s?') % name,
_('Deleting the person will remove the person from '
'from the database. The data can only be '
'recovered by closing the database without saving '
'changes. This change will become permanent '
'after you save the database.'),
_('Delete Person'),
self.delete_person_response)
def delete_person_response(self): def delete_person_response(self):
for family in self.active_person.getFamilyList(): for family in self.active_person.getFamilyList():
@ -947,7 +987,12 @@ class Gramps:
msg = _("Do you wish to abandon your changes and " msg = _("Do you wish to abandon your changes and "
"revert to the last saved database?") "revert to the last saved database?")
QuestionDialog(_('Abandon Changes'),msg, self.revert_query) QuestionDialog(_('Revert to last saved database?'),
_('Reverting to the last saved database '
'will cause all unsaved changes to be lost, and '
'the last saved database will be loaded.'),
_('Revert'),
self.revert_query)
else: else:
msg = _("Cannot revert to a previous database, since " msg = _("Cannot revert to a previous database, since "
"one does not exist") "one does not exist")
@ -1004,6 +1049,7 @@ class Gramps:
def display_comment_box(self,filename): def display_comment_box(self,filename):
"""Displays a dialog box, prompting for a revison control comment""" """Displays a dialog box, prompting for a revison control comment"""
filename = os.path.normpath(os.path.abspath(filename))
VersionControl.RevisionComment(filename,self.save_file) VersionControl.RevisionComment(filename,self.save_file)
def on_person_list1_activate(self,obj): def on_person_list1_activate(self,obj):
@ -1261,8 +1307,8 @@ class Gramps:
self.gtop.get_widget("jump_to"), self.gtop.get_widget("jump_to"),
self.bookmark_callback) self.bookmark_callback)
def displayError(self,msg): def displayError(self,msg,msg2):
ErrorDialog(msg) ErrorDialog(msg,msg2)
self.status_text("") self.status_text("")
def complete_rebuild(self): def complete_rebuild(self):
@ -1346,7 +1392,8 @@ class Gramps:
self.change_active_person(temp) self.change_active_person(temp)
self.update_display(0) self.update_display(0)
else: else:
ErrorDialog(_("No default/home person has been set")) ErrorDialog(_("No home person has been set."),
_("The home person may be set from the Settings menu."))
def on_add_bookmark_activate(self,obj): def on_add_bookmark_activate(self,obj):
if self.active_person: if self.active_person:
@ -1355,7 +1402,8 @@ class Gramps:
self.status_text(_("%s has been bookmarked") % name) self.status_text(_("%s has been bookmarked") % name)
gtk.timeout_add(5000,self.modify_statusbar) gtk.timeout_add(5000,self.modify_statusbar)
else: else:
WarningDialog(_("Bookmark could not be set because no one was selected")) WarningDialog(_("Could not set bookmark."),
_("A bookmark could not be set because no one was selected."))
def on_edit_bookmarks_activate(self,obj): def on_edit_bookmarks_activate(self,obj):
self.bookmarks.edit() self.bookmarks.edit()
@ -1369,7 +1417,12 @@ class Gramps:
name = self.active_person.getPrimaryName().getRegularName() name = self.active_person.getPrimaryName().getRegularName()
msg = _("Do you wish to set %s as the home person?") % name msg = _("Do you wish to set %s as the home person?") % name
QuestionDialog(_('Set Home Person'),msg,self.set_person) QuestionDialog(_('Set %n as the Home Person') % name,
_('Once a Home Person is defined, pressing the Home key '
'on the toolbar will make the home person the active '
'person.'),
_('Set Home Person'),
self.set_person)
def set_person(self): def set_person(self):
self.db.setDefaultPerson(self.active_person) self.db.setDefaultPerson(self.active_person)

View File

@ -27,6 +27,18 @@
<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>
<child>
<widget class="GtkButton" id="button81">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="imageSelect"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button79"> <widget class="GtkButton" id="button79">
<property name="visible">True</property> <property name="visible">True</property>
@ -41,18 +53,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button81">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="imageSelect"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -381,6 +381,18 @@
<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>
<child>
<widget class="GtkButton" id="button84">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_cancel_clicked" object="change_description"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button82"> <widget class="GtkButton" id="button82">
<property name="visible">True</property> <property name="visible">True</property>
@ -395,18 +407,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button84">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_cancel_clicked" object="change_description"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -1308,16 +1308,15 @@
<property name="layout_style">GTK_BUTTONBOX_END</property> <property name="layout_style">GTK_BUTTONBOX_END</property>
<child> <child>
<widget class="GtkButton" id="button89"> <widget class="GtkButton" id="button91">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="has_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-ok</property> <property name="label">gtk-cancel</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">0</property>
<signal name="clicked" handler="on_ok_clicked" object="change_global"/> <signal name="clicked" handler="on_cancel_clicked" object="change_global"/>
</widget> </widget>
</child> </child>
@ -1335,17 +1334,19 @@
</child> </child>
<child> <child>
<widget class="GtkButton" id="button91"> <widget class="GtkButton" id="button89">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="has_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-cancel</property> <property name="label">gtk-ok</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">0</property>
<signal name="clicked" handler="on_cancel_clicked" object="change_global"/> <signal name="clicked" handler="on_ok_clicked" object="change_global"/>
</widget> </widget>
</child> </child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -28,6 +28,20 @@
<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>
<child>
<widget class="GtkButton" id="button108">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Reject changes and close</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="marriageEditor"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button107"> <widget class="GtkButton" id="button107">
<property name="visible">True</property> <property name="visible">True</property>
@ -43,19 +57,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button108">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Reject changes and close</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="marriageEditor"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -25,6 +25,18 @@
<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>
<child>
<widget class="GtkButton" id="button9">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="merge_places"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button7"> <widget class="GtkButton" id="button7">
<property name="visible">True</property> <property name="visible">True</property>
@ -38,18 +50,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button9">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="merge_places"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -28,6 +28,18 @@
<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>
<child>
<widget class="GtkButton" id="button127">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="placeEditor"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button126"> <widget class="GtkButton" id="button126">
<property name="visible">True</property> <property name="visible">True</property>
@ -42,18 +54,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button127">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="placeEditor"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -9,8 +9,8 @@
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
<property name="default_width">550</property> <property name="default_width">600</property>
<property name="default_height">350</property> <property name="default_height">400</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="icon">gramps.png</property> <property name="icon">gramps.png</property>
@ -28,15 +28,15 @@
<property name="layout_style">GTK_BUTTONBOX_END</property> <property name="layout_style">GTK_BUTTONBOX_END</property>
<child> <child>
<widget class="GtkButton" id="button104"> <widget class="GtkButton" id="button106">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-ok</property> <property name="label">gtk-cancel</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">0</property>
<signal name="clicked" handler="on_report_ok_clicked" object="report"/> <signal name="clicked" handler="destroy_passed_object" object="report"/>
</widget> </widget>
</child> </child>
@ -54,15 +54,15 @@
</child> </child>
<child> <child>
<widget class="GtkButton" id="button106"> <widget class="GtkButton" id="button104">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-cancel</property> <property name="label">gtk-ok</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="report"/> <signal name="clicked" handler="on_report_ok_clicked" object="report"/>
</widget> </widget>
</child> </child>
</widget> </widget>

View File

@ -115,7 +115,9 @@ register_tool(
runTool, runTool,
_("Interactive descendant browser"), _("Interactive descendant browser"),
category=_("Analysis and Exploration"), category=_("Analysis and Exploration"),
description=_("Provides a browsable hierarchy based on the active person") description=_("Provides a browsable hierarchy based on the active person"),
author_name="Donald N. Allingham",
author_email="dallingham@users.sourceforge.net"
) )

View File

@ -335,7 +335,7 @@ class IndivComplete:
self.d.end_cell() self.d.end_cell()
def write_report(self): def write_report(self):
ind_list = self.filter.apply(self.database.getPersonMap().values()) ind_list = self.filter.apply(seld.database,self.database.getPersonMap().values())
count = 0 count = 0
for self.person in ind_list: for self.person in ind_list:
self.write_person(count) self.write_person(count)

View File

@ -364,7 +364,7 @@ class TimeLineDialog(Report.DrawReportDialog):
return [all,des,ans,com] return [all,des,ans,com]
def make_default_style(self): def make_default_style(self):
"""Make the default output style for the Ancestor Chart report.""" """Make the default output style for the Timeline report."""
f = TextDoc.FontStyle() f = TextDoc.FontStyle()
f.set_size(10) f.set_size(10)
f.set_type_face(TextDoc.FONT_SANS_SERIF) f.set_type_face(TextDoc.FONT_SANS_SERIF)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,7 +6,7 @@
<widget class="GtkDialog" id="preferences"> <widget class="GtkDialog" id="preferences">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">Preferences - GRAMPS</property> <property name="title" translatable="yes">GRAMPS Preferences</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property> <property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property> <property name="modal">False</property>
@ -28,15 +28,15 @@
<property name="layout_style">GTK_BUTTONBOX_END</property> <property name="layout_style">GTK_BUTTONBOX_END</property>
<child> <child>
<widget class="GtkButton" id="button4"> <widget class="GtkButton" id="button7">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-ok</property> <property name="label">gtk-help</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">0</property>
<signal name="clicked" handler="on_ok_clicked"/> <signal name="clicked" handler="on_help_clicked"/>
</widget> </widget>
</child> </child>
@ -68,15 +68,15 @@
</child> </child>
<child> <child>
<widget class="GtkButton" id="button7"> <widget class="GtkButton" id="button4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_default">True</property> <property name="can_default">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="label">gtk-help</property> <property name="label">gtk-ok</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property> <property name="response_id">0</property>
<signal name="clicked" handler="on_help_clicked"/> <signal name="clicked" handler="on_ok_clicked"/>
</widget> </widget>
</child> </child>
</widget> </widget>

View File

@ -27,6 +27,18 @@
<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>
<child>
<widget class="GtkButton" id="button129">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="dbopen"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button127"> <widget class="GtkButton" id="button127">
<property name="visible">True</property> <property name="visible">True</property>
@ -40,18 +52,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button129">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="dbopen"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -214,6 +214,18 @@
<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>
<child>
<widget class="GtkButton" id="button134">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="revselect"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button132"> <widget class="GtkButton" id="button132">
<property name="visible">True</property> <property name="visible">True</property>
@ -227,18 +239,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button134">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="revselect"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -27,6 +27,18 @@
<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>
<child>
<widget class="GtkButton" id="button6">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_cancel_clicked"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="ok"> <widget class="GtkButton" id="ok">
<property name="visible">True</property> <property name="visible">True</property>
@ -41,18 +53,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button6">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_cancel_clicked"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -410,6 +410,17 @@
<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>
<child>
<widget class="GtkButton" id="cancel">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="ok"> <widget class="GtkButton" id="ok">
<property name="visible">True</property> <property name="visible">True</property>
@ -422,17 +433,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="cancel">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -29,7 +29,6 @@ to make sure these remain in sync with the rest of the design.
# Imported Modules # Imported Modules
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import string
import Date import Date
#------------------------------------------------------------------------- #-------------------------------------------------------------------------

View File

@ -26,6 +26,18 @@
<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>
<child>
<widget class="GtkButton" id="button95">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="sourceDisplay"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button94"> <widget class="GtkButton" id="button94">
<property name="visible">True</property> <property name="visible">True</property>
@ -40,18 +52,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button95">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="sourceDisplay"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -678,6 +678,18 @@
<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>
<child>
<widget class="GtkButton" id="button138">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="sourcesel"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button136"> <widget class="GtkButton" id="button136">
<property name="visible">True</property> <property name="visible">True</property>
@ -691,18 +703,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button138">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="sourcesel"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>

View File

@ -28,6 +28,18 @@
<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>
<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-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="styles"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button1"> <widget class="GtkButton" id="button1">
<property name="visible">True</property> <property name="visible">True</property>
@ -42,18 +54,6 @@
</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-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="styles"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -330,6 +330,18 @@
<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>
<child>
<widget class="GtkButton" id="button8">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="editor"/>
</widget>
</child>
<child> <child>
<widget class="GtkButton" id="button7"> <widget class="GtkButton" id="button7">
<property name="visible">True</property> <property name="visible">True</property>
@ -344,18 +356,6 @@
</widget> </widget>
</child> </child>
<child>
<widget class="GtkButton" id="button8">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="editor"/>
</widget>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>