コード例 #1
0
ファイル: Tree.py プロジェクト: anandology/pyjamas
    def onBrowserEvent(self, event):
        etype = DOM.eventGetType(event)

        if etype == "click":
            e = DOM.eventGetTarget(event)
            if not self.shouldTreeDelegateFocusToElement(e) and \
                            self.curSelection is not None:
                self.setFocus(True)
        elif etype in MouseListener.MOUSE_EVENTS:
            if etype == "mousedown":
                self.elementClicked(self.root, DOM.eventGetTarget(event))
            MouseListener.fireMouseEvent(self.mouseListeners, self, event)
        elif etype == "blur" or etype == "focus":
            FocusListener.fireFocusEvent(self.focusListeners, self, event)
        elif etype == "keydown":
            if self.curSelection is None:
                if self.root.getChildCount() > 0:
                    self.onSelection(self.root.getChild(0), True)
                Widget.onBrowserEvent(self, event)
                return

            if self.lastEventType == "keydown":
                return

            keycode = DOM.eventGetKeyCode(event)
            if keycode == KeyboardListener.KEY_UP:
                self.moveSelectionUp(self.curSelection, True)
                DOM.eventPreventDefault(event)
            elif keycode == KeyboardListener.KEY_DOWN:
                self.moveSelectionDown(self.curSelection, True)
                DOM.eventPreventDefault(event)
            elif keycode == KeyboardListener.KEY_LEFT:
                if self.curSelection.getState():
                    self.curSelection.setState(False)
                DOM.eventPreventDefault(event)
            elif keycode == KeyboardListener.KEY_RIGHT:
                if not self.curSelection.getState():
                    self.curSelection.setState(True)
                DOM.eventPreventDefault(event)
        elif etype == "keyup":
            if DOM.eventGetKeyCode(event) == KeyboardListener.KEY_TAB:
                chain = []
                self.collectElementChain(chain, self.getElement(),
                                         DOM.eventGetTarget(event))
                item = self.findItemByChain(chain, 0, self.root)
                if item != self.getSelectedItem():
                    self.setSelectedItem(item, True)
        elif etype == "keypress":
            KeyboardListener.fireKeyboardEvent(self.keyboardListeners,
                                               self, event)

        Widget.onBrowserEvent(self, event)
        self.lastEventType = etype
コード例 #2
0
ファイル: Tree.py プロジェクト: lindh04/ultimateTicTacToe
    def onBrowserEvent(self, event):
        etype = DOM.eventGetType(event)

        if etype == "click":
            e = DOM.eventGetTarget(event)
            if not self.shouldTreeDelegateFocusToElement(e) and \
                            self.curSelection is not None:
                self.setFocus(True)
        elif etype in MouseListener.MOUSE_EVENTS:
            if etype == "mousedown":
                self.elementClicked(self.root, DOM.eventGetTarget(event))
            MouseListener.fireMouseEvent(self.mouseListeners, self, event)
        elif etype == "blur" or etype == "focus":
            FocusListener.fireFocusEvent(self.focusListeners, self, event)
        elif etype == "keydown":
            if self.curSelection is None:
                if self.root.getChildCount() > 0:
                    self.onSelection(self.root.getChild(0), True)
                Widget.onBrowserEvent(self, event)
                return

            if self.lastEventType == "keydown":
                return

            keycode = DOM.eventGetKeyCode(event)
            if keycode == KeyboardListener.KEY_UP:
                self.moveSelectionUp(self.curSelection, True)
                DOM.eventPreventDefault(event)
            elif keycode == KeyboardListener.KEY_DOWN:
                self.moveSelectionDown(self.curSelection, True)
                DOM.eventPreventDefault(event)
            elif keycode == KeyboardListener.KEY_LEFT:
                if self.curSelection.getState():
                    self.curSelection.setState(False)
                DOM.eventPreventDefault(event)
            elif keycode == KeyboardListener.KEY_RIGHT:
                if not self.curSelection.getState():
                    self.curSelection.setState(True)
                DOM.eventPreventDefault(event)
        elif etype == "keyup":
            if DOM.eventGetKeyCode(event) == KeyboardListener.KEY_TAB:
                chain = []
                self.collectElementChain(chain, self.getElement(),
                                         DOM.eventGetTarget(event))
                item = self.findItemByChain(chain, 0, self.root)
                if item != self.getSelectedItem():
                    self.setSelectedItem(item, True)
        elif etype == "keypress":
            KeyboardListener.fireKeyboardEvent(self.keyboardListeners, self,
                                               event)

        Widget.onBrowserEvent(self, event)
        self.lastEventType = etype
