Плагіни¶
Важливо
Плагіни — це експериментальна функція! API може змінюватися.
Ми запрошуємо вас спробувати надіслати свій відгук.
Плагіни дозволяють розширити функціональність Gaphor за межі можливостей, наданих у стандартних дистрибутивах. Зокрема, плагіни можуть бути корисними, якщо ви встановлюєте бінарні дистрибутиви, доступні на сторінці завантаження.
Gaphor можна розширити через точки входу кількома способами:
Додатки (глобальні) служби (
gaphor.appservices)Спеціальні служби сеансу (
gaphor.services)Мови моделювання (
gaphor.modelinglanguages)(Під)парсери командного рядка (
gaphor.argparsers)Непрямо завантажені модулі (
gaphor.modules), переважно для компонентів інтерфейсу користувача
За замовчуванням для плагінів використовується каталог $HOME/.local/gaphor/plugins-2 ($USER/.local/gaphor/plugins-2 у Windows). Це розташування можна змінити, встановивши змінну оточення GAPHOR_PLUGIN_PATH і вказавши на каталог.
Встановити плагін¶
На даний момент Gaphor не має вбудованої функціональності для встановлення та підтримки плагінів. Щоб встановити плагін, використовуйте pip з інсталяції Python на вашому комп’ютері. На macOS і Linux це має бути легко, на Windows вам може знадобитися встановити Python окремо з python.org або з Windows Store.
Важливо
Оскільки плагіни встановлюються з версією Python вашої системи, важливо, щоб плагіни були чистим Python і не містили скомпільований код C.
Якщо ви використовуєте Gaphor, встановлений як Flatpak, вам потрібно надати Gaphor доступ до файлів користувача (
filesystem=home), щоб Gaphor міг знаходити файли у вашій теці.local. Ви можете скористатися FlatSeal для зміни дозволів для Flatpak’ів.
Наприклад: щоб установити плагін Hello World у Linux і macOS, введіть:
pip install --target $HOME/.local/gaphor/plugins-2 git+https://github.com/gaphor/gaphor_plugin_helloworld.git
Потім запустіть Gaphor, як зазвичай. До меню інструментів додано новий пункт Hello World ( → Інструменти → Hello World).
Створіть власний плагін¶
Якщо ви хочете написати плагін самостійно, ви можете ознайомитися з принципами проектування, сервісно-орієнтованою архітектурою та фреймворком, керованим подіями Gaphor.
Приклад плагіна¶
Ви можете переглянути плагін Hello World, доступний на GitHub, щоб отримати приклад того, як створити власний плагін.
Файл pyproject.toml містить плагін:
[tool.poetry.plugins."gaphor.services"]
"helloworld" = "gaphor_helloworld_plugin:HelloWorldPlugin"
Це відноситься до класу HelloWorldPlugin у пакеті/модулі gaphor_plugins_helloworld.
Ось урізана версія плагіна Hello World:
from gaphor.abc import Service, ActionProvider
from gaphor.core import _, action
class HelloWorldPlugin(Service, ActionProvider): # 1.
def __init__(self, tools_menu): # 2.
self.tools_menu = tools_menu
tools_menu.add_actions(self) # 3.
def shutdown(self): # 4.
self.tools_menu.remove_actions(self)
@action( # 5.
name="helloworld",
label=_("Hello world"),
tooltip=_("Every application…"),
)
def helloworld_action(self):
main_window = self.main_window
... # gtk code left out
Як було сказано раніше, плагін повинен реалізовувати інтерфейс
Service. Він також реалізуєActionProvider, кажучи, що він має деякі дії, які повинен виконати користувач.Пункт меню буде частиною меню розширення «Інструменти». Цей пункт розширення створено як службу. Інші сервіси також можуть бути передані як залежності. Сервіси можуть отримувати посилання на інші сервіси, визначаючи їх як аргументи конструктора.
Усі дії, визначені в цьому сервісі, реєструються.
Кожна служба має метод
shutdown(). Це дозволяє службі виконувати певне очищення, коли вона вимкнена.Дія, яку можна викликати. Дія визначена та буде підібрана методом add_actions() (див. 3.)
Поширені запитання щодо розробки плагінів¶
Як отримати доступ до послуг gaphor у своєму плагіні?¶
Сервіси Gaphor можна зробити доступними, перерахувавши імена сервісів у функції init вашого класу плагіна. Для цього також потрібно включити Service як базовий клас. У прикладі HelloWorldPlugin включено сервіс tools_menu.
Більш повний опис цього підходу можна знайти на сторінці документації щодо сервісно-орієнтованої архітектури.
Плагіни, розроблені спільнотою¶
Gaphor_Tools¶
Що це робить?¶
Імпорт та експорт вимог і приміток SysML до Excel та Confluence. Наразі ця функція знаходиться на стадії підтвердження концепції, але вона дозволяє експортувати таблицю вимог, потім редагувати та імпортувати її, вносячи всі зміни в модель, аналогічно до приміток до елементів.
Де я можу це отримати?¶
З цього BitBucket Repo