LegendItemComponent

class axioma.render.LegendItemComponent

Элемент легенды LegendItem для векторного слоя

LegendItemComponent(style, description, objects=- 1)

Конструктор

Параметры
  • style (Style) – Стиль оформления элемента.

  • description (str) – Текстовое описание.

  • objects (int) – Количество объектов. Применим только для тематики по интервалам.

LegendItemComponent(other)

Копирующий конструктор

Параметры

other (LegendItemComponent) – Исходный объект LegendItemComponent, на базе которого необходимо сделать копию.

description()

Описание элемента. Если методе setDescriptionChanged установлено значение, отличное от None, показывается оно, в противном случае исходное.

Результат

Строка с описанием

Тип результата

str

fullDescription()

Полное описание элемента. Если в конструкторе (или посредством метода setObjectCount) передано количество объектов со значением, отличающимся от -1, в описание включается и данное значение. В противном случае результат аналогичен методу description

Результат

Строка с описанием

Тип результата

str

isVisible

Управляет видимостью элемента. True, если элемент показывается.

Type

bool

objectCount()

Количество объектов для элемента легенды

Результат

Значение

Тип результата

int

setDescription(description)

Установка нового описания

Параметры

description (str) – Описание

setDescriptionChanged(description)

Замена текстового описания. При этом исходное описание сохраняется. Используется, если есть необходимость изменить тестовую подпись с возможностью его сохранение при обновлении параметров элемента легенды.

Параметры

description (str) – Описание

setObjectCount(objects)

Установка количества объектов. По умолчанию равно -1 (количество в легенде не показывается).

Параметры

objects (bool) – Количество

style

Стиль оформления

Type

Style

LegendItem

class axioma.render.LegendItem

Легенда для векторного слоя.

От него наследуются: FeatureLegendItem, ThematicLegendItem

LegendItem(caption, parent=None)

Конструктор

Параметры
  • caption (str) – Наименование (заголовок) легенды.

  • parent (QObject) – Владелец элемента легенды. При удалении владельца так же удаляется и сам элемент

LegendItem(caption, overrideComponentsб parent=None)

Конструктор

Параметры
  • caption (str) – Наименование (заголовок) легенды.

  • overrideComponents (list [LegendItemComponent]) – Список элементов легенды

  • parent (QObject) – Владелец элемента легенды. При удалении владельца так же удаляется и сам элемент

LegendItem(other)

Копирующий конструктор

Параметры

other (LegendItem) – Исходный объект, на базе которого создается новый.

aboutToBeDestroyed()

[signal] Сигнал, который срабатывает при удалении легенды

basePoint()

Базовая точка, относительно которой производится отрисовка элемента легенды

Результат

Точка

Тип результата

QPointF

baseSizeStyleElement()

Базовый размер элемента. Остальные параметры масштабируются относительно этого размера

Результат

Размер

Тип результата

QSize

borderStyle()

Стиль окантовки. Если не указан (равен None), окантовка не рисуется. По умолчанию окантовка отсутствует

Результат

Стиль

Тип результата

LineStringStyle

caption()

Заголовок элемента легенды

Результат

Заголовок

Тип результата

str

clone()

Делает копию текущего объекта

Результат

Копия объекта

Тип результата

LegendItem

draw(context)

Отрисовка элемента легенды в заданном контексте

Параметры

context (Context) – Контекст, в котором будет отрисован элемент легенды

draw(context, pos)

Отрисовка элемента легенды в заданном контексте

Параметры
  • context (Context) – Контекст, в котором будет отрисован элемент легенды

  • pos (QPointF) – Левый верхний угол, если есть необходимость отрисовать в другом месте

drawSelected(context)

Отрисовка выделения элемента легенды в заданном контексте

Параметры

context (Context) – Контекст, в котором будет отрисовано выделение элемента легенды

drawSelected(context, pos)

Отрисовка выделения элемента легенды в заданном контексте

Параметры
  • context (Context) – Контекст, в котором будет отрисовано выделение элемент легенды

  • pos (QPointF) – Левый верхний угол, если есть необходимость отрисовать в другом месте

moveItem(oldPos, newPos)

Перемещение (смена позиции) элемента легенды

Параметры
  • oldPos (bool) – Старая позиция

  • newPos (float) – Новая позиция

name()

Наименование элемента легенды

Результат

Наименование

Тип результата

str

numberColumns()

Количество колонок, на которые разбиваются элементы легенды. По умолчанию установлено значение 1.

Результат

Количество колонок.

Тип результата

int

rect()

Прямоугольник, который занимает данный элемент легенды

Результат

Ограничивающий прямоугольник

Тип результата

QRectF

rect(pos)

Прямоугольник, который занимает данный элемент легенды с указанием начальной точки

Параметры

pos (QPointF) – Левый верхний угол

Результат

