Пример #1
0
 def pixmapSize(self, pixmap):
     """
     Return the preferred pixmap size based on the current `zoom` value.
     """
     scale = 2 * self.zoom / 100.0
     size = QSizeF(pixmap.size()) * scale
     return size.expandedTo(QSizeF(16, 16))
Пример #2
0
 def _updatePixmapSize(self):
     pixmap = self.pixmap()
     if not pixmap.isNull() and self._size.isValid():
         pixsize = QSizeF(self.pixmap().size())
         pixsize.scale(self._size, Qt.KeepAspectRatio)
     else:
         pixsize = QSizeF()
     self.pixmapWidget.setPixmapSize(pixsize)
Пример #3
0
 def sizeHint(self, which, constraint=QSizeF()):
     if which == Qt.PreferredSize:
         size = self.item.boundingRect().size()
         if self.orientation == Qt.Horizontal:
             return size
         else:
             return QSizeF(size.height(), size.width())
     else:
         return QSizeF()
Пример #4
0
    def __init__(self, parent, dlgType):



        FlightPlanBaseDlg.__init__(self, parent)

        # self.dlgType = dlgType

        self.setObjectName("PaIlsDlg")
        self.dlgType = dlgType
        if self.dlgType == "NpaOnFix":
            self.surfaceType = SurfaceTypes.NpaOnFix
        else:
            self.surfaceType = SurfaceTypes.NpaOverheadingNavaid
        self.initParametersPan()
        self.setWindowTitle(self.surfaceType)
        self.resize(540, 600)
        QgisHelper.matchingDialogSize(self, 650, 700)
        self.surfaceList = None
        self.manualPolygon = None

        self.mapToolPan = None
        self.toolSelectByPolygon = None

        self.accepted.connect(self.closed)
        self.rejected.connect(self.closed)

        self.wptLayer = None

        self.arpFeatureArray = []
        self.currentLayer = define._canvas.currentLayer()
        self.rwyFeatureArray = []
        self.rwyEndPosition = None
        self.initAerodromeAndRwyCmb()
        
        self.socRubber = None
        self.socAnnotation = QgsTextAnnotationItem(define._canvas)
        self.socAnnotation.setDocument(QTextDocument(Captions.SOC))
        self.socAnnotation.setFrameBackgroundColor(Qt.white)
        self.socAnnotation.setFrameSize(QSizeF(30, 20))
        self.socAnnotation.setFrameColor(Qt.magenta)
        self.socAnnotation.hide()
        self.socPoint3d = None
        
        self.daRubber = None
        self.daAnnotation = QgsTextAnnotationItem(define._canvas)
        self.daAnnotation.setDocument(QTextDocument(Captions.DA))
        self.daAnnotation.setFrameBackgroundColor(Qt.white)
        self.daAnnotation.setFrameSize(QSizeF(30, 20))
        self.daAnnotation.setFrameColor(Qt.magenta)
        self.daAnnotation.hide()
        self.daPoint3d = None

        self.annotationFAWP = self.parametersPanel.pnlFafPosition.annotation
        self.annotationMAPt = self.parametersPanel.pnlMaPtPosition.annotation
Пример #5
0
    def paintEvent(self, event):
        if self.__pixmap.isNull():
            return

        sourcerect = QRect(QPoint(0, 0), self.__pixmap.size())
        pixsize = QSizeF(self.__pixmap.size())
        rect = self.contentsRect()
        pixsize.scale(QSizeF(rect.size()), Qt.KeepAspectRatio)
        targetrect = QRectF(QPointF(0, 0), pixsize)
        targetrect.moveCenter(QPointF(rect.center()))
        painter = QPainter(self)
        painter.setRenderHint(QPainter.SmoothPixmapTransform)
        painter.drawPixmap(targetrect, self.__pixmap, QRectF(sourcerect))
        painter.end()
Пример #6
0
 def paintEvent(self, event):
     pixmap = self._shadowPixmap
     widget_rect = QRectF(QPointF(0.0, 0.0), QSizeF(self.size()))
     frame_rect = QRectF(self.contentsRect())
     left, top, right, bottom = self.getContentsMargins()
     pixmap_rect = QRectF(QPointF(0, 0), QSizeF(pixmap.size()))
     # Shadow casting rectangle.
     pixmap_shadow_rect = pixmap_rect.adjusted(left, top, -right, -bottom)
     source_rects = self._shadowPixmapFragments(pixmap_rect,
                                                pixmap_shadow_rect)
     target_rects = self._shadowPixmapFragments(widget_rect, frame_rect)
     painter = QPainter(self)
     for source, target in zip(source_rects, target_rects):
         painter.drawPixmap(target, pixmap, source)
     painter.end()
