def draw_marquee(self, cr): if not self.selection_recurrence: return s, e = self.dates_visible() for instance in self.selection_recurrence.timedOccurrences(s, e): try: area = self.area_from_start_end(instance.start, instance.end).shrink(2, 0) except DateNotVisible: return shapes.filled_box(cr, area, settings.marquee_fill_color) cr.set_source(settings.marquee_text_color) text = instance.start.strftime ("%X") shapes.text_above(cr, text, area.x, area.y - 2, area.width) text = instance.end.strftime ("%X") shapes.text_below(cr, text, area.x, area.y2 + 2, area.width) duration = instance.duration m = int (duration.seconds / 60) % 60 h = int (duration.seconds / 60 / 60) text = "%dh %dm" % (h, m) shapes.centered_text(cr, area, text, settings.text_color)
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)