Mercurial > libervia-web
diff browser_side/tools.py @ 196:c2639c9f86ea
Browser Side: Widgets can now be moved, header (title bar) is draggable:
- DragLabel moved to tools
- new LiberviaDragWidget which manage currently dragged widget
- getLiberviaWidgetsCount give number of widget of WidgetsPanel
- LiberviaWidget's header has now its own class
- new "WIDGET" drag type
/!\ not fully finished, can crash if moved on the bad border (like last row border if the widget is the only one on this row)
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 05 Mar 2013 01:20:59 +0100 |
parents | 67365f17069e |
children | f7ec248192de |
line wrap: on
line diff
--- a/browser_side/tools.py Mon Mar 04 23:01:57 2013 +0100 +++ b/browser_side/tools.py Tue Mar 05 01:20:59 2013 +0100 @@ -19,6 +19,35 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. """ +from pyjamas.ui.DragWidget import DragWidget + def html_sanitize(html): """Naive sanitization of HTML""" return html.replace('<','<').replace('>','>') + +class DragLabel(DragWidget): + + def __init__(self, text, _type): + DragWidget.__init__(self) + self._text = text + self._type = _type + + def onDragStart(self, event): + dt = event.dataTransfer + dt.setData('text/plain', "%s\n%s" % (self._text, self._type)) + dt.setDragImage(self.getElement(), 15, 15) + +class LiberviaDragWidget(DragLabel): + """ A DragLabel which keep the widget being dragged as class value """ + current = None # widget currently dragged + + def __init__(self, text, _type, widget): + DragLabel.__init__(self, text, _type) + self.widget = widget + + def onDragStart(self, event): + LiberviaDragWidget.current = self.widget + DragLabel.onDragStart(self, event) + + def onDragEnd(self, event): + LiberviaDragWidget.current = None