コード例 #3
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragStart(self, event):
     dt = event.dataTransfer
     target = DOM.eventGetTarget(event)
     target = Widget(Element=target)
     id = target.getID()
     dt.setData("Text", "Dropped %s" % target.getID())
     dt.effectAllowed = 'copy'
     if id == 'imgdrag1':
         parent = self.getParent()
         while not hasattr(parent, 'h2'):
             parent = parent.getParent()
         dt.setDragImage(parent.h2.getElement(), 10, 10)
     elif id == 'imgdrag2':
         dt.setDragImage(doc().getElementById('logo'), 10, 10)
     elif id == 'imgdrag3':
         # OK, it's a bit of a cheat, but the following works on current
         # Opera, IE, Firefox, Safari, Chrome.
         ctx = GWTCanvas(50, 50)
         self.makeCanvasImg(ctx)
         try:
             img = DOM.createImg()
             DOM.setAttribute(img, 'src', ctx.canvas.toDataURL())
             dt.setDragImage(img, 25, 25)
         except:
             dt.setDragImage(ctx.canvas, 25, 25)
コード例 #4
0
def setDragStartPosition(event):  #, undo):
    dt = event.dataTransfer
    target = DOM.eventGetTarget(event)
    clientX, clientY = event.clientX, event.clientY
    absx, absy = clientX + Window.getScrollLeft(
    ), clientY + Window.getScrollTop()

    # para arrastar um component ou bloco entre abas
    from edu.uca.renderable.block.Block import Block
    from edu.uca.util.Serializable import saveStackBlock
    from edu.uca.Workspace import getWorkspace
    from edu.uca.renderable.hardware.ComponentBlock import ComponentBlock
    from edu.uca.util.Serializable import saveComponent
    if (isinstance(getWorkspace().getMovingBlock(), ComponentBlock)):
        package = json.dumps({
            "offsetX":
            absx - DOM.getAbsoluteLeft(target),  # armagenar a origem para undo
            "offsetY":
            absy - DOM.getAbsoluteTop(target),
            "componetHardware":
            saveComponent(getWorkspace().getMovingBlock())
        })
    elif (isinstance(getWorkspace().getMovingBlock(), Block)):
        package = json.dumps({
            "offsetX":
            absx - DOM.getAbsoluteLeft(target),  # armagenar a origem para undo
            "offsetY":
            absy - DOM.getAbsoluteTop(target),
            "stackBlock":
            saveStackBlock(getWorkspace().getMovingBlock())
        })

    dt.setData('text', package)
    dt.allowedEffects = 'copy'  # using "copy" here because Windows Chrome does not like "move"
コード例 #5
0
def getCurrentOffsetPosition(event):
    target = DOM.eventGetTarget(event)
    clientX, clientY = event.clientX, event.clientY  # pega pos absoluta do ponteiro do mouse
    absx, absy = clientX + Window.getScrollLeft(
    ), clientY + Window.getScrollTop()  # ? - sempre 0,0
    return absx - DOM.getAbsoluteLeft(target), absy - DOM.getAbsoluteTop(
        target)  # subtrai pos xy do blockspad
