| 269 | |
| 270 | |
| 271 | class DragHelper(gui.Widget, DraggableItem): |
| 272 | |
| 273 | def __init__(self, app_instance, **kwargs): |
| 274 | super(DragHelper, self).__init__(**kwargs) |
| 275 | DraggableItem.__init__(self, app_instance, **kwargs) |
| 276 | self.style['float'] = 'none' |
| 277 | self.style['background-image'] = "url('/editor_resources:drag.png')" |
| 278 | self.style['background-color'] = "rgba(255,255,255,0.0)" |
| 279 | self.style['position'] = 'absolute' |
| 280 | self.style['left'] = '0px' |
| 281 | self.style['top'] = '0px' |
| 282 | self.onmousedown.do(self.start_drag) |
| 283 | |
| 284 | def setup(self, refWidget, newParent): |
| 285 | self.style['display'] = 'none' |
| 286 | if issubclass(newParent.__class__, gui.TabBox): |
| 287 | return |
| 288 | if issubclass(refWidget.__class__, gui.Widget) and 'left' in refWidget.style and 'top' in refWidget.style and refWidget.css_position=='absolute': |
| 289 | DraggableItem.setup(self, refWidget, newParent) |
| 290 | self.style['display'] = 'block' |
| 291 | |
| 292 | def on_drag(self, emitter, x, y): |
| 293 | if self.active: |
| 294 | if self.origin_x == -1: |
| 295 | self.origin_x = float(x) |
| 296 | self.origin_y = float(y) |
| 297 | self.refWidget_origin_x = gui.from_pix( |
| 298 | self.refWidget.style['left']) |
| 299 | self.refWidget_origin_y = gui.from_pix( |
| 300 | self.refWidget.style['top']) |
| 301 | else: |
| 302 | self.refWidget.style['left'] = gui.to_pix(self.round_grid( |
| 303 | self.refWidget_origin_x + float(x) - self.origin_x)) |
| 304 | self.refWidget.style['top'] = gui.to_pix(self.round_grid( |
| 305 | self.refWidget_origin_y + float(y) - self.origin_y)) |
| 306 | self.update_position() |
| 307 | |
| 308 | def update_position(self): |
| 309 | self.style['position'] = 'absolute' |
| 310 | if self.refWidget: |
| 311 | if 'left' in self.refWidget.style and 'top' in self.refWidget.style: |
| 312 | self.style['left'] = gui.to_pix(gui.from_pix( |
| 313 | self.refWidget.style['left'])-gui.from_pix(self.style['width'])) |
| 314 | self.style['top'] = gui.to_pix(gui.from_pix( |
| 315 | self.refWidget.style['top'])-gui.from_pix(self.style['width'])) |
| 316 | |
| 317 | |
| 318 | class Project(gui.Container): |