* src/DateDisplay.py: Make DateDisplayEn inherit from DateDisplay, make
DateDisplay handle only ISO dates * src/DateHandler.py: use DateDisplayEn for English languages, use DateDisplay for CJK * src/GrampsCfg.py: Don't do initial redisplay of Person List when dialog comes up, update dates dynamically when date format changes svn: r3908
This commit is contained in:
parent
b4c04498fc
commit
f770f8b329
@ -1,3 +1,11 @@
|
|||||||
|
2005-01-12 Don Allingham <dallingham@users.sourceforge.net>
|
||||||
|
* src/DateDisplay.py: Make DateDisplayEn inherit from DateDisplay, make
|
||||||
|
DateDisplay handle only ISO dates
|
||||||
|
* src/DateHandler.py: use DateDisplayEn for English languages, use
|
||||||
|
DateDisplay for CJK
|
||||||
|
* src/GrampsCfg.py: Don't do initial redisplay of Person List when
|
||||||
|
dialog comes up, update dates dynamically when date format changes
|
||||||
|
|
||||||
2005-01-12 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
2005-01-12 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||||
* src/DisplayModels.py: Add Date and Place columns to Media model;
|
* src/DisplayModels.py: Add Date and Place columns to Media model;
|
||||||
Zip to Place model.
|
Zip to Place model.
|
||||||
|
@ -31,24 +31,8 @@ __version__ = "$Revision$"
|
|||||||
import Date
|
import Date
|
||||||
import locale
|
import locale
|
||||||
|
|
||||||
|
|
||||||
class DateDisplay:
|
class DateDisplay:
|
||||||
"""
|
|
||||||
U.S English date display class.
|
|
||||||
"""
|
|
||||||
|
|
||||||
formats = (
|
|
||||||
"YYYY-MM-DD (ISO)", "Numerical", "Month Day, Year",
|
|
||||||
"MON DAY, YEAR", "Day Month Year", "DAY MON YEAR"
|
|
||||||
)
|
|
||||||
|
|
||||||
calendar = (
|
|
||||||
""," (Julian)"," (Hebrew)"," (French Republican)",
|
|
||||||
" (Persian)"," (Islamic)"
|
|
||||||
)
|
|
||||||
|
|
||||||
_mod_str = ("","before ","after ","about ","","","")
|
|
||||||
|
|
||||||
_qual_str = ("","estimated ","calculated ")
|
|
||||||
|
|
||||||
# determine the code set returned by nl_langinfo
|
# determine the code set returned by nl_langinfo
|
||||||
_codeset = locale.nl_langinfo(locale.CODESET)
|
_codeset = locale.nl_langinfo(locale.CODESET)
|
||||||
@ -117,6 +101,104 @@ class DateDisplay:
|
|||||||
"Ramadan", "Shawwal", "Dhu l-Qa`da", "Dhu l-Hijja"
|
"Ramadan", "Shawwal", "Dhu l-Qa`da", "Dhu l-Hijja"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
formats = ("YYYY-MM-DD (ISO)",)
|
||||||
|
|
||||||
|
calendar = (
|
||||||
|
""," (Julian)"," (Hebrew)"," (French Republican)",
|
||||||
|
" (Persian)"," (Islamic)"
|
||||||
|
)
|
||||||
|
|
||||||
|
_mod_str = ("","before ","after ","about ","","","")
|
||||||
|
|
||||||
|
_qual_str = ("","estimated ","calculated ")
|
||||||
|
|
||||||
|
def __init__(self,format=None):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def set_format(self,format):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def verify_format(self,format):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def quote_display(self,date):
|
||||||
|
"""
|
||||||
|
Similar to the display task, except that if the value is a text only
|
||||||
|
value, it is enclosed in quotes.
|
||||||
|
"""
|
||||||
|
if date.get_modifier() == Date.MOD_TEXTONLY:
|
||||||
|
return '"%s"' % self.display(date)
|
||||||
|
else:
|
||||||
|
return self.display(date)
|
||||||
|
|
||||||
|
def display(self,date):
|
||||||
|
"""
|
||||||
|
Returns a text string representing the date.
|
||||||
|
"""
|
||||||
|
mod = date.get_modifier()
|
||||||
|
cal = date.get_calendar()
|
||||||
|
qual = date.get_quality()
|
||||||
|
start = date.get_start_date()
|
||||||
|
|
||||||
|
qual_str = self._qual_str[qual]
|
||||||
|
|
||||||
|
if mod == Date.MOD_TEXTONLY:
|
||||||
|
return date.get_text()
|
||||||
|
elif start == Date.EMPTY:
|
||||||
|
return ""
|
||||||
|
elif mod == Date.MOD_SPAN or mod == Date.MOD_RANGE:
|
||||||
|
d1 = self.display_iso(start)
|
||||||
|
d2 = self.display_iso(date.get_stop_date())
|
||||||
|
return "%s %s - %s%s" % (qual_str,d1,d2,self.calendar[cal])
|
||||||
|
elif mod == Date.MOD_RANGE:
|
||||||
|
d1 = self.display_iso(start)
|
||||||
|
d2 = self.display_cal[cal](date.get_stop_date())
|
||||||
|
return "%s %s - %s%s" % (qual_str,d1,d2,self.calendar[cal])
|
||||||
|
else:
|
||||||
|
text = self.display_iso(start)
|
||||||
|
return "%s%s%s%s" % (qual_str,self._mod_str[mod],text,self.calendar[cal])
|
||||||
|
|
||||||
|
def _slash_year(self,val,slash):
|
||||||
|
bc = ""
|
||||||
|
if val < 0:
|
||||||
|
val = - val
|
||||||
|
bc = " B.C.E"
|
||||||
|
|
||||||
|
if slash:
|
||||||
|
return "%d/%d%s" % (val,(val%10)+1,bc)
|
||||||
|
else:
|
||||||
|
return "%d%s" % (val,bc)
|
||||||
|
|
||||||
|
def display_iso(self,date_val):
|
||||||
|
# YYYY-MM-DD (ISO)
|
||||||
|
year = self._slash_year(date_val[2],date_val[3])
|
||||||
|
if date_val[0] == 0:
|
||||||
|
if date_val[1] == 0:
|
||||||
|
value = year
|
||||||
|
else:
|
||||||
|
value = "%s-%02d" % (year,date_val[1])
|
||||||
|
else:
|
||||||
|
value = "%s-%02d-%02d" % (year,date_val[1],date_val[0])
|
||||||
|
return value
|
||||||
|
|
||||||
|
def text_display(self,date):
|
||||||
|
"""
|
||||||
|
Similar to the display task, except that if the value is a text only
|
||||||
|
value, it is enclosed in quotes.
|
||||||
|
"""
|
||||||
|
return date.get_text()
|
||||||
|
|
||||||
|
|
||||||
|
class DateDisplayEn(DateDisplay):
|
||||||
|
"""
|
||||||
|
English language date display class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
formats = (
|
||||||
|
"YYYY-MM-DD (ISO)", "Numerical", "Month Day, Year",
|
||||||
|
"MON DAY, YEAR", "Day Month Year", "DAY MON YEAR"
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self,format=None):
|
def __init__(self,format=None):
|
||||||
"""
|
"""
|
||||||
Creates a DateDisplay class that converts a Date object to a string
|
Creates a DateDisplay class that converts a Date object to a string
|
||||||
@ -142,30 +224,6 @@ class DateDisplay:
|
|||||||
def set_format(self,format):
|
def set_format(self,format):
|
||||||
self.format = format
|
self.format = format
|
||||||
|
|
||||||
def verify_format(self,format):
|
|
||||||
"""
|
|
||||||
Verifies that the format value is within the correct range.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
#assert(format < len(self.formats)-1)
|
|
||||||
|
|
||||||
def quote_display(self,date):
|
|
||||||
"""
|
|
||||||
Similar to the display task, except that if the value is a text only
|
|
||||||
value, it is enclosed in quotes.
|
|
||||||
"""
|
|
||||||
if date.get_modifier() == Date.MOD_TEXTONLY:
|
|
||||||
return '"%s"' % self.display(date)
|
|
||||||
else:
|
|
||||||
return self.display(date)
|
|
||||||
|
|
||||||
def text_display(self,date):
|
|
||||||
"""
|
|
||||||
Similar to the display task, except that if the value is a text only
|
|
||||||
value, it is enclosed in quotes.
|
|
||||||
"""
|
|
||||||
return date.get_text()
|
|
||||||
|
|
||||||
def display(self,date):
|
def display(self,date):
|
||||||
"""
|
"""
|
||||||
Returns a text string representing the date.
|
Returns a text string representing the date.
|
||||||
@ -193,28 +251,10 @@ class DateDisplay:
|
|||||||
text = self.display_cal[date.get_calendar()](start)
|
text = self.display_cal[date.get_calendar()](start)
|
||||||
return "%s%s%s%s" % (qual_str,self._mod_str[mod],text,self.calendar[cal])
|
return "%s%s%s%s" % (qual_str,self._mod_str[mod],text,self.calendar[cal])
|
||||||
|
|
||||||
def _slash_year(self,val,slash):
|
|
||||||
bc = ""
|
|
||||||
if val < 0:
|
|
||||||
val = - val
|
|
||||||
bc = " B.C.E"
|
|
||||||
|
|
||||||
if slash:
|
|
||||||
return "%d/%d%s" % (val,(val%10)+1,bc)
|
|
||||||
else:
|
|
||||||
return "%d%s" % (val,bc)
|
|
||||||
|
|
||||||
def _display_gregorian(self,date_val):
|
def _display_gregorian(self,date_val):
|
||||||
year = self._slash_year(date_val[2],date_val[3])
|
year = self._slash_year(date_val[2],date_val[3])
|
||||||
if self.format == 0:
|
if self.format == 0:
|
||||||
# YYYY-MM-DD (ISO)
|
value = self.display_iso(date_val)
|
||||||
if date_val[0] == 0:
|
|
||||||
if date_val[1] == 0:
|
|
||||||
value = year
|
|
||||||
else:
|
|
||||||
value = "%s-%02d" % (year,date_val[1])
|
|
||||||
else:
|
|
||||||
value = "%s-%02d-%02d" % (year,date_val[1],date_val[0])
|
|
||||||
elif self.format == 1:
|
elif self.format == 1:
|
||||||
if date_val[0] == 0 and date_val[1] == 0:
|
if date_val[0] == 0 and date_val[1] == 0:
|
||||||
value = str(date_val[2])
|
value = str(date_val[2])
|
||||||
@ -267,14 +307,7 @@ class DateDisplay:
|
|||||||
def _display_calendar(self,date_val,month_list):
|
def _display_calendar(self,date_val,month_list):
|
||||||
year = date_val[2]
|
year = date_val[2]
|
||||||
if self.format == 0 or self.format == 1:
|
if self.format == 0 or self.format == 1:
|
||||||
# YYYY-MM-DD (ISO)
|
return self.display_iso(date_val)
|
||||||
if date_val[0] == 0:
|
|
||||||
if date_val[1] == 0:
|
|
||||||
return year
|
|
||||||
else:
|
|
||||||
return "%d-%d" % (year,date_val[1])
|
|
||||||
else:
|
|
||||||
return "%d-%d-%d" % (year,date_val[1],date_val[0])
|
|
||||||
else:
|
else:
|
||||||
if date_val[0] == 0:
|
if date_val[0] == 0:
|
||||||
if date_val[1] == 0:
|
if date_val[1] == 0:
|
||||||
|
@ -58,13 +58,19 @@ _lang_to_parser = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_lang_to_display = {
|
_lang_to_display = {
|
||||||
'C' : DateDisplay.DateDisplay,
|
'C' : DateDisplay.DateDisplayEn,
|
||||||
'en_US' : DateDisplay.DateDisplay,
|
'en_US' : DateDisplay.DateDisplayEn,
|
||||||
'en_GB' : DateDisplay.DateDisplay,
|
'en_GB' : DateDisplay.DateDisplayEn,
|
||||||
'en_AU' : DateDisplay.DateDisplay,
|
'en_AU' : DateDisplay.DateDisplayEn,
|
||||||
'en_CA' : DateDisplay.DateDisplay,
|
'en_CA' : DateDisplay.DateDisplayEn,
|
||||||
'en_SE' : DateDisplay.DateDisplay,
|
'en_SE' : DateDisplay.DateDisplayEn,
|
||||||
'en' : DateDisplay.DateDisplay,
|
'en' : DateDisplay.DateDisplayEn,
|
||||||
|
'zh_CN' : DateDisplay.DateDisplay,
|
||||||
|
'zh_TW' : DateDisplay.DateDisplay,
|
||||||
|
'zh_SG' : DateDisplay.DateDisplay,
|
||||||
|
'zh_HK' : DateDisplay.DateDisplay,
|
||||||
|
'ja_JP' : DateDisplay.DateDisplay,
|
||||||
|
'ko_KR' : DateDisplay.DateDisplay,
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_date_formats():
|
def get_date_formats():
|
||||||
@ -78,7 +84,7 @@ def get_date_formats():
|
|||||||
|
|
||||||
def set_format(value):
|
def set_format(value):
|
||||||
try:
|
try:
|
||||||
_lang_to_display[_lang].set_format(value)
|
displayer.set_format(value)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -85,6 +85,11 @@ def set_calendar_date_format():
|
|||||||
format_list = DateHandler.get_date_formats()
|
format_list = DateHandler.get_date_formats()
|
||||||
DateHandler.set_format(GrampsKeys.get_date_format(format_list))
|
DateHandler.set_format(GrampsKeys.get_date_format(format_list))
|
||||||
|
|
||||||
|
def _update_calendar_date_format(active,dlist):
|
||||||
|
GrampsKeys.save_date_format(active,dlist)
|
||||||
|
format_list = DateHandler.get_date_formats()
|
||||||
|
DateHandler.set_format(active)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# make_path -
|
# make_path -
|
||||||
@ -273,11 +278,6 @@ class GrampsPreferences:
|
|||||||
store.append(row=[item])
|
store.append(row=[item])
|
||||||
|
|
||||||
date_option.set_model(store)
|
date_option.set_model(store)
|
||||||
date_option.connect("changed",
|
|
||||||
lambda obj:
|
|
||||||
GrampsKeys.save_date_format(obj.get_active(),dlist)
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Technically, a selected format might be out of range
|
# Technically, a selected format might be out of range
|
||||||
# for this locale's format list.
|
# for this locale's format list.
|
||||||
@ -285,6 +285,10 @@ class GrampsPreferences:
|
|||||||
except:
|
except:
|
||||||
date_option.set_active(0)
|
date_option.set_active(0)
|
||||||
|
|
||||||
|
date_option.connect("changed",
|
||||||
|
lambda obj:
|
||||||
|
_update_calendar_date_format(obj.get_active(),dlist)
|
||||||
|
)
|
||||||
|
|
||||||
resname = self.top.get_widget("resname")
|
resname = self.top.get_widget("resname")
|
||||||
resname.set_text(GrampsKeys.get_researcher_name())
|
resname.set_text(GrampsKeys.get_researcher_name())
|
||||||
|
Loading…
Reference in New Issue
Block a user