예제 #1
0
    def paintEvent(self, ev):
        painter = QtGui.QPainter(self)

        # calc bar offset
        y_offset = (self.height() - self._barHeight()) // 2
        ## prevent negative offset
        y_offset = 0 if y_offset < 0 else y_offset

        # frame around fraction indicator
        painter.setBrush(self.palette().dark())
        painter.save()
        ## no fill color
        b = painter.brush()
        b.setStyle(QtCore.Qt.NoBrush)
        painter.setBrush(b)
        painter.drawRect(
            QtCore.QRect(
                QtCore.QPoint(0, y_offset),
                QtCore.QSize(self._barWidth(), self._barHeight()),
            ))
        painter.restore()

        # fraction indicator
        painter.drawRect(
            QtCore.QRect(
                QtCore.QPoint(0, y_offset),
                QtCore.QSize(self._barWidth() * self._fraction,
                             self._barHeight()),
            ))
예제 #2
0
 def paintArrow(self, paint, x, y, dir, color = QtCore.Qt.black):
     dx1 = -5 # down
     dx2 = +5
     dy1 = -5
     dy2 = -5
     if (dir == 0): # right
       dx1 = -5
       dx2 = -5
       dy1 = -5
       dy2 = +5
     elif (dir == 1): # up
       dx1 = -5
       dx2 = +5
       dy1 = +5
       dy2 = +5
     elif (dir == 2): # left
       dx1 = +5
       dx2 = +5
       dy1 = -5
       dy2 = +5
     pts = [QtCore.QPoint(x,y), 
            QtCore.QPoint(x + dx1,y + dy1),
            QtCore.QPoint(x + dx2,y + dy2)]
     poly = QtGui.QPolygon(pts)
     paint.setBrush(color)
     paint.drawPolygon(poly)
     paint.setBrush(QtCore.Qt.NoBrush)
예제 #3
0
    def __init__(self, parent=None):
        QtWidgets.QTabBar.__init__(self, parent)

        self.setAcceptDrops(True)
        self.setElideMode(QtCore.Qt.ElideRight)
        self.setSelectionBehaviorOnRemove(QtWidgets.QTabBar.SelectLeftTab)

        self.dragStartPos = QtCore.QPoint()
        self.dragDropedPos = QtCore.QPoint()
        self.mouseCursor = QtGui.QCursor()
        self.dragInitiated = False
예제 #4
0
 def resizeEvent(self, ev):
     if self.closeButton:
         if self.orientation == 'vertical':
             size = ev.size().width()
             pos = QtCore.QPoint(0, 0)
         else:
             size = ev.size().height()
             pos = QtCore.QPoint(ev.size().width() - size, 0)
         self.closeButton.setFixedSize(QtCore.QSize(size, size))
         self.closeButton.move(pos)
     super(DockLabel, self).resizeEvent(ev)
예제 #5
0
 def showEvent(self, event):
     if (self.gas_or_air == "gas"):
         point = self.window.gas_slider_label.rect().topLeft()
         global_point = self.window.gas_slider_label.mapToGlobal(point)
         self.move(global_point - QtCore.QPoint(self.width() - 120,
                                                self.height() + 30))
     else:
         point = self.window.air_slider_label.rect().topLeft()
         global_point = self.window.air_slider_label.mapToGlobal(point)
         self.move(global_point - QtCore.QPoint(self.width() - 100,
                                                self.height() + 30))
     super(BorderLessDiaglogs, self).showEvent(event)
