* src/GrampsLocale.py: handle platform specific locale issues

* src/DateDisplay.py: use GrampsLocale
* src/DateParser.py: use GrampsLocale
* src/DisplayModels.py: use GrampsLocale
* src/Exporter.py: start conversion to Assistant
* src/RecentFiles.py: fcntl option for broken platforms
* src/StartupDialog.py: convert to Assistant
* src/ViewManager.py: remove debug statement
* src/RelLib/_PrimaryObject.py: use GrampsLocale
* src/plugins/Checkpoint.py: use GrampsLocale
* src/plugins/NavWebPage.py: use GrampsLocale


svn: r5644
This commit is contained in:
Don Allingham 2005-12-30 03:57:31 +00:00
parent 1abaa98a40
commit 85fbf617d1
13 changed files with 258 additions and 139 deletions

View File

@ -1,3 +1,17 @@
2005-12-29 Don Allingham <don@gramps-project.org>
* src/GrampsLocale.py: handle platform specific locale issues
* src/DateDisplay.py: use GrampsLocale
* src/DateParser.py: use GrampsLocale
* src/DisplayModels.py: use GrampsLocale
* src/Exporter.py: start conversion to Assistant
* src/PeopleModel.py: use GrampsLocale
* src/RecentFiles.py: fcntl option for broken platforms
* src/StartupDialog.py: convert to Assistant
* src/ViewManager.py: remove debug statement
* src/RelLib/_PrimaryObject.py: use GrampsLocale
* src/plugins/Checkpoint.py: use GrampsLocale
* src/plugins/NavWebPage.py: use GrampsLocale
2005-12-29 Martin Hawlisch <Martin.Hawlisch@gmx.de> 2005-12-29 Martin Hawlisch <Martin.Hawlisch@gmx.de>
* src/PedView.py: Use a DrawingArea for nicer person boxes * src/PedView.py: Use a DrawingArea for nicer person boxes
* src/GrampsDb/_GrampsDbBase.py (_update_reference_map): Sync * src/GrampsDb/_GrampsDbBase.py (_update_reference_map): Sync

View File

