BasicToolExtension

class axioma.gui.extension.BasicToolExtension

Класс расширений для плагинов, позволяющий добавлять инструменты напрямую, без помощи контроллера для работы с окнами в приложении. В конструктор дополнительно передается класс окна, для которого будет доступен инструмент.

Унаследован от:

  • ToolControllerExtension

    BasicToolExtension(toolClass, widgetClass, actionid, category="", tab="", group="", icon=None, text=None)

    Конструктор класса.

    Параметры:
    • toolClass – Наименование класса инструмента, наследованного от Tool.
    • widgetClass – Класс виджетов, с которым будет работать инструмент. Например: axioma.gui.MapView, axioma.gui.ItemView, axioma.gui.ReportView
    • actionid (str) – Идентификатор инструмента в ленточном интерфейсе
    • category (str) – Идентификатор категории в ленточном интерфейсе
    • tab (str) – Идентификатор вкладки в ленточном интерфейсе
    • group (str) – Идентификатор группы в ленточном интерфейсе
    • icon (QIcon) – Иконка для QAction инструмента
    • text (str) – Текст для QAction инструмента

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from PyQt5.QtGui import QMouseEvent, QIcon
from PyQt5.QtCore import Qt
from axioma.gui import *
import axioma.gui.extension
from axioma.core.plugin import *

'''
Пример реализации простейшего инструмента для карты в виде расширения. 
По нажатию левой кнопки мыши выводятся координаты на карте
'''

# Определяем свой класс инструмента
class ExampleTool(Tool):

    def mousePressEvent(self, event):
        if event.button() != Qt.LeftButton:
            return
        posOnMap = self.widget().viewport().mapToScene(event.pos()) # Преобразуем координаты из окна в координаты карты
        print("Координаты точки карты ({}, {})".format(posOnMap.x(), posOnMap.y())) # выводим полученную координату
        return Tool.PassEvent

# Регистрируем расширение в системе.
ext = axioma.gui.extension.BasicToolExtension(ExampleTool, axioma.gui.MapView, "ExampleToolId", icon=QIcon("://icons/32px/info.png"), text="Координаты точки карты")
axioma.app.gui.prependExtension(ext)

# Добавляем инструмент в закладку карты
ribbonExt = axioma.gui.extension.RibbonExtension()
ribbonExt.addAction("ExampleToolId", "map", "operations")
axioma.app.gui.prependExtension(ribbonExt)