Fixed marriage problem and startup dialog
svn: r1515
This commit is contained in:
parent
6e4c5462d5
commit
bb26dd5aa7
@ -1,2 +1,3 @@
|
|||||||
Don Allingham
|
Don Allingham
|
||||||
Don Peterson
|
Don Peterson
|
||||||
|
Alex Roitman
|
||||||
|
@ -181,6 +181,7 @@ class GrampsParser:
|
|||||||
"url" : (self.start_url, None)
|
"url" : (self.start_url, None)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def parse(self,file):
|
def parse(self,file):
|
||||||
p = xml.parsers.expat.ParserCreate()
|
p = xml.parsers.expat.ParserCreate()
|
||||||
p.StartElementHandler = self.startElement
|
p.StartElementHandler = self.startElement
|
||||||
@ -194,6 +195,8 @@ class GrampsParser:
|
|||||||
if self.db.personMap.has_key(id) and self.db.getDefaultPerson() == None:
|
if self.db.personMap.has_key(id) and self.db.getDefaultPerson() == None:
|
||||||
person = self.db.personMap[id]
|
person = self.db.personMap[id]
|
||||||
self.db.setDefaultPerson(person)
|
self.db.setDefaultPerson(person)
|
||||||
|
for key in self.func_map.keys():
|
||||||
|
del self.func_map[key]
|
||||||
|
|
||||||
def start_lds_ord(self,attrs):
|
def start_lds_ord(self,attrs):
|
||||||
type = attrs['type']
|
type = attrs['type']
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Gramps - a GTK+/GNOME based genealogy program
|
# Gramps - a GTK+/GNOME based genealogy program
|
||||||
#
|
#
|
||||||
# Copyright (C) 2000 Donald N. Allingham
|
# Copyright (C) 2000-2003 Donald N. Allingham
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modiy
|
# This program is free software; you can redistribute it and/or modiy
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -147,7 +147,7 @@ class Marriage:
|
|||||||
|
|
||||||
self.etree = ListModel.ListModel(self.event_list, etitles,
|
self.etree = ListModel.ListModel(self.event_list, etitles,
|
||||||
self.on_select_row,
|
self.on_select_row,
|
||||||
self.on_update_clicked)
|
self.on_event_update_clicked)
|
||||||
self.atree = ListModel.ListModel(self.attr_list, atitles,
|
self.atree = ListModel.ListModel(self.attr_list, atitles,
|
||||||
self.on_attr_list_select_row,
|
self.on_attr_list_select_row,
|
||||||
self.on_update_attr_clicked)
|
self.on_update_attr_clicked)
|
||||||
|
@ -87,10 +87,10 @@ class DispBox:
|
|||||||
self.group.set_data('p',person)
|
self.group.set_data('p',person)
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
self.shadow.destroy()
|
self.shadow.destroy()
|
||||||
self.bkgnd.destroy()
|
self.bkgnd.destroy()
|
||||||
self.textbox.destroy()
|
self.textbox.destroy()
|
||||||
self.group.destroy()
|
self.group.destroy()
|
||||||
|
|
||||||
def group_event(self,obj,event):
|
def group_event(self,obj,event):
|
||||||
"""Handle events over a drawn box. Doubleclick would edit,
|
"""Handle events over a drawn box. Doubleclick would edit,
|
||||||
|
@ -113,6 +113,7 @@ def importData(database, filename, callback):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
xml_file.close()
|
xml_file.close()
|
||||||
|
del parser
|
||||||
|
|
||||||
# Rename media files if they were conflicting with existing ones
|
# Rename media files if they were conflicting with existing ones
|
||||||
ObjectMap = database.getObjectMap()
|
ObjectMap = database.getObjectMap()
|
||||||
@ -218,6 +219,7 @@ def loadData(database, filename, callback=None):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
xml_file.close()
|
xml_file.close()
|
||||||
|
del parser
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -20,13 +20,16 @@
|
|||||||
|
|
||||||
import const
|
import const
|
||||||
import gtk.glade
|
import gtk.glade
|
||||||
|
import gnome
|
||||||
|
import gnome.ui
|
||||||
import gconf
|
import gconf
|
||||||
import Utils
|
import Utils
|
||||||
|
|
||||||
|
from intl import gettext as _
|
||||||
|
|
||||||
_StartupEntry = "/apps/gramps/startup"
|
_StartupEntry = "/apps/gramps/startup"
|
||||||
|
|
||||||
def need_to_run():
|
def need_to_run():
|
||||||
return 0
|
|
||||||
client = gconf.client_get_default()
|
client = gconf.client_get_default()
|
||||||
client.add_dir("/apps/gramps",gconf.CLIENT_PRELOAD_NONE)
|
client.add_dir("/apps/gramps",gconf.CLIENT_PRELOAD_NONE)
|
||||||
val = client.get_int(_StartupEntry)
|
val = client.get_int(_StartupEntry)
|
||||||
@ -36,55 +39,218 @@ def need_to_run():
|
|||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
class StartupDialog:
|
class StartupDialog:
|
||||||
|
|
||||||
def __init__(self,task,arg):
|
def __init__(self,task,arg):
|
||||||
|
|
||||||
self.task = task
|
self.task = task
|
||||||
self.arg = arg
|
self.arg = arg
|
||||||
|
|
||||||
self.druid = gtk.glade.XML(const.configFile,"initDruid")
|
self.w = gtk.Window()
|
||||||
self.druid.signal_autoconnect({
|
self.fg_color = gtk.gdk.color_parse('#7d684a')
|
||||||
"on_cancel_clicked" : self.on_cancel_clicked,
|
self.bg_color = gtk.gdk.color_parse('#e1dbc5')
|
||||||
"destroy_event": self.destroy,
|
self.logo = gtk.gdk.pixbuf_new_from_file("/home/dona/Projects/gramps2/src/gramps.png")
|
||||||
"on_finish" : self.on_finish
|
self.splash = gtk.gdk.pixbuf_new_from_file("/home/dona/Projects/gramps2/src/splash.jpg")
|
||||||
})
|
d = gnome.ui.Druid()
|
||||||
|
self.w.add(d)
|
||||||
self.rlist = ['name','addr','city','state','country',
|
d.add(self.build_page1())
|
||||||
'postal', 'phone', 'email']
|
d.add(self.build_page2())
|
||||||
|
d.add(self.build_page3())
|
||||||
|
d.add(self.build_page4())
|
||||||
|
d.add(self.build_page5())
|
||||||
|
d.add(self.build_page_last())
|
||||||
|
|
||||||
|
d.connect('cancel',self.close)
|
||||||
|
self.w.connect("destroy_event", self.close)
|
||||||
|
|
||||||
self.client = gconf.client_get_default()
|
self.client = gconf.client_get_default()
|
||||||
for tag in self.rlist:
|
self.w.show_all()
|
||||||
val = self.client.get_string("/apps/gramps/researcher-%s" % tag)
|
|
||||||
if val != None:
|
|
||||||
self.druid.get_widget(tag).set_text(val)
|
|
||||||
|
|
||||||
|
|
||||||
def destroy(self,obj):
|
def close(self,obj):
|
||||||
self.task(self.arg)
|
self.task(self.arg)
|
||||||
|
|
||||||
def on_finish(self,obj,b):
|
|
||||||
for tag in self.rlist:
|
|
||||||
val = self.druid.get_widget(tag).get_text()
|
|
||||||
self.client.set_string("/apps/gramps/researcher-%s" % tag,val)
|
|
||||||
|
|
||||||
if self.druid.get_widget("num_us").get_active():
|
def build_page1(self):
|
||||||
dateFormat = 0
|
p = gnome.ui.DruidPageEdge(0)
|
||||||
elif self.druid.get_widget("num_eu").get_active():
|
p.set_title(_('Getting Started'))
|
||||||
dateFormat = 1
|
p.set_title_color(self.fg_color)
|
||||||
else:
|
p.set_bg_color(self.bg_color)
|
||||||
dateFormat = 2
|
p.set_logo(self.logo)
|
||||||
self.client.set_int("/apps/gramps/dateEntry",dateFormat)
|
p.set_watermark(self.splash)
|
||||||
|
p.set_text(_('Welcome to GRAMPS, the Genealogical Research '
|
||||||
|
'and Analysis Management Programming System.\n'
|
||||||
|
'Several options and information need to be gathered '
|
||||||
|
'before GRAMPS is ready to be used. Any of this '
|
||||||
|
'information can be changed in the future in the '
|
||||||
|
'Preferences dialog under the Settings menu.'))
|
||||||
|
return p
|
||||||
|
|
||||||
showcal = self.druid.get_widget("altcal").get_active()
|
def build_page_last(self):
|
||||||
self.client.set_int("/apps/gramps/ShowCalendar",showcal)
|
p = gnome.ui.DruidPageEdge(1)
|
||||||
|
p.set_title(_('Complete'))
|
||||||
|
p.set_title_color(self.fg_color)
|
||||||
|
p.set_bg_color(self.bg_color)
|
||||||
|
p.set_logo(self.logo)
|
||||||
|
p.set_watermark(self.splash)
|
||||||
|
p.connect('finish',self.complete)
|
||||||
|
|
||||||
lds = self.druid.get_widget("enable_lds").get_active()
|
p.set_text(_('GRAMPS is an Open Source project. Its success '
|
||||||
self.client.set_int("/apps/gramps/UseLDS",lds)
|
'depends on the users. User feedback is important. '
|
||||||
|
'Please join the mailing lists, submit bug reports, '
|
||||||
|
'suggest improvements, and see how you can '
|
||||||
|
'contribute.\n\nPlease enjoy using GRAMPS.'))
|
||||||
|
return p
|
||||||
|
|
||||||
|
def complete(self,obj,obj2):
|
||||||
|
self.client.set_string('/apps/gramps/researcher-name',self.name.get_text())
|
||||||
|
self.client.set_string('/apps/gramps/researcher-addr',self.addr.get_text())
|
||||||
|
self.client.set_string('/apps/gramps/researcher-city',self.city.get_text())
|
||||||
|
self.client.set_string('/apps/gramps/researcher-state',self.state.get_text())
|
||||||
|
self.client.set_string('/apps/gramps/researcher-postal',self.postal.get_text())
|
||||||
|
self.client.set_string('/apps/gramps/researcher-country',self.country.get_text())
|
||||||
|
self.client.set_string('/apps/gramps/researcher-phone',self.phone.get_text())
|
||||||
|
self.client.set_string('/apps/gramps/researcher-email',self.email.get_text())
|
||||||
|
|
||||||
|
if self.date1.get_active():
|
||||||
|
self.client.set_int("/apps/gramps/dateEntry",0)
|
||||||
|
elif self.date2.get_active():
|
||||||
|
self.client.set_int("/apps/gramps/dateEntry",1)
|
||||||
|
elif self.date3.get_active():
|
||||||
|
self.client.set_int("/apps/gramps/dateEntry",2)
|
||||||
|
|
||||||
|
self.client.set_int("/apps/gramps/ShowCalendar",self.calendar.get_active())
|
||||||
|
self.client.set_int("/apps/gramps/UseLDS",self.lds.get_active())
|
||||||
self.client.set_int(_StartupEntry,const.startup)
|
self.client.set_int(_StartupEntry,const.startup)
|
||||||
Utils.destroy_passed_object(obj)
|
self.w.destroy()
|
||||||
|
self.task(self.arg)
|
||||||
|
|
||||||
|
def build_page2(self):
|
||||||
|
p = gnome.ui.DruidPageStandard()
|
||||||
|
p.set_title(_('Researcher Information'))
|
||||||
|
p.set_title_foreground(self.fg_color)
|
||||||
|
p.set_background(self.bg_color)
|
||||||
|
p.set_logo(self.logo)
|
||||||
|
|
||||||
|
box = gtk.VBox()
|
||||||
|
box.set_spacing(12)
|
||||||
|
p.append_item("",box,"")
|
||||||
|
|
||||||
|
label = gtk.Label(_('In order to create valid GEDCOM files, the following information '
|
||||||
|
'needs to be entered. If you do not plan to generated GEDCOM files, '
|
||||||
|
'you may leave this empty.'))
|
||||||
|
label.set_line_wrap(gtk.TRUE)
|
||||||
|
|
||||||
|
box.pack_start(label)
|
||||||
|
|
||||||
|
table = gtk.Table(8,4)
|
||||||
|
table.set_row_spacings(6)
|
||||||
|
table.set_col_spacings(6)
|
||||||
|
|
||||||
|
self.name = make_label(table,_('Name:'),0,0,1,1,4)
|
||||||
|
self.addr = make_label(table,_('Address:'),1,0,1,1,4)
|
||||||
|
self.city = make_label(table,_('City:'),2,0,1,1,2)
|
||||||
|
self.state = make_label(table,_('State/Province:'),2,2,3,3,4)
|
||||||
|
self.country = make_label(table,_('Country:'),3,0,1,1,2)
|
||||||
|
self.postal = make_label(table,_('ZIP/Postal code:'),3,2,3,3,4)
|
||||||
|
self.phone = make_label(table,_('Phone:'),4,0,1,1,4)
|
||||||
|
self.email = make_label(table,_('Email:'),5,0,1,1,4)
|
||||||
|
|
||||||
|
box.add(table)
|
||||||
|
box.show_all()
|
||||||
|
return p
|
||||||
|
|
||||||
def on_cancel_clicked(self,obj):
|
def build_page3(self):
|
||||||
self.client.set_int(_StartupEntry,const.startup)
|
p = gnome.ui.DruidPageStandard()
|
||||||
self.client.sync()
|
p.set_title(_('Numerical date formats'))
|
||||||
Utils.destroy_passed_object(obj)
|
p.set_title_foreground(self.fg_color)
|
||||||
|
p.set_background(self.bg_color)
|
||||||
|
p.set_logo(self.logo)
|
||||||
|
|
||||||
|
box = gtk.VBox()
|
||||||
|
box.set_spacing(12)
|
||||||
|
p.append_item("",box,"")
|
||||||
|
|
||||||
|
label = gtk.Label(_('There are three common formats for entering dates in a numerical\n'
|
||||||
|
'format. Without some type of indication, GRAMPS cannot correctly\n'
|
||||||
|
'tell what format you are using. Please indicate your preferred format\n'
|
||||||
|
'for entering numerical dates'))
|
||||||
|
box.add(label)
|
||||||
|
align = gtk.Alignment(0.5,0)
|
||||||
|
box.add(align)
|
||||||
|
vbox = gtk.VBox()
|
||||||
|
vbox.set_spacing(6)
|
||||||
|
align.add(vbox)
|
||||||
|
|
||||||
|
self.date1 = gtk.RadioButton(label=_("MM/DD/YYYY (United States)"))
|
||||||
|
self.date2 = gtk.RadioButton(label=_("DD/MM/YYYY (European)"),group=self.date1)
|
||||||
|
self.date3 = gtk.RadioButton(label=_("YYYY-MM-DD (ISO)"),group=self.date1)
|
||||||
|
|
||||||
|
vbox.add(self.date1)
|
||||||
|
vbox.add(self.date2)
|
||||||
|
vbox.add(self.date3)
|
||||||
|
|
||||||
|
box.show_all()
|
||||||
|
return p
|
||||||
|
|
||||||
|
def build_page4(self):
|
||||||
|
p = gnome.ui.DruidPageStandard()
|
||||||
|
p.set_title(_('Alternate calendar support'))
|
||||||
|
p.set_title_foreground(self.fg_color)
|
||||||
|
p.set_background(self.bg_color)
|
||||||
|
p.set_logo(self.logo)
|
||||||
|
|
||||||
|
box = gtk.VBox()
|
||||||
|
box.set_spacing(12)
|
||||||
|
p.append_item("",box,"")
|
||||||
|
|
||||||
|
label = gtk.Label(_('By default, all dates stored by GRAMPS use the Gregorian calendar.\n'
|
||||||
|
'This is normally sufficient for most users. Support may be enabled\n'
|
||||||
|
'for the Julian, French Republican, and Hebrew calendar. If you believe\n'
|
||||||
|
'that you will need one or more of these alternate calendars, enable\n'
|
||||||
|
'alternate calendar support\n'))
|
||||||
|
box.add(label)
|
||||||
|
align = gtk.Alignment(0.5,0)
|
||||||
|
box.add(align)
|
||||||
|
vbox = gtk.VBox()
|
||||||
|
vbox.set_spacing(6)
|
||||||
|
|
||||||
|
self.calendar = gtk.CheckButton(label=_("Enable support for alternate calendars"))
|
||||||
|
align.add(self.calendar)
|
||||||
|
|
||||||
|
box.show_all()
|
||||||
|
return p
|
||||||
|
|
||||||
|
def build_page5(self):
|
||||||
|
p = gnome.ui.DruidPageStandard()
|
||||||
|
p.set_title(_('LDS extensions'))
|
||||||
|
p.set_title_foreground(self.fg_color)
|
||||||
|
p.set_background(self.bg_color)
|
||||||
|
p.set_logo(self.logo)
|
||||||
|
|
||||||
|
box = gtk.VBox()
|
||||||
|
box.set_spacing(12)
|
||||||
|
p.append_item("",box,"")
|
||||||
|
|
||||||
|
label = gtk.Label(_('GRAMPS has support for LDS Ordinances, which are special event types\n'
|
||||||
|
'related to the Church of Jesus Christ of Latter Day Saints.\n\n'
|
||||||
|
'You may choose to either enable or disable this support. You may\n'
|
||||||
|
'change this option in the future in the Preferences dialog.'))
|
||||||
|
|
||||||
|
box.add(label)
|
||||||
|
align = gtk.Alignment(0.5,0)
|
||||||
|
box.add(align)
|
||||||
|
vbox = gtk.VBox()
|
||||||
|
vbox.set_spacing(6)
|
||||||
|
|
||||||
|
self.lds = gtk.CheckButton(label=_("Enable LDS ordinance support"))
|
||||||
|
align.add(self.lds)
|
||||||
|
|
||||||
|
box.show_all()
|
||||||
|
return p
|
||||||
|
|
||||||
|
def make_label(table,val,y,x1,x2,x3,x4):
|
||||||
|
label = gtk.Label(val)
|
||||||
|
label.set_alignment(0,0.5)
|
||||||
|
text = gtk.Entry()
|
||||||
|
table.attach(label,x1,x2,y,y+1,gtk.SHRINK|gtk.FILL)
|
||||||
|
table.attach(text,x3,x4,y,y+1,gtk.EXPAND|gtk.FILL)
|
||||||
|
return text
|
||||||
|
@ -95,7 +95,7 @@ gtkrcFile = "%s/gtkrc" % rootDir
|
|||||||
template_dir = "%s/templates" % dataDir
|
template_dir = "%s/templates" % dataDir
|
||||||
fdl = "%s/fdl.txt" % dataDir
|
fdl = "%s/fdl.txt" % dataDir
|
||||||
|
|
||||||
startup = 1
|
startup = 2
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -677,7 +677,8 @@ class Gramps:
|
|||||||
def tool_callback(self,val):
|
def tool_callback(self,val):
|
||||||
if val:
|
if val:
|
||||||
Utils.modified()
|
Utils.modified()
|
||||||
self.complete_rebuild()
|
self.clear_person_tabs()
|
||||||
|
self.full_update()
|
||||||
|
|
||||||
def full_update(self):
|
def full_update(self):
|
||||||
"""Brute force display update, updating all the pages"""
|
"""Brute force display update, updating all the pages"""
|
||||||
|
Loading…
Reference in New Issue
Block a user