@ -29,53 +29,17 @@ __author__ = "Donald N. Allingham"
__version__ = "$Revision$" __version__ = "$Revision$"
import Date import Date
import locale
from gettext import gettext as _ from gettext import gettext as _
import GrampsLocale
class DateDisplay: class DateDisplay:
# determine the code set returned by nl_langinfo _months = GrampsLocale.long_months
_codeset = locale.nl_langinfo(locale.CODESET) _MONS = GrampsLocale.short_months
# get month information from nl_langinfo. Since nl_langinfo
# returns data in the code set specified by the user, and
# gnome wants unicode, we need to convert each string from
# the native code set into unicode
_months = (
"",
unicode(locale.nl_langinfo(locale.MON_1),_codeset),
unicode(locale.nl_langinfo(locale.MON_2),_codeset),
unicode(locale.nl_langinfo(locale.MON_3),_codeset),
unicode(locale.nl_langinfo(locale.MON_4),_codeset),
unicode(locale.nl_langinfo(locale.MON_5),_codeset),
unicode(locale.nl_langinfo(locale.MON_6),_codeset),
unicode(locale.nl_langinfo(locale.MON_7),_codeset),
unicode(locale.nl_langinfo(locale.MON_8),_codeset),
unicode(locale.nl_langinfo(locale.MON_9),_codeset),
unicode(locale.nl_langinfo(locale.MON_10),_codeset),
unicode(locale.nl_langinfo(locale.MON_11),_codeset),
unicode(locale.nl_langinfo(locale.MON_12),_codeset),
)
_MONS = ( _tformat = GrampsLocale.tformat
"",
unicode(locale.nl_langinfo(locale.ABMON_1),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_2),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_3),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_4),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_5),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_6),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_7),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_8),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_9),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_10),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_11),_codeset),
unicode(locale.nl_langinfo(locale.ABMON_12),_codeset),
)
_tformat = locale.nl_langinfo(locale.D_FMT).replace('%y','%Y')
_hebrew = ( _hebrew = (
"", "Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "", "Tishri", "Heshvan", "Kislev", "Tevet", "Shevat",
"AdarI", "AdarII", "Nisan", "Iyyar", "Sivan", "Tammuz", "AdarI", "AdarII", "Nisan", "Iyyar", "Sivan", "Tammuz",

View File

@ -35,7 +35,6 @@ __version__ = "$Revision$"
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import re import re
import locale
import calendar import calendar
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -44,6 +43,7 @@ import calendar
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import Date import Date
import GrampsLocale
from Errors import DateError from Errors import DateError
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -80,8 +80,6 @@ class DateParser:
converted, the text string is assigned. converted, the text string is assigned.
""" """
# determine the code set returned by nl_langinfo
_codeset = locale.nl_langinfo(locale.CODESET)
_fmt_parse = re.compile(".*%(\S).*%(\S).*%(\S).*") _fmt_parse = re.compile(".*%(\S).*%(\S).*%(\S).*")
# RFC-2822 only uses capitalized English abbreviated names, no locales. # RFC-2822 only uses capitalized English abbreviated names, no locales.
@ -92,32 +90,7 @@ class DateParser:
'Sep' : 9, 'Oct' : 10, 'Nov' : 11, 'Dec' : 12, 'Sep' : 9, 'Oct' : 10, 'Nov' : 11, 'Dec' : 12,
} }
month_to_int = { month_to_int = GrampsLocale.month_to_int
unicode(locale.nl_langinfo(locale.MON_1),_codeset).lower() : 1,
unicode(locale.nl_langinfo(locale.ABMON_1),_codeset).lower() : 1,
unicode(locale.nl_langinfo(locale.MON_2),_codeset).lower() : 2,
unicode(locale.nl_langinfo(locale.ABMON_2),_codeset).lower() : 2,
unicode(locale.nl_langinfo(locale.MON_3),_codeset).lower() : 3,
unicode(locale.nl_langinfo(locale.ABMON_3),_codeset).lower() : 3,
unicode(locale.nl_langinfo(locale.MON_4),_codeset).lower() : 4,
unicode(locale.nl_langinfo(locale.ABMON_4),_codeset).lower() : 4,
unicode(locale.nl_langinfo(locale.MON_5),_codeset).lower() : 5,
unicode(locale.nl_langinfo(locale.ABMON_5),_codeset).lower() : 5,
unicode(locale.nl_langinfo(locale.MON_6),_codeset).lower() : 6,
unicode(locale.nl_langinfo(locale.ABMON_6),_codeset).lower() : 6,
unicode(locale.nl_langinfo(locale.MON_7),_codeset).lower() : 7,
unicode(locale.nl_langinfo(locale.ABMON_7),_codeset).lower() : 7,
unicode(locale.nl_langinfo(locale.MON_8),_codeset).lower() : 8,
unicode(locale.nl_langinfo(locale.ABMON_8),_codeset).lower() : 8,
unicode(locale.nl_langinfo(locale.MON_9),_codeset).lower() : 9,
unicode(locale.nl_langinfo(locale.ABMON_9),_codeset).lower() : 9,
unicode(locale.nl_langinfo(locale.MON_10),_codeset).lower() : 10,
unicode(locale.nl_langinfo(locale.ABMON_10),_codeset).lower(): 10,
unicode(locale.nl_langinfo(locale.MON_11),_codeset).lower() : 11,
unicode(locale.nl_langinfo(locale.ABMON_11),_codeset).lower(): 11,
unicode(locale.nl_langinfo(locale.MON_12),_codeset).lower() : 12,
unicode(locale.nl_langinfo(locale.ABMON_12),_codeset).lower(): 12,
}
# modifiers before the date # modifiers before the date
modifier_to_int = { modifier_to_int = {
@ -215,7 +188,7 @@ class DateParser:
Date.CAL_ISLAMIC : self._parse_islamic, Date.CAL_ISLAMIC : self._parse_islamic,
} }
fmt = locale.nl_langinfo(locale.D_FMT) fmt = GrampsLocale.tformat
match = self._fmt_parse.match(fmt.lower()) match = self._fmt_parse.match(fmt.lower())
if match: if match:
self.dmy = (match.groups() == ('d','m','y')) self.dmy = (match.groups() == ('d','m','y'))