예제 #6
0
파일: pyqtplot.py 프로젝트: Bhumbra/Pyclamp
 def setRB(self, ev = None, pen = None, brush = None):
   if pen is not None and brush is not None:
     if self.RB is not None:
       self.RB.hide()
       self.RB = None
   if self.RB is None:
     if pen is None: pen = self.defRbPen
     if brush is None: brush = self.defRbBrush 
     self.RB = QtGui.QGraphicsRectItem(0, 0, 1, 1)
     self.RB.setPen(pen)
     self.RB.setBrush(brush)
     self.RB.hide()    
     if ev is None: self.view.addItem(self.RB, ignoreBounds=True)
     return
   elif ev is None: # release mouse button  
       self.RB.hide()
       return
   if type(ev) is QtGuiQGraphicsMouseEvent:  
     self.XY1 = ev.pos()
   self.keymod = ev.keymod
   x0, y0 = self.XY0.x(), self.XY0.y()
   x1, y1 = self.XY1.x(), self.XY1.y()
   xY, yX = False, False
   xr, yr = x0 > x1, y0 > y1 # Note: y are pixel values from top(left)
   if self.keymod not in self.keyMod:
     xY, yX = xr, yr
   else:
     xY = self.keymod == self.xyKeyMod[0]
     yX = self.keymod == self.xyKeyMod[1]
   if xY:
     x0 = 0.
     x1 = self.width()
   if yX:
     y0 = 0.
     y1 = self.height()
   X0, Y0 = self.mapxy(x0, y0, False) # bypasses axis
   X1, Y1 = self.mapxy(x1, y1, False) # transformation
   XY0 = QtCore.QPoint(X0, Y0)
   XY1 = QtCore.QPoint(X1, Y1)
   try: # to cope with old Qt4 versions.
     rb = QtCore.QRectF(XY0, XY1)
   except TypeError:
     XY0 = QtCore.QPointF(X0, Y0)
     XY1 = QtCore.QPointF(X1, Y1)
     rb = QtCore.QRectF(XY0, XY1)
   rb = self.childGroup.mapRectFromParent(rb)
   self.RB.setPos(rb.topLeft())
   self.RB.resetTransform()
   self.RB.scale(rb.width(), rb.height())
   self.RB.show()
예제 #7
0
 def labelClicked(self):
     if self.addList is None:
         self.clicked.emit(self, None)
     else:
         w = self.addListPopup
         pt = self.label.mapToGlobal(QtCore.QPoint(15, self.label.height()))
         w.popup(pt)
예제 #8
0
    def _doLayout(self, rect, testOnly):
        x = rect.x()
        y = rect.y()
        lineHeight = 0

        for item in self.itemList:
            wid = item.widget()
            spaceX = self.spacing() + wid.style().layoutSpacing(
                QtGui.QSizePolicy.PushButton, QtGui.QSizePolicy.PushButton,
                QtCore.Qt.Horizontal)

            spaceY = self.spacing() + wid.style().layoutSpacing(
                QtGui.QSizePolicy.PushButton, QtGui.QSizePolicy.PushButton,
                QtCore.Qt.Vertical)

            nextX = x + item.sizeHint().width() + spaceX
            if nextX - spaceX > rect.right() and lineHeight > 0:
                x = rect.x()
                y = y + lineHeight + spaceY
                nextX = x + item.sizeHint().width() + spaceX
                lineHeight = 0

            if not testOnly:
                item.setGeometry(
                    QtCore.QRect(QtCore.QPoint(x, y), item.sizeHint()))

            x = nextX
            lineHeight = max(lineHeight, item.sizeHint().height())

        return y + lineHeight - rect.y()
예제 #9
0
 def itemClicked(self):
     # popup menu when clicked
     tw = self.tableWidget()
     x = tw.verticalHeader().width() + tw.horizontalHeader(
     ).sectionPosition(tw.column(self))
     y = tw.horizontalHeader().height() + tw.visualItemRect(self).bottom()
     self.menu.popup(tw.mapToGlobal(QtCore.QPoint(x, y)))
예제 #10
0
    def paint(self, painter, option, widget):
        """Paint this layer

        :param painter: The painter object to draw with
        :param option: Style information (unused)
        :param widget: The widget that we are painting on

        """
        try:
            paths = self.path_visualization_buffer.get_nowait()
        except queue.Empty as empty:
            paths = self.cached_paths

        self.cached_paths = paths
        painter.setPen(pg.mkPen("b", width=2))

        for path in paths.path:
            polygon_points = [
                QtCore.QPoint(
                    int(constants.MM_PER_M * point.x_meters),
                    int(constants.MM_PER_M * point.y_meters),
                ) for point in path.point
            ]
            poly = QtGui.QPolygon(polygon_points)
            painter.drawPolyline(poly)
