ToolControllerExtension

class axioma.gui.extension.ToolControllerExtension

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

Базовый класс:

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

Методы:

ToolControllerExtension(factory, actionid, category="", tab="", group="", icon=None, text=None)

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

Параметры:
  • factory – Callable объект, который при вызове принимает аргумент parent типа QObject и возвращает объект класса управления инструментом, наследованный от ToolController.
  • actionid (str) – Идентификатор инструмента в ленточном интерфейсе
  • category (str) – Идентификатор категории в ленточном интерфейсе
  • tab (str) – Идентификатор вкладки в ленточном интерфейсе
  • group (str) – Идентификатор группы в ленточном интерфейсе
  • icon (QIcon) – Иконка для QAction инструмента
  • text (str) – Текст для QAction инструмента

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

# Пример инструмента с поддержкой возможности привязки к координатам '''
class MySnapTool(axioma.gui.SnapTool):
    def __init__(self, view, gsm):
        super().__init__(view, gsm)

# Переопределяем нажатие на клавишу мыши
    def mousePressEvent(self, event):
    try:
# Если нажали левую клавишу мыши
        if (event.button() == Qt.LeftButton):
# Координаты сцены по нажатию
            currentPoint = self.scenePoint()
# Исправленные координаты
            snapped = self.snapPoint()
            sourcePointMess = 'Исходная точка {} {}'.format(currentPoint.x(), currentPoint.y())
            snapPointMess = 'Исправленная точка {} {}'.format(snapped.x(), snapped.y())
            QMessageBox.information(axioma.app.mainWindow, "Результат", sourcePointMess + '\n' + snapPointMess)
    except Exception as ex:
        print(ex)
    finally:
        return super().mousePressEvent(event)

# Определяем контроллер для создания нашего инструмента
class MySnapToolController(axioma.gui.extension.DrawingToolController):
    def __init__(self, parent=None):
        super().__init__( parent)

# Переопределяем метод создания инструмента
    def createTool(self, widget):
        return MySnapTool(widget, self.guiSettingsManager())

def createMyExtensions():
# Получаем ссылку на существующий интерфейс приложения
    ribbonExt = axioma.gui.extension.RibbonExtension()
# Создаем новую группу в панели карты
    ribbonExt.addGroup("map","SnapGroupId", "Узлы")
    ribbonExt.addAction("MySnapTool", "map", "SnapGroupId")
# Создаем расширение на базе ранее определенного контроллера
    toolExt = axioma.gui.extension.ToolControllerExtension(MySnapToolController, "MySnapTool", icon=QIcon("://icons/16px/snap_geometries.png"), text="Пример инструмента со SNAP")
    return [ribbonExt, toolExt]