View File

@ -47,6 +47,7 @@ import RelLib
import Utils import Utils
import ToolTips import ToolTips
import DisplayTrace import DisplayTrace
import GrampsLocale
_GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ] _GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ]
@ -55,8 +56,7 @@ _GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ]
# Localized constants # Localized constants
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
_date_format = locale.nl_langinfo(locale.D_T_FMT) _codeset = GrampsLocale.codeset
_codeset = locale.nl_langinfo(locale.CODESET)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -327,8 +327,9 @@ class SourceModel(BaseModel):
return unicode(data[4]) return unicode(data[4])
def column_change(self,data): def column_change(self,data):
return unicode(time.strftime(_date_format,time.localtime(data[8])), return unicode(time.strftime('%x %X',time.localtime(data[8])),
_codeset) GrampsLocale.codeset)
def sort_change(self,data): def sort_change(self,data):
return time.localtime(data[8]) return time.localtime(data[8])
@ -435,7 +436,7 @@ class PlaceModel(BaseModel):
return time.localtime(data[11]) return time.localtime(data[11])
def column_change(self,data): def column_change(self,data):
return unicode(time.strftime(_date_format,time.localtime(data[11])), return unicode(time.strftime('%x %X',time.localtime(data[11])),
_codeset) _codeset)
def column_tooltip(self,data): def column_tooltip(self,data):
@ -513,7 +514,7 @@ class MediaModel(BaseModel):
return time.localtime(data[8]) return time.localtime(data[8])
def column_change(self,data): def column_change(self,data):
return unicode(time.strftime(_date_format,time.localtime(data[8])), return unicode(time.strftime('%x %X',time.localtime(data[8])),
_codeset) _codeset)
def column_tooltip(self,data): def column_tooltip(self,data):
@ -597,7 +598,7 @@ class EventModel(BaseModel):
return time.localtime(data[11]) return time.localtime(data[11])
def column_change(self,data): def column_change(self,data):
return unicode(time.strftime(_date_format,time.localtime(data[11])), return unicode(time.strftime('%x %X',time.localtime(data[11])),
_codeset) _codeset)
def column_tooltip(self,data): def column_tooltip(self,data):

View File