コード例 #6
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragStart(self, event):
     dt = event.dataTransfer
     target = DOM.eventGetTarget(event)
     target = Widget(Element=target)
     id = target.getID()
     dt.setData("Text", "Dropped %s" % target.getID())
     dt.effectAllowed = 'copy'
     if id == 'imgdrag1':
         parent = self.getParent()
         while not hasattr(parent, 'h2'):
             parent = parent.getParent()
         dt.setDragImage(parent.h2.getElement(), 10, 10)
     elif id == 'imgdrag2':
         dt.setDragImage(doc().getElementById('logo'), 10, 10)
     elif id == 'imgdrag3':
         # OK, it's a bit of a cheat, but the following works on current
         # Opera, IE, Firefox, Safari, Chrome.
         ctx = GWTCanvas(50, 50)
         self.makeCanvasImg(ctx)
         try:
             img = DOM.createImg()
             DOM.setAttribute(img, 'src', ctx.canvas.toDataURL())
             dt.setDragImage(img, 25, 25)
         except:
             dt.setDragImage(ctx.canvas, 25, 25)
 def onEventPreview(self, event):
     type = DOM.eventGetType(event)
     if type == "click":
         target = DOM.eventGetTarget(event)
         parentMenuElement = self.item.getParentMenu().getElement()
         if DOM.isOrHasChild(parentMenuElement, target):
             return False
     return PopupPanel.onEventPreview(self, event)
コード例 #8
0
 def onEventPreview(self, event):
     type = DOM.eventGetType(event)
     if type == "click":
         target = DOM.eventGetTarget(event)
         parentMenuElement = self.item.getParentMenu().getElement()
         if DOM.isOrHasChild(parentMenuElement, target):
             return False
     return PopupPanel.onEventPreview(self, event)
