コード例 #1
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
コード例 #2
0
ファイル: opf-gui.py プロジェクト: victormatheus/opf-gui
 def onMouseDown(self, sender, x, y):
   rx = x + Window.getScrollLeft()
   ry = y + Window.getScrollTop()
   if self.classify:
     self.PointList.append( Point(rx, ry, -1 ) )
   else:
     self.PointList.append( Point(rx, ry, len(self.color)-1) )
コード例 #3
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"
コード例 #4
0
ファイル: DNDTest.py プロジェクト: anandology/pyjamas
    def onDrop(self, event):
        dt = event.dataTransfer
        text = dt.getData('text')
        package = json.decode(text)
        x = DOM.eventGetClientX(event)
        y = DOM.eventGetClientY(event)
        scrollY = Window.getScrollTop()
        scrollX = Window.getScrollLeft()
        offsetX = int(package['offsetX'])
        offsetY = int(package['offsetY'])
        at = self.getAbsoluteTop()
        al = self.getAbsoluteLeft()
        posX, posY = x - (al - scrollX), y - (at - scrollY)
        w = DragWidget6(package['text'])
        self.add(w)
        makeDraggable(w)
        # firefox seems to be off-by-one in x.
        # firefox-specific code?
        #w.setStyleAttribute('left', posX - offsetX -1)
        w.setStyleAttribute('left', posX - offsetX)
        w.setStyleAttribute('top', posY - offsetY)
        w.removeStyleName('invisible')
        self.addMessage(
            "top:%s, left:%s, cy:%s cx:%s, sy:%s sx:%s dropy:%s dropx:%s" % (
            at, al, y, x, scrollY, scrollX, posY, posX))

        DOM.eventPreventDefault(event)
コード例 #5
0
ファイル: components.py プロジェクト: minghuascode/pyj
 def __init__(self, key, title, content):
     AbsolutePanel.__init__(self)
     self.edit_header = Label("Edit a Post", StyleName="header_label")
     self.edit_title_label = Label("Title:")
     self.edit_title = TextBox()
     self.edit_title.setMaxLength(255)
     self.edit_content = TextArea()
     self.edit_content.setVisibleLines(2)
     self.edit_button = Button("Save")
     self.edit_cancel_button = Button("Cancel")
     self.edit_hidden_key = Hidden()
     self.error_message_label = Label("", StyleName="error_message_label")
     edit_contents = VerticalPanel(StyleName="Contents", Spacing=4)
     edit_contents.add(self.edit_header)
     edit_contents.add(self.edit_title_label)
     edit_contents.add(self.edit_title)
     edit_contents.add(self.edit_content)
     edit_contents.add(self.edit_button)
     edit_contents.add(self.edit_cancel_button)
     edit_contents.add(self.error_message_label)
     edit_contents.add(self.edit_hidden_key)
     self.edit_dialog = DialogBox(glass=True)
     self.edit_dialog.setHTML('<b>Blog Post Form</b>')
     self.edit_dialog.setWidget(edit_contents)
     left = (Window.getClientWidth() - 900) / 2 + Window.getScrollLeft()
     top = (Window.getClientHeight() - 600) / 2 + Window.getScrollTop()
     self.edit_dialog.setPopupPosition(left, top)
     self.edit_dialog.hide()
コード例 #6
0
ファイル: DNDTest.py プロジェクト: trb116/pythonanalyzer
    def onDrop(self, event):
        dt = event.dataTransfer
        text = dt.getData('text')
        package = json.decode(text)
        x = DOM.eventGetClientX(event)
        y = DOM.eventGetClientY(event)
        scrollY = Window.getScrollTop()
        scrollX = Window.getScrollLeft()
        offsetX = int(package['offsetX'])
        offsetY = int(package['offsetY'])
        at = self.getAbsoluteTop()
        al = self.getAbsoluteLeft()
        posX, posY = x - (al - scrollX), y - (at - scrollY)
        w = DragWidget6(package['text'])
        self.add(w)
        makeDraggable(w)
        # firefox seems to be off-by-one in x.
        # firefox-specific code?
        #w.setStyleAttribute('left', posX - offsetX -1)
        w.setStyleAttribute('left', posX - offsetX)
        w.setStyleAttribute('top', posY - offsetY)
        w.removeStyleName('invisible')
        self.addMessage(
            "top:%s, left:%s, cy:%s cx:%s, sy:%s sx:%s dropy:%s dropx:%s" %
            (at, al, y, x, scrollY, scrollX, posY, posX))

        DOM.eventPreventDefault(event)
コード例 #7
0
 def onClick(self, sender=None):
     self.setFocus(True)
     # work out the relative position of cursor
     event = DOM.eventGetCurrentEvent()
     mouse_x = DOM.eventGetClientX(event) + Window.getScrollLeft()
     mouse_y = DOM.eventGetClientY(event) + Window.getScrollTop()
     self.moveControl(mouse_x - self.getAbsoluteLeft(),
                      mouse_y - self.getAbsoluteTop(), True)