@ -36,7 +36,7 @@ from gettext import gettext as _
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import gtk import gtk
from gnome.ui import Druid, DruidPageEdge, DruidPageStandard import Assistant
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -83,31 +83,30 @@ class Exporter:
self.confirm_label = gtk.Label() self.confirm_label = gtk.Label()
self.extra_pages = [] self.extra_pages = []
self.w = gtk.Window() self.w = Assistant.Assistant(_('Saving your data'),None)
self.fg_color = gtk.gdk.color_parse('#7d684a') self.w.set_intro(
self.bg_color = gtk.gdk.color_parse('#e1dbc5') _('Under normal circumstances, GRAMPS does not require you '
self.logo = gtk.gdk.pixbuf_new_from_file("%s/gramps.png" % const.rootDir) 'to directly save your changes. All changes you make are '
self.splash = gtk.gdk.pixbuf_new_from_file("%s/splash.jpg" % const.rootDir) 'immediately saved to the database.\n\n'
'This process will help you save a copy of your data '
self.d = Druid() 'in any of the several formats supported by GRAMPS. '
self.w.add(self.d) 'This can be used to make a copy of your data, backup '
self.w.set_title(_('GRAMPS: Export')) 'your data, or convert it to a format that will allow '
self.d.add(self.build_info_page()) 'you to transfer it to a different program.\n\n'
self.d.add(self.build_format_page()) 'If you change your mind during this process, you '
self.file_sel_page = self.build_file_sel_page() 'can safely press the Cancel button at any time and your '
self.d.add(self.file_sel_page) 'present database will still be intact.'))
self.d.add(self.build_confirm_page())
self.last_page = self.build_last_page()
self.d.add(self.last_page)
self.d.set_show_help(True)
self.d.connect('cancel',self.close)
self.d.connect('help',self.help)
self.w.connect("destroy_event",self.close)
self.w.set_transient_for(self.parent_window)
self.w.show_all() self.w.add_page(self.build_info_page())
self.w.add_page(self.build_format_page())
self.file_sel_page = self.build_file_sel_page()
self.w.add_page(self.file_sel_page)
self.w.add_page(self.build_confirm_page())
self.last_page = self.build_last_page()
self.w.add_page(self.last_page)
self.w.show()
def close(self,obj,obj2=None): def close(self,obj,obj2=None):
""" """
@ -127,7 +126,7 @@ class Exporter:
This is a static page, nothing fun here :-) This is a static page, nothing fun here :-)
""" """
p = DruidPageEdge(0) p = DruidPageEdge(0)
p.set_title(_('Saving your data')) p.set_title()
p.set_title_color(self.fg_color) p.set_title_color(self.fg_color)
p.set_bg_color(self.bg_color) p.set_bg_color(self.bg_color)
p.set_logo(self.logo) p.set_logo(self.logo)

168
src/GrampsLocale.py Normal file
View File

