Fixed marriage problem and startup dialog

svn: r1515
This commit is contained in:
Don Allingham 2003-05-12 19:39:49 +00:00
parent 6e4c5462d5
commit bb26dd5aa7
8 changed files with 219 additions and 46 deletions

View File

@ -1,2 +1,3 @@
Don Allingham
Don Peterson
Alex Roitman

View File

@ -181,6 +181,7 @@ class GrampsParser:
"url" : (self.start_url, None)
}
def parse(self,file):
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = self.startElement
@ -194,6 +195,8 @@ class GrampsParser:
if self.db.personMap.has_key(id) and self.db.getDefaultPerson() == None:
person = self.db.personMap[id]
self.db.setDefaultPerson(person)
for key in self.func_map.keys():
del self.func_map[key]
def start_lds_ord(self,attrs):
type = attrs['type']

View File

@ -1,7 +1,7 @@
#
# 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
# 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.on_select_row,
self.on_update_clicked)
self.on_event_update_clicked)
self.atree = ListModel.ListModel(self.attr_list, atitles,
self.on_attr_list_select_row,
self.on_update_attr_clicked)

View File

@ -87,10 +87,10 @@ class DispBox:
self.group.set_data('p',person)
def cleanup(self):
self.shadow.destroy()
self.bkgnd.destroy()
self.textbox.destroy()
self.group.destroy()
self.shadow.destroy()
self.bkgnd.destroy()
self.textbox.destroy()
self.group.destroy()
def group_event(self,obj,event):
"""Handle events over a drawn box. Doubleclick would edit,

View File

@ -113,6 +113,7 @@ def importData(database, filename, callback):
return 0
xml_file.close()
del parser
# Rename media files if they were conflicting with existing ones
ObjectMap = database.getObjectMap()
@ -218,6 +219,7 @@ def loadData(database, filename, callback=None):
return 0
xml_file.close()
del parser
return 1
#-------------------------------------------------------------------------

View File

@ -20,13 +20,16 @@
import const
import gtk.glade
import gnome
import gnome.ui
import gconf
import Utils
from intl import gettext as _
_StartupEntry = "/apps/gramps/startup"
def need_to_run():
return 0
client = gconf.client_get_default()
client.add_dir("/apps/gramps",gconf.CLIENT_PRELOAD_NONE)
val = client.get_int(_StartupEntry)
@ -36,55 +39,218 @@ def need_to_run():
return 1
return 0
class StartupDialog:
def __init__(self,task,arg):
self.task = task
self.arg = arg
self.druid = gtk.glade.XML(const.configFile,"initDruid")
self.druid.signal_autoconnect({
"on_cancel_clicked" : self.on_cancel_clicked,
"destroy_event": self.destroy,
"on_finish" : self.on_finish
})
self.w = gtk.Window()
self.fg_color = gtk.gdk.color_parse('#7d684a')
self.bg_color = gtk.gdk.color_parse('#e1dbc5')
self.logo = gtk.gdk.pixbuf_new_from_file("/home/dona/Projects/gramps2/src/gramps.png")
self.splash = gtk.gdk.pixbuf_new_from_file("/home/dona/Projects/gramps2/src/splash.jpg")
d = gnome.ui.Druid()
self.w.add(d)
d.add(self.build_page1())
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())
self.rlist = ['name','addr','city','state','country',
'postal', 'phone', 'email']
d.connect('cancel',self.close)
self.w.connect("destroy_event", self.close)
self.client = gconf.client_get_default()
for tag in self.rlist:
val = self.client.get_string("/apps/gramps/researcher-%s" % tag)
if val != None:
self.druid.get_widget(tag).set_text(val)
self.w.show_all()
def destroy(self,obj):
def close(self,obj):
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)
def build_page1(self):
p = gnome.ui.DruidPageEdge(0)
p.set_title(_('Getting Started'))
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.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
if self.druid.get_widget("num_us").get_active():
dateFormat = 0
elif self.druid.get_widget("num_eu").get_active():
dateFormat = 1
else:
dateFormat = 2
self.client.set_int("/apps/gramps/dateEntry",dateFormat)
def build_page_last(self):
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)
showcal = self.druid.get_widget("altcal").get_active()
self.client.set_int("/apps/gramps/ShowCalendar",showcal)
p.set_text(_('GRAMPS is an Open Source project. Its success '
'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
lds = self.druid.get_widget("enable_lds").get_active()
self.client.set_int("/apps/gramps/UseLDS",lds)
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)
Utils.destroy_passed_object(obj)
self.w.destroy()
self.task(self.arg)
def on_cancel_clicked(self,obj):
self.client.set_int(_StartupEntry,const.startup)
self.client.sync()
Utils.destroy_passed_object(obj)
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 build_page3(self):
p = gnome.ui.DruidPageStandard()
p.set_title(_('Numerical date formats'))
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

View File

@ -95,7 +95,7 @@ gtkrcFile = "%s/gtkrc" % rootDir
template_dir = "%s/templates" % dataDir
fdl = "%s/fdl.txt" % dataDir
startup = 1
startup = 2
#-------------------------------------------------------------------------
#

View File

@ -677,7 +677,8 @@ class Gramps:
def tool_callback(self,val):
if val:
Utils.modified()
self.complete_rebuild()
self.clear_person_tabs()
self.full_update()
def full_update(self):
"""Brute force display update, updating all the pages"""