gramps/gramps2/src/StartupDialog.py

256 lines
9.7 KiB
Python
Raw Normal View History

2002-10-20 19:55:16 +05:30
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2006 Donald N. Allingham
2002-10-20 19:55:16 +05:30
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
* src/data/gramps.schemas: Cleanup. * src/data/Makefile.am: Clen up install rule. Add uninstall rule. * src/StartupDialog.py: Correct use of keys. * src/GrampsCfg.py: Correct usage of gconf. * src/DbPrompter.py: Remove unused module. * src/SelectChild.py: Remove unused module. * src/SelectObject.py: Remove unused module. * src/WriteXML.py: Remove unused module. * src/gramps_main.py: Convert to new gconf usage. * src/FamilyView.py: Convert to new gconf usage. * src/AddSpouse.py: Convert to new gconf usage. * src/ChooseParents.py: Convert to new gconf usage. * src/EditPerson.py: Convert to new gconf usage. * src/EditPlace.py: Convert to new gconf usage. * src/EditSource.py: Convert to new gconf usage. * src/EventEdit.py: Convert to new gconf usage. * src/ImageSelect.py: Convert to new gconf usage. * src/Marriage.py: Convert to new gconf usage. * src/MediaView.py: Convert to new gconf usage. * src/MergeData.py: Convert to new gconf usage. * src/PedView.py: Convert to new gconf usage. * src/Plugins.py: Convert to new gconf usage. * src/RelLib.py: Convert to new gconf usage. * src/TipOfDay.py: Convert to new gconf usage. * src/plugins/AncestorChart2.py: Remove unused module. * src/plugins/AncestorChart.py: Remove unused module. * src/plugins/BookReport.py: Remove unused module. * src/plugins/FanChart.py: Remove unused module. * src/plugins/Partition.py: Remove unused module. * src/plugins/Desbrowser.py: Convert to new gconf usage. * src/plugins/Merge.py: Convert to new gconf usage. * src/plugins/RelCalc.py: Convert to new gconf usage. * src/plugins/WebPage.py: Convert to new gconf usage. svn: r3274
2004-07-15 08:24:04 +05:30
# $Id$
#-------------------------------------------------------------------------
#
# Standard python modules
#
#-------------------------------------------------------------------------
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# GTK+/GNOME modules
#
#-------------------------------------------------------------------------
import gtk
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
import Assistant
import const
2006-03-03 05:40:52 +05:30
import Config
from QuestionDialog import ErrorDialog
2002-10-20 19:55:16 +05:30
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
2002-10-20 19:55:16 +05:30
def need_to_run():
2006-04-25 02:34:01 +05:30
val = Config.get(Config.STARTUP)
2002-10-20 19:55:16 +05:30
if val < const.startup:
return True
return False
def upgrade_prefs():
"""
Get the preferences from the older keys, store them in the new keys.
On success, print message and return True.
On failure, print message and return False.
"""
try:
import gconf
client = gconf.client_get_default()
client.add_dir("/apps/gramps",gconf.CLIENT_PRELOAD_NONE)
2006-04-25 02:34:01 +05:30
Config.set(Config.FPREFIX,client.get_string('/apps/gramps/fprefix'))
Config.set(Config.SPREFIX,client.get_string('/apps/gramps/sprefix'))
Config.set(Config.PPREFIX,client.get_string('/apps/gramps/pprefix'))
Config.set(Config.OPREFIX,client.get_string('/apps/gramps/oprefix'))
Config.set(Config.IPREFIX,client.get_string('/apps/gramps/iprefix'))
2006-04-25 02:34:01 +05:30
Config.set(Config.RESEARCHER_COUNTRY,
client.get_string('/apps/gramps/researcher-country'))
Config.set(Config.RESEARCHER_EMAIL,
client.get_string('/apps/gramps/researcher-email'))
Config.set(Config.RESEARCHER_PHONE,
client.get_string('/apps/gramps/researcher-phone'))
Config.set(Config.RESEARCHER_CITY,
client.get_string('/apps/gramps/researcher-city'))
Config.set(Config.RESEARCHER_POSTAL,
client.get_string('/apps/gramps/researcher-postal'))
Config.set(Config.RESEARCHER_ADDR,
client.get_string('/apps/gramps/researcher-addr'))
Config.set(Config.RESEARCHER_STATE,
client.get_string('/apps/gramps/researcher-state'))
Config.set(Config.RESEARCHER_NAME,
client.get_string('/apps/gramps/researcher-name'))
2006-04-25 02:34:01 +05:30
Config.set(Config.AUTOLOAD,
client.get_bool('/apps/gramps/autoload'))
Config.set(Config.STATUSBAR,
client.get_int('/apps/gramps/statusbar'))
Config.set(Config.VIEW,
not client.get_bool('/apps/gramps/view'))
Config.set(Config.SIZE_CHECKED,
client.get_bool('/apps/gramps/screen-size-checked'))
Config.set(Config.SURNAME_GUESSING,
client.get_int('/apps/gramps/surname-guessing'))
toolbar = client.get_int('/apps/gramps/toolbar')
if toolbar == 5:
toolbar = -1
2006-04-25 02:34:01 +05:30
Config.set(Config.TOOLBAR_ON,
client.get_bool('/apps/gramps/toolbar-on'))
return True
except:
return False
2002-10-20 19:55:16 +05:30
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
2002-10-20 19:55:16 +05:30
class StartupDialog:
2003-05-17 09:44:13 +05:30
def __init__(self,task,args):
2002-10-20 19:55:16 +05:30
self.task = task
2003-05-17 09:44:13 +05:30
self.args = args
2002-10-20 19:55:16 +05:30
if not const.no_gconf and upgrade_prefs():
2006-04-25 02:34:01 +05:30
Config.set(Config.STARTUP,const.startup)
self.close()
return
self.w = Assistant.Assistant(None, self.complete)
self.w.add_text_page(
_('Getting started'),
_('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.'))
try:
self.w.add_page(_('Researcher information'),self.build_page2())
2006-04-25 02:34:01 +05:30
except IndexError:
ErrorDialog(_("Configuration error"),
_("\n\nPossibly the installation of GRAMPS was incomplete."
" Make sure the GConf schema of GRAMPS is properly installed."))
gtk.main_quit()
return
self.w.add_text_page(
_('Complete'),
_('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.'))
2002-10-20 19:55:16 +05:30
self.w.show()
2002-10-20 19:55:16 +05:30
def close(self):
2003-05-17 09:44:13 +05:30
self.task(self.args)
2002-10-20 19:55:16 +05:30
def complete(self):
2006-04-25 02:34:01 +05:30
Config.set(Config.RESEARCHER_NAME,
unicode(self.name.get_text()))
Config.set(Config.RESEARCHER_ADDR,
unicode(self.addr.get_text()))
Config.set(Config.RESEARCHER_CITY,
unicode(self.city.get_text()))
Config.set(Config.RESEARCHER_STATE,
unicode(self.state.get_text()))
Config.set(Config.RESEARCHER_POSTAL,
unicode(self.postal.get_text()))
Config.set(Config.RESEARCHER_COUNTRY,
unicode(self.country.get_text()))
Config.set(Config.RESEARCHER_PHONE,
unicode(self.phone.get_text()))
Config.set(Config.RESEARCHER_EMAIL,
unicode(self.email.get_text()))
2006-04-25 02:34:01 +05:30
Config.set(Config.STARTUP,
const.startup)
self.w.destroy()
2006-03-03 05:40:52 +05:30
Config.sync()
2003-05-17 09:44:13 +05:30
self.task(self.args)
def build_page2(self):
box = gtk.VBox()
box.set_spacing(12)
label = gtk.Label(
_('The following information is needed if you want to export '
'your data to a GEDCOM file. A GEDCOM file can be imported '
'into nearly all genealogy programs. A valid GEDCOM file '
'needs this information, but most programs do not require '
'it. You may leave this empty if you want.'))
label.set_line_wrap(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()
2003-05-13 08:32:58 +05:30
2006-04-25 02:34:01 +05:30
name = Config.get(Config.RESEARCHER_NAME)
if not name or name.strip() == "":
try:
import pwd
import os
name = pwd.getpwnam(os.environ['USER'])[4]
except:
name = ""
self.name.set_text(name.replace(',,,',''))
2003-05-13 08:32:58 +05:30
try:
2006-04-25 02:34:01 +05:30
self.addr.set_text(Config.get(Config.RESEARCHER_ADDR))
self.city.set_text(Config.get(Config.RESEARCHER_CITY))
self.state.set_text(Config.get(Config.RESEARCHER_STATE))
self.postal.set_text(Config.get(Config.RESEARCHER_POSTAL))
self.country.set_text(Config.get(Config.RESEARCHER_COUNTRY))
self.phone.set_text(Config.get(Config.RESEARCHER_PHONE))
self.email.set_text(Config.get(Config.RESEARCHER_EMAIL))
except:
ErrorDialog(_("Configuration/Installation error"),
_("The gconf schemas were not found. First, try "
"executing 'pkill gconfd' and try starting gramps "
"again. If this does not help then the schemas "
"were not properly installed. If you have not "
"done 'make install' or if you installed without "
"being a root, this is most likely a cause of the "
"problem. Please read the INSTALL file in the "
"top-level source directory."))
gtk.main_quit()
return box
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