@ -0,0 +1,168 @@
# -*- coding: iso-8859-1 -*-
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2005 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
#
# $Id$
import locale
"""
Some OS environments do not support the locale.nl_langinfo() method
of determing month names and other date related information.
If nl_langinfo fails, that means we have to resort to shinanigans with
strftime.
Since these routines return values encoded into selected character
set, we have to convert to unicode.
"""
try:
codeset = locale.nl_langinfo(locale.CODESET)
month_to_int = {
unicode(locale.nl_langinfo(locale.MON_1),codeset).lower() : 1,
unicode(locale.nl_langinfo(locale.ABMON_1),codeset).lower() : 1,
unicode(locale.nl_langinfo(locale.MON_2),codeset).lower() : 2,
unicode(locale.nl_langinfo(locale.ABMON_2),codeset).lower() : 2,
unicode(locale.nl_langinfo(locale.MON_3),codeset).lower() : 3,
unicode(locale.nl_langinfo(locale.ABMON_3),codeset).lower() : 3,
unicode(locale.nl_langinfo(locale.MON_4),codeset).lower() : 4,
unicode(locale.nl_langinfo(locale.ABMON_4),codeset).lower() : 4,
unicode(locale.nl_langinfo(locale.MON_5),codeset).lower() : 5,
unicode(locale.nl_langinfo(locale.ABMON_5),codeset).lower() : 5,
unicode(locale.nl_langinfo(locale.MON_6),codeset).lower() : 6,
unicode(locale.nl_langinfo(locale.ABMON_6),codeset).lower() : 6,
unicode(locale.nl_langinfo(locale.MON_7),codeset).lower() : 7,
unicode(locale.nl_langinfo(locale.ABMON_7),codeset).lower() : 7,
unicode(locale.nl_langinfo(locale.MON_8),codeset).lower() : 8,
unicode(locale.nl_langinfo(locale.ABMON_8),codeset).lower() : 8,
unicode(locale.nl_langinfo(locale.MON_9),codeset).lower() : 9,
unicode(locale.nl_langinfo(locale.ABMON_9),codeset).lower() : 9,
unicode(locale.nl_langinfo(locale.MON_10),codeset).lower() : 10,
unicode(locale.nl_langinfo(locale.ABMON_10),codeset).lower(): 10,
unicode(locale.nl_langinfo(locale.MON_11),codeset).lower() : 11,
unicode(locale.nl_langinfo(locale.ABMON_11),codeset).lower(): 11,
unicode(locale.nl_langinfo(locale.MON_12),codeset).lower() : 12,
unicode(locale.nl_langinfo(locale.ABMON_12),codeset).lower(): 12,
}
long_months = (
"",
unicode(locale.nl_langinfo(locale.MON_1),codeset),
unicode(locale.nl_langinfo(locale.MON_2),codeset),
unicode(locale.nl_langinfo(locale.MON_3),codeset),
unicode(locale.nl_langinfo(locale.MON_4),codeset),
unicode(locale.nl_langinfo(locale.MON_5),codeset),
unicode(locale.nl_langinfo(locale.MON_6),codeset),
unicode(locale.nl_langinfo(locale.MON_7),codeset),
unicode(locale.nl_langinfo(locale.MON_8),codeset),
unicode(locale.nl_langinfo(locale.MON_9),codeset),
unicode(locale.nl_langinfo(locale.MON_10),codeset),
unicode(locale.nl_langinfo(locale.MON_11),codeset),
unicode(locale.nl_langinfo(locale.MON_12),codeset),
)
short_months = (
"",
unicode(locale.nl_langinfo(locale.ABMON_1),codeset),
unicode(locale.nl_langinfo(locale.ABMON_2),codeset),
unicode(locale.nl_langinfo(locale.ABMON_3),codeset),
unicode(locale.nl_langinfo(locale.ABMON_4),codeset),
unicode(locale.nl_langinfo(locale.ABMON_5),codeset),
unicode(locale.nl_langinfo(locale.ABMON_6),codeset),
unicode(locale.nl_langinfo(locale.ABMON_7),codeset),
unicode(locale.nl_langinfo(locale.ABMON_8),codeset),
unicode(locale.nl_langinfo(locale.ABMON_9),codeset),
unicode(locale.nl_langinfo(locale.ABMON_10),codeset),
unicode(locale.nl_langinfo(locale.ABMON_11),codeset),
unicode(locale.nl_langinfo(locale.ABMON_12),codeset),
)
tformat = locale.nl_langinfo(locale.D_FMT).replace('%y','%Y')
except:
import time
codeset = locale.getpreferredencoding()
month_to_int = {
unicode(time.strftime('%B',(0,1,1,1,1,1,1,1,1)),codeset).lower() : 1,
unicode(time.strftime('%b',(0,1,1,1,1,1,1,1,1)),codeset).lower() : 1,
unicode(time.strftime('%B',(0,2,1,1,1,1,1,1,1)),codeset).lower() : 2,
unicode(time.strftime('%b',(0,2,1,1,1,1,1,1,1)),codeset).lower() : 2,
unicode(time.strftime('%B',(0,3,1,1,1,1,1,1,1)),codeset).lower() : 3,
unicode(time.strftime('%b',(0,3,1,1,1,1,1,1,1)),codeset).lower() : 3,
unicode(time.strftime('%B',(0,4,1,1,1,1,1,1,1)),codeset).lower() : 4,
unicode(time.strftime('%b',(0,4,1,1,1,1,1,1,1)),codeset).lower() : 4,
unicode(time.strftime('%B',(0,5,1,1,1,1,1,1,1)),codeset).lower() : 5,
unicode(time.strftime('%b',(0,5,1,1,1,1,1,1,1)),codeset).lower() : 5,
unicode(time.strftime('%B',(0,6,1,1,1,1,1,1,1)),codeset).lower() : 6,
unicode(time.strftime('%b',(0,6,1,1,1,1,1,1,1)),codeset).lower() : 6,
unicode(time.strftime('%B',(0,7,1,1,1,1,1,1,1)),codeset).lower() : 7,
unicode(time.strftime('%b',(0,7,1,1,1,1,1,1,1)),codeset).lower() : 7,
unicode(time.strftime('%B',(0,8,1,1,1,1,1,1,1)),codeset).lower() : 8,
unicode(time.strftime('%b',(0,8,1,1,1,1,1,1,1)),codeset).lower() : 8,
unicode(time.strftime('%B',(0,9,1,1,1,1,1,1,1)),codeset).lower() : 9,
unicode(time.strftime('%b',(0,9,1,1,1,1,1,1,1)),codeset).lower() : 9,
unicode(time.strftime('%B',(0,10,1,1,1,1,1,1,1)),codeset).lower() : 10,
unicode(time.strftime('%b',(0,10,1,1,1,1,1,1,1)),codeset).lower() : 10,
unicode(time.strftime('%B',(0,11,1,1,1,1,1,1,1)),codeset).lower() : 11,
unicode(time.strftime('%b',(0,11,1,1,1,1,1,1,1)),codeset).lower() : 11,
unicode(time.strftime('%B',(0,12,1,1,1,1,1,1,1)),codeset).lower() : 12,
unicode(time.strftime('%b',(0,12,1,1,1,1,1,1,1)),codeset).lower() : 12,
}
long_months = (
"",
unicode(time.strftime('%B',(0,1,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,2,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,3,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,4,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,5,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,6,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,7,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,8,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,9,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,10,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,11,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%B',(0,12,1,1,1,1,1,1,1)),codeset),
)
short_months = (
"",
unicode(time.strftime('%b',(0,1,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,2,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,3,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,4,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,5,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,6,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,7,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,8,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,9,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,10,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,11,1,1,1,1,1,1,1)),codeset),
unicode(time.strftime('%b',(0,12,1,1,1,1,1,1,1)),codeset),
)
if time.strftime('%x',(2005,1,2,1,1,1,1,1,1)) == '2/1/2005':
tformat = '%d/%m/%y'
else:
tformat = '%m/%d/%y'

View File

@ -27,11 +27,11 @@
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from gettext import gettext as _ from gettext import gettext as _
import time import time
import locale
import cgi import cgi
import sets import sets
import sys import sys
import traceback import traceback
import locale
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -51,14 +51,14 @@ from RelLib import *
import NameDisplay import NameDisplay
import DateHandler import DateHandler
import ToolTips import ToolTips
import GrampsLocale
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Localized constants # Localized constants
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
_date_format = locale.nl_langinfo(locale.D_T_FMT) _codeset = GrampsLocale.codeset
_codeset = locale.nl_langinfo(locale.CODESET)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -325,8 +325,7 @@ class PeopleModel(gtk.GenericTreeModel):
return data[_ID_COL] return data[_ID_COL]
def column_change(self,data,node): def column_change(self,data,node):
return unicode(time.strftime(_date_format, return unicode(time.strftime('%x %X',time.localtime(data[_CHANGE_COL])),
time.localtime(data[_CHANGE_COL])),
_codeset) _codeset)
def column_gender(self,data,node): def column_gender(self,data,node):

View File

@ -28,10 +28,16 @@
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import os import os
import fcntl
import time import time
from xml.parsers.expat import ParserCreate from xml.parsers.expat import ParserCreate
try:
import fcntl
use_lock = True
except:
use_lock = False
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Constants # Constants
@ -174,7 +180,8 @@ class GnomeRecentFiles:
Saves the current GNOME RecentFiles collection to the associated file. Saves the current GNOME RecentFiles collection to the associated file.
""" """
xml_file = file(os.path.expanduser(GNOME_FILENAME),'w') xml_file = file(os.path.expanduser(GNOME_FILENAME),'w')
fcntl.lockf(xml_file,fcntl.LOCK_EX) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_EX)
xml_file.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n") xml_file.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
xml_file.write('<RecentFiles>\n') xml_file.write('<RecentFiles>\n')
index = 0 index = 0
@ -194,7 +201,8 @@ class GnomeRecentFiles:
xml_file.write(' </Groups>\n') xml_file.write(' </Groups>\n')
xml_file.write(' </RecentItem>\n') xml_file.write(' </RecentItem>\n')
xml_file.write('</RecentFiles>\n') xml_file.write('</RecentFiles>\n')
fcntl.lockf(xml_file,fcntl.LOCK_UN) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_UN)
xml_file.close() xml_file.close()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -251,7 +259,8 @@ class GrampsRecentFiles:
Saves the current GRAMPS RecentFiles collection to the associated file. Saves the current GRAMPS RecentFiles collection to the associated file.
""" """
xml_file = file(os.path.expanduser(GRAMPS_FILENAME),'w') xml_file = file(os.path.expanduser(GRAMPS_FILENAME),'w')
fcntl.lockf(xml_file,fcntl.LOCK_EX) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_EX)
xml_file.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n") xml_file.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
xml_file.write('<RecentFiles>\n') xml_file.write('<RecentFiles>\n')
index = 0 index = 0
@ -265,7 +274,8 @@ class GrampsRecentFiles:
xml_file.write(' <Timestamp>%d</Timestamp>\n' % item.get_time()) xml_file.write(' <Timestamp>%d</Timestamp>\n' % item.get_time())
xml_file.write(' </RecentItem>\n') xml_file.write(' </RecentItem>\n')
xml_file.write('</RecentFiles>\n') xml_file.write('</RecentFiles>\n')
fcntl.lockf(xml_file,fcntl.LOCK_UN) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_UN)
xml_file.close() xml_file.close()
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -283,7 +293,8 @@ class GnomeRecentParser:
try: try:
xml_file = open(os.path.expanduser(GNOME_FILENAME)) xml_file = open(os.path.expanduser(GNOME_FILENAME))
fcntl.lockf(xml_file,fcntl.LOCK_SH) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_SH)
p = ParserCreate() p = ParserCreate()
p.StartElementHandler = self.startElement p.StartElementHandler = self.startElement
@ -291,7 +302,8 @@ class GnomeRecentParser:
p.CharacterDataHandler = self.characters p.CharacterDataHandler = self.characters
p.ParseFile(xml_file) p.ParseFile(xml_file)
fcntl.lockf(xml_file,fcntl.LOCK_UN) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_UN)
xml_file.close() xml_file.close()
except: except:
pass pass
@ -343,7 +355,8 @@ class GrampsRecentParser:
try: try:
xml_file = open(os.path.expanduser(GRAMPS_FILENAME)) xml_file = open(os.path.expanduser(GRAMPS_FILENAME))
fcntl.lockf(xml_file,fcntl.LOCK_SH) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_SH)
p = ParserCreate() p = ParserCreate()
p.StartElementHandler = self.startElement p.StartElementHandler = self.startElement
@ -351,7 +364,8 @@ class GrampsRecentParser:
p.CharacterDataHandler = self.characters p.CharacterDataHandler = self.characters
p.ParseFile(xml_file) p.ParseFile(xml_file)
fcntl.lockf(xml_file,fcntl.LOCK_UN) if use_lock:
fcntl.lockf(xml_file,fcntl.LOCK_UN)
xml_file.close() xml_file.close()
except: except:
pass pass

