# Copyright 2008 by Peter Moxhay and Wade Brainerd. # This file is part of Math. # # Math is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Math is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Math. If not, see . from objectarea import Object from vector import Vector import gtk, rsvg WALK_SVG = rsvg.Handle('walk.svg') class ProgressObject(Object): """Horizontal indicator of progress through a lesson.""" def __init__(self, pos, num_steps): Object.__init__(self) self.pos = pos self.num_steps = num_steps self.cur_step = 0 self.draggable = False self.selectable = False def set_step(self, step): self.cur_step = step def take_a_step(self): self.cur_step += 1 def draw(self, cr): for i in xrange(0, self.num_steps): if i < self.cur_step: cr.set_source_rgb(0.4, 1.0, 0.4) elif i == self.cur_step: cr.set_source_rgb(0.9, 0.9, 0.0) else: cr.set_source_rgb(0.4, 0.4, 0.4) cr.rectangle(self.pos.x + i*80, self.pos.y + 88, 60, 10) cr.fill() cr.translate(self.pos.x + self.cur_step * 80, self.pos.y) #cr.scale(0.5, 0.5) WALK_SVG.render_cairo(cr) def get_bounds(self): return self.pos, self.pos + Vector(self.num_steps * 15, 20)