コード例 #9
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragOver(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     dt = event.dataTransfer
     dt.dropEffect = 'copy'
     class_names = t.getStyleName()
     if class_names is not None:
         if 'drophere' in class_names:
             DOM.eventPreventDefault(event)
コード例 #10
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragOver(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     dt = event.dataTransfer
     dt.dropEffect = 'copy'
     class_names = t.getStyleName()
     if class_names is not None:
         if 'drophere' in class_names:
             DOM.eventPreventDefault(event)
コード例 #11
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragStart(self, event):
     target = DOM.eventGetTarget(event)
     dt = event.dataTransfer
     try:
         id = Widget(Element=target).getID()
     except:
         id = ''
     dt.setData("Text", "Dropped %s" % id)
     effect_allowed = self.data[int(id[-1])]
     dt.effectAllowed = effect_allowed
コード例 #12
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragStart(self, event):
     target = DOM.eventGetTarget(event)
     dt = event.dataTransfer
     try:
         id = Widget(Element=target).getID()
     except:
         id = ''
     dt.setData("Text", "Dropped %s" % id)
     effect_allowed = self.data[int(id[-1])]
     dt.effectAllowed = effect_allowed
コード例 #13
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragLeave(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     try:
         class_names = t.getStyleName()
     except:
         class_names = None
     if class_names is not None:
         if 'drophere' in class_names:
             t.removeStyleName('dragover')
コード例 #14
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragLeave(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     try:
         class_names = t.getStyleName()
     except:
         class_names = None
     if class_names is not None:
         if 'drophere' in class_names:
             t.removeStyleName('dragover')
コード例 #15
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDrop(self, event):
     dt = event.dataTransfer
     text = dt.getData('Text')
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     class_names = t.getStyleName()
     if class_names is not None:
         if 'drophere' in class_names:
             self.addMessage('%s onto %s<br>effectAllowed=%s, dropEffect=%s'
             % (text, target.id, dt.effectAllowed, dt.dropEffect))
             DOM.eventPreventDefault(event)
コード例 #16
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragEnter(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     try:
         class_names = t.getStyleName()
     except:
         class_names = None
     if class_names is not None:
         if 'drophere' in class_names:
             t.addStyleName('dragover')
             DOM.eventPreventDefault(event)
コード例 #17
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragOver(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     class_names = t.getStyleName()
     if class_names is not None:
         if 'drophere' in class_names:
             dt = event.dataTransfer
             id = Widget(Element=target).getID()
             drop_effect = self.data[int(id[-1])]
             dt.dropEffect = drop_effect
             DOM.eventPreventDefault(event)
コード例 #18
0
ファイル: Popups.py プロジェクト: wkornewald/pyjs
 def onEventPreview(self, event):
     # preventDefault on mousedown events, outside of the
     # dialog, to stop text-selection on dragging
     type = DOM.eventGetType(event)
     if type == 'mousedown':
         target = DOM.eventGetTarget(event)
         elem = self.caption.getElement()
         event_targets_popup = target and DOM.isOrHasChild(elem, target)
         if event_targets_popup:
             DOM.eventPreventDefault(event)
     return PopupPanel.onEventPreview(self, event)
コード例 #19
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDrop(self, event):
     dt = event.dataTransfer
     text = dt.getData('Text')
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     class_names = t.getStyleName()
     DOM.eventPreventDefault(event)
     if class_names is not None:
         if 'drophere' in class_names:
             self.addMessage('%s onto %s' % (text, target.id))
             return
コード例 #20
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragOver(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     class_names = t.getStyleName()
     if class_names is not None:
         if 'drophere' in class_names:
             dt = event.dataTransfer
             id = Widget(Element=target).getID()
             drop_effect = self.data[int(id[-1])]
             dt.dropEffect = drop_effect
             DOM.eventPreventDefault(event)
コード例 #21
0
    def onEventPreview(self, event):
        type = DOM.eventGetType(event)
        if type == "click":
            target = DOM.eventGetTarget(event)
            parentMenuElement = self.item.getElement()
            if DOM.isOrHasChild(parentMenuElement, target):
                if self.item.onBrowserEvent(event):
                    self.hide()
                return True

        return PopupPanel.onEventPreview(self, event)
コード例 #22
0
ファイル: PopupPagina.py プロジェクト: nielsonsantana/emath
 def onEventPreview(self, event):
     # preventDefault on mousedown events, outside of the
     # dialog, to stop text-selection on dragging
     type = DOM.eventGetType(event)
     if type == "mousedown":
         target = DOM.eventGetTarget(event)
         elem = self.caption.getElement()
         event_targets_popup = target and DOM.isOrHasChild(elem, target)
         if event_targets_popup:
             DOM.eventPreventDefault(event)
     return PopupPanel.onEventPreview(self, event)
コード例 #23
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragEnter(self, event):
     target = DOM.eventGetTarget(event)
     t = Widget(Element=target)
     try:
         class_names = t.getStyleName()
     except:
         class_names = None
     if class_names is not None:
         if 'drophere' in class_names:
             t.addStyleName('dragover')
             DOM.eventPreventDefault(event)
コード例 #24
0
    def onEventPreview(self, event):
        type = DOM.eventGetType(event)
        if type == "click":
            target = DOM.eventGetTarget(event)
            parentMenuElement = self.item.getElement()
            if DOM.isOrHasChild(parentMenuElement, target):
                if self.item.onBrowserEvent(event):
                    self.hide()
                return True

        return PopupPanel.onEventPreview(self, event)
コード例 #25
0
 def onEventPreview(self, event):
     # preventDefault on mousedown events, outside of the
     # dialog, to stop text-selection on dragging
     type = DOM.eventGetType(event)
     print "onEventPreview", event, type
     if type == 'mousedown':
         target = DOM.eventGetTarget(event)
         event_targets_control = target and DOM.isOrHasChild(self.getElement(), target)
         print "onEventPreview", target, event_targets_control
         if event_targets_control:
             DOM.eventPreventDefault(event)
     return VerticalSliderDemo.onEventPreview(self, event)
コード例 #26
0
    def getEventTargetCell(self, event):
        td = DOM.eventGetTarget(event)
        while td is not None:
            if DOM.getAttribute(td, "tagName").lower() == "td":
                tr = DOM.getParent(td)
                body = DOM.getParent(tr)
                if DOM.compare(body, self.bodyElem):
                    return td
            if DOM.compare(td, self.bodyElem):
                return None
            td = DOM.getParent(td)

        return None
コード例 #27
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragStart(self, event):
     self.removeStyleName('drop_fail')
     dt = event.dataTransfer
     dt.effectAllowed = 'copy'
     target = DOM.eventGetTarget(event)
     widget = None
     for widget in self.children:
         if widget.getElement() == target:
             self.movingWidget = widget
             break
     dt.setData('Text', json.encode({'name': widget.student_name,
                                     'age': widget.age,
                                     'parent': self.getID()}))
コード例 #28
0
ファイル: HTMLTable.py プロジェクト: andreyvit/pyjamas
    def getEventTargetCell(self, event):
        td = DOM.eventGetTarget(event)
        while td is not None:
            if DOM.getAttribute(td, "tagName").lower() == "td":
                tr = DOM.getParent(td)
                body = DOM.getParent(tr)
                if DOM.compare(body, self.bodyElem):
                    return td
            if DOM.compare(td, self.bodyElem):
                return None
            td = DOM.getParent(td)

        return None
コード例 #29
0
    def onEventPreview(self, event):
        type = DOM.eventGetType(event)
        if type == "click":
            target = DOM.eventGetTarget(event)
            parentMenuElement = self.item.getElement()
            if DOM.isOrHasChild(parentMenuElement, target):
                if self.item.findItem(target):
                    self.hide()
                    DOM.eventCancelBubble(event, True)
                    DOM.eventStopPropagation(event)

                return True

        return PopupPanel.onEventPreview(self, event)
コード例 #30
0
    def onEventPreview(self, event):
        type = DOM.eventGetType(event)
        if type == "click":
            target = DOM.eventGetTarget(event)
            parentMenuElement = self.item.getElement()
            if DOM.isOrHasChild(parentMenuElement, target):
                if self.item.findItem(target):
                    self.hide()
                    DOM.eventCancelBubble(event, True)
                    DOM.eventStopPropagation(event)

                return True

        return PopupPanel.onEventPreview(self, event)
コード例 #31
0
    def onBrowserEvent(self, event):
        Widget.onBrowserEvent(self, event)

        item = self.findItem(DOM.eventGetTarget(event))
        if item is None:
            return False

        type = DOM.eventGetType(event)
        if type == "click":
            self.doItemAction(item, True)
            return True
        elif type == "mouseover":
            self.itemOver(item)
        elif type == "mouseout":
            self.itemOver(None)

        return False
コード例 #32
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragStart(self, event):
     dt = event.dataTransfer
     target = DOM.eventGetTarget(event)
     clientX = event.clientX
     clientY = event.clientY
     absx = clientX + Window.getScrollLeft()
     absy = clientY + Window.getScrollTop()
     package = json.encode({"text": DOM.getInnerText(target),
                            "offsetX": absx - DOM.getAbsoluteLeft(target),
                            "offsetY": absy - DOM.getAbsoluteTop(target)})
     dt.setData('text', package)
     # using "copy" here because Windows Chrome does not like "move"
     dt.allowedEffects = 'copy'
     self.movingWidget = None
     for widget in self.children:
         if target == widget.getElement():
             self.movingWidget = widget
コード例 #33
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragStart(self, event):
     self.removeStyleName('drop_fail')
     dt = event.dataTransfer
     dt.effectAllowed = 'copy'
     target = DOM.eventGetTarget(event)
     widget = None
     for widget in self.children:
         if widget.getElement() == target:
             self.movingWidget = widget
             break
     dt.setData(
         'Text',
         json.encode({
             'name': widget.student_name,
             'age': widget.age,
             'parent': self.getID()
         }))
コード例 #34
0
ファイル: MenuBar.py プロジェクト: FreakTheMighty/pyjamas
    def onBrowserEvent(self, event):
        Widget.onBrowserEvent(self, event)

        item = self.findItem(DOM.eventGetTarget(event))
        if item is None:
            return False

        type = DOM.eventGetType(event)
        if type == "click":
            self.doItemAction(item, True)
            return True
        elif type == "mouseover":
            self.itemOver(item)
        elif type == "mouseout":
            self.itemOver(None)

        return False
コード例 #35
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragStart(self, event):
     dt = event.dataTransfer
     target = DOM.eventGetTarget(event)
     clientX = event.clientX
     clientY = event.clientY
     absx = clientX + Window.getScrollLeft()
     absy = clientY + Window.getScrollTop()
     package = json.encode({
         "text": DOM.getInnerText(target),
         "offsetX": absx - DOM.getAbsoluteLeft(target),
         "offsetY": absy - DOM.getAbsoluteTop(target)
     })
     dt.setData('text', package)
     # using "copy" here because Windows Chrome does not like "move"
     dt.allowedEffects = 'copy'
     self.movingWidget = None
     for widget in self.children:
         if target == widget.getElement():
             self.movingWidget = widget
コード例 #36
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragStart(self, event):
     dt = event.dataTransfer
     target = DOM.eventGetTarget(event)
     target = Widget(Element=target)
     try:
         id = target.getID()
     except:
         id = ''
     if id == 'datadrag0':
         dt.setData('text/plain', 'Hello World!')
     elif id == 'datadrag1':
         logo = doc().getElementById('logo')
         logo_parent_element = DOM.getParent(logo)
         text = DOM.getInnerText(logo_parent_element)
         html = DOM.getInnerHTML(logo_parent_element)
         uri = DOM.getAttribute(logo, 'src')
         dt.setData('text/plain', text)
         dt.setData('text/html', html)
         dt.setData('text/uri-list', uri)
     elif id == 'datadrag2':
         dt.setData('x-star-trek/tribble', 'I am a tribble')
コード例 #37
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragStart(self, event):
     dt = event.dataTransfer
     target = DOM.eventGetTarget(event)
     target = Widget(Element=target)
     try:
         id = target.getID()
     except:
         id = ''
     if id == 'datadrag0':
         dt.setData('text/plain', 'Hello World!')
     elif id == 'datadrag1':
         logo = doc().getElementById('logo')
         logo_parent_element = DOM.getParent(logo)
         text = DOM.getInnerText(logo_parent_element)
         html = DOM.getInnerHTML(logo_parent_element)
         uri = DOM.getAttribute(logo, 'src')
         dt.setData('text/plain', text)
         dt.setData('text/html', html)
         dt.setData('text/uri-list', uri)
     elif id == 'datadrag2':
         dt.setData('x-star-trek/tribble', 'I am a tribble')
コード例 #38
0
    def onBrowserEvent(self, event):
        typ = DOM.eventGetType(event)

        if typ == "mousedown":
            target = DOM.eventGetTarget(event)
            if DOM.isOrHasChild(self.splitElem, target):
                self.startResizingFrom(
                    DOM.eventGetClientX(event) - self.getAbsoluteLeft(),
                    DOM.eventGetClientY(event) - self.getAbsoluteTop())
                DOM.setCapture(self.getElement())
                DOM.eventPreventDefault(event)

        elif typ == "mouseup":
            DOM.releaseCapture(self.getElement())
            self.stopResizing()

        elif typ == 'mousemove':
            if self.isResizing:
                #assert DOM.getCaptureElement() is not None
                self.onSplitterResize(
                    DOM.eventGetClientX(event) - self.getAbsoluteLeft(),
                    DOM.eventGetClientY(event) - self.getAbsoluteTop())
                DOM.eventPreventDefault(event)
コード例 #39
0
ファイル: splitpanel.py プロジェクト: certik/pyjamas
    def onBrowserEvent(self, event):
        typ = DOM.eventGetType(event)

        if typ == "mousedown":
            target = DOM.eventGetTarget(event)
            if DOM.isOrHasChild(self.splitElem, target):
                self.startResizingFrom(DOM.eventGetClientX(event) -
                                       self.getAbsoluteLeft(),
                          DOM.eventGetClientY(event) - self.getAbsoluteTop())
                DOM.setCapture(self.getElement())
                DOM.eventPreventDefault(event)

        elif typ == "mouseup":
            DOM.releaseCapture(self.getElement())
            self.stopResizing()

        elif typ == 'mousemove':
            if self.isResizing:
                #assert DOM.getCaptureElement() is not None
                self.onSplitterResize(DOM.eventGetClientX(event) -
                                      self.getAbsoluteLeft(),
                          DOM.eventGetClientY(event) - self.getAbsoluteTop())
                DOM.eventPreventDefault(event)
コード例 #40
0
ファイル: DragEvent.py プロジェクト: Afey/pyjs
 def setTarget(self, target=None):
     if target is not None:
         self.target = target
     else:
         self.target = DOM.eventGetTarget(self.evt)
コード例 #41
0
ファイル: CustomButton.py プロジェクト: Afey/pyjs
    def onBrowserEvent(self, event):
        # Should not act on button if disabled.
        if not self.isEnabled():
            # This can happen when events are bubbled up from
            # non-disabled children
            return

        event_type = DOM.eventGetType(event)

        if event_type == "click":
            # If clicks are currently disallowed, keep it from bubbling or
            # being passed to the superclass.
            if not self.allowClick:
                DOM.eventStopPropagation(event)
                return

        elif event_type == "mousedown":
            if DOM.eventGetButton(event) == Event.BUTTON_LEFT:
                self.setFocus(True)
                self.onClickStart()
                DOM.setCapture(self.getElement())
                self.isCapturing = True
                # Prevent dragging (on some browsers)
                DOM.eventPreventDefault(event)

        elif event_type == "mouseup":
            if self.isCapturing:
                self.isCapturing = False
                DOM.releaseCapture(self.getElement())
                if self.isHovering()  and  \
                   DOM.eventGetButton(event) == Event.BUTTON_LEFT:
                    self.onClick()

        elif event_type == "mousemove":
            if self.isCapturing:
                # Prevent dragging (on other browsers)
                DOM.eventPreventDefault(event)

        elif event_type == "mouseout":
            to = DOM.eventGetToElement(event)
            if (DOM.isOrHasChild(self.getElement(), DOM.eventGetTarget(event))
               and (to is None or not DOM.isOrHasChild(self.getElement(), to))):
                if self.isCapturing:
                    self.onClickCancel()
                self.setHovering(False)

        elif event_type == "mouseover":
            if DOM.isOrHasChild(self.getElement(), DOM.eventGetTarget(event)):
                self.setHovering(True)
                if self.isCapturing:
                    self.onClickStart()

        elif event_type == "blur":
            if self.isFocusing:
                self.isFocusing = False
                self.onClickCancel()

        elif event_type == "losecapture":
            if self.isCapturing:
                self.isCapturing = False
                self.onClickCancel()

        ButtonBase.onBrowserEvent(self, event)

        # Synthesize clicks based on keyboard events AFTER the normal
        # key handling.
        if (DOM.eventGetTypeInt(event) & Event.KEYEVENTS) == 0:
            return

        keyCode = DOM.eventGetKeyCode(event)
        if event_type == "keydown":
            if keyCode == ' ':
                self.isFocusing = True
                self.onClickStart()

        elif event_type == "keyup":
            if self.isFocusing  and  keyCode == ' ':
                self.isFocusing = False
                self.onClick()

        elif event_type == "keypress":
            if keyCode == '\n'  or  keyCode == '\r':
                self.onClickStart()
                self.onClick()
コード例 #42
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
 def onDragStart(self, event):
     target = DOM.eventGetTarget(event)
     dt = event.dataTransfer
     dt.setData("Text", "Dropped %s" % target.id)
     dt.effectAllowed = 'copy'
コード例 #43
0
 def onBrowserEvent(self, event):
     if DOM.eventGetType(event) == "click":
         index = self.getDividerIndex(DOM.eventGetTarget(event))
         if index != -1:
             self.showStack(index)
コード例 #44
0
ファイル: CustomButton.py プロジェクト: minghuascode/pyj
    def onBrowserEvent(self, event):
        # Should not act on button if disabled.
        if not self.getEnabled():
            # This can happen when events are bubbled up from
            # non-disabled children
            return

        event_type = DOM.eventGetType(event)

        if event_type == "click":
            # If clicks are currently disallowed, keep it from bubbling or
            # being passed to the superclass.
            if not self.allowClick:
                DOM.eventStopPropagation(event)
                return

        elif event_type == "mousedown":
            if DOM.eventGetButton(event) == Event.BUTTON_LEFT:
                self.setFocus(True)
                self.onClickStart()
                DOM.setCapture(self.getElement())
                self.isCapturing = True
                # Prevent dragging (on some browsers)
                DOM.eventPreventDefault(event)

        elif event_type == "mouseup":
            if self.isCapturing:
                self.isCapturing = False
                DOM.releaseCapture(self.getElement())
                if self.isHovering()  and  \
                   DOM.eventGetButton(event) == Event.BUTTON_LEFT:
                    self.onClick()

        elif event_type == "mousemove":
            if self.isCapturing:
                # Prevent dragging (on other browsers)
                DOM.eventPreventDefault(event)

        elif event_type == "mouseout":
            to = DOM.eventGetToElement(event)
            if (DOM.isOrHasChild(self.getElement(), DOM.eventGetTarget(event))
               and (to is None or not DOM.isOrHasChild(self.getElement(), to))):
                if self.isCapturing:
                    self.onClickCancel()
                self.setHovering(False)

        elif event_type == "mouseover":
            if DOM.isOrHasChild(self.getElement(), DOM.eventGetTarget(event)):
                self.setHovering(True)
                if self.isCapturing:
                    self.onClickStart()

        elif event_type == "blur":
            if self.isFocusing:
                self.isFocusing = False
                self.onClickCancel()

        elif event_type == "losecapture":
            if self.isCapturing:
                self.isCapturing = False
                self.onClickCancel()

        ButtonBase.onBrowserEvent(self, event)

        # Synthesize clicks based on keyboard events AFTER the normal
        # key handling.
        if (DOM.eventGetTypeInt(event) & Event.KEYEVENTS) == 0:
            return

        keyCode = DOM.eventGetKeyCode(event)
        if event_type == "keydown":
            if keyCode == ' ':
                self.isFocusing = True
                self.onClickStart()

        elif event_type == "keyup":
            if self.isFocusing  and  keyCode == ' ':
                self.isFocusing = False
                self.onClick()

        elif event_type == "keypress":
            if keyCode == '\n'  or  keyCode == '\r':
                self.onClickStart()
                self.onClick()
コード例 #45
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
 def onDragStart(self, event):
     target = DOM.eventGetTarget(event)
     dt = event.dataTransfer
     dt.setData("Text", "Dropped %s" % target.id)
     dt.effectAllowed = 'copy'
コード例 #46
0
 def _event_targets_btn(self, event):
     target = DOM.eventGetTarget(event)
     return target and DOM.isOrHasChild(self.btn.getElement(), target)
コード例 #47
0
ファイル: Control.py プロジェクト: Afey/pyjs
 def _event_targets_control(self, event):
     target = DOM.eventGetTarget(event)
     return target and DOM.isOrHasChild(self.getElement(), target)
コード例 #48
0
ファイル: StackPanel.py プロジェクト: Afey/pyjs
 def onBrowserEvent(self, event):
     if DOM.eventGetType(event) == "click":
         index = self.getDividerIndex(DOM.eventGetTarget(event))
         if index != -1:
             self.showStack(index)
コード例 #49
0
 def setTarget(self, target=None):
     if target is not None:
         self.target = target
     else:
         self.target = DOM.eventGetTarget(self.evt)
コード例 #50
0
ファイル: Override.py プロジェクト: brodybits/pyjs
 def _event_targets_title(self, event):
     target = DOM.eventGetTarget(event)
     return target and DOM.isOrHasChild(self.title.getElement(), target)