View File

@ -30,7 +30,7 @@ Primary Object class for GRAMPS
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import time import time
import locale import GrampsLocale
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -47,8 +47,7 @@ from _MediaBase import MediaBase
# Localized constants # Localized constants
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
_date_format = locale.nl_langinfo(locale.D_T_FMT) _codeset = GrampsLocale.codeset
_codeset = locale.nl_langinfo(locale.CODESET)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -111,8 +110,7 @@ class PrimaryObject(BaseObject,PrivacyBase):
""" """
if self.change: if self.change:
return unicode(time.strftime(_date_format, return unicode(time.strftime('%x %X',time.localtime(self.change)),
time.localtime(self.change)),
_codeset) _codeset)
else: else:
return '' return ''

View File

@ -43,13 +43,6 @@ import gtk.glade
import Assistant import Assistant
import const import const
if not const.no_gconf:
try:
import gconf
except ImportError:
import gnome.gconf
gconf = gnome.gconf
import GrampsKeys import GrampsKeys
from QuestionDialog import ErrorDialog from QuestionDialog import ErrorDialog
@ -59,10 +52,6 @@ from QuestionDialog import ErrorDialog
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
if not const.no_gconf:
client = gconf.client_get_default()
client.add_dir("/apps/gramps",gconf.CLIENT_PRELOAD_NONE)
def need_to_run(): def need_to_run():
val = GrampsKeys.get_startup() val = GrampsKeys.get_startup()
if val < const.startup: if val < const.startup:
@ -76,6 +65,9 @@ def upgrade_prefs():
On failure, print message and return False. On failure, print message and return False.
""" """
try: try:
client = gconf.client_get_default()
client.add_dir("/apps/gramps",gconf.CLIENT_PRELOAD_NONE)
GrampsKeys.save_fprefix(client.get_string('/apps/gramps/fprefix')) GrampsKeys.save_fprefix(client.get_string('/apps/gramps/fprefix'))
GrampsKeys.save_sprefix(client.get_string('/apps/gramps/sprefix')) GrampsKeys.save_sprefix(client.get_string('/apps/gramps/sprefix'))
GrampsKeys.save_pprefix(client.get_string('/apps/gramps/pprefix')) GrampsKeys.save_pprefix(client.get_string('/apps/gramps/pprefix'))
@ -104,10 +96,8 @@ def upgrade_prefs():
toolbar = -1 toolbar = -1
GrampsKeys.save_toolbar(toolbar) GrampsKeys.save_toolbar(toolbar)
GrampsKeys.save_toolbar_on(client.get_bool('/apps/gramps/toolbar-on')) GrampsKeys.save_toolbar_on(client.get_bool('/apps/gramps/toolbar-on'))
print "Successfully imported preferences from the 1.0.x version."
return True return True
except: except:
print "Failed to import preferences from the 1.0.x version."
return False return False
#------------------------------------------------------------------------- #-------------------------------------------------------------------------

