Пример #1
0
    def __init__(self, lon0, lat0, lon1, lat1, svg_filename, parent=None):
        """Constructor.

        Args:
            longitude(float): Longitude of the upper left corner
            latitude(float): Latitude of the upper left corner
            longitude(float): Longitude of the lower right corner
            latitude(float): Latitude of the lower right corner
            svg_filename: Svg file name
            scene(MapGraphicsScene): Scene the item belongs to.
            parent(QGraphicsItem): Parent item.

        This will display an svg file with the corners geo-registered
        """
        QGraphicsSvgItem.__init__(self, svg_filename, parent=parent)
        MapItem.__init__(self)

        self._lon0 = lon0
        self._lat0 = lat0
        self._lon1 = lon1
        self._lat1 = lat1
        self._xsize = 0
        self._ysize = 0

        self.x_mult = 1
        self.y_mult = 1
        self._renderer = QSvgRenderer(svg_filename)
        self._border = QGraphicsRectItem(parent=self)
        self._border.setPen(Qt.black)
Пример #2
0
    def addRect(self, text, color, border=None, size=20.0):
        shape = QGraphicsRectItem(size / 2.0, size / 2.0, size, size)
        brush = makeBrush(color)
        shape.setBrush(brush)
        shape.setPen(makePen(border))

        self.addEntry(MapLegendEntryItem(shape, text))
Пример #3
0
    def __init__(self, anchor, parent=None):
        QGraphicsObject.__init__(self, parent=parent)
        MapItem.__init__(self)
        self.setZValue(200.0)

        anchorPos = self._posForAnchors[anchor]
        self._anchorPos = QPointF(anchorPos)
        self._anchor = anchor

        self._border = QGraphicsRectItem(parent=self)
        self._border.setPen(QPen(Qt.NoPen))
        self._border.setBrush(QBrush(QColor(190, 190, 190, 160)))

        self._entries = list()

        imgfile = os.path.dirname(__file__) + os.sep + 'zoom_in_symbol.png'
        img = QPixmap(24, 24)
        img.load(imgfile)
        img = img.scaled(24, 24)
        img = ImageButton(img, parent=self)
        self.zoom_in_button = img
        self.addEntry(self.zoom_in_button)

        imgfile = os.path.dirname(__file__) + os.sep + 'zoom_out_symbol.png'
        img2 = QPixmap(24, 24)
        img2.load(imgfile)
        img2 = img2.scaled(24, 24)
        img2 = ImageButton(img2, parent=self)
        self.zoom_out_button = img2
        self.addEntry(self.zoom_out_button)
Пример #4
0
 def __init__(self,
              other_item,
              text,
              parent=None,
              min_zoom_visibility=None):
     QGraphicsSimpleTextItem.__init__(self, text, parent=parent)
     MapItem.__init__(self)
     self.other_item = other_item
     self._min_zoom = min_zoom_visibility
     self._border = QGraphicsRectItem(parent=self)
     self._border.setPen(QPen(Qt.NoPen))
     self._border.setBrush(QBrush(QColor(190, 190, 190, 160)))
Пример #5
0
 def __init__(self,
              longitude,
              latitude,
              text,
              parent=None,
              min_zoom_visibility=None):
     QGraphicsSimpleTextItem.__init__(self, text, parent=parent)
     MapItem.__init__(self)
     self._min_zoom = min_zoom_visibility
     self._lon, self._lat = longitude, latitude
     self._border = QGraphicsRectItem(parent=self)
     self._border.setPen(QPen(Qt.NoPen))
     self._border.setBrush(QBrush(QColor(190, 190, 190, 160)))
Пример #6
0
    def __init__(self, pos=None, parent=None):
        QGraphicsObject.__init__(self, parent=parent)
        MapItem.__init__(self)
        self.setZValue(200.0)

        self._anchorPos = QPointF(pos) if pos is not None else QPointF(
            10.0, 10.0)

        self._border = QGraphicsRectItem(parent=self)
        self._border.setPen(QPen(Qt.NoPen))
        self._border.setBrush(QBrush(QColor(190, 190, 190, 160)))

        self._entries = list()
        self._entriesGroup = QGraphicsItemGroup(parent=self)
