| 147 | |
| 148 | |
| 149 | class SvgDraggableRectangleResizePoint(gui.SvgRectangle, DraggableItem): |
| 150 | def __init__(self, app_instance, compatibility_iterable, **kwargs): |
| 151 | self.w = 15 |
| 152 | self.h = 15 |
| 153 | super(SvgDraggableRectangleResizePoint, self).__init__( |
| 154 | 0, 0, self.w, self.h, **kwargs) |
| 155 | DraggableItem.__init__(self, app_instance, **kwargs) |
| 156 | self.attributes['stroke-dasharray'] = "2,2" |
| 157 | self.set_stroke(1, 'black') |
| 158 | self.set_fill('#ffcc00') |
| 159 | self.compatibility_iterable = compatibility_iterable |
| 160 | self.onmousedown.do(self.start_drag) |
| 161 | |
| 162 | def setup(self, refWidget, newParent): |
| 163 | if type(refWidget) in self.compatibility_iterable or refWidget == None: |
| 164 | DraggableItem.setup(self, refWidget, newParent) |
| 165 | |
| 166 | def on_drag(self, emitter, x, y): |
| 167 | if self.active: |
| 168 | if self.origin_x == -1: |
| 169 | self.origin_x = float(x) |
| 170 | self.origin_y = float(y) |
| 171 | self.refWidget_origin_w = float( |
| 172 | self.refWidget.attributes['width']) |
| 173 | self.refWidget_origin_h = float( |
| 174 | self.refWidget.attributes['height']) |
| 175 | else: |
| 176 | self.refWidget.attributes['width'] = self.round_grid( |
| 177 | self.refWidget_origin_w + float(x) - self.origin_x) |
| 178 | self.refWidget.attributes['height'] = self.round_grid( |
| 179 | self.refWidget_origin_h + float(y) - self.origin_y) |
| 180 | self.update_position() |
| 181 | |
| 182 | def update_position(self): |
| 183 | if self.refWidget: |
| 184 | self.set_position(float(self.refWidget.attributes['x'])+float(self.refWidget.attributes['width'])-self.w/2, float( |
| 185 | self.refWidget.attributes['y'])+float(self.refWidget.attributes['height'])-self.h/2) |
| 186 | |
| 187 | |
| 188 | class SvgDraggableCircleResizeRadius(gui.SvgRectangle, DraggableItem): |