Пример #7
0
    def __init__(self, pixmap, title="", parentItem=None, **kwargs):
        super().__init__(parentItem, **kwargs)
        self.setFocusPolicy(Qt.StrongFocus)
        self._title = None
        self._size = QSizeF()

        layout = QGraphicsLinearLayout(Qt.Vertical, self)
        layout.setSpacing(2)
        layout.setContentsMargins(5, 5, 5, 5)
        self.setContentsMargins(0, 0, 0, 0)

        self.pixmapWidget = GraphicsPixmapWidget(pixmap, self)
        self.labelWidget = GraphicsTextWidget(title, self)

        layout.addItem(self.pixmapWidget)
        layout.addItem(self.labelWidget)
        layout.addStretch()
        layout.setAlignment(self.pixmapWidget, Qt.AlignCenter)
        layout.setAlignment(self.labelWidget, Qt.AlignHCenter | Qt.AlignBottom)

        self.setLayout(layout)

        self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        self.setFlag(QGraphicsItem.ItemIsSelectable, True)

        self.setTitle(title)
        self.setTitleWidth(100)
Пример #8
0
    def paint(self, painter, option, widget):
        painter.save()
        dirtyColor = QColor(255,0,0)
        painter.setOpacity(0.5)
        painter.setBrush(QBrush(dirtyColor, Qt.SolidPattern))
        painter.setPen(dirtyColor)
        
        intersected = self._tiling.intersected(option.exposedRect)
        
        #print "pies are painting at ", option.exposedRect

        progress = 0.0
        for i in intersected:
            progress += self._indicate[i]
            
            if not(self._indicate[i] < 1.0): # only paint for less than 100% progress
                continue
            
            # Don't show unless a delay time has passed since the tile progress was reset.
            delta = datetime.datetime.now() - self._zeroProgressTimestamp[i]
            if delta < self.delay:
                t = QTimer.singleShot(int(delta.total_seconds()*1000.0), self.update)
                continue

            p = self._tiling.tileRectFs[i]
            w,h = p.width(), p.height()
            r = min(w,h)
            rectangle = QRectF(p.center()-QPointF(r/4,r/4), QSizeF(r/2, r/2));
            startAngle = 0 * 16
            spanAngle  = min(360*16, int((1.0-self._indicate[i])*360.0) * 16)
            painter.drawPie(rectangle, startAngle, spanAngle)

        painter.restore()
Пример #9
0
    def __init__(self, pixmap, title="", parent=None):
        QGraphicsWidget.__init__(self, parent)

        self._title = None
        self._size = QSizeF()

        layout = QGraphicsLinearLayout(Qt.Vertical, self)
        layout.setSpacing(2)
        layout.setContentsMargins(5, 5, 5, 5)
        self.setContentsMargins(0, 0, 0, 0)

        self.pixmapWidget = GraphicsPixmapWidget(pixmap, self)
        self.labelWidget = GraphicsTextWidget(title, self)

        layout.addItem(self.pixmapWidget)
        layout.addItem(self.labelWidget)

        layout.setAlignment(self.pixmapWidget, Qt.AlignCenter)
        layout.setAlignment(self.labelWidget, Qt.AlignHCenter | Qt.AlignBottom)
        self.setLayout(layout)

        self.setSizePolicy(QSizePolicy.MinimumExpanding,
                           QSizePolicy.MinimumExpanding)

        self.setFlag(QGraphicsItem.ItemIsSelectable, True)
        self.setTitle(title)
        self.setTitleWidth(100)
Пример #10
0
 def __naturalsh(self):
     fm = QtGui.QFontMetrics(self.font())
     spacing = self.__spacing
     N = len(self.__items)
     width = max((fm.width(text) for text in self.__items), default=0)
     height = N * fm.height() + (N - 1) * spacing
     return QSizeF(width, height)
Пример #11
0
    def mousePressEvent(self, event):
        pos = event.scenePos()
        any_item = self.scene.item_at(pos)
        if not any_item and event.button() & Qt.LeftButton:
            self.modifiers = event.modifiers()
            self.selection_rect = QRectF(pos, QSizeF(0, 0))
            self.rect_item = QGraphicsRectItem(
                self.selection_rect.normalized())

            self.rect_item.setPen(
                QPen(QBrush(QColor(51, 153, 255, 192)), 0.4, Qt.SolidLine,
                     Qt.RoundCap))

            self.rect_item.setBrush(QBrush(QColor(168, 202, 236, 192)))

            self.rect_item.setZValue(-100)

            # Clear the focus if necessary.
            if not self.scene.stickyFocus():
                self.scene.clearFocus()

            if not self.modifiers & Qt.ControlModifier:
                self.scene.clearSelection()

            event.accept()
            return True
        else:
            self.cancel(self.ErrorReason)
            return False