예제 #11
0
    def draw_validation(self, painter, validation):
        """Draw Validation

        :param painter: The painter object to draw with
        :param validation: Validation proto

        """
        if validation.status == ValidationStatus.PASSING:
            painter.setPen(pg.mkPen(Colors.VALIDATION_PASSED_COLOR, width=3))

        if validation.status == ValidationStatus.FAILING:
            painter.setPen(pg.mkPen(Colors.VALIDATION_FAILED_COLOR, width=3))

        for circle in validation.geometry.circles:
            painter.drawEllipse(
                self.createCircle(
                    constants.MM_PER_M * circle.origin.x_meters,
                    constants.MM_PER_M * circle.origin.y_meters,
                    constants.MM_PER_M * circle.radius,
                )
            )

        for polygon in validation.geometry.polygons:
            polygon_points = [
                QtCore.QPoint(
                    int(constants.MM_PER_M * point.x_meters),
                    int(constants.MM_PER_M * point.y_meters),
                )
                for point in polygon.points
            ]

            poly = QtGui.QPolygon(polygon_points)
            painter.drawPolygon(poly)
예제 #12
0
    def paint(self, painter, option, widget):
        """Paint this layer

        :param painter: The painter object to draw with
        :param option: Style information (unused)
        :param widget: The widget that we are painting on

        """

        paths = self.path_receiver.maybe_pop()

        if not paths:
            paths = self.cached_paths

        self.cached_paths = paths
        painter.setPen(pg.mkPen("w"))

        for path in paths.path:
            polygon_points = [
                QtCore.QPoint(
                    int(constants.MM_PER_M * point.x_meters),
                    int(constants.MM_PER_M * point.y_meters),
                ) for point in path.point
            ]
            poly = QtGui.QPolygon(polygon_points)
            painter.drawPolyline(poly)
예제 #13
0
 def raiseContextMenu(self, ev):
     menu = self.getMenu()
     if menu is None:
         return False
     menu = self.scene().addParentContextMenus(self, menu, ev)
     pos = ev.screenPos()
     menu.popup(QtCore.QPoint(pos.x(), pos.y()))
     return True
예제 #14
0
    def raiseContextMenu(self, ev):
        menu = self.getMenu()

        ## Make sure it is still ok to remove this handle
        removeAllowed = all([r.checkRemoveHandle(self) for r in self.rois])
        self.removeAction.setEnabled(removeAllowed)
        pos = ev.screenPos()
        menu.popup(QtCore.QPoint(pos.x(), pos.y()))
예제 #15
0
 def itemClicked(self, col):
     tw = self.treeWidget()
     x = tw.header().sectionPosition(col)
     y = tw.header().height() + tw.visualItemRect(self).bottom()
     menu = self.internalMenu if self.solutions[col-1].type == 'internal' else self.externalMenu
     menu.popup(tw.mapToGlobal(QtCore.QPoint(x, y)))
     self._activeColumn = col
     return None
예제 #16
0
def test_mouseInteraction():
    # disable delay of mouse move events because events is called immediately in test
    pg.setConfigOption('mouseRateLimit', -1)

    plt = pg.plot()
    plt.scene().minDragTime = 0  # let us simulate mouse drags very quickly.
    vline = plt.addLine(x=0, movable=True)
    hline = plt.addLine(y=0, movable=True)
    hline2 = plt.addLine(y=-1, movable=False)
    plt.setXRange(-10, 10)
    plt.setYRange(-10, 10)

    # test horizontal drag
    pos = plt.plotItem.vb.mapViewToScene(pg.Point(0, 5)).toPoint()
    pos2 = pos - QtCore.QPoint(200, 200)
    mouseMove(plt, pos)
    assert vline.mouseHovering is True and hline.mouseHovering is False
    mouseDrag(plt, pos, pos2, QtCore.Qt.LeftButton)
    px = vline.pixelLength(pg.Point(1, 0), ortho=True)
    assert abs(vline.value() - plt.plotItem.vb.mapSceneToView(pos2).x()) <= px

    # test missed drag
    pos = plt.plotItem.vb.mapViewToScene(pg.Point(5, 0)).toPoint()
    pos = pos + QtCore.QPoint(0, 6)
    pos2 = pos + QtCore.QPoint(-20, -20)
    mouseMove(plt, pos)
    assert vline.mouseHovering is False and hline.mouseHovering is False
    mouseDrag(plt, pos, pos2, QtCore.Qt.LeftButton)
    assert hline.value() == 0

    # test vertical drag
    pos = plt.plotItem.vb.mapViewToScene(pg.Point(5, 0)).toPoint()
    pos2 = pos - QtCore.QPoint(50, 50)
    mouseMove(plt, pos)
    assert vline.mouseHovering is False and hline.mouseHovering is True
    mouseDrag(plt, pos, pos2, QtCore.Qt.LeftButton)
    px = hline.pixelLength(pg.Point(1, 0), ortho=True)
    assert abs(hline.value() - plt.plotItem.vb.mapSceneToView(pos2).y()) <= px

    # test non-interactive line
    pos = plt.plotItem.vb.mapViewToScene(pg.Point(5, -1)).toPoint()
    pos2 = pos - QtCore.QPoint(50, 50)
    mouseMove(plt, pos)
    assert hline2.mouseHovering == False
    mouseDrag(plt, pos, pos2, QtCore.Qt.LeftButton)
    assert hline2.value() == -1
