Files
gramps/src/Config.py
Don Allingham 9f0fbe16ad Preparation for 0.7.1
svn: r721
2002-01-24 15:06:00 +00:00

1166 lines
39 KiB
Python

#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000 Donald N. Allingham
#
# 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
#
#-------------------------------------------------------------------------
#
# Standard python modules
#
#-------------------------------------------------------------------------
import string
import os
import PaperMenu
#-------------------------------------------------------------------------
#
# GTK/Gnome modules
#
#-------------------------------------------------------------------------
import GTK
import gtk
import gnome.ui
import libglade
from gnome.config import get_string, get_bool, get_int, set_string, sync, set_bool, set_int
#-------------------------------------------------------------------------
#
# gramps modules
#
#-------------------------------------------------------------------------
from RelLib import *
from Date import *
import const
import utils
import ListColors
from intl import gettext
_ = gettext
_surname_styles = [
_("Father's surname"),
_("None"),
_("Combination of mother's and father's surname"),
_("Icelandic style"),
]
_date_format_list = [
_("Month Day, Year"),
_("MON Day, Year"),
_("Day MON Year"),
_("MM/DD/YYYY"),
_("MM-DD-YYYY"),
_("DD/MM/YYYY"),
_("DD-MM-YYYY"),
_("MM.DD.YYYY"),
_("DD.MM.YYYY"),
_("DD. Month Year"),
_("YYYY/MM/DD"),
_("YYYY-MM-DD"),
_("YYYY.MM.DD"),
]
_date_entry_list = [
_("MM/DD/YYYY, MM.DD.YYYY, or MM-DD-YYYY"),
_("DD/MM/YYYY, DD.MM.YYYY, or DD-MM-YYYY"),
_("YYYY/MM/DD, YYYY.MM.DD, or YYYY-MM-DD"),
]
_name_format_list = [
(_("Firstname Surname"), utils.normal_name),
(_("Surname, Firstname"), utils.phonebook_name),
]
panellist = [
(_("Database"),
[( _("General"), 1),
( _("Dates and Calendars"), 7),
( _("Media Objects"), 10),
( _("GRAMPS internal IDs"), 11),
( _("Revision Control"),2)]),
(_("Display"),
[( _("General"), 5),
( _("Tool and Status Bars"), 4),
( _("List Colors"), 6)]),
(_("Usage"),
[( _("Find"), 3),
( _("Report Preferences"), 9),
( _("Researcher Information"), 8),
( _("Data Guessing"), 12)]),
]
#-------------------------------------------------------------------------
#
# Visible globals
#
#-------------------------------------------------------------------------
owner = Researcher()
prefsTop = None
iprefix = "I"
oprefix = "O"
sprefix = "S"
pprefix = "P"
fprefix = "F"
autoload = 0
autosave_int = 0
usetabs = 0
uselds = 0
autocomp = 1
usevc = 0
vc_comment = 0
uncompress = 0
show_detail = 0
hide_altnames = 0
lastfile = None
nameof = utils.normal_name
display_attr = 0
attr_name = ""
status_bar = 0
toolbar = 2
calendar = 0
paper_preference = None
output_preference = None
lastnamegen = None
report_dir = "./"
web_dir = "./"
db_dir = "./"
id_visible = 0
id_edit = 0
index_visible = 0
mediaref = 1
globalprop = 1
localprop = 1
#-------------------------------------------------------------------------
#
# Globals
#
#-------------------------------------------------------------------------
_name_format = 0
_callback = None
_druid = None
#-------------------------------------------------------------------------
#
# Constants
#
#-------------------------------------------------------------------------
ODDFGCOLOR = "oddfg"
ODDBGCOLOR = "oddbg"
EVENFGCOLOR = "evenfg"
EVENBGCOLOR = "evenbg"
ANCESTORFGCOLOR = "ancestorfg"
INDEX = "i"
OBJECT = "o"
DATA = "d"
#-------------------------------------------------------------------------
#
# make_path -
# Creates a directory if it does not already exist. Assumes that the
# parent directory already exits
#
#-------------------------------------------------------------------------
def make_path(path):
if not os.path.isdir(path):
os.mkdir(path)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def loadConfig(call):
global autoload
global autosave_int
global owner
global usetabs
global uselds
global autocomp
global calendar
global usevc
global iprefix, fprefix, pprefix, oprefix, sprefix
global vc_comment
global uncompress
global id_visible
global id_edit
global index_visible
global show_detail
global hide_altnames
global lastfile
global nameof
global display_attr
global attr_name
global _druid
global _name_format
global _callback
global paper_preference
global output_preference
global lastnamegen
global report_dir
global web_dir
global db_dir
global status_bar
global toolbar
global mediaref
global globalprop
global localprop
_callback = call
lastfile = get_string("/gramps/data/LastFile")
usetabs = get_bool("/gramps/config/UseTabs")
uselds = get_bool("/gramps/config/UseLDS")
ac = get_bool("/gramps/config/DisableAutoComplete")
mediaref = get_bool("/gramps/config/MakeReference")
globalprop = get_bool("/gramps/config/DisplayGlobal")
localprop = get_bool("/gramps/config/DisplayLocal")
calendar = get_bool("/gramps/config/ShowCalendar")
usevc = get_bool("/gramps/config/UseVersionControl")
vc_comment = get_bool("/gramps/config/UseComment")
uncompress = get_bool("/gramps/config/DontCompressXML")
id_visible = get_bool("/gramps/config/IdVisible")
id_edit = get_bool("/gramps/config/IdEdit")
index_visible = get_bool("/gramps/config/IndexVisible")
show_detail = get_bool("/gramps/config/ShowDetail")
status_bar = get_int("/gramps/config/StatusBar")
t = get_int("/gramps/config/ToolBar")
if t == 0:
toolbar = 2
else:
toolbar = t-1
display_attr = get_bool("/gramps/config/DisplayAttr")
attr_name = get_string("/gramps/config/DisplayAttrName")
hide_altnames = get_bool("/gramps/config/DisplayAltNames")
autoload = get_bool("/gramps/config/autoLoad")
autosave_int = get_int("/gramps/config/autoSaveInterval")
dateFormat = get_int("/gramps/config/dateFormat")
dateEntry = get_int("/gramps/config/dateEntry")
paper_preference = get_string("/gramps/config/paperPreference")
output_preference = get_string("/gramps/config/outputPreference")
lastnamegen = get_int("/gramps/config/surnameGuessing")
_name_format = get_int("/gramps/config/nameFormat")
iprefix = get_string("/gramps/config/iprefix")
fprefix = get_string("/gramps/config/fprefix")
sprefix = get_string("/gramps/config/sprefix")
oprefix = get_string("/gramps/config/oprefix")
pprefix = get_string("/gramps/config/pprefix")
report_dir = get_string("/gramps/config/ReportDirectory")
web_dir = get_string("/gramps/config/WebsiteDirectory")
db_dir = get_string("/gramps/config/DbDirectory")
if report_dir == None:
report_dir = "./"
else:
report_dir = os.path.normpath(report_dir) + os.sep
if web_dir == None:
web_dir = "./"
else:
web_dir = os.path.normpath(web_dir) + os.sep
if db_dir == None:
db_dir = "./"
else:
db_dir = os.path.normpath(db_dir) + os.sep
name = get_string("/gramps/researcher/name")
addr = get_string("/gramps/researcher/addr")
city = get_string("/gramps/researcher/city")
state = get_string("/gramps/researcher/state")
country = get_string("/gramps/researcher/country")
postal = get_string("/gramps/researcher/postal")
phone = get_string("/gramps/researcher/phone")
email = get_string("/gramps/researcher/email")
en = get_bool("/gramps/color/enableColors")
if en == None:
en = 0
ListColors.set_enable(en)
ListColors.oddfg = get_config_color(ODDFGCOLOR,(0,0,0))
ListColors.oddbg = get_config_color(ODDBGCOLOR,(0xffff,0xffff,0xffff))
ListColors.evenfg = get_config_color(EVENFGCOLOR,(0,0,0))
ListColors.evenbg = get_config_color(EVENBGCOLOR,(0xffff,0xffff,0xffff))
ListColors.ancestorfg = get_config_color(ANCESTORFGCOLOR,(0,0,0))
if paper_preference == None:
paper_preference = "Letter"
if output_preference == None:
output_preference = "OpenOffice"
if iprefix == None:
iprefix = "I"
if fprefix == None:
fprefix = "F"
if sprefix == None:
sprefix = "S"
if pprefix == None:
pprefix = "P"
if oprefix == None:
oprefix = "O"
if display_attr == None:
display_attr = 0
if attr_name == None:
attr_name = ""
if autoload == None:
autoload = 1
if autosave_int == None:
autosave_int = 0
if mediaref == None:
mediaref = 1
if globalprop == None:
globalprop = 1
if localprop == None:
localprop =1
if usetabs == None:
usetabs = 0
if uselds == None:
uselds = 0
if ac == None:
autocomp = 1
else:
autocomp = not ac
if calendar == None:
calendar = 0
if usevc == None:
usevc = 0
if vc_comment == None:
vc_comment = 0
if uncompress == None:
uncompress = 0
if id_visible == None:
id_visible = 0
if id_edit == None:
id_edit = 0
if index_visible == None:
index_visible = 0
if show_detail == None:
show_detail = 0
if status_bar == None:
status_bar = 0
if toolbar == None:
toolbar = 2
if hide_altnames == None:
hide_altnames = 0
if dateFormat == None:
dateFormat = 0
if dateEntry == None:
dateEntry = 0
set_format_code(dateFormat)
Date.entryCode = dateEntry
if lastnamegen == None or lastnamegen == 0:
lastnamegen = 0
if _name_format == None or _name_format == 0:
_name_format = 0
nameof = utils.normal_name
else:
nameof = utils.phonebook_name
if name == None:
_druid = libglade.GladeXML(const.configFile,"initDruid")
_druid.signal_autoconnect({
"destroy_passed_object" : druid_cancel_clicked,
"on_initDruid_finish" : on_initDruid_finish
})
else:
owner.set(name,addr,city,state,country,postal,phone,email)
make_path(os.path.expanduser("~/.gramps"))
make_path(os.path.expanduser("~/.gramps/filters"))
make_path(os.path.expanduser("~/.gramps/plugins"))
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def save_last_file(file):
set_string("/gramps/data/LastFile",file)
sync()
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def on_initDruid_finish(obj,b):
global owner
name = _druid.get_widget("dresname").get_text()
addr = _druid.get_widget("dresaddr").get_text()
city = _druid.get_widget("drescity").get_text()
state = _druid.get_widget("dresstate").get_text()
country = _druid.get_widget("drescountry").get_text()
postal = _druid.get_widget("drespostal").get_text()
phone = _druid.get_widget("dresphone").get_text()
email = _druid.get_widget("dresemail").get_text()
owner.set(name,addr,city,state,country,postal,phone,email)
store_researcher(owner)
utils.destroy_passed_object(obj)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def store_researcher(res):
set_string("/gramps/researcher/name",res.name)
set_string("/gramps/researcher/addr",res.addr)
set_string("/gramps/researcher/city",res.city)
set_string("/gramps/researcher/state",res.state)
set_string("/gramps/researcher/country",res.country)
set_string("/gramps/researcher/postal",res.postal)
set_string("/gramps/researcher/phone",res.phone)
set_string("/gramps/researcher/email",res.email)
sync()
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def save_config_color(name,color):
set_int("/gramps/color/" + name + ".r",color[0])
set_int("/gramps/color/" + name + ".g",color[1])
set_int("/gramps/color/" + name + ".b",color[2])
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def get_config_text(panel,key):
val = get_string("/gramps/%s/%s" % (panel,key))
if val:
return val
else:
return ""
def get_config_bool(panel,key):
return get_bool("/gramps/%s/%s" % (panel,key))
def get_config_int(panel,key):
return get_int("/gramps/%s/%s" % (panel,key))
ext_items = []
class ConfigWidget:
def __init__(self,panel,key,label,default):
self.p = panel
self.k = key
self.l = label
self.w = None
self.d = default
self.tag = "/gramps/%s/%s" % (panel,key)
def set(self):
pass
class ConfigEntry(ConfigWidget):
def get_widgets(self):
l = gtk.GtkLabel(self.l)
l.show()
self.w = gtk.GtkEntry()
self.w.show()
val = get_string(self.tag)
if val == None:
self.w.set_text(self.d)
else:
self.w.set_text(val)
return [l,self.w]
def set(self):
val = self.w.get_text()
set_string(self.tag,val)
class ConfigInt(ConfigWidget):
def set_range(self,lower,upper):
self.lower = lower
self.upper = upper
def get_widgets(self):
l = gtk.GtkLabel(self.l)
l.show()
self.w = gtk.GtkSpinButton(digits=0)
self.w.show()
val = get_string(self.tag)
if val == None:
val = int(self.d)
else:
val = int(val)
adj = gtk.GtkAdjustment(val,self.lower,self.upper,1,1,1)
self.w.set_adjustment(adj)
return [l,self.w]
def set(self):
val = self.w.get_value_as_int()
set_int(self.tag,val)
class ConfigCheckbox(ConfigWidget):
def get_widgets(self):
self.w = gtk.GtkCheckButton(self.l)
self.w.show()
val = get_bool(self.tag)
if val == None:
self.w.set_active(self.d)
else:
self.w.set_active(val)
return [self.w]
def set(self):
val = self.w.get_active()
set_bool(self.tag,val)
class ConfigFile(ConfigWidget):
def get_widgets(self):
self.w = gnome.ui.GnomeFileEntry(self.tag)
lbl = gtk.GtkLabel(self.l)
self.w.show()
lbl.show()
val = get_string(self.tag)
self.w.set_title("%s -- GRAMPS" % (self.l))
if val == None:
self.w.gtk_entry().set_text(self.d)
else:
self.w.gtk_entry().set_text(val)
return [lbl,self.w]
def set(self):
val = self.w.get_full_path(0)
set_string(self.tag,val)
def add_text(category,panel,frame,config_tag,label,default):
ext_items.append((category,panel,frame,ConfigEntry(panel,config_tag,label,default)))
def add_file_entry(category,panel,frame,config_tag,label,default):
ext_items.append((category,panel,frame,ConfigFile(panel,config_tag,label,default)))
def add_int(category,panel,frame,config_tag,label,default,range=(0,100)):
cfgint = ConfigInt(panel,config_tag,label,default)
cfgint.set_range(range[0],range[1])
ext_items.append((category,panel,frame,cfgint))
def add_checkbox(category,panel,frame,config_tag,label,default):
ext_items.append((category,panel,frame,ConfigCheckbox(panel,config_tag,label,default)))
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class GrampsPreferences:
def __init__(self,db):
self.db = db
self.top = libglade.GladeXML(const.prefsFile,"preferences")
self.top.signal_autoconnect({
"on_close_clicked" : self.on_close_clicked,
"on_ok_clicked" : self.on_ok_clicked,
"on_apply_clicked" : self.on_propertybox_apply,
"on_help_clicked" : self.on_propertybox_help,
"on_color_toggled" : self.on_color_toggled,
"on_color_set" : self.on_color_set,
"on_object_toggled" : self.on_object_toggled
})
self.window = self.top.get_widget("preferences")
self.apply = self.top.get_widget("apply")
self.tree = self.top.get_widget("tree")
self.panel = self.top.get_widget("panel")
self.build_tree()
self.build()
self.build_ext()
self.apply.set_sensitive(0)
def build_tree(self):
self.tree.show()
for (name,list) in panellist:
item = gtk.GtkTreeItem(name)
item.show()
item.connect("select",self.select,0)
self.tree.append(item)
subtree = gtk.GtkTree()
subtree.show()
item.set_subtree(subtree)
for (subname,tab) in list:
newitem = gtk.GtkTreeItem(subname)
newitem.show()
newitem.connect("select",self.select,tab)
subtree.append(newitem)
def build(self):
auto = self.top.get_widget("autoload")
asave_int = self.top.get_widget("autosave_interval")
vis = self.top.get_widget("gid_visible")
idedit = self.top.get_widget("gid_edit")
index_vis = self.top.get_widget("show_child_id")
tabs = self.top.get_widget("usetabs")
lds = self.top.get_widget("uselds")
ac = self.top.get_widget("autocomp")
mr = self.top.get_widget("mediaref")
mc = self.top.get_widget("mediacopy")
dg = self.top.get_widget("globalprop")
dl = self.top.get_widget("localprop")
cal = self.top.get_widget("calendar")
vc = self.top.get_widget("use_vc")
vcom = self.top.get_widget("vc_comment")
compress = self.top.get_widget("uncompress")
detail = self.top.get_widget("showdetail")
display_attr_obj = self.top.get_widget("attr_display")
display_altnames = self.top.get_widget("display_altnames")
auto.set_active(autoload)
asave_int.set_value(int(autosave_int))
detail.set_active(show_detail)
tabs.set_active(usetabs)
lds.set_active(uselds)
ac.set_active(autocomp)
if mediaref:
mr.set_active(1)
else:
mc.set_active(1)
dg.set_active(globalprop)
dl.set_active(localprop)
cal.set_active(calendar)
vc.set_active(usevc)
vcom.set_active(vc_comment)
compress.set_active(uncompress)
vis.set_active(id_visible)
idedit.set_active(id_edit)
index_vis.set_active(index_visible)
self.top.get_widget("iprefix").set_text(iprefix)
self.top.get_widget("oprefix").set_text(oprefix)
self.top.get_widget("fprefix").set_text(fprefix)
self.top.get_widget("sprefix").set_text(sprefix)
self.top.get_widget("pprefix").set_text(pprefix)
if status_bar == 0:
self.top.get_widget("stat1").set_active(1)
elif status_bar == 1:
self.top.get_widget("stat2").set_active(1)
else:
self.top.get_widget("stat3").set_active(1)
if toolbar == 0:
self.top.get_widget("tool1").set_active(1)
elif toolbar == 1:
self.top.get_widget("tool2").set_active(1)
else:
self.top.get_widget("tool3").set_active(1)
display_attr_obj.set_active(display_attr)
self.top.get_widget("attr_name").set_text(attr_name)
display_altnames.set_active(hide_altnames)
paper_obj = self.top.get_widget("paper_size")
menu = gtk.GtkMenu()
choice = 0
for index in range(0,len(PaperMenu.paper_sizes)):
name = PaperMenu.paper_sizes[index].get_name()
if name == paper_preference:
choice = index
item = gtk.GtkMenuItem(name)
item.set_data(DATA,name)
item.connect("activate", self.on_format_toggled)
item.show()
menu.append(item)
menu.set_active(choice)
paper_obj.set_menu(menu)
lastnamegen_obj = self.top.get_widget("lastnamegen")
menu = gtk.GtkMenu()
choice = 0
for index in range(0,len(_surname_styles)):
name = _surname_styles[index]
item = gtk.GtkMenuItem(name)
item.set_data(DATA,index)
item.connect("activate", self.on_format_toggled)
item.show()
menu.append(item)
menu.set_active(lastnamegen)
lastnamegen_obj.set_menu(menu)
output_obj = self.top.get_widget("output_format")
menu = gtk.GtkMenu()
choice = 0
choice = 0
index = 0
for name in const.output_formats:
if name == output_preference:
choice = index
item = gtk.GtkMenuItem(name)
item.set_data(DATA,name)
item.connect("activate", self.on_format_toggled)
item.show()
menu.append(item)
index = index + 1
menu.set_active(choice)
output_obj.set_menu(menu)
date_option = self.top.get_widget("date_format")
date_menu = gtk.GtkMenu()
for index in range(0,len(_date_format_list)):
item = gtk.GtkMenuItem(_date_format_list[index])
item.set_data(INDEX,index)
item.connect("activate", self.on_format_toggled)
item.show()
date_menu.append(item)
date_menu.set_active(get_format_code())
date_option.set_menu(date_menu)
date_entry = self.top.get_widget("date_entry_format")
date_menu = gtk.GtkMenu()
for index in range(0,len(_date_entry_list)):
item = gtk.GtkMenuItem(_date_entry_list[index])
item.set_data(INDEX,index)
item.connect("activate", self.on_format_toggled)
item.show()
date_menu.append(item)
date_menu.set_active(Date.entryCode)
date_entry.set_menu(date_menu)
name_option = self.top.get_widget("name_format")
name_menu = gtk.GtkMenu()
for index in range(0,len(_name_format_list)):
name_tuple = _name_format_list[index]
item = gtk.GtkMenuItem(name_tuple[0])
item.set_data(INDEX,index)
item.connect("activate", self.on_format_toggled)
item.show()
name_menu.append(item)
name_menu.set_active(_name_format)
name_option.set_menu(name_menu)
self.top.get_widget("resname").set_text(owner.getName())
self.top.get_widget("resaddr").set_text(owner.getAddress())
self.top.get_widget("rescity").set_text(owner.getCity())
self.top.get_widget("resstate").set_text(owner.getState())
self.top.get_widget("rescountry").set_text(owner.getCountry())
self.top.get_widget("respostal").set_text(owner.getPostalCode())
self.top.get_widget("resphone").set_text(owner.getPhone())
self.top.get_widget("resemail").set_text(owner.getEmail())
cwidget = self.top.get_widget(ODDFGCOLOR)
cwidget.set_i16(ListColors.oddfg[0],ListColors.oddfg[1],\
ListColors.oddfg[2],0xffff)
cwidget = self.top.get_widget(ODDBGCOLOR)
cwidget.set_i16(ListColors.oddbg[0],ListColors.oddbg[1],\
ListColors.oddbg[2],0xffff)
cwidget = self.top.get_widget(EVENFGCOLOR)
cwidget.set_i16(ListColors.evenfg[0],ListColors.evenfg[1],\
ListColors.evenfg[2],0xffff)
cwidget = self.top.get_widget(EVENBGCOLOR)
cwidget.set_i16(ListColors.evenbg[0],ListColors.evenbg[1],\
ListColors.evenbg[2],0xffff)
cwidget = self.top.get_widget(ANCESTORFGCOLOR)
cwidget.set_i16(ListColors.ancestorfg[0],ListColors.ancestorfg[1],\
ListColors.ancestorfg[2],0xffff)
self.top.get_widget("enableColors").set_active(ListColors.get_enable())
self.top.get_widget(ODDFGCOLOR).set_sensitive(ListColors.get_enable())
self.top.get_widget(ODDBGCOLOR).set_sensitive(ListColors.get_enable())
self.top.get_widget(EVENBGCOLOR).set_sensitive(ListColors.get_enable())
self.top.get_widget(EVENFGCOLOR).set_sensitive(ListColors.get_enable())
self.top.get_widget(ANCESTORFGCOLOR).set_sensitive(ListColors.get_enable())
self.top.get_widget("dbdir").gtk_entry().set_text(db_dir)
self.top.get_widget("repdir").gtk_entry().set_text(report_dir)
self.top.get_widget("htmldir").gtk_entry().set_text(web_dir)
def build_ext(self):
self.c = {}
self.ext_list = []
for (c,p,f,o) in ext_items:
self.ext_list.append(o)
if self.c.has_key(c):
if self.c[c][p].has_key(f):
self.c[c][p][f].append(o)
else:
self.c[c][p][f] = [o]
else:
self.c[c] = {}
self.c[c][p] = {}
self.c[c][p][f] = [o]
next_panel=13
for c in self.c.keys():
item = gtk.GtkTreeItem(c)
item.show()
item.expand()
item.connect('select',self.select,0)
self.tree.append(item)
subtree = gtk.GtkTree()
subtree.show()
item.set_subtree(subtree)
for panel in self.c[c].keys():
newitem = gtk.GtkTreeItem(panel)
newitem.show()
newitem.expand()
newitem.connect('select',self.select,next_panel)
next_panel = next_panel + 1
subtree.append(newitem)
box = gtk.GtkVBox()
box.show()
col = 0
panel_label = gtk.GtkLabel("")
panel_label.show()
self.panel.append_page(box,panel_label)
for frame in self.c[c][panel].keys():
pairs = self.c[c][panel][frame]
fr = gtk.GtkFrame(frame)
fr.show()
box.pack_start(fr,GTK.FALSE,GTK.FALSE)
table = gtk.GtkTable(len(pairs),2)
table.show()
fr.add(table)
for wobj in pairs:
w = wobj.get_widgets()
if len(w) == 2:
table.attach(w[0],0,1,col,col+1,GTK.FILL,GTK.SHRINK,5,5)
table.attach(w[1],1,2,col,col+1,GTK.FILL|GTK.EXPAND,GTK.SHRINK,5,5)
else:
table.attach(w[0],0,2,col,col+1,GTK.FILL|GTK.EXPAND,GTK.SHRINK,5,5)
col = col + 1
def select(self,obj,data):
self.panel.set_page(data)
def on_propertybox_help(self,obj):
import gnome.help
gnome.help.display('gramps-manual','prefs.html')
def on_close_clicked(self,obj):
utils.destroy_passed_object(self.window)
def on_ok_clicked(self,obj):
self.on_propertybox_apply(obj)
utils.destroy_passed_object(self.window)
def on_propertybox_apply(self,obj):
global nameof
global owner
global usetabs
global uselds
global autocomp
global mediaref
global globalprop
global localprop
global calendar
global usevc
global iprefix
global fprefix
global pprefix
global sprefix
global oprefix
global vc_comment
global uncompress
global id_visible
global id_edit
global index_visible
global status_bar
global toolbar
global display_attr
global attr_name
global hide_altnames
global paper_preference
global output_preference
global show_detail
global report_dir
global web_dir
global db_dir
global lastnamegen
show_detail = self.top.get_widget("showdetail").get_active()
autoload = self.top.get_widget("autoload").get_active()
autosave_int = self.top.get_widget("autosave_interval").get_value_as_int()
display_attr = self.top.get_widget("attr_display").get_active()
attr_name = string.strip(self.top.get_widget("attr_name").get_text())
usetabs = self.top.get_widget("usetabs").get_active()
uselds = self.top.get_widget("uselds").get_active()
autocomp = self.top.get_widget("autocomp").get_active()
mediaref = self.top.get_widget("mediaref").get_active()
localprop = self.top.get_widget("localprop").get_active()
globalprop = self.top.get_widget("globalprop").get_active()
calendar = self.top.get_widget("calendar").get_active()
usevc = self.top.get_widget("use_vc").get_active()
vc_comment = self.top.get_widget("vc_comment").get_active()
uncompress = self.top.get_widget("uncompress").get_active()
id_visible = self.top.get_widget("gid_visible").get_active()
id_edit = self.top.get_widget("gid_edit").get_active()
index_visible = self.top.get_widget("show_child_id").get_active()
hide_altnames = self.top.get_widget("display_altnames").get_active()
paper_obj = self.top.get_widget("paper_size").get_menu().get_active()
output_obj = self.top.get_widget("output_format").get_menu().get_active()
if self.top.get_widget("stat1").get_active():
status_bar = 0
elif self.top.get_widget("stat2").get_active():
status_bar = 1
else:
status_bar = 2
if self.top.get_widget("tool1").get_active():
toolbar = 0
elif self.top.get_widget("tool2").get_active():
toolbar = 1
else:
toolbar = 2
iprefix = self.top.get_widget("iprefix").get_text()
if iprefix == "":
iprefix = "I"
sprefix = self.top.get_widget("sprefix").get_text()
if sprefix == "":
sprefix = "S"
oprefix = self.top.get_widget("oprefix").get_text()
if oprefix == "":
oprefix = "O"
fprefix = self.top.get_widget("fprefix").get_text()
if fprefix == "":
fprefix = "F"
pprefix = self.top.get_widget("pprefix").get_text()
if pprefix == "":
pprefix = "P"
dbdir_temp = self.top.get_widget("dbdir").get_full_path(1)
if dbdir_temp != None and os.path.isdir(dbdir_temp):
db_dir = os.path.normpath(dbdir_temp) + os.sep
repdir_temp = self.top.get_widget("repdir").get_full_path(1)
if repdir_temp != None and os.path.isdir(repdir_temp):
report_dir = os.path.normpath(repdir_temp) + os.sep
webdir_temp = self.top.get_widget("htmldir").get_full_path(1)
if webdir_temp != None and os.path.isdir(webdir_temp):
web_dir = os.path.normpath(webdir_temp) + os.sep
paper_preference = paper_obj.get_data(DATA)
output_preference = output_obj.get_data(DATA)
set_bool("/gramps/config/UseTabs",usetabs)
set_bool("/gramps/config/UseLDS",uselds)
set_bool("/gramps/config/DisableAutoComplete",not autocomp)
set_bool("/gramps/config/MakeReference",mediaref)
set_bool("/gramps/config/DisplayGlobal",globalprop)
set_bool("/gramps/config/DisplayLocal",localprop)
set_bool("/gramps/config/ShowCalendar",calendar)
set_bool("/gramps/config/UseVersionControl",usevc)
set_bool("/gramps/config/UseComment",vc_comment)
set_bool("/gramps/config/DontCompressXML",uncompress)
set_bool("/gramps/config/IdVisible",id_visible)
set_bool("/gramps/config/IdEdit",id_edit)
set_bool("/gramps/config/IndexVisible",index_visible)
set_bool("/gramps/config/ShowDetail",show_detail)
set_int("/gramps/config/StatusBar",status_bar)
set_int("/gramps/config/ToolBar",toolbar+1)
set_bool("/gramps/config/DisplayAttr",display_attr)
set_string("/gramps/config/DisplayAttrName",attr_name)
set_string("/gramps/config/paperPreference",paper_preference)
set_string("/gramps/config/outputPreference",output_preference)
set_bool("/gramps/config/autoLoad",autoload)
set_int("/gramps/config/autoSaveInterval",autosave_int)
if autosave_int != 0:
utils.enable_autosave(None,autosave_int)
else:
utils.disable_autosave()
set_bool("/gramps/config/DisplayAltNames",hide_altnames)
set_string("/gramps/config/ReportDirectory",report_dir)
set_string("/gramps/config/WebsiteDirectory",web_dir)
set_string("/gramps/config/DbDirectory",db_dir)
set_string("/gramps/config/iprefix",iprefix)
set_string("/gramps/config/fprefix",fprefix)
set_string("/gramps/config/pprefix",pprefix)
set_string("/gramps/config/oprefix",oprefix)
set_string("/gramps/config/sprefix",sprefix)
# search for the active date format selection
format_menu = self.top.get_widget("date_format").get_menu()
active = format_menu.get_active().get_data(INDEX)
set_format_code(active)
set_int("/gramps/config/dateFormat",active)
format_menu = self.top.get_widget("date_entry_format").get_menu()
entry_active = format_menu.get_active().get_data(INDEX)
Date.entryCode = entry_active
set_int("/gramps/config/dateEntry",entry_active)
# get the name format
format_menu = self.top.get_widget("name_format").get_menu()
active_name = format_menu.get_active().get_data(INDEX)
name_tuple = _name_format_list[active_name]
nameof = name_tuple[1]
set_int("/gramps/config/nameFormat",active_name)
format_menu = self.top.get_widget("lastnamegen").get_menu()
lastnamegen = format_menu.get_active().get_data(DATA)
set_int("/gramps/config/surnameGuessing",lastnamegen)
name = self.top.get_widget("resname").get_text()
addr = self.top.get_widget("resaddr").get_text()
city = self.top.get_widget("rescity").get_text()
state = self.top.get_widget("resstate").get_text()
country = self.top.get_widget("rescountry").get_text()
postal = self.top.get_widget("respostal").get_text()
phone = self.top.get_widget("resphone").get_text()
email = self.top.get_widget("resemail").get_text()
ListColors.set_enable(self.top.get_widget("enableColors").get_active())
set_bool("/gramps/color/enableColors",ListColors.get_enable())
ListColors.oddfg = self.top.get_widget(ODDFGCOLOR).get_i16()
ListColors.oddbg = self.top.get_widget(ODDBGCOLOR).get_i16()
ListColors.evenfg = self.top.get_widget(EVENFGCOLOR).get_i16()
ListColors.evenbg = self.top.get_widget(EVENBGCOLOR).get_i16()
ListColors.ancestorfg = self.top.get_widget(ANCESTORFGCOLOR).get_i16()
save_config_color(ODDFGCOLOR,ListColors.oddfg)
save_config_color(ODDBGCOLOR,ListColors.oddbg)
save_config_color(EVENFGCOLOR,ListColors.evenfg)
save_config_color(EVENBGCOLOR,ListColors.evenbg)
save_config_color(ANCESTORFGCOLOR,ListColors.ancestorfg)
owner.set(name,addr,city,state,country,postal,phone,email)
store_researcher(owner)
self.db.set_iprefix(iprefix)
self.db.set_fprefix(fprefix)
self.db.set_sprefix(sprefix)
self.db.set_oprefix(oprefix)
self.db.set_pprefix(pprefix)
for o in self.ext_list:
o.set()
# update the config file
sync()
_callback()
def on_object_toggled(self,obj):
"""Called by the elements on the property box to set the changed flag,
so that the property box knows to set the Apply button"""
self.apply.set_sensitive(1)
def on_format_toggled(self,obj):
"""Called by the elements on the property box to set the changed flag,
so that the property box knows to set the Apply button"""
self.apply.set_sensitive(1)
def on_color_toggled(self,obj):
"""Called by the elements on the property box to set the changed flag,
so that the property box knows to set the Apply button"""
active = self.top.get_widget("enableColors").get_active()
self.top.get_widget(ODDFGCOLOR).set_sensitive(active)
self.top.get_widget(ODDBGCOLOR).set_sensitive(active)
self.top.get_widget(EVENFGCOLOR).set_sensitive(active)
self.top.get_widget(EVENBGCOLOR).set_sensitive(active)
self.top.get_widget(ANCESTORFGCOLOR).set_sensitive(active)
self.apply.set_sensitive(1)
def on_color_set(self,obj,r,g,b,a):
"""Called by the elements on the property box to set the changed flag,
so that the property box knows to set the Apply button"""
self.apply.set_sensitive(1)
#-------------------------------------------------------------------------
#
# Create the property box, and set the elements off the current values
#
#-------------------------------------------------------------------------
def display_preferences_box(db):
GrampsPreferences(db)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def get_config_color(name,defval):
r = get_int("/gramps/color/" + name + ".r")
g = get_int("/gramps/color/" + name + ".g")
b = get_int("/gramps/color/" + name + ".b")
if r == None:
return defval
else:
return (r,g,b)
def get_sort_cols(name,col,dir):
c = get_int("/gramps/sort/%s_col" % name)
if c == None:
c = col
d = get_int("/gramps/sort/%s_dir" % name)
if d == None:
d = dir
return (c,d)
def save_sort_cols(name,col,dir):
set_int("/gramps/sort/%s_col" % name, col)
set_int("/gramps/sort/%s_dir" % name, dir)
sync()
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def druid_cancel_clicked(obj,a):
utils.destroy_passed_object(obj)