Пример #12
0
 def __init__(self, char, score, color, safe=False):
     ''' Construct a new visual representation of a tile '''
     super().__init__()
     self.owner = None
     self.char = char.upper()
     self.score = str(score)
     self.is_safe = safe
     self.color_border = QColor(color).lighter(100)
     self.color_bg = QColor(color).lighter(150)
     self.normal_pen = QPen(self.color_border, 1, Qt.SolidLine)
     self.safe_pen = QPen(self.color_border, 2, Qt.SolidLine)
     self.selected_pen = QPen(self.color_border, 3, Qt.DashLine)
     self.normal_brush = self.color_bg.lighter(110)
     self.safe_brush = self.color_bg
     self.hovers = set()
     self.selected = False
     self.view = None
     self.animation = None
     self.deleted = False
     self.size = QSizeF(self.LETTER_SIZE, self.LETTER_SIZE)
     self.setFlag(self.ItemIsMovable, not safe)
     self.setFlag(self.ItemSendsGeometryChanges, not safe)
     self.setCursor(Qt.ArrowCursor if safe else Qt.OpenHandCursor)
     self.setZValue(1)
     self.setOpacity(0)
 def createItem(self, e):
     mapCoord = self.toMapCoordinates(e.pos())
     textItem = QgsTextAnnotationItem(self.mCanvas)
     textItem.setMapPosition(self.toMapCoordinates(e.pos()))
     textItem.setFrameSize(QSizeF(200, 100))
     textItem.setSelected(True)
     return textItem
Пример #14
0
    def _rescale(self):
        if self._root is None:
            return

        crect = self.contentsRect()
        leaf_count = len(list(leaves(self._root)))
        if self.orientation in [Left, Right]:
            drect = QSizeF(self._root.value.height, leaf_count - 1)
        else:
            drect = QSizeF(self._root.value.last - 1, self._root.value.height)

        transform = QTransform().scale(crect.width() / drect.width(),
                                       crect.height() / drect.height())
        self._itemgroup.setPos(crect.topLeft())
        self._itemgroup.setTransform(transform)
        self._selection_items = None
        self._update_selection_items()
Пример #15
0
 def boundingRect(self):
     extra = (self.pen().width() * 64) / 2
     return QRectF(
         self.__line.p1(),
         QSizeF(self.__line.p2().x() - self.__line.p1().x(),
                self.__line.p2().y() -
                self.__line.p1().y())).normalized().adjusted(
                    -extra, -extra, extra, extra)
Пример #16
0
 def boundingRect(self):
     if hasattr(self, "attr"):
         attr_rect = QRectF(QPointF(0, -self.attr_text_h),
                            QSizeF(self.attr_text_w, self.attr_text_h))
     else:
         attr_rect = QRectF(0, 0, 1, 1)
     rect = self.rect().adjusted(-5, -5, 5, 5)
     return rect | attr_rect
Пример #17
0
    def sizeHint(self, which, constraint=QSizeF()):
        if which == Qt.PreferredSize:
            sh = self.__naturalsh()
            if 0 < constraint.height() < sh.height():
                sh = scaled(sh, constraint, Qt.KeepAspectRatioByExpanding)
            return sh

        return super().sizeHint(which, constraint)
Пример #18
0
    def sizeHint(self, which, constraint=QSizeF()):
        # TODO: More sensible size hints.
        # If the text is a plain text or html
        # Check how QLabel.sizeHint works.

        if which == Qt.PreferredSize:
            return self.__textItem.boundingRect().size()
        else:
            return QGraphicsWidget.sizeHint(self, which, constraint)
Пример #19
0
 def adjustSize(self):
     """Resize to a reasonable size.
     """
     self.__textItem.setTextWidth(-1)
     self.__textItem.adjustSize()
     size = self.__textItem.boundingRect().size()
     left, top, right, bottom = self.textMargins()
     geom = QRectF(self.pos(), size + QSizeF(left + right, top + bottom))
     self.setGeometry(geom)
Пример #20
0
    def sizeHint(self, which, constraint=QSizeF()):
        fm = QFontMetrics(self.font())
        spacing = fm.lineSpacing()
        mleft, mtop, mright, mbottom = self.getContentsMargins()

        if self._root and which == Qt.PreferredSize:
            nleaves = len(
                [node for node in self._items.keys() if not node.branches])

            if self.orientation in [self.Left, self.Right]:
                return QSizeF(250, spacing * nleaves + mleft + mright)
            else:
                return QSizeF(spacing * nleaves + mtop + mbottom, 250)

        elif which == Qt.MinimumSize:
            return QSizeF(mleft + mright + 10, mtop + mbottom + 10)
        else:
            return QSizeF()