コード例 #8
0
ファイル: Controls.py プロジェクト: emk/pyjamas
 def onClick(self, sender=None):
     self.setFocus(True);
     # work out the relative position of cursor
     event = DOM.eventGetCurrentEvent()
     mouse_x = DOM.eventGetClientX(event) + Window.getScrollLeft()
     mouse_y = DOM.eventGetClientY(event) + Window.getScrollTop()
     self.moveControl(mouse_x - self.getAbsoluteLeft(),
                      mouse_y - self.getAbsoluteTop())
コード例 #9
0
ファイル: Controls.py プロジェクト: emk/pyjamas
 def onMouseDown(self, sender, x, y):
     # regardless of drag_enabled, onMouseDown must prevent
     # default, in order to avoid losing focus.
     DOM.eventPreventDefault(DOM.eventGetCurrentEvent());
     if not self.drag_enabled:
         return
     self.dragging = True
     DOM.setCapture(self.getElement())
     self.moveControl(x + Window.getScrollLeft(), y + Window.getScrollTop())
コード例 #10
0
 def onMouseDown(self, sender, x, y):
     # regardless of drag_enabled, onMouseDown must prevent
     # default, in order to avoid losing focus.
     DOM.eventPreventDefault(DOM.eventGetCurrentEvent())
     if not self.drag_enabled:
         return
     self.dragging = True
     DOM.setCapture(self.getElement())
     self.moveControl(x + Window.getScrollLeft(), y + Window.getScrollTop())
コード例 #11
0
 def __init__(self, message, messageTitle="Error"):
     self.dialog = DialogBox(glass=True)
     self.dialog.setHTML("<b>" + messageTitle + "</b>")
     dialogContents = VerticalPanel(StyleName="Contents", Spacing=4)
     dialogContents.add(HTML(message))
     dialogContents.add(Button("Close", getattr(self, "onClose")))
     self.dialog.setWidget(dialogContents)
     left = (Window.getClientWidth() - 200) / 2 + Window.getScrollLeft()
     top = (Window.getClientHeight() - 100) / 2 + Window.getScrollTop()
     self.dialog.setPopupPosition(left, top)
     self.dialog.show()
コード例 #12
0
 def onMouseDown(self, sender, x, y):
     # regardless of drag_enabled, onMouseDown must prevent
     # default, in order to avoid losing focus.
     self.setFocus(True)
     DOM.eventPreventDefault(DOM.eventGetCurrentEvent())
     if not self.drag_enabled:
         return
     self.dragging = True
     GlassWidget.show(self)
     self.moveControl(x + Window.getScrollLeft(), y + Window.getScrollTop(),
                      True)
コード例 #13
0
ファイル: PopupPanel.py プロジェクト: Afey/pyjs
    def setGlassPosition(self):
        top = Window.getScrollTop()
        left = Window.getScrollLeft()
        height = Window.getClientHeight()
        width = Window.getClientWidth()

        DOM.setStyleAttribute(self.glass, "position", "absolute")
        DOM.setStyleAttribute(self.glass, "left", "%s" % \
                              left if left == 0 else "%spx" % left)
        DOM.setStyleAttribute(self.glass, "top", "%s" % \
                              top if top == 0 else "%spx" % top)
        DOM.setStyleAttribute(self.glass, "height", "%spx" % (top + height))
        DOM.setStyleAttribute(self.glass, "width", "%spx" % (left + width))
コード例 #14
0
    def setGlassPosition(self):
        top = Window.getScrollTop()
        left = Window.getScrollLeft()
        height = Window.getClientHeight()
        width = Window.getClientWidth()

        DOM.setStyleAttribute(self.glass, "position", "absolute")
        DOM.setStyleAttribute(self.glass, "left", "%s" % \
                              left if left == 0 else "%spx" % left)
        DOM.setStyleAttribute(self.glass, "top", "%s" % \
                              top if top == 0 else "%spx" % top)
        DOM.setStyleAttribute(self.glass, "height", "%spx" % (top + height))
        DOM.setStyleAttribute(self.glass, "width", "%spx" % (left + width))
コード例 #15
0
def getDropPosition(target, event):
    dt = event.dataTransfer
    text = dt.getData('text')
    package = json.loads(text)
    x, y = DOM.eventGetClientX(event), DOM.eventGetClientY(event)
    scrollX, scrollY = Window.getScrollLeft(), Window.getScrollTop()
    if package == False:
        offsetX, offsetY = 0, 0
    else:
        offsetX, offsetY = int(package['offsetX']), int(
            package['offsetY'])  #BUG no chromium
    at, al = target.getAbsoluteTop(), target.getAbsoluteLeft()
    posX, posY = x - (al - scrollX), y - (at - scrollY)
    return max(posX - offsetX, 0), max(posY - offsetY, 0)
