Пример #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
 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
    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
 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
    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)
 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
 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
 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())
 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()
 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
    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))
    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
 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
 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()
 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
 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()
 def onMouseMove(self, sender, x, y):
     if not self.dragging:
         return
     self.moveControl(x + Window.getScrollLeft(), y + Window.getScrollTop())
Пример #24
0
 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