Пример #7
0
 def mouseMoveEvent(self, evt):
     '''Catch right-click events for rectangle drawing'''
     if self.rubberband_enabled and self.rect_start:
         pos = evt.scenePos()
         #lon,lat = self.lonLatFromPos(pos.x(), pos.y())
         self.rect_end = pos
         if not self.rubberband:
             self.rubberband = QGraphicsRectItem(
                 min(self.rect_start.x(), self.rect_end.x()),
                 min(self.rect_start.y(), self.rect_end.y()),
                 abs(self.rect_end.x() - self.rect_start.x()),
                 abs(self.rect_end.y() - self.rect_start.y()))
             clr = QColor(240, 240, 240, 100)
             self.rubberband.setBrush(clr)
             self.rubberband.setPen(QPen(QBrush(Qt.blue), 1.0))
             self.addItem(self.rubberband)
         else:
             self.rubberband.setRect(
                 min(self.rect_start.x(), self.rect_end.x()),
                 min(self.rect_start.y(), self.rect_end.y()),
                 abs(self.rect_end.x() - self.rect_start.x()),
                 abs(self.rect_end.y() - self.rect_start.y()))
Пример #8
0
    def __init__(self, block, debug=False):
        self._block = block
        self._debug = debug
        self.modified_callback = None

        self._base_zvalue = None
        self._top_zvalue = 1
        self._vpad = 5
        self._footer_height = self._vpad
        self._editing = False
        self._start_move_connector_row = None
        self.highlight_background_color = QColor(127, 255, 127, 255)  # RGBA

        super().__init__(0, 0, block.width, block.height)
        self.setBrush(QBrush(Qt.gray))
        self.setFlag(self.ItemIsMovable)
        self.setFlag(self.ItemIsFocusable)
        self.setFlag(self.ItemSendsGeometryChanges)

        t = self._title = Block_Title(self._block.name)
        t.setParentItem(self)
        t.setPos(0, self._vpad)
        text_height = t.boundingRect().height()

        self._row_height = text_height
        self._insert_receptor_height = text_height / 2.0
        self._header_height = text_height + 2 * self._vpad
        self._grid_size = self._row_height / 2.0

        tr = self._title_rect = QGraphicsRectItem(
            0, 0, 10, self._header_height)  # width set later
        tr.setParentItem(self)
        self._title.setParentItem(tr)

        cl = self._connector_layer = QGraphicsRectItem(self.rect())
        cl.setParentItem(self)
        cl.setBrush(QBrush(Qt.NoBrush))
        #cl.setBrush(QBrush(Qt.blue))
        cl.setPen(QPen(Qt.NoPen))

        self._connectors = []
        for i, c in enumerate(block.connectors):
            self.add_connector(c, quick=True)

        rl = self._receptor_layer = QGraphicsRectItem(self.rect())
        rl.setParentItem(self)
        rl.setBrush(QBrush(Qt.NoBrush))
        #rl.setBrush(QBrush(Qt.blue))
        rl.setPen(QPen(Qt.NoPen))

        self._receptors = receptor.Grid(
            parent_item=self._receptor_layer,
            n_cols=3,
            cell_height=self._row_height,
            top_border=self._header_height,
            bottom_border=self._footer_height,
            sensitive=False,
            debug_color=Qt.cyan,
            debug=self._debug,
        )

        irl = self._insert_receptor_layer = QGraphicsRectItem(self.rect())
        irl.setParentItem(self)
        irl.setBrush(QBrush(Qt.NoBrush))
        #irl.setBrush(QBrush(Qt.blue))
        irl.setPen(QPen(Qt.NoPen))

        self._insert_receptors = receptor.Grid(
            parent_item=self._insert_receptor_layer,
            n_cols=3,
            cell_height=self._insert_receptor_height,
            row_spacing=self._row_height - self._insert_receptor_height,
            top_border=self._header_height -
            self._insert_receptor_height / 2.0,
            stretch_last_row=True,
            sensitive=False,
            debug_color=Qt.yellow,
            debug=self._debug,
        )

        self._resizer = resizer.Frame(self, debug=self._debug)

        self._header_avoid_shape = None
        self._row_avoid_shapes = []
        self._row_divider_avoid_shapes = []
        self._footer_avoid_shape = None
        self._avoid_shape = None

        self._ensure_minimum_size()
        self._set_default_appearance()
        self.set_editing_mode(self._editing)