gramps/gramps2/src/GrampsCfg.py

303 lines
11 KiB
Python
Raw Normal View History

2002-10-20 19:55:16 +05:30
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2005 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
#
# $Id$
2002-10-20 19:55:16 +05:30
#-------------------------------------------------------------------------
#
# Standard python modules
#
#-------------------------------------------------------------------------
2005-12-06 12:08:09 +05:30
import sets
from gettext import gettext as _
2002-10-20 19:55:16 +05:30
#-------------------------------------------------------------------------
#
# GTK/Gnome modules
#
#-------------------------------------------------------------------------
import gtk
2002-10-20 19:55:16 +05:30
import gtk.glade
#-------------------------------------------------------------------------
#
# gramps modules
#
#-------------------------------------------------------------------------
2006-03-03 05:40:52 +05:30
import Config
import DateHandler
2005-12-06 12:08:09 +05:30
import GrampsDisplay
2006-04-26 07:14:03 +05:30
import ManagedWindow
from GrampsWidgets import *
2002-10-20 19:55:16 +05:30
* 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
#-------------------------------------------------------------------------
#
# Constants
#
#-------------------------------------------------------------------------
2002-10-20 19:55:16 +05:30
_surname_styles = [
_("Father's surname"),
_("None"),
_("Combination of mother's and father's surname"),
_("Icelandic style"),
]
_pallette = "#fce94f:#edd400:#c4a000:#facf3e:#f57900:#ce5c00:#e9b96e:#c17d11:#8f5902:#8ae234:#73d216:#4e9a06:#729fcf:#3465a4:#204a87:#ad7fa8:#7ff07b:#5c3566:#ef2929:#cc0000:#a40000"
* 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
def set_calendar_date_format():
format_list = DateHandler.get_date_formats()
2006-03-03 05:40:52 +05:30
DateHandler.set_format(Config.get_date_format(format_list))
2002-10-20 19:55:16 +05:30
def get_researcher():
2006-04-26 07:14:03 +05:30
import RelLib
2006-04-25 02:34:01 +05:30
n = Config.get(Config.RESEARCHER_NAME)
a = Config.get(Config.RESEARCHER_ADDR)
c = Config.get(Config.RESEARCHER_CITY)
s = Config.get(Config.RESEARCHER_STATE)
ct = Config.get(Config.RESEARCHER_COUNTRY)
p = Config.get(Config.RESEARCHER_POSTAL)
ph = Config.get(Config.RESEARCHER_PHONE)
e = Config.get(Config.RESEARCHER_EMAIL)
2002-10-20 19:55:16 +05:30
owner = RelLib.Researcher()
2002-10-20 19:55:16 +05:30
owner.set(n,a,c,s,ct,p,ph,e)
return owner
2006-04-26 07:14:03 +05:30
2002-10-20 19:55:16 +05:30
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
2006-04-26 07:14:03 +05:30
class GrampsPreferences(ManagedWindow.ManagedWindow):
def __init__(self, uistate):
ManagedWindow.ManagedWindow.__init__(self, uistate, [], GrampsPreferences)
tlabel = gtk.Label()
self.set_window(gtk.Dialog(_('Preferences'),
flags=gtk.DIALOG_NO_SEPARATOR,
buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)),
tlabel, _('Preferences'), None)
panel = gtk.Notebook()
self.window.vbox.pack_start(tlabel, padding=12)
self.window.vbox.add(panel)
self.window.connect('response',self.done)
panel.append_page(self.add_behavior_panel(),
MarkupLabel("<b>%s</b>" % _('General')))
panel.append_page(self.add_formats_panel(),
MarkupLabel("<b>%s</b>" % _('Display')))
2006-04-26 07:14:03 +05:30
panel.append_page(self.add_prefix_panel(),
MarkupLabel("<b>%s</b>" % _('ID Formats')))
2006-04-26 07:14:03 +05:30
panel.append_page(self.add_advanced_panel(),
MarkupLabel("<b>%s</b>" % _('Warnings')))
panel.append_page(self.add_researcher_panel(),
MarkupLabel("<b>%s</b>" % _('Researcher')))
panel.append_page(self.add_color_panel(),
MarkupLabel("<b>%s</b>" % _('Marker Colors')))
2006-04-26 07:14:03 +05:30
self.window.show_all()
self.show()
def done(self, obj, value):
self.close()
def add_researcher_panel(self):
table = gtk.Table(3,8)
table.set_border_width(12)
table.set_col_spacings(6)
table.set_row_spacings(6)
self.add_entry(table, _('Name'), 0, Config.RESEARCHER_NAME)
self.add_entry(table, _('Address'), 1, Config.RESEARCHER_ADDR)
self.add_entry(table, _('City'), 2, Config.RESEARCHER_CITY)
self.add_entry(table, _('State/Province'), 3, Config.RESEARCHER_STATE)
self.add_entry(table, _('Country'), 4, Config.RESEARCHER_COUNTRY)
self.add_entry(table, _('ZIP/Postal Code'), 5, Config.RESEARCHER_POSTAL)
self.add_entry(table, _('Phone'), 6, Config.RESEARCHER_PHONE)
self.add_entry(table, _('Email'), 7, Config.RESEARCHER_EMAIL)
return table
def add_prefix_panel(self):
table = gtk.Table(3,8)
table.set_border_width(12)
table.set_col_spacings(6)
table.set_row_spacings(6)
self.add_entry(table, _('Person'), 0, Config.IPREFIX)
self.add_entry(table, _('Family'), 1, Config.FPREFIX)
self.add_entry(table, _('Place'), 2, Config.PPREFIX)
self.add_entry(table, _('Source'), 3, Config.SPREFIX)
self.add_entry(table, _('Media Object'), 4, Config.OPREFIX)
self.add_entry(table, _('Event'), 5, Config.EPREFIX)
self.add_entry(table, _('Repository'), 6, Config.RPREFIX)
return table
def add_advanced_panel(self):
table = gtk.Table(3,8)
table.set_border_width(12)
table.set_col_spacings(6)
table.set_row_spacings(6)
self.add_checkbox(
table, _('Warn when adding parents to a child'),
0, Config.FAMILY_WARN)
2006-03-06 05:09:20 +05:30
self.add_checkbox(
table, _('Suppress warning when cancelling with changed data'),
1, Config.DONT_ASK)
2002-10-20 19:55:16 +05:30
self.add_checkbox(
table, _('Show plugin status dialog on plugin load error'),
2, Config.POP_PLUGIN_STATUS)
2005-12-06 12:08:09 +05:30
2006-04-26 07:14:03 +05:30
return table
def add_color_panel(self):
table = gtk.Table(3,8)
table.set_border_width(12)
table.set_col_spacings(12)
table.set_row_spacings(6)
self.add_color(table, _("Complete"), 0, Config.COMPLETE_COLOR)
self.add_color(table, _("ToDo"), 1, Config.TODO_COLOR)
self.add_color(table, _("Custom"), 2, Config.CUSTOM_MARKER_COLOR)
return table
2006-04-26 07:14:03 +05:30
def add_formats_panel(self):
table = gtk.Table(3,8)
table.set_border_width(12)
table.set_col_spacings(6)
table.set_row_spacings(6)
obox = gtk.combo_box_new_text()
formats = DateHandler.get_date_formats()
for item in formats:
obox.append_text(item)
active = Config.get(Config.DATE_FORMAT)
if active >= len(formats):
active = 0
obox.set_active(active)
obox.connect('changed',
lambda obj: Config.set(Config.DATE_FORMAT, obj.get_active()))
lwidget = BasicLabel("%s: " % _('Date format'))
table.attach(lwidget, 0, 1, 0, 1, yoptions=0)
table.attach(obox, 1, 3, 0, 1, yoptions=0)
obox = gtk.combo_box_new_text()
formats = _surname_styles
for item in formats:
obox.append_text(item)
obox.set_active(Config.get(Config.SURNAME_GUESSING))
obox.connect('changed',
lambda obj: Config.set(Config.SURNAME_GUESSING, obj.get_active()))
lwidget = BasicLabel("%s: " % _('Surname Guessing'))
table.attach(lwidget, 0, 1, 1, 2, yoptions=0)
table.attach(obox, 1, 3, 1, 2, yoptions=0)
obox = gtk.combo_box_new_text()
formats = [_("Active person's name and ID"),
_("Relationship to home person")]
2005-12-06 12:08:09 +05:30
2006-04-26 07:14:03 +05:30
for item in formats:
obox.append_text(item)
active = Config.get(Config.STATUSBAR)
2006-05-04 03:51:59 +05:30
2006-04-26 07:14:03 +05:30
if active < 2:
obox.set_active(0)
else:
obox.set_active(1)
obox.connect('changed',
lambda obj: Config.set(Config.STATUSBAR, 2*obj.get_active()))
lwidget = BasicLabel("%s: " % _('Status bar'))
table.attach(lwidget, 0, 1, 2, 3, yoptions=0)
table.attach(obox, 1, 3, 2, 3, yoptions=0)
2006-05-04 03:51:59 +05:30
self.add_checkbox(table, _("Show text in sidebar buttons (takes effect on restart)"),
4, Config.SIDEBAR_TEXT)
2006-04-26 07:14:03 +05:30
return table
# status bar
def add_behavior_panel(self):
table = gtk.Table(3,8)
table.set_border_width(12)
table.set_col_spacings(6)
table.set_row_spacings(6)
self.add_checkbox(table, _('Automatically load last database'), 0, Config.AUTOLOAD)
self.add_checkbox(table, _('Enable spelling checker'), 1, Config.SPELLCHECK)
self.add_checkbox(table, _('Display Tip of the Day'), 2, Config.USE_TIPS)
return table
def add_checkbox(self, table, label, index, constant):
checkbox = gtk.CheckButton(label)
checkbox.set_active(Config.get(constant))
checkbox.connect('toggled',self.update_checkbox, constant)
table.attach(checkbox, 1, 3, index, index+1, yoptions=0)
2002-10-20 19:55:16 +05:30
2006-04-26 07:14:03 +05:30
def add_entry(self, table, label, index, constant):
lwidget = BasicLabel("%s: " % label)
entry = gtk.Entry()
entry.set_text(Config.get(constant))
entry.connect('changed', self.update_entry, constant)
table.attach(lwidget, 0, 1, index, index+1, yoptions=0,
xoptions=gtk.FILL)
table.attach(entry, 1, 2, index, index+1, yoptions=0)
2006-04-26 07:14:03 +05:30
def add_color(self, table, label, index, constant):
lwidget = BasicLabel("%s: " % label)
hexval = Config.get(constant)
color = gtk.gdk.color_parse(hexval)
entry = gtk.ColorButton(color=color)
color_hex_label = BasicLabel(hexval)
entry.connect('color-set',self.update_color,constant,color_hex_label)
table.attach(lwidget, 0, 1, index, index+1, yoptions=0,
xoptions=gtk.FILL)
table.attach(entry, 1, 2, index, index+1, yoptions=0, xoptions=0)
table.attach(color_hex_label, 2, 3, index, index+1, yoptions=0)
2006-04-26 07:14:03 +05:30
def update_entry(self, obj, constant):
Config.set(constant, unicode(obj.get_text()))
def update_color(self, obj, constant, color_hex_label):
color = obj.get_color()
hexval = "#%02x%02x%02x" % (color.red/256,
color.green/256,
color.blue/256)
color_hex_label.set_text(hexval)
Config.set(constant, hexval)
2006-04-26 07:14:03 +05:30
def update_checkbox(self, obj, constant):
Config.set(constant, obj.get_active())
def build_menu_names(self,obj):
return (_('Preferences'),None)
if __name__ == "__main__":
GrampsPreferences(None,None)
gtk.main()
2002-10-20 19:55:16 +05:30