예제 #17
0
 def itemClicked(self, col):
     if col != 1:
         return
     tw = self.treeWidget()
     x = tw.header().sectionPosition(col)
     y = tw.header().height() + tw.visualItemRect(self).bottom()
     self.menu.popup(tw.mapToGlobal(QtCore.QPoint(x, y)))
     return None
예제 #18
0
 def paintEvent(self, event):
     if self.p:
         painter = QtGui.QPainter(self)
         painter.setViewport(self.centeredViewport(self.width(),
                                                   self.height()))
         painter.setRenderHint(QtGui.QPainter.SmoothPixmapTransform)
         rect = QtCore.QRect(QtCore.QPoint(0, 0), self.size())
         painter.drawPixmap(rect, self.p)
예제 #19
0
 def raiseContextMenu(self, ev):
     """
     Raise the context menu
     """
     if not self.menuEnabled():
         return
     menu = self.getMenu()
     pos = ev.screenPos()
     menu.popup(QtCore.QPoint(pos.x(), pos.y()))
예제 #20
0
 def __init__(self, name, widget, size=(500, 500)):
     '''create the base structure of a dock to hold widgets'''
     super(WidgetDock, self).__init__(name, size=size, closable=True)
     self.dockMenu = QtGui.QMenu()
     self.label.sigClicked.connect(self._dockClick)
     self.label.startedDrag = False  # mandatory to handle label
     self.label.pressPos = QtCore.QPoint(0, 0)  # click events
     self._make_base_actions()
     self.addWidget(widget)
예제 #21
0
파일: Node.py 프로젝트: slac-lcls/ami
    def raiseContextMenu(self, ev):
        menu = self.scene().addParentContextMenus(self, self.getMenu(), ev)
        pos = ev.screenPos()
        menu.popup(QtCore.QPoint(pos.x(), pos.y()))

        if self.connectedTo:
            action = self.connectedTo.menuAction()
            self.menu.removeAction(action)
            del self.connectTo
예제 #22
0
 def raiseContextMenu(self, ev):
     menu = self.getContextMenus()
     
     # Let the scene add on to the end of our context menu
     # (this is optional)
     menu = self.scene().addParentContextMenus(self, menu, ev)
     
     pos = ev.screenPos()
     menu.popup(QtCore.QPoint(pos.x(), pos.y()))
     return True
예제 #23
0
    def mouseMoveEvent(self, event):
        """
        Moves the window with the mouse

        :param event: The mouse event
        :type event: QEvent
        """

        if self.resizeGrip is not None and not self.resizeGrip.resizing:
            delta = QtCore.QPoint(event.globalPos() - self.oldPos)
            self.move(self.x() + delta.x(), self.y() + delta.y())
            self.oldPos = event.globalPos()
