* src/plugins/Calendar.py: 0000871: Holidays do not work in Windows
* src/plugins/holidays.xml: 0000871: Holidays do not work in Windows svn: r7975
This commit is contained in:
parent
1e4fd3ef25
commit
0cebd61da3
@ -1,3 +1,7 @@
|
|||||||
|
2007-01-24 Douglas Blank <dblank@cs.brynmawr.edu>
|
||||||
|
* src/plugins/Calendar.py: 0000871: Holidays do not work in Windows
|
||||||
|
* src/plugins/holidays.xml: 0000871: Holidays do not work in Windows
|
||||||
|
|
||||||
2007-01-24 Brian Matherly <brian@gramps-project.org>
|
2007-01-24 Brian Matherly <brian@gramps-project.org>
|
||||||
* src/docgen/PSDrawDoc.py: 0000869: PostScript print option will crash
|
* src/docgen/PSDrawDoc.py: 0000869: PostScript print option will crash
|
||||||
* src/ReportBase/__init__.py: 0000869: PostScript print option will crash
|
* src/ReportBase/__init__.py: 0000869: PostScript print option will crash
|
||||||
|
@ -25,11 +25,11 @@ __version__ = "$Revision$"
|
|||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
from gettext import gettext as _
|
from gettext import gettext as _
|
||||||
import datetime, time
|
|
||||||
from xml.parsers import expat
|
from xml.parsers import expat
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
import const
|
import const
|
||||||
import os
|
import os
|
||||||
import locale
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -46,15 +46,10 @@ import GrampsLocale
|
|||||||
import RelLib
|
import RelLib
|
||||||
from Utils import probably_alive
|
from Utils import probably_alive
|
||||||
|
|
||||||
_language, _country = "en", "US"
|
|
||||||
(_language_country, _encoding) = locale.getlocale()
|
|
||||||
if _language_country != None and _language_country.count("_") == 1:
|
|
||||||
(_language, _country) = _language_country.split("_")
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# The one and only GUI, unfortunately. This will be able to be moved to
|
# The one and only GUI. This will be able to be moved to the
|
||||||
# Widget once it is created.
|
# Widget once it is finished.
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
import gtk
|
import gtk
|
||||||
@ -158,7 +153,7 @@ class Calendar(Report):
|
|||||||
month_dict[day] = day_list
|
month_dict[day] = day_list
|
||||||
self.calendar[month] = month_dict
|
self.calendar[month] = month_dict
|
||||||
|
|
||||||
def get_holidays(self, year, country = "US"):
|
def get_holidays(self, year, country = "United States"):
|
||||||
""" Looks in multiple places for holidays.xml files """
|
""" Looks in multiple places for holidays.xml files """
|
||||||
locations = [const.pluginsDir,
|
locations = [const.pluginsDir,
|
||||||
os.path.join(const.home_dir,"plugins")]
|
os.path.join(const.home_dir,"plugins")]
|
||||||
@ -185,8 +180,8 @@ class Calendar(Report):
|
|||||||
# initialize the dict to fill:
|
# initialize the dict to fill:
|
||||||
self.calendar = {}
|
self.calendar = {}
|
||||||
# get the information, first from holidays:
|
# get the information, first from holidays:
|
||||||
if self["holidays"]:
|
if self["country"] != 0: # Don't include holidays
|
||||||
self.get_holidays(self["year"], _country) # currently global
|
self.get_holidays(self["year"], _countries[self["country"]]) # _country is currently global
|
||||||
# get data from database:
|
# get data from database:
|
||||||
self.collect_data()
|
self.collect_data()
|
||||||
# generate the report:
|
# generate the report:
|
||||||
@ -334,8 +329,8 @@ class CalendarReport(Calendar):
|
|||||||
# initialize the dict to fill:
|
# initialize the dict to fill:
|
||||||
self.calendar = {}
|
self.calendar = {}
|
||||||
# get the information, first from holidays:
|
# get the information, first from holidays:
|
||||||
if self["holidays"]:
|
if self["country"] != 0:
|
||||||
self.get_holidays(self["year"], _country) # currently global
|
self.get_holidays(self["year"], _countries[self["country"]]) # currently global
|
||||||
# get data from database:
|
# get data from database:
|
||||||
self.collect_data()
|
self.collect_data()
|
||||||
# generate the report:
|
# generate the report:
|
||||||
@ -731,6 +726,13 @@ class CalendarOptions(NewReportOptions):
|
|||||||
help = "Year of calendar",
|
help = "Year of calendar",
|
||||||
valid_text = "Any year",
|
valid_text = "Any year",
|
||||||
),
|
),
|
||||||
|
SelectionWidget(self, label = _("Country for holidays"),
|
||||||
|
name = "country",
|
||||||
|
value = 0, # Don't include holidays
|
||||||
|
options = map(lambda c: ("", c, c), _countries),
|
||||||
|
help = "Select the country to see associated holidays.",
|
||||||
|
valid_text = "Select a country to see those holidays.",
|
||||||
|
),
|
||||||
SelectionWidget(self, label = _("Birthday surname"),
|
SelectionWidget(self, label = _("Birthday surname"),
|
||||||
name = "maiden_name",
|
name = "maiden_name",
|
||||||
value = 1,
|
value = 1,
|
||||||
@ -763,12 +765,6 @@ class CalendarOptions(NewReportOptions):
|
|||||||
help = "Include anniversaries",
|
help = "Include anniversaries",
|
||||||
valid_text = "Select to include anniversaries",
|
valid_text = "Select to include anniversaries",
|
||||||
),
|
),
|
||||||
CheckWidget(self, label = _("Include holidays"),
|
|
||||||
name = "holidays",
|
|
||||||
value = 1,
|
|
||||||
help = "Include holidays",
|
|
||||||
valid_text = "Select to include holidays",
|
|
||||||
),
|
|
||||||
StyleWidget(self, label = _('Title text and background color.'),
|
StyleWidget(self, label = _('Title text and background color.'),
|
||||||
name = "CAL-Title",
|
name = "CAL-Title",
|
||||||
size = 20,
|
size = 20,
|
||||||
@ -859,6 +855,13 @@ class CalendarReportOptions(NewReportOptions):
|
|||||||
help = "Year of report",
|
help = "Year of report",
|
||||||
valid_text = "Any year",
|
valid_text = "Any year",
|
||||||
),
|
),
|
||||||
|
SelectionWidget(self, label = _("Country for holidays"),
|
||||||
|
name = "country",
|
||||||
|
value = 0, # Don't include holidays
|
||||||
|
options = map(lambda c: ("", c, c), _countries),
|
||||||
|
help = "Select the country to see associated holidays.",
|
||||||
|
valid_text = "Select a country to see those holidays.",
|
||||||
|
),
|
||||||
SelectionWidget(self, label = _("Birthday surname"),
|
SelectionWidget(self, label = _("Birthday surname"),
|
||||||
name = "maiden_name",
|
name = "maiden_name",
|
||||||
value = 1,
|
value = 1,
|
||||||
@ -891,12 +894,6 @@ class CalendarReportOptions(NewReportOptions):
|
|||||||
help = "Include anniversaries",
|
help = "Include anniversaries",
|
||||||
valid_text = "Select to include anniversaries",
|
valid_text = "Select to include anniversaries",
|
||||||
),
|
),
|
||||||
CheckWidget(self, label = _("Include holidays"),
|
|
||||||
name = "holidays",
|
|
||||||
value = 1,
|
|
||||||
help = "Include holidays",
|
|
||||||
valid_text = "Select to include holidays",
|
|
||||||
),
|
|
||||||
StyleWidget(self, label = _('Title text style'),
|
StyleWidget(self, label = _('Title text style'),
|
||||||
name = "BIR-Title",
|
name = "BIR-Title",
|
||||||
size = 14,
|
size = 14,
|
||||||
@ -1145,9 +1142,42 @@ class Holidays:
|
|||||||
retval.append(rule["name"])
|
retval.append(rule["name"])
|
||||||
return retval
|
return retval
|
||||||
|
|
||||||
|
def get_countries():
|
||||||
|
""" Looks in multiple places for holidays.xml files """
|
||||||
|
locations = [const.pluginsDir,
|
||||||
|
os.path.join(const.home_dir,"plugins")]
|
||||||
|
holiday_file = 'holidays.xml'
|
||||||
|
country_list = []
|
||||||
|
for dir in locations:
|
||||||
|
holiday_full_path = os.path.join(dir, holiday_file)
|
||||||
|
if os.path.exists(holiday_full_path):
|
||||||
|
cs = process_holiday_file(holiday_full_path)
|
||||||
|
for c in cs:
|
||||||
|
if c not in country_list:
|
||||||
|
country_list.append(c)
|
||||||
|
country_list.sort()
|
||||||
|
country_list.insert(0, _("Don't include holidays"))
|
||||||
|
return country_list
|
||||||
|
|
||||||
|
def process_holiday_file(filename):
|
||||||
|
""" This will process a holiday file for country names """
|
||||||
|
parser = Xml2Obj()
|
||||||
|
element = parser.Parse(filename)
|
||||||
|
country_list = []
|
||||||
|
for country_set in element.children:
|
||||||
|
if country_set.name == "country":
|
||||||
|
if country_set.attributes["name"] not in country_list:
|
||||||
|
country_list.append(country_set.attributes["name"])
|
||||||
|
return country_list
|
||||||
|
|
||||||
|
## Currently reads the XML file on load. Could move this someplace else
|
||||||
|
## so it only loads when needed.
|
||||||
|
|
||||||
|
_countries = get_countries()
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Register this plugin
|
# Register the plugins
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
register_report(
|
register_report(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
<calendar>
|
<calendar>
|
||||||
<country name="US">
|
<country name="United States">
|
||||||
<date name="New Year's Day" value="*/1/1" type="national" />
|
<date name="New Year's Day" value="*/1/1" type="national" />
|
||||||
<date name="Independence Day" value="*/7/4" type="national" />
|
<date name="Independence Day" value="*/7/4" type="national" />
|
||||||
<date name="Veterans Day" value="*/11/11" type="national" />
|
<date name="Veterans Day" value="*/11/11" type="national" />
|
||||||
@ -109,14 +109,14 @@
|
|||||||
<date name="Kwanzaa begins" value="*/12/26" type="religious" />
|
<date name="Kwanzaa begins" value="*/12/26" type="religious" />
|
||||||
<date name="Cinco de Mayo" value="*/5/5" type="secular" />
|
<date name="Cinco de Mayo" value="*/5/5" type="secular" />
|
||||||
</country>
|
</country>
|
||||||
<country name="CN">
|
<country name="China">
|
||||||
<date name="Chinese New Year" value="2006/1/29" type="national" />
|
<date name="Chinese New Year" value="2006/1/29" type="national" />
|
||||||
</country>
|
</country>
|
||||||
<country name="FI">
|
<country name="Finland">
|
||||||
<date name="Chinese New Year" value="2006/1/29" type="national" />
|
<date name="Chinese New Year" value="2006/1/29" type="national" />
|
||||||
<date name="Card Night" value="*/-1/thu/*" type="personal" />
|
<date name="Card Night" value="*/-1/thu/*" type="personal" />
|
||||||
</country>
|
</country>
|
||||||
<country name="FR">
|
<country name="France">
|
||||||
<date name="Jour de l'an" value="*/1/1" type="national" />
|
<date name="Jour de l'an" value="*/1/1" type="national" />
|
||||||
<date name="Fête du travail" value="*/5/1" type="national" />
|
<date name="Fête du travail" value="*/5/1" type="national" />
|
||||||
<date name="Victoire 1945" value="*/5/8" type="national" />
|
<date name="Victoire 1945" value="*/5/8" type="national" />
|
||||||
|
Loading…
Reference in New Issue
Block a user