axioma.gui.extension.
BasicToolExtension
¶Класс расширений для плагинов, позволяющий добавлять инструменты напрямую, без помощи контроллера для работы с окнами в приложении. В конструктор дополнительно передается класс окна, для которого будет доступен инструмент.
Унаследован от:
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)
|