# 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 . DEBUG = False from objectarea import Object from draggableobject import DraggableObject from vector import Vector import gtk from movableobject import MovableObject from linesegmentobject import LineSegmentObject class LineSegmentMovableObject(MovableObject): """Draggable vertical line segment.""" def __init__(self, pos, length, drop_targets, container): MovableObject.__init__(self) if DEBUG: print "LineSegmentMovableObject: constructor called " self.pos = pos self.length = length if self.length == 200: self.line_segment_length = 162 else: self.line_segment_length = self.length self.selectable = True self.rotatable = False self.drag_copy = True self.drop_targets = drop_targets self.container = container def draw(self, cr): cr.move_to(self.pos.x - 25, self.pos.y + self.length - self.line_segment_length) cr.line_to(self.pos.x + 25, self.pos.y + self.length - self.line_segment_length) cr.move_to(self.pos.x - 25, self.pos.y + self.length) cr.line_to(self.pos.x + 25, self.pos.y + self.length) cr.move_to(self.pos.x, self.pos.y + self.length - self.line_segment_length) cr.line_to(self.pos.x, self.pos.y + self.length) cr.set_source_rgb(0, 0, 0) cr.set_line_width(8.0) cr.stroke() if self.selected: cr.rectangle(self.pos.x - 30, self.pos.y - 10 + self.length - self.line_segment_length, 60, self.line_segment_length + 20) cr.set_line_width(1.0) cr.set_dash((10, 10), 0) cr.set_source_rgb(0, 0, 0) cr.stroke() def get_bounds(self): mn = Vector(self.pos.x - 32, self.pos.y - 12 + self.length - self.line_segment_length) #mx = mn + Vector(64, self.line_segment_length + 24) mx = mn + Vector(64, self.line_segment_length + 21) return mn, mx