Пример #21
0
 def boundingRect(self):
     # For now, do not take the highlight pen into account
     #pw = self.pen().widthF()/2
     pw = 0
     children = self.childrenBoundingRect()
     m = self.margin
     return QRectF(
         children.topLeft() - QPointF(pw + m, pw + m),
         QSizeF(children.width() + pw + m + m,
                children.height() + pw + m + m))
Пример #22
0
    def paint(self, painter, option, widget=0):
        if self._pixmap.isNull():
            return

        rect = self.contentsRect()
        pixsize = QSizeF(self._pixmap.size())
        aspectmode = (Qt.KeepAspectRatio if self._keepAspect
                      else Qt.IgnoreAspectRatio)
        pixsize.scale(rect.size(), aspectmode)
        pixrect = QRectF(QPointF(0, 0), pixsize)
        pixrect.moveCenter(rect.center())

        painter.save()
        painter.setPen(QPen(QColor(0, 0, 0, 50), 3))
        painter.drawRoundedRect(pixrect, 2, 2)
        painter.setRenderHint(QPainter.SmoothPixmapTransform)
        source = QRectF(QPointF(0, 0), QSizeF(self._pixmap.size()))
        painter.drawPixmap(pixrect, self._pixmap, source)
        painter.restore()
Пример #23
0
 def load_window_geometry(self):
     """Load from QSettings the window size of de Ninja IDE"""
     qsettings = QSettings()
     if qsettings.value("window/maximized", True, type=bool):
         self.setWindowState(Qt.WindowMaximized)
     else:
         self.resize(qsettings.value("window/size",
             QSizeF(800, 600).toSize(), type='QSize'))
         self.move(qsettings.value("window/pos",
             QPointF(100, 100).toPoint(), type='QPoint'))
Пример #24
0
 def paint(self, painter, options, widget):
     pw = self.pen().widthF() / 2
     children = self.childrenBoundingRect()
     m = self.margin
     painter.setPen(self.pen())
     painter.setBrush(self.brush())
     painter.drawRect(
         QRectF(
             children.topLeft() - QPointF(pw + m, pw + m),
             QSizeF(children.width() + pw + m + m,
                    children.height() + pw + m + m)))
Пример #25
0
    def setSize(self, width, height):
        """Set the size of the visible area in pixels.

        Update the scene rect.

        Args:
            width(int): Width of the visible area.
            height(int): Height of the visible area.
        """
        rect = QRectF(self.sceneRect().topLeft(), QSizeF(width, height))
        self.setSceneRect(rect)
Пример #26
0
    def load_window_geometry(self):
        """Load from QSettings the window size of de Ninja IDE"""
        qsettings = QSettings()
        if qsettings.value("window/maximized", 'true') == 'true':
            self.setWindowState(Qt.WindowMaximized)
        else:
            print dir(QSizeF)

            self.resize(
                qsettings.value("window/size", QSizeF(800, 600)).toSize())
            self.move(
                qsettings.value("window/pos", QPointF(100, 100)).toPoint())
Пример #27
0
    def handlePrintPdf(self):
        printer = QPrinter()
        pdffile = 'test.pdf'
        printer.setResolution(96)
        printer.setPageSize(QPrinter.Letter)
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName(pdffile)
        printer.setPageMargins(5, 5, 5, 10, QPrinter.Millimeter)
        document = self.makeTableDocument()

        document.setPageSize(QSizeF(printer.pageRect().size()))
        document.print_(printer)
Пример #28
0
    def exportPDF(self, view, file_name, width, height):
        pdf = QPrinter()
        pdf.setOutputFormat(QPrinter.PdfFormat)
        pdf.setPrintRange(QPrinter.AllPages)
        pdf.setOrientation(QPrinter.Portrait)
        pdf.setResolution(QPrinter.HighResolution)
        pdf.setPaperSize(QSizeF(width, height), QPrinter.Point)
        pdf.setFullPage(True)
        pdf.setOutputFileName(file_name)
        view.mainFrame().print_(pdf)

        QApplication.restoreOverrideCursor()
Пример #29
0
    def boundingRect(self):
        if not self.source or not self.dest:
            return QRectF()

        penWidth = 1.0
        extra = (penWidth + self.arrowSize) / 2.0 + 100

        return QRectF(
            self.sourcePoint,
            QSizeF(self.destPoint.x() - self.sourcePoint.x(),
                   self.destPoint.y() -
                   self.sourcePoint.y())).normalized().adjusted(
                       -extra, -extra, extra, extra)
Пример #30
0
    def __saveAsPDF(self, fileName):
        " Saves the flowchart as an PDF file "
        printer = QPrinter()
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setPaperSize(QSizeF(self.scene.width(), self.scene.height()),
                             QPrinter.Point)
        printer.setFullPage(True)
        printer.setOutputFileName(fileName)

        painter = QPainter(printer)
        self.scene.render(painter)
        painter.end()
        return