Ограничивающий прямоугольник

Тип результата

QRectF

refreshStyleItems()

Обновление значений элементов легенды

setBasePoint(value)

Установка нового значения базовой точки

Параметры

value (QPointF) – Значение

setBaseSizeStyleElement(value)

Переопределение базового размера элемента

Параметры

value (QSize) – размер

setBorderStyle(style)

Задание стиля окантовки

Параметры

style (LineStringStyle) – Стиль. Значение None убирает окантовку

setCaption(value)

Установка нового значения заголовка элемента легенды

Параметры

value (str) – Новое значения заголовка

setDescriptionItem(index, value)

Изменение описания элемента легенды

Параметры
  • index (int) – Индекс

  • value (str) – Новое описание элемента

setNumberColumns(value)

Задание количества колонок

Параметры

value (int) – Количество колонок

setSubCaption(value)

Установка нового значения подзаголовка элемента легенды

Параметры

value (str) – Новое значения подзаголовка

setTextRender(value)

Установка нового значения отрисовщика элемента

Параметры

value (TextRenderer) – Новое значение

setTextRenderCaption(value)

Установка нового значения отрисовщика заголовка легенды

Параметры

value (TextRenderer) – Новое значение

setTextRenderSubCaption(value)

Установка нового значения отрисовщика подзаголовка легенды

Параметры

value (TextRenderer) – Новое значение

setVisibledItem(index, value)

Управление видимостью элемента легенды.

Параметры
  • index (int) – Индекс

  • value (bool) – True, если необходимо сделать видимым. В противном случае False

space()

Промежуток в пикселях между элементами легенды

Результат

Значение

Тип результата

int

styleItemAt(index)

Возвращает элемент по его индексу

Параметры

index (int) – Индекс

Результат

Элемент

Тип результата

LegendItemComponent

styleItems()

Список элементов легенды

Результат

Список

Тип результата

list [LegendItemComponent]

subCaption()

Подзаголовок элемента легенды

Результат

Подзаголовок

Тип результата

str

textRender()

Отрисовщик элементов легенды

Результат

Установленное значение

Тип результата

TextRenderer

textRenderCaption()

Отрисовщик заголовка легенды

Результат

Установленное значение

Тип результата

TextRenderer

textRenderSubCaption()

Отрисовщик подзаголовка легенды

Результат

Установленное значение

Тип результата

TextRenderer

transform(transform)

Преобразование (трансформирование) легенды

Параметры

transform (QTransform) – Матрица преобразования

updateComponent(index, component)

Замена существующего элемента легенды новым значением

Параметры

Пример использования:

# Импорт
from axioma.render import *

from PyQt5.QtCore import  *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class StyleDialog(QDialog):

    def __init__(self, parent, layers):
        QDialog.__init__(self, parent)
        self.setGeometry(200, 200, 600, 400)
        self.setWindowTitle('Пример легенды')
        self.layers = layers # Перечень слоев, для которых будет строиться легенда
        self.image = QImage()  # временный растр, куда производится отрисовка легенды

# Создание контекста
    def createContext(self, painter):
        deviceRect = sceneRect = QRectF(0,0,100,100)
        viewport = Viewport (deviceRect,sceneRect)
        return Context(painter, viewport)

# Отрисовка элемента легенды
    def drawElement(self, fi, context, pos):
        r = fi.rect()
        fi.draw(context, pos)
        pos.setY(pos.y() + 10 + r.height())
        return pos

    def renderLegend(self): # Рисуем в растр
        self.image = QImage(self.size(), QImage.Format_ARGB32_Premultiplied)
        painter = QPainter(self.image)
        painter.fillRect(self.image.rect(), Qt.white)
        context = self.createContext(painter)
        pos = QPoint(10, 10)
        for lay in self.layers:
            if isinstance(lay, HasStyles): # Если есть легенда
                fi = FeatureLegendItem(lay, lay.name(), self)
                pos = self.drawElement(fi, context, pos)
                if isinstance(lay, LayerWithThematic):
                    thematics  = lay.createLegendsList() # Перечень легенд для тематики, если таковые имеются
                    for them in thematics:
                        pos = self.drawElement(them, context, pos)

    def paintEvent(self, event):
        try:
            painter = QPainter(self)
            if not self.image.isNull():
                painter.drawImage(0,0, self.image)
        except Exception as ex:
            print(ex)

    def resizeEvent(self, event):
        self.renderLegend()

# Текущая карта
mapview = axioma.app.mainWindow.mapViewManager().currentMapView()
if mapview is not None:
    layers = mapview.map().flatLayerList() # Список слоев карты
    dlg = StyleDialog(axioma.app.mainWindow, layers)
    dlg.exec()
else:
    QMessageBox.information(axioma.app.mainWindow, QObject().tr("Информация"), QObject().tr("Текущая карта не найдена"))