def draw_event(self, cr, event, period): try: area = self.area_from_start_end(period.start, period.end).shrink(3, 0) except DateNotVisible: return #shapes.filled_box(cr, area, settings.default_event_bg_color) shapes.rounded_rect(cr, area, 5) m = cairo.Matrix() m.scale(1.0/area.width, 1.0/area.height) m.translate(-area.x, -area.y) settings.default_event_bg_color.set_matrix(m) cr.set_source(settings.default_event_bg_color) cr.fill_preserve() #cr.set_line_width(1.0) cr.set_source(settings.default_event_outline_color) settings.default_event_outline_color.set_matrix(m) #cr.set_antialias(cairo.ANTIALIAS_SUBPIXEL) cr.stroke() if (self.selected and (event == self.selected[0]) and (period.ordinal == self.selected[1]) and (self.cursor_showing)): cursor_pos = self.ti.get_cursor_pos() else: cursor_pos = -1 lyt = shapes.left_aligned_text(cr, area.shrink(1, 3), event.description, settings.default_event_text_color, cursor_pos) self.occurrences[(event, period.ordinal)] = (event, area, period)
def paint(self, cr): cr.identity_matrix() cr.scale(self.scale, self.scale) self.clear_background(cr) cr.set_source(settings.grid_line_color) cr.set_line_width(settings.grid_line_width) events = self.sort_allday_events_by_date() x = self.get_week_pixel_offset() cr.save() cr.set_antialias(cairo.ANTIALIAS_NONE) for i in xrange(0, (self.days_visible()) + 1): x += self.day_width cr.move_to (x, 0) cr.line_to (x, self.height) cr.stroke() cr.restore() cr.save() cr.rectangle(self.day_width, 0, self.width - self.day_width, self.height) cr.clip() for date, evts in events.iteritems(): y = 0 x = self.date_to_x(date) for event in evts: th = shapes.text_height(cr, self.day_width, event) area = shapes.Area(x, y + 2, self.day_width, th).shrink(3, 0) shapes.filled_box(cr, area, settings.default_event_bg_color, settings.default_event_outline_color) shapes.left_aligned_text(cr, area, event, settings.default_event_text_color) y += 20 cr.restore() self.draw_comfort_lines(cr)