LegendItemComponent

class axioma.render.LegendItemComponent

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

LegendItemComponent(style, description, objects=-1)

Конструктор

Параметры:
  • style (Style) – Стиль оформления элемента.
  • description (str) – Текстовое описание.
  • objects (int) – Количество объектов. Применим только для тематики по интервалам.
LegendItemComponent(other)

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

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

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

Type:Style
description()

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

Результат:Строка с описанием
Тип результата:str
fullDescription()

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

Результат:Строка с описанием
Тип результата:str
setDescription(description)

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

Параметры:description (str) – Описание
setDescriptionChanged(description)

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

Параметры:description (str) – Описание
setObjectCount(objects)

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

Параметры:objects (bool) – Количество
objectCount()

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

Результат:Значение
Тип результата:int
isVisible

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

Type:bool

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) – Исходный объект, на базе которого создается новый.
clone()

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

Результат:Копия объекта
Тип результата:LegendItem
rect()

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

Результат:Ограничивающий прямоугольник
Тип результата:QRectF
rect(pos)

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

Параметры:pos (QPointF) – Левый верхний угол
Результат:Ограничивающий прямоугольник
Тип результата:QRectF
refreshStyleItems()

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

draw(context)

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

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

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

Параметры:
  • context (Context) – Контекст, в котором будет отрисован элемент легенды
  • pos (QPointF) – Левый верхний угол, если есть необходимость отрисовать в другом месте
drawSelected(context)

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

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

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

Параметры:
  • context (Context) – Контекст, в котором будет отрисовано выделение элемент легенды
  • pos (QPointF) – Левый верхний угол, если есть необходимость отрисовать в другом месте
name()

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

Результат:Наименование
Тип результата:str
baseSizeStyleElement()

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

Результат:Размер
Тип результата:QSize
setBaseSizeStyleElement(value)

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

Параметры:value (QSize) – размер
textRender()

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

Результат:Установленное значение
Тип результата:TextRenderer
setTextRender(value)

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

Параметры:value (TextRenderer) – Новое значение
caption()

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

Результат:Заголовок
Тип результата:str
setCaption(value)

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

Параметры:value (str) – Новое значения заголовка
subCaption()

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

Результат:Подзаголовок
Тип результата:str
setSubCaption(value)

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

Параметры:value (str) – Новое значения подзаголовка
textRenderCaption()

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

Результат:Установленное значение
Тип результата:TextRenderer
setTextRenderCaption(value)

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

Параметры:value (TextRenderer) – Новое значение
textRenderSubCaption()

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

Результат:Установленное значение
Тип результата:TextRenderer
setTextRenderSubCaption(value)

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

Параметры:value (TextRenderer) – Новое значение
basePoint()

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

Результат:Точка
Тип результата:QPointF
setBasePoint(value)

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

Параметры:value (QPointF) – Значение
borderStyle()

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

Результат:Стиль
Тип результата:LineStringStyle
setBorderStyle(style)

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

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

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

Результат:Количество колонок.
Тип результата:int
setNumberColumns(value)

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

Параметры:value (int) – Количество колонок
space()

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

Результат:Значение
Тип результата:int
transform(transform)

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

Параметры:transform (QTransform) – Матрица преобразования
setVisibledItem(index, value)

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

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

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

Параметры:
  • index (int) – Индекс
  • value (str) – Новое описание элемента
moveItem(oldPos, newPos)

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

Параметры:
  • oldPos (bool) – Старая позиция
  • newPos (float) – Новая позиция
styleItems()

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

Результат:Список
Тип результата:list [LegendItemComponent]
styleItemAt(index)

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

Параметры:index (int) – Индекс
Результат:Элемент
Тип результата:LegendItemComponent
updateComponent(index, component)

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

Параметры:
aboutToBeDestroyed()

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

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

# Импорт
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("Текущая карта не найдена"))