예제 #24
0
 def paintEvent(self, event):
     size = self.size()
     painter = QtGui.QPainter(self)
     point = QtCore.QPoint(0, 0)
     scaledPix = self.pixmap.scaled(
         size,
         QtCore.Qt.KeepAspectRatio,
         transformMode=QtCore.Qt.SmoothTransformation)
     # start painting the label from left upper corner
     point.setX((size.width() - scaledPix.width()) / 2)
     point.setY((size.height() - scaledPix.height()) / 2)
     painter.drawPixmap(point, scaledPix)
예제 #25
0
 def mouseMove(self, event):
     """Event handler for mouseMove events.
     """
     pos = event.pos()
     # Move traps
     if self.group is not None:
         self.moveGroup(pos)
     # Update selection box
     elif self.selection.isVisible():
         region = QtCore.QRect(self.origin, QtCore.QPoint(pos)).normalized()
         self.selection.setGeometry(region)
         self.selectedTraps(region)
예제 #26
0
    def raiseContextMenu(self, ev):
        #print "viewbox.raiseContextMenu called."

        #menu = self.getMenu(ev)
        menu = self.getMenu(ev)
        self.scene().addParentContextMenus(self, menu, ev)
        #print "2:", [str(a.text()) for a in self.menu.actions()]
        pos = ev.screenPos()
        #pos2 = ev.scenePos()
        #print "3:", [str(a.text()) for a in self.menu.actions()]
        #self.sigActionPositionChanged.emit(pos2)

        menu.popup(QtCore.QPoint(pos.x(), pos.y()))
예제 #27
0
    def resizeEvent(self, ev):

        # if self.Button1:
        #     if self.orientation == 'vertical':
        #         size = ev.size().width()
        #         pos = QtCore.QPoint(0, ev.size().height() - size)
        #     else:
        #         size = ev.size().height()
        #         pos = QtCore.QPoint(0, 0)
        #     self.button1.setFixedSize(QtCore.QSize(size, size))
        #     self.button1.move(pos)
        if self.buttons:
            for i in range(0, len(self.buttons)):
                if self.orientation == 'vertical':
                    size = ev.size().width()
                    pos = QtCore.QPoint(0,
                                        ev.size().height() - i * size - size)
                else:
                    size = ev.size().height()
                    pos = QtCore.QPoint(i * size, 0)
                self.buttons[i].setFixedSize(QtCore.QSize(size, size))
                self.buttons[i].move(pos)
        super(ColorDockLabel, self).resizeEvent(ev)
예제 #28
0
    def __init__(self, data, color='w', fill=None):
        pg.GraphicsObject.__init__(self)
        self.data = data
        # pre-computing a QPicture object allows paint() to run much more quickly,
        # rather than re-drawing the shapes every time.
        self.picture = QtGui.QPicture()
        p = QtGui.QPainter(self.picture)
        p.setPen(pg.mkPen(color=color))
        if fill is not None: p.setBrush(pg.mkBrush(color=fill))

        self.points = []
        for item in self.data:
            point = QtCore.QPoint(item[0], item[1])
            self.points.append(point)
        p.drawPolygon(*self.points)

        p.end()
예제 #29
0
 def leftPress(self, pos, modifiers):
     """Selection and grouping.
     """
     self.group = self.clickedGroup(pos)
     # update selection rectangle
     if self.group is None:
         self.origin = QtCore.QPoint(pos)
         rect = QtCore.QRect(self.origin, QtCore.QSize())
         self.selection.setGeometry(rect)
         self.selection.show()
     # break selected group
     elif modifiers == QtCore.Qt.ControlModifier:
         self.breakGroup()
     # select group
     else:
         self.group.state = state.selected
     self._update(project=False)
예제 #30
0
    def mouseClickEvent(self, ev):
        modifiers = QtGui.QApplication.keyboardModifiers()
        if modifiers == QtCore.Qt.ShiftModifier and self._isLocked == False and ev.button(
        ) == QtCore.Qt.RightButton:
            #self.setStyle("selected")
            self.setState(self._isLocked,
                          self._empty,
                          self._updated,
                          self._remove_flag,
                          isSelected=True)
            self.sigShiftMouseClicked.emit(self.id)

        else:
            self.sigMouseClicked.emit(self.id)

            menu = self.getMenu()
            pos = ev.screenPos()
            menu.popup(QtCore.QPoint(pos.x(), pos.y()))