products:pyrog:tutorials:dev:main
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:pyrog:tutorials:dev:main [2026/06/05 00:54] – ironmesh | products:pyrog:tutorials:dev:main [2026/07/25 18:47] (текущий) – [2.3.2 Процедура перевода] ironmesh | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Руководство по разработке ====== | ====== Руководство по разработке ====== | ||
| - | Для разработки собственного приложения нужно иметь минимум базовые навыки разработки на Python и PySide6. | + | Для разработки собственного приложения нужно иметь минимум базовые навыки разработки на Python и PySide6. |
| - | ==== 2.1 Скачивание исходников и подготовка IDE к работе ==== | + | ===== 1. Быстрый старт ===== |
| - | Скачайте | + | ==== 1.1 Скачивание исходников и подготовка |
| - | Теперь, нам нужно подготовить среду разработки для работы, я опишу | + | Скачайте исходные файлы программы из [[https:// |
| - | Можете выключить ненужные плагины, чтобы не мешали. | + | Теперь, |
| - | ==== 2.2 Анатомия плагина | + | >Можете выключить ненужные |
| - | В Python пакетом является папка, которая содержит в себе файл с именем '' | + | ==== 1.2 Анатомия плагина ==== |
| + | |||
| + | В Python пакетом является папка, которая содержит в себе файл с именем | ||
| <code -> | <code -> | ||
| Строка 28: | Строка 30: | ||
| </ | </ | ||
| - | В файле '' | + | В файле '' |
| <code python> | <code python> | ||
| Строка 41: | Строка 43: | ||
| </ | </ | ||
| - | В файле manifest.json хранится информация о плагине, | + | В файле |
| <code json> | <code json> | ||
| Строка 69: | Строка 71: | ||
| </ | </ | ||
| - | Пояснение к атрибутам: | + | Пояснения к атрибутам: |
| - | * **name** | + | ^ Поле ^ Описание ^ Пример ^ |
| - | | + | | **name** |
| - | | + | | **description** |
| - | | + | | **project_page_url** |
| - | | + | | **manual_url** |
| - | | + | | **version** |
| - | | + | | **version_status** |
| - | | + | | **init_release_date** |
| - | | + | | **update_date** |
| - | | + | | **developer** |
| - | | + | | **developer_email** |
| - | | + | | **developer_webpage** |
| - | | + | | **repository_url** |
| - | | + | | **forum_url** |
| - | | + | | **dependencies** |
| + | | **source_language** | ||
| Папка '' | Папка '' | ||
| Строка 159: | Строка 162: | ||
| | BoolProperty | bool | Булевое значение | | | BoolProperty | bool | Булевое значение | | ||
| | ColorProperty | str | Строка с кодом цвета в формате HEX, например, | | ColorProperty | str | Строка с кодом цвета в формате HEX, например, | ||
| - | | FontProperty | | + | | FontProperty | tuple[str, str, int] |
| | ComboBoxProperty | int | Индекс выбранного элемента списка | | | ComboBoxProperty | int | Индекс выбранного элемента списка | | ||
| | StringProperty | str | Строка | | | StringProperty | str | Строка | | ||
| Строка 166: | Строка 169: | ||
| | FilePathProperty | str | Строка, | | FilePathProperty | str | Строка, | ||
| | FilePathListProperty | tuple[tuple[str, | | FilePathListProperty | tuple[tuple[str, | ||
| + | | PlainTextProperty | str | Строка, | ||
| + | | DateTimeProperty | str | Дата и время в виде строки, | ||
| - | Чтобы использовать свойства в коде, просто импортируем класс Settings, и вызываем свойство '' | + | Чтобы использовать свойства в коде, просто импортируем класс |
| Итак, вы познакомились с устройством плагина и этих минимальных сведений достаточно для разработки своих программ, | Итак, вы познакомились с устройством плагина и этих минимальных сведений достаточно для разработки своих программ, | ||
| Строка 173: | Строка 178: | ||
| Как вы видите для того чтобы работать с Pyrog нужно объявить специальный класс плагина, | Как вы видите для того чтобы работать с Pyrog нужно объявить специальный класс плагина, | ||
| - | ===== 3. Расширяем познания ===== | + | ===== 2. Расширяем познания ===== |
| В предыдущем разделе мы познакомились с основами разработки плагинов, | В предыдущем разделе мы познакомились с основами разработки плагинов, | ||
| Строка 186: | Строка 191: | ||
| * других нюансах и особенностях. | * других нюансах и особенностях. | ||
| - | ==== 3.1 Жизненный цикл плагина ==== | + | ==== 2.1 Жизненный цикл плагина ==== |
| Когда пользователь запускает Менеджер, | Когда пользователь запускает Менеджер, | ||
| Строка 197: | Строка 202: | ||
| Если пользователь деактивирует плагин, | Если пользователь деактивирует плагин, | ||
| - | ==== 3.2 Ваш универсальный помощник ==== | + | ==== 2.2 Ваш универсальный помощник ==== |
| Для общения с Менеджером используйте класс '' | Для общения с Менеджером используйте класс '' | ||
| Строка 203: | Строка 208: | ||
| Данный класс предоставляет следующие методы: | Данный класс предоставляет следующие методы: | ||
| - | ^ Метод | + | === 2.2.1 Методы |
| - | | save_settings_parameters | Сохраняет параметры Свойств, | + | |
| - | | save_settings_values | Сохраняет значения Свойств, | + | |
| - | | plugin_dir_abspath | Возвращает строку с абсолютным путем к папке плагина | | + | |
| - | | plugin_localstorage_dir_abspath | Возвращает строку с абсолютным путем к индивидуальной папке в локальном хранилище Менеджера ('' | + | |
| + | **save_settings_parameters()** | ||
| + | |||
| + | Сохраняет параметры Свойств, | ||
| + | |||
| + | **save_settings_values()** | ||
| + | |||
| + | Сохраняет значения Свойств, | ||
| + | |||
| + | **plugin_dir_abspath()** | ||
| + | |||
| + | Возвращает строку с абсолютным путем к папке плагина | ||
| + | |||
| + | **plugin_localstorage_dir_abspath()** | ||
| + | |||
| + | Возвращает строку с абсолютным путем к индивидуальной папке в локальном хранилище Менеджера ('' | ||
| + | |||
| + | |||
| + | === 2.2.2 Сигналы === | ||
| Helper также имеет ряд сигналов, | Helper также имеет ряд сигналов, | ||
| Строка 216: | Строка 235: | ||
| | app_closing | Пользователь закрыл Менеджер. Отправляется до того, как программа завершит работу. Полезен для безопасного завершения сессии. | | | app_closing | Пользователь закрыл Менеджер. Отправляется до того, как программа завершит работу. Полезен для безопасного завершения сессии. | | ||
| | settings_editing_starting | Пользователь открыл пользовательские настройки. Отправляется перед тем как окно редактирования будет выведено на экран. Полезно когда нужно подготовить программу к изменению настроек. | | | settings_editing_starting | Пользователь открыл пользовательские настройки. Отправляется перед тем как окно редактирования будет выведено на экран. Полезно когда нужно подготовить программу к изменению настроек. | | ||
| - | | settings_editing_finished | Пользователь завершил редактирование настроек. \\ Возвращает булевое значение, | + | | settings_editing_finished | Пользователь завершил редактирование настроек. \\ Возвращает булевое значение, |
| - | + | ||
| - | В любом случае вы можете отслеживать изменения значений Свойств на лету. | + | |
| Весь код в Менеджере выполняется синхронно, | Весь код в Менеджере выполняется синхронно, | ||
| - | ==== 3.3 Делаем локализацию интерфейса ==== | + | ==== 2.3 Делаем локализацию интерфейса ==== |
| Итак, для разблокировки механизма интернационализации нужно в файле манифеста указать исходный язык, например, | Итак, для разблокировки механизма интернационализации нужно в файле манифеста указать исходный язык, например, | ||
| - | ==== 3.3.1 Языковые константы ==== | + | ==== 2.3.1 Языковые константы ==== |
| Языковые константы (ЯК) - это объекты, | Языковые константы (ЯК) - это объекты, | ||
| Строка 245: | Строка 262: | ||
| * контекст | * контекст | ||
| * текст константы | * текст константы | ||
| - | * (опционально) строка идентификатор, | + | * (опционально) строка идентификатор, |
| Извлечь перевод (при его наличии, | Извлечь перевод (при его наличии, | ||
| Строка 310: | Строка 327: | ||
| Обращаю ваше внимание, | Обращаю ваше внимание, | ||
| - | ==== 3.3.2 Процедура перевода ==== | + | ==== 2.3.2 Процедура перевода ==== |
| Теперь, | Теперь, | ||
| Рассмотрим подробнее, | Рассмотрим подробнее, | ||
| - | + | - Пользователь изменил язык | |
| - | 1. Пользователь изменил язык | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| Итак, нам как разработчикам плагинов нужно сосредоточиться на шаге 4, когда у нас есть окно возможностей между загрузкой и выгрузкой словарей, | Итак, нам как разработчикам плагинов нужно сосредоточиться на шаге 4, когда у нас есть окно возможностей между загрузкой и выгрузкой словарей, | ||
| Строка 355: | Строка 371: | ||
| Когда мы используем QtDesigner для создания форм интерфейса, | Когда мы используем QtDesigner для создания форм интерфейса, | ||
| - | ==== 3.3.3 Подготовка словарей ==== | + | ==== 2.3.3 Подготовка словарей ==== |
| После того как работа над кодом плагина закончена, | После того как работа над кодом плагина закончена, | ||
| Строка 377: | Строка 393: | ||
| Сейчас можно не делать перевод полностью руками, | Сейчас можно не делать перевод полностью руками, | ||
| - | ==== 3.4 Система свойств ==== | + | ==== 2.4 Система свойств ==== |
| - | ==== 3.4.1 Как работать со Свойствами ==== | + | ==== 2.4.1 Как работать со Свойствами ==== |
| Свойство в контексте Pyrog это программная единица, | Свойство в контексте Pyrog это программная единица, | ||
| Строка 413: | Строка 429: | ||
| **Как получить доступ к графическому интерфейсу** Каждое Свойство имеет метод '' | **Как получить доступ к графическому интерфейсу** Каждое Свойство имеет метод '' | ||
| - | ==== 3.4.2 Как работать с контейнером свойств ==== | + | ==== 2.4.2 Как работать с контейнером свойств ==== |
| По своей сути Контейнер свойств это обычный класс, унаследованный от '' | По своей сути Контейнер свойств это обычный класс, унаследованный от '' | ||
| Строка 481: | Строка 497: | ||
| * '' | * '' | ||
| - | ==== 3.4.3 Как разработать собственное Свойство ==== | + | ==== 2.4.3 Как разработать собственное Свойство ==== |
| Может так случиться, | Может так случиться, | ||
| - | **Шаг 1** Объявляем класс и создаем сигнал. Имя сигнала не изменять! | + | **Шаг 1.** Объявляем класс и создаем сигнал. Имя сигнала не изменять! |
| <code python> | <code python> | ||
| Строка 492: | Строка 508: | ||
| </ | </ | ||
| - | **Шаг 2** Задание схемы параметров Свойства, | + | **Шаг 2.** Задание схемы параметров Свойства, |
| <code python> | <code python> | ||
| Строка 544: | Строка 560: | ||
| параметр '' | параметр '' | ||
| - | **Шаг 3** Создаем свойства для всех параметров, | + | **Шаг 3.** Создаем свойства для всех параметров, |
| <code python> | <code python> | ||
| Строка 565: | Строка 581: | ||
| * '' | * '' | ||
| - | **Шаг 4** Пишем конструктор. В модуле '' | + | **Шаг 4.** Пишем конструктор. В модуле '' |
| <code python> | <code python> | ||
| Строка 588: | Строка 604: | ||
| Набор аргументов должен совпадать с набором параметров. | Набор аргументов должен совпадать с набором параметров. | ||
| - | **Шаг 5** Пишем метод создания виджета ввода | + | **Шаг 5.** Пишем метод создания виджета ввода |
| <code python> | <code python> | ||
| Строка 607: | Строка 623: | ||
| На первом шаге проверяем был ли ранее создан виджет, | На первом шаге проверяем был ли ранее создан виджет, | ||
| - | **Шаг 6** Пишем методы обновления параметров и значения виджета | + | **Шаг 6.** Пишем методы обновления параметров и значения виджета |
| <code python> | <code python> | ||
| Строка 646: | Строка 662: | ||
| Используем функцию '' | Используем функцию '' | ||
| - | **Шаг 7** Пишем обработчик события: | + | **Шаг 7.** Пишем обработчик события: |
| <code python> | <code python> | ||
| Строка 668: | Строка 684: | ||
| Метод '' | Метод '' | ||
| - | **Шаг 8** Пишем метод валидации значения | + | **Шаг 8.** Пишем метод валидации значения |
| <code python> | <code python> | ||
| Строка 697: | Строка 713: | ||
| **Шаг 9 (ситуативный)** Иногда нужно переопределить код свойства value, например, | **Шаг 9 (ситуативный)** Иногда нужно переопределить код свойства value, например, | ||
| - | ==== 3.4.4 Разработка кастомного интерфейса для контейнера свойств ==== | + | ==== 2.4.4 Разработка кастомного интерфейса для контейнера свойств ==== |
| Если вас не удовлетворяет стандартный интерфейс вывода виджетов Свойств, | Если вас не удовлетворяет стандартный интерфейс вывода виджетов Свойств, | ||
| Строка 759: | Строка 775: | ||
| Тут все просто, | Тут все просто, | ||
| - | ==== 3.5 Несколько слов о недостатках ==== | + | ==== 2.5 Несколько слов о недостатках ==== |
| * При импорте плагины выполняются не в изолированной среде, а фактически становятся частью всей программы и каждому из них доступен весь код в рамках сессии. Таким образом любой плагин может вмешаться в работу Менеджера и других плагинов, | * При импорте плагины выполняются не в изолированной среде, а фактически становятся частью всей программы и каждому из них доступен весь код в рамках сессии. Таким образом любой плагин может вмешаться в работу Менеджера и других плагинов, | ||
products/pyrog/tutorials/dev/main.1780610049.txt.gz · Последнее изменение: — ironmesh