# 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 ARROW_SVG = rsvg.Handle('next_arrow.svg') class NextProblemObject(Object): """Large clickable arrow which advances to the next problem.""" def __init__(self): Object.__init__(self) self.draggable = False self.selectable = True self.pressed = False def draw(self, cr): cr.save() cr.rectangle(0, 0, 1200, 900) cr.set_source_rgba(0.9, 0.9, 0.9, 0.5) cr.fill() cr.translate(600-250, 400-250) ARROW_SVG.render_cairo(cr) cr.restore() def get_bounds(self): return Vector(0, 0), Vector(1200,900) def on_mouse(self, event): if event.type == gtk.gdk.BUTTON_PRESS: self.pressed = True return True if self.pressed and event.type == gtk.gdk.BUTTON_RELEASE: self.container.finish_next_problem_arrow() return True def on_key(self, event): key_name = gtk.gdk.keyval_name(event.keyval) # Useful print for determining the names of keys. #print "NextProblemObject got a key press:",key_name if key_name == 'KP_Up' \ or key_name == 'KP_Down' \ or key_name == 'KP_Left' \ or key_name == 'KP_Right' \ or key_name == 'KP_Page_Up' \ or key_name == 'KP_Page_Down' \ or key_name == 'KP_End' \ or key_name == 'Return' \ or key_name == 'space': self.container.finish_next_problem_arrow() return True