* src/plugins/Calendar.py: 0000858: Patch for calendar enhancements and new Birthday Report
* src/plugins/holidays.xml: add holidays for France svn: r7969
This commit is contained in:
parent
d4a93c5f12
commit
26c47734b7
@ -1,6 +1,9 @@
|
||||
2007-01-24 Douglas Blank <dblank@cs.brynmawr.edu>
|
||||
* src/docgen/PdfDoc.py: 0000870: docgen/PdfDoc.py offset error,
|
||||
and missing italics
|
||||
* src/plugins/Calendar.py: 0000858: Patch for calendar enhancements
|
||||
and new Birthday Report
|
||||
* src/plugins/holidays.xml: add holidays for France
|
||||
|
||||
2007-01-23 Don Allingham <don@gramps-project.org>
|
||||
* src/DataViews/_MediaView.py: add view option
|
||||
|
@ -201,40 +201,41 @@ class Calendar(Report):
|
||||
width = self.doc.get_usable_width()
|
||||
height = self.doc.get_usable_height()
|
||||
header = self.doc.tmargin
|
||||
self.draw_rectangle("border", 0, 0, width, height)
|
||||
self.doc.draw_bar("title", 0, 0, width, header)
|
||||
self.doc.draw_line("border", 0, header, width, header)
|
||||
self.draw_rectangle("CAL-Border", 0, 0, width, height)
|
||||
self.doc.draw_bar("CAL-Title", 0, 0, width, header)
|
||||
self.doc.draw_line("CAL-Border", 0, header, width, header)
|
||||
year = self["year"]
|
||||
title = "%s %d" % (GrampsLocale.long_months[month], year)
|
||||
font_height = pt2cm(1.25 * self["title"].get_size())
|
||||
self.doc.center_text("title", title, width/2, font_height + self["offset"]) # 1.0
|
||||
font_height = pt2cm(self["CAL-Title"].get_size())
|
||||
self.doc.center_text("CAL-Title", title, width/2, font_height * 0.25)
|
||||
cell_width = width / 7
|
||||
cell_height = (height - header)/ 6
|
||||
current_date = datetime.date(year, month, 1)
|
||||
spacing = pt2cm(1.25 * self["text"].get_size()) # 158
|
||||
spacing = pt2cm(1.25 * self["CAL-Text"].get_size()) # 158
|
||||
if current_date.isoweekday() != 7: # start dow here is 7, sunday
|
||||
current_ord = current_date.toordinal() - current_date.isoweekday()
|
||||
else:
|
||||
current_ord = current_date.toordinal()
|
||||
for day_col in range(7):
|
||||
self.doc.center_text("daynames",
|
||||
GrampsLocale.long_days[day_col+1], # global
|
||||
font_height = pt2cm(self["CAL-Daynames"].get_size())
|
||||
self.doc.center_text("CAL-Daynames",
|
||||
GrampsLocale.long_days[day_col+1],
|
||||
day_col * cell_width + cell_width/2,
|
||||
header - font_height/3.0 + self["offset"]) # .35
|
||||
header - font_height * 1.5)
|
||||
for week_row in range(6):
|
||||
something_this_week = 0
|
||||
for day_col in range(7):
|
||||
thisday = current_date.fromordinal(current_ord)
|
||||
if thisday.month == month:
|
||||
something_this_week = 1
|
||||
self.draw_rectangle("border", day_col * cell_width,
|
||||
self.draw_rectangle("CAL-Border", day_col * cell_width,
|
||||
header + week_row * cell_height,
|
||||
(day_col + 1) * cell_width,
|
||||
header + (week_row + 1) * cell_height)
|
||||
last_edge = (day_col + 1) * cell_width
|
||||
self.doc.center_text("numbers", str(thisday.day),
|
||||
self.doc.center_text("CAL-Numbers", str(thisday.day),
|
||||
day_col * cell_width + cell_width/2,
|
||||
header + week_row * cell_height + .5 + self["offset"])
|
||||
header + week_row * cell_height)
|
||||
list = self.calendar.get(month, {}).get(thisday.day, [])
|
||||
position = 0.0
|
||||
for p in list:
|
||||
@ -242,17 +243,17 @@ class Calendar(Report):
|
||||
position += (lines * spacing)
|
||||
current = 0
|
||||
for line in p.split("\n"):
|
||||
self.doc.write_at("text", line,
|
||||
self.doc.draw_text("CAL-Text", line,
|
||||
day_col * cell_width + 0.1,
|
||||
header + (week_row + 1) * cell_height - position + (current * spacing) - 0.1)
|
||||
current += 1
|
||||
current_ord += 1
|
||||
if not something_this_week:
|
||||
last_edge = 0
|
||||
font_height = pt2cm(1.25 * self["text1style"].get_size())
|
||||
self.doc.center_text("text1style", self["text1"], last_edge + (width - last_edge)/2, height - font_height * 3 + self["offset"]) # - 1.5
|
||||
self.doc.center_text("text2style", self["text2"], last_edge + (width - last_edge)/2, height - font_height * 2 + self["offset"]) # - 0.78
|
||||
self.doc.center_text("text3style", self["text3"], last_edge + (width - last_edge)/2, height - font_height * 1 + self["offset"]) # - 0.30
|
||||
font_height = pt2cm(1.5 * self["CAL-Text1style"].get_size())
|
||||
self.doc.center_text("CAL-Text1style", self["text1"], last_edge + (width - last_edge)/2, height - font_height * 3)
|
||||
self.doc.center_text("CAL-Text2style", self["text2"], last_edge + (width - last_edge)/2, height - font_height * 2)
|
||||
self.doc.center_text("CAL-Text3style", self["text3"], last_edge + (width - last_edge)/2, height - font_height * 1)
|
||||
self.doc.end_page()
|
||||
|
||||
def collect_data(self):
|
||||
@ -338,28 +339,26 @@ class CalendarReport(Calendar):
|
||||
# get data from database:
|
||||
self.collect_data()
|
||||
# generate the report:
|
||||
self.doc.start_page()
|
||||
self.doc.start_paragraph('title')
|
||||
self.doc.start_paragraph('BIR-Title')
|
||||
self.doc.write_text(str(self["titletext"]) + ": " + str(self["year"]))
|
||||
self.doc.end_paragraph()
|
||||
if self["text1"].strip() != "":
|
||||
self.doc.start_paragraph('text1style')
|
||||
self.doc.start_paragraph('BIR-Text1style')
|
||||
self.doc.write_text(str(self["text1"]))
|
||||
self.doc.end_paragraph()
|
||||
if self["text2"].strip() != "":
|
||||
self.doc.start_paragraph('text2style')
|
||||
self.doc.start_paragraph('BIR-Text2style')
|
||||
self.doc.write_text(str(self["text2"]))
|
||||
self.doc.end_paragraph()
|
||||
if self["text3"].strip() != "":
|
||||
self.doc.start_paragraph('text3style')
|
||||
self.doc.start_paragraph('BIR-Text3style')
|
||||
self.doc.write_text(str(self["text3"]))
|
||||
self.doc.end_paragraph()
|
||||
for month in range(1, 13):
|
||||
self.print_page(month)
|
||||
self.doc.end_page()
|
||||
def print_page(self, month):
|
||||
year = self["year"]
|
||||
self.doc.start_paragraph('monthstyle')
|
||||
self.doc.start_paragraph('BIR-Monthstyle')
|
||||
self.doc.write_text("%s %d" % (GrampsLocale.long_months[month], year))
|
||||
self.doc.end_paragraph()
|
||||
current_date = datetime.date(year, month, 1)
|
||||
@ -372,11 +371,11 @@ class CalendarReport(Calendar):
|
||||
for p in list:
|
||||
p = p.replace("\n", " ")
|
||||
if thisday not in started_day:
|
||||
self.doc.start_paragraph("daystyle")
|
||||
self.doc.write_text("%s %s\n" % (GrampsLocale.long_months[month], str(thisday.day)))
|
||||
self.doc.start_paragraph("BIR-Daystyle")
|
||||
self.doc.write_text("%s %s" % (GrampsLocale.long_months[month], str(thisday.day)))
|
||||
self.doc.end_paragraph()
|
||||
started_day[thisday] = 1
|
||||
self.doc.start_paragraph("datastyle")
|
||||
self.doc.start_paragraph("BIR-Datastyle")
|
||||
self.doc.write_text(p)
|
||||
self.doc.end_paragraph()
|
||||
current_ord += 1
|
||||
@ -472,12 +471,8 @@ class SelectionWidget(Widget):
|
||||
cell = gtk.CellRendererText()
|
||||
obj[keyword].pack_start(cell,True)
|
||||
obj[keyword].add_attribute(cell,'text',0)
|
||||
#index = 0
|
||||
for item in self["options"]:
|
||||
store.append(row=[item[2]])
|
||||
#if item[0] == default:
|
||||
# obj[keyword].set_active(index)
|
||||
#index = index + 1
|
||||
obj[keyword].set_active(self.option_object[keyword])
|
||||
if self["frame"] != None:
|
||||
dialog.add_frame_option(self["frame"], self["label"], obj[keyword]) # 4th is help
|
||||
@ -563,7 +558,10 @@ class StyleWidget(Widget):
|
||||
"bold" : 0,
|
||||
"italics" : 0,
|
||||
"type_face" : BaseDoc.FONT_SERIF,
|
||||
"fill_color": None,
|
||||
"fill_color": (0xFF,0xFF, 0xFF),
|
||||
"borders" : False,
|
||||
"justified" : "left",
|
||||
"indent" : 0.0,
|
||||
}
|
||||
def make_default_style(self, default_style):
|
||||
f = BaseDoc.FontStyle()
|
||||
@ -574,14 +572,34 @@ class StyleWidget(Widget):
|
||||
p = BaseDoc.ParagraphStyle()
|
||||
p.set_font(f)
|
||||
p.set_description(self["label"])
|
||||
default_style.add_style(self["name"],p)
|
||||
p.set(first_indent=self["indent"])
|
||||
if self["justified"] == "left":
|
||||
p.set_alignment(BaseDoc.PARA_ALIGN_LEFT)
|
||||
elif self["justified"] == "right":
|
||||
p.set_alignment(BaseDoc.PARA_ALIGN_RIGHT)
|
||||
elif self["justified"] == "center":
|
||||
p.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
|
||||
if self["borders"]:
|
||||
p.set_top_border(True)
|
||||
p.set_left_border(True)
|
||||
p.set_bottom_border(True)
|
||||
p.set_right_border(True)
|
||||
else:
|
||||
p.set_top_border(False)
|
||||
p.set_left_border(False)
|
||||
p.set_bottom_border(False)
|
||||
p.set_right_border(False)
|
||||
default_style.add_style(self["name"], p)
|
||||
def define_graphics_style(self, document):
|
||||
g = BaseDoc.GraphicsStyle()
|
||||
g.set_paragraph_style(self["name"])
|
||||
if self["fill_color"]:
|
||||
g.set_fill_color(self["fill_color"])
|
||||
g.set_fill_color(self["fill_color"])
|
||||
if self["borders"]:
|
||||
g.set_line_width(1)
|
||||
else:
|
||||
g.set_line_width(0)
|
||||
# FIXME: add all other graphics items (color, etc) here
|
||||
document.add_draw_style(self["name"],g)
|
||||
document.add_draw_style(self["name"], g)
|
||||
class FilterWidget(Widget):
|
||||
"""
|
||||
A filter widget. This doesn't have the GTK code here, but should.
|
||||
@ -751,15 +769,8 @@ class CalendarOptions(NewReportOptions):
|
||||
help = "Include holidays",
|
||||
valid_text = "Select to include holidays",
|
||||
),
|
||||
NumberWidget(self, label = _("Offset"),
|
||||
name = "offset",
|
||||
value = -0.5,
|
||||
help = "Distance to move text on page",
|
||||
valid_text = "Any number",
|
||||
frame = "Text Options"
|
||||
),
|
||||
StyleWidget(self, label = _('Title text and background color.'),
|
||||
name = "title",
|
||||
name = "CAL-Title",
|
||||
size = 20,
|
||||
italics = 1,
|
||||
bold = 1,
|
||||
@ -767,38 +778,40 @@ class CalendarOptions(NewReportOptions):
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
StyleWidget(self, label = _('Border lines of calendar boxes.'),
|
||||
name = "border",
|
||||
name = "CAL-Border",
|
||||
borders = True,
|
||||
),
|
||||
StyleWidget(self, label = _('Calendar day numbers.'),
|
||||
name = "numbers",
|
||||
name = "CAL-Numbers",
|
||||
size = 13,
|
||||
bold = 1,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
StyleWidget(self, label = _('Daily text display.'),
|
||||
name = "text",
|
||||
name = "CAL-Text",
|
||||
size = 9,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
StyleWidget(self, label = _('Days of the week text.'),
|
||||
name = "daynames",
|
||||
name = "CAL-Daynames",
|
||||
size = 12,
|
||||
italics = 1,
|
||||
bold = 1,
|
||||
fill_color = (0xEA,0xEA,0xEA),
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
StyleWidget(self, label = _('Text at bottom, line 1.'),
|
||||
name = "text1style",
|
||||
name = "CAL-Text1style",
|
||||
size = 12,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
StyleWidget(self, label = _('Text at bottom, line 2.'),
|
||||
name = "text2style",
|
||||
name = "CAL-Text2style",
|
||||
size = 12,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
StyleWidget(self, label = _('Text at bottom, line 3.'),
|
||||
name = "text3style",
|
||||
name = "CAL-Text3style",
|
||||
size = 9,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
@ -885,43 +898,49 @@ class CalendarReportOptions(NewReportOptions):
|
||||
valid_text = "Select to include holidays",
|
||||
),
|
||||
StyleWidget(self, label = _('Title text style'),
|
||||
name = "title",
|
||||
name = "BIR-Title",
|
||||
size = 14,
|
||||
bold = 1,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
justified = "center",
|
||||
),
|
||||
StyleWidget(self, label = _('Data text style'),
|
||||
name = "datastyle",
|
||||
name = "BIR-Datastyle",
|
||||
size = 12,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
indent = 1.0,
|
||||
),
|
||||
StyleWidget(self, label = _('Month text style'),
|
||||
name = "monthstyle",
|
||||
name = "BIR-Monthstyle",
|
||||
size = 12,
|
||||
bold = 1,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
),
|
||||
StyleWidget(self, label = _('Day text style'),
|
||||
name = "daystyle",
|
||||
name = "BIR-Daystyle",
|
||||
size = 12,
|
||||
bold = 1,
|
||||
italics = 1,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
indent = .5,
|
||||
),
|
||||
StyleWidget(self, label = _('Extra text style, line 1.'),
|
||||
name = "text1style",
|
||||
name = "BIR-Text1style",
|
||||
size = 12,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
justified = "center",
|
||||
),
|
||||
StyleWidget(self, label = _('Extra text style, line 2.'),
|
||||
name = "text2style",
|
||||
name = "BIR-Text2style",
|
||||
size = 12,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
justified = "center",
|
||||
),
|
||||
StyleWidget(self, label = _('Extra text style, line 3.'),
|
||||
name = "text3style",
|
||||
name = "BIR-Text3style",
|
||||
size = 12,
|
||||
type_face = BaseDoc.FONT_SERIF,
|
||||
justified = "center",
|
||||
),
|
||||
]
|
||||
|
||||
@ -1154,5 +1173,4 @@ register_report(
|
||||
author_name = "Douglas S. Blank",
|
||||
author_email = "dblank@cs.brynmawr.edu",
|
||||
description = _("Produces a report of birthdays and anniversaries"),
|
||||
unsupported = True,
|
||||
)
|
||||
|
@ -116,4 +116,37 @@
|
||||
<date name="Chinese New Year" value="2006/1/29" type="national" />
|
||||
<date name="Card Night" value="*/-1/thu/*" type="personal" />
|
||||
</country>
|
||||
<country name="FR">
|
||||
<date name="Jour de l'an" value="*/1/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="Fête nationale" value="*/7/14" type="national" />
|
||||
<date name="Armistice 1918" value="*/11/11" type="national" />
|
||||
<date name="Pâques" value="2007/4/8" type="religious" />
|
||||
<date name="Lundi de pâques" value="2007/4/9" type="religious" />
|
||||
<date name="Ascension" value="2007/5/17" type="religious" />
|
||||
<date name="Pentecôte" value="2007/5/27" type="religious" />
|
||||
<date name="Lundi de pentecôte" value="2007/5/28" type="religious" />
|
||||
<date name="Assomption" value="2007/8/15" type="religious" />
|
||||
<date name="Toussaint" value="2007/11/1" type="religious" />
|
||||
<date name="Noêl" value="*/12/25" type="religious" />
|
||||
<date name="Saint Etienne" value="*/12/26" type="religious" />
|
||||
<date name="Yom Kippur" value="2005/10/13" type="religious" />
|
||||
<date name="Yom Kippur" value="2006/10/02" type="religious" />
|
||||
<date name="Yom Kippur" value="2007/9/27" type="religious" />
|
||||
<date name="Yom Kippur" value="2008/10/09" type="religious" />
|
||||
<date name="Yom Kippur" value="2009/9/28" type="religious" />
|
||||
<date name="Yom Kippur" value="2010/9/18" type="religious" />
|
||||
<date name="début Hanukkah" value="2004/12/07" type="religious" />
|
||||
<date name="début Hanukkah" value="2005/12/25" type="religious" />
|
||||
<date name="début Hanukkah" value="2006/12/15" type="religious" />
|
||||
<date name="début Hanukkah" value="2007/12/04" type="religious" />
|
||||
<date name="début Hanukkah" value="2008/12/21" type="religious" />
|
||||
<date name="début Hanukkah" value="2009/12/11" type="religious" />
|
||||
<date name="début Hanukkah" value="2010/12/01" type="religious" />
|
||||
<date name="début Ramadan" value="2006/9/24" type="religious" />
|
||||
<date name="début Ramadan" value="2007/9/13" type="religious" />
|
||||
<date name="début Ramadan" value="2008/9/2" type="religious" />
|
||||
<date name="début Kwanzaa" value="*/12/26" type="religious" />
|
||||
</country>
|
||||
</calendar>
|
||||
|
Loading…
Reference in New Issue
Block a user