View File

@ -166,7 +166,6 @@ class ViewManager:
try: try:
width = GrampsKeys.get_width() width = GrampsKeys.get_width()
height = GrampsKeys.get_height() height = GrampsKeys.get_height()
print width,height
self.window.set_default_size(width,height) self.window.set_default_size(width,height)
except: except:
self.window.set_default_size(775,500) self.window.set_default_size(775,500)

View File

@ -237,8 +237,7 @@ class Checkpoint(Tool.Tool):
self.parent.modify_statusbar() self.parent.modify_statusbar()
def timestamp(self): def timestamp(self):
format = locale.nl_langinfo(locale.D_T_FMT) return unicode(time.strftime('%x %X',time.localtime(time.time())))
return unicode(time.strftime(format,time.localtime(time.time())))
def custom(self,cmd,checkin,cli): def custom(self,cmd,checkin,cli):
""" """

View File

@ -63,6 +63,7 @@ import Utils
import ReportOptions import ReportOptions
import ReportUtils import ReportUtils
import ImgManip import ImgManip
import GrampsLocale
from QuestionDialog import ErrorDialog, WarningDialog from QuestionDialog import ErrorDialog, WarningDialog
from NameDisplay import displayer as _nd from NameDisplay import displayer as _nd
from DateHandler import displayer as _dd from DateHandler import displayer as _dd
@ -282,8 +283,8 @@ class BasePage:
of.write(' </div>\n') of.write(' </div>\n')
of.write('<div id="navheader">\n') of.write('<div id="navheader">\n')
format = locale.nl_langinfo(locale.D_FMT) value = unicode(time.strftime('%x',time.localtime(time.time())),
value = time.strftime(format,time.localtime(time.time())) GrampsLocale.codeset)
msg = _('Generated by <a href="http://gramps-project.org">' msg = _('Generated by <a href="http://gramps-project.org">'
'GRAMPS</a> on %(date)s') % { 'date' : value } 'GRAMPS</a> on %(date)s') % { 'date' : value }