コード例 #16
0
    def showDialog(self, event):
        contents = VerticalPanel(StyleName="Contents",
                                 Spacing=4)
        contents.add(HTML('You can place any contents you like in a dialog box.'))
        contents.add(Button("Close", getattr(self, "onClose")))

        self._dialog = DialogBox(glass=True)
        self._dialog.setHTML('<b>Welcome to the dialog box</b>')
        self._dialog.setWidget(contents)

        left = (Window.getClientWidth() - 200) / 2 + Window.getScrollLeft()
        top = (Window.getClientHeight() - 100) / 2 + Window.getScrollTop()
        self._dialog.setPopupPosition(left, top)
        self._dialog.show()
コード例 #17
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
コード例 #18
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
コード例 #19
0
    def onClickDefault(self, sender):
        # don't shown property editor if they clicked on nothing
        if None == self.chart.getTouchedPoint():
            return

        event = DOM.eventGetCurrentEvent()

        # load properties of clicked-on slice into form
        self.copyChartPropertiesIntoForm(self.chart.getTouchedPoint())
        if self.isFirstTime:
            # initially put upper left corner wherever they clicked...
            self.setPopupPosition(
                        Window.getScrollLeft()+ DOM.eventGetClientX(event),
                        Window.getScrollTop() + DOM.eventGetClientX(event))
            self.show()
            self.isFirstTime = False

        else:
            # ...thereafter, just stay whereever they dragged it to
            self.show()
コード例 #20
0
    def onClickDefault(self, sender):
        # don't shown property editor if they clicked on nothing
        if None == self.chart.getTouchedPoint():
            return

        event = DOM.eventGetCurrentEvent()

        # load properties of clicked-on slice into form
        self.copyChartPropertiesIntoForm(self.chart.getTouchedPoint())
        if self.isFirstTime:
            # initially put upper left corner wherever they clicked...
            self.setPopupPosition(
                Window.getScrollLeft() + DOM.eventGetClientX(event),
                Window.getScrollTop() + DOM.eventGetClientX(event))
            self.show()
            self.isFirstTime = False

        else:
            # ...thereafter, just stay whereever they dragged it to
            self.show()
コード例 #21
0
 def setGlassPosition(self):
     top = Window.getScrollTop()
     left = Window.getScrollLeft()
     height = Window.getClientHeight()
     width = Window.getClientWidth()
     el = self.getElement()
     DOM.setStyleAttribute(el, "position", "absolute")
     DOM.setStyleAttribute(el, "left",
                               "%s" % left if left == 0 else "%spx" % left)
     DOM.setStyleAttribute(el, "top",
                               "%s" % top if top == 0 else "%spx" % top)
     DOM.setStyleAttribute(el, "height", "%spx" % (top + height))
     DOM.setStyleAttribute(el, "width", "%spx" % (left + width))
     # under pyjd glasswidget cannot be transparent,
     # otherwise it drops the mousecapture, so we have
     # to give it a 1% opaque background color
     if pyjd.is_desktop:
         # pyjd uses IE style opacity
         DOM.setStyleAttribute(el, "filter", "alpha(opacity=1)")
         # this is the Moz form of transparency
         DOM.setStyleAttribute(el, "background", "rgba(255,255,255,0.1)")
コード例 #22
0
ファイル: components.py プロジェクト: minghuascode/pyj
 def __init__(self, parent):
     AbsolutePanel.__init__(self)
     self.post_header = Label("Write a Post", StyleName="header_label")
     self.post_write_title_label = Label("Title:")
     self.post_title = TextBox()
     self.post_content = TextArea()
     self.post_button = Button("Post")
     self.cancel_button = Button("Cancel")
     self.error_message_label = Label("", StyleName="error_message_label")
     contents = VerticalPanel(StyleName="Contents", Spacing=4)
     contents.add(self.post_header)
     contents.add(self.post_write_title_label)
     contents.add(self.post_title)
     contents.add(self.post_content)
     contents.add(self.post_button)
     contents.add(self.cancel_button)
     contents.add(self.error_message_label)
     self.dialog = DialogBox(glass=True)
     self.dialog.setHTML('<b>Blog Post Form</b>')
     self.dialog.setWidget(contents)
     left = (Window.getClientWidth() - 900) / 2 + Window.getScrollLeft()
     top = (Window.getClientHeight() - 600) / 2 + Window.getScrollTop()
     self.dialog.setPopupPosition(left, top)
     self.dialog.hide()
コード例 #23
0
 def onMouseMove(self, sender, x, y):
     if not self.dragging:
         return
     self.moveControl(x + Window.getScrollLeft(), y + Window.getScrollTop())
コード例 #24
0
ファイル: Controls.py プロジェクト: emk/pyjamas
 def onMouseMove(self, sender, x, y):
     if not self.dragging:
         return
     self.moveControl(x + Window.getScrollLeft(), y + Window.getScrollTop())
コード例 #25
0
def window_center():
    left = (Window.getClientWidth() - 300) / 2 + Window.getScrollLeft()
    top = (Window.getClientHeight() - 100) / 2 + Window.getScrollTop()
    return left, top