| 186 | |
| 187 | |
| 188 | class SvgDraggableCircleResizeRadius(gui.SvgRectangle, DraggableItem): |
| 189 | def __init__(self, app_instance, compatibility_iterable, **kwargs): |
| 190 | self.w = 15 |
| 191 | self.h = 15 |
| 192 | super(SvgDraggableCircleResizeRadius, self).__init__( |
| 193 | 0, 0, self.w, self.h, **kwargs) |
| 194 | DraggableItem.__init__(self, app_instance, **kwargs) |
| 195 | self.attributes['stroke-dasharray'] = "2,2" |
| 196 | self.set_stroke(1, 'black') |
| 197 | self.set_fill('#ffcc00') |
| 198 | self.compatibility_iterable = compatibility_iterable |
| 199 | self.onmousedown.do(self.start_drag) |
| 200 | |
| 201 | def setup(self, refWidget, newParent): |
| 202 | if type(refWidget) in self.compatibility_iterable or refWidget == None: |
| 203 | DraggableItem.setup(self, refWidget, newParent) |
| 204 | |
| 205 | def on_drag(self, emitter, x, y): |
| 206 | if self.active: |
| 207 | if self.origin_x == -1: |
| 208 | self.origin_x = float(x) |
| 209 | self.origin_y = float(y) |
| 210 | self.refWidget_origin_r = float(self.refWidget.attributes['r']) |
| 211 | else: |
| 212 | r = self.round_grid( |
| 213 | self.refWidget_origin_r + float(x) - self.origin_x) |
| 214 | self.refWidget.attributes['r'] = str(max(0, r)) |
| 215 | self.update_position() |
| 216 | |
| 217 | def update_position(self): |
| 218 | if self.refWidget: |
| 219 | self.set_position(float(self.refWidget.attributes['cx'])+float( |
| 220 | self.refWidget.attributes['r'])-self.w/2, float(self.refWidget.attributes['cy'])-self.h/2) |
| 221 | |
| 222 | |
| 223 | class ResizeHelper(gui.Widget, DraggableItem): |