Инструменты пользователя

Инструменты сайта


products:pussy:other:quick_start

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:pussy:other:quick_start [2023/11/26 17:45] ironmeshproducts:pussy:other:quick_start [2023/12/13 14:54] (текущий) – внешнее изменение 127.0.0.1
Строка 5: Строка 5:
 ===== Пишем свой плагин ===== ===== Пишем свой плагин =====
  
-О концепции Плагина читайте в [[:products:pussy:concepts:plugin|статье]]. Если говорить коротко, то плагин это просто набор скриптов Python (пакет), который обязан иметь собственный графический интрефейс, в данном случае это класс виджета, который встраивается в окно Менеджера, за этим интерфейсом может скрываться совершенно любая реализация.+О концепции Плагина читайте в [[:products:pussy:concepts:plugin|статье]]. Если говорить коротко, то плагин это просто набор скриптов Python (пакет), который обязан иметь собственный графический интерфейс, в данном случае это класс виджета, который встраивается в окно Менеджера, за этим интерфейсом может скрываться совершенно любая реализация.
  
-Для работы нам потребуется:+Для работы нам потребуется:\\ 
 +* Python3;
  
-  * Python3; 
   * PySide6;   * PySide6;
   * Инструмент для написания кода (я предпочитаю IDE [[:products:pussy:other:main|PyCharm]]);   * Инструмент для написания кода (я предпочитаю IDE [[:products:pussy:other:main|PyCharm]]);
Строка 24: Строка 24:
 Описание алгоритма: код от «замка» устанавливается через настройки, если код введен верно, то поле загорается зелеными, иначе – красным, поле блокируется на несколько секунд. Описание алгоритма: код от «замка» устанавливается через настройки, если код введен верно, то поле загорается зелеными, иначе – красным, поле блокируется на несколько секунд.
  
-Посмотрим на плагин в общих чертах, по сути это пакет Python - папка, содержащая файл // initpy//, размещается она в папке **manager/Plugins**, либо во внешних директориях, указанных в настройках. В папке **Plugins **  есть шаблон (папка **Template**) скопируйте его, когда будете писать свой плагин, переименуйте папку и файлы как посчитает нужным.+Посмотрим на плагин в общих чертах, по сути это пакет Python - папка, содержащая файл // _ _initpy_ _//, размещается она в папке **manager/Plugins**, либо во внешних директориях, указанных в настройках. В папке **Plugins **  есть шаблон (папка **Template**)скопируйте его, когда будете писать свой плагин, переименуйте папку и файлы как посчитаете нужным.
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Строка 30: Строка 30:
 //Внимание! Пакеты с именем //**// Template //  **//игнорируются при загрузке.//</WRAP> //Внимание! Пакеты с именем //**// Template //  **//игнорируются при загрузке.//</WRAP>
  
-В нашем случае плагин будет разделен на 4 файла (в исходных файла он находится в **Plugins/Codelock**): // init.py//  – здесь будет производится регистрация класса с интерфейсом и размещается дополнительная информация, ничего более тут выполнять не нужно; //View.py//  – здесь определен главный класс интерфейса; //Settings.py//  – класс с настройками; //ui_ form.py//  – код виджета, сгенерированный в [[:products:pussy:other:qtdesigner|QtDesigner]]. В зависимости от сложности плагина и предпочтений разработчиков структура может быть любая, но в каждом случае в файле //init.py //  должная происводиться регистрация виджета плагина.+В нашем случае плагин будет разделен на 4 файла (в исходные файлы находятся в **Plugins/Codelock**): //_ _ init_ _.py//  – здесь будет производится регистрация класса с интерфейсом и размещается дополнительная информация, ничего более тут выполнять не нужно; //View.py//  – здесь определен главный класс интерфейса; //Settings.py//  – класс с настройками; //ui_ form.py//  – код виджета, сгенерированный в [[:products:pussy:other:qtdesigner|QtDesigner]]. В зависимости от сложности плагина и предпочтений разработчиков структура может быть любая, но в каждом случае в файле //_ _init.py_ _ //  должна производиться регистрация виджета плагина.
  
 Так выглядит код //View.py//: Так выглядит код //View.py//:
Строка 91: Строка 91:
 </code> </code>
  
-В данном коде определен класса интерфейса, также в нем описана вся логика программы, для крупных программ так делать не рекомендуется. Этот класс унаследован от **UBWidget **  и его экземпляр будет встраиваться в окно Менеджера в качестве вкладки. Код в методе //__ init__  () //  выполняется, когда пользователь перешел во вкладку, в которой размещается экземпляр данного класса, или при запуске Менеджера, если пользователь ранее активировал параметр «Инициализировать при запуске» ( init on startup).+В данном коде определен класса интерфейса, также в нем описана вся логика программы, для крупных программ так делать не рекомендуется. Этот класс унаследован от **UBWidget **  и его экземпляр будет встраиваться в окно Менеджера в качестве вкладки. Код в методе //_ _init_ _ () //  выполняется, когда пользователь перешел во вкладку, в которой размещается экземпляр данного класса, или при запуске Менеджера, если пользователь ранее активировал параметр «Инициализировать при запуске» (init on startup).
  
 В данном варианте бы определили следующие атрибуты и методы: В данном варианте бы определили следующие атрибуты и методы:
Строка 118: Строка 118:
 Тут определено всего одно свойство для ввода строки. Подробнее о контейнере свойств и самих свойствах смотрите в материалах: [[:products:pussy:concepts:property|]], [[:products:pussy:concepts:propertycontainer|]], [[:products:pussy:api:pyub:types:propertycontainer|]]. Тут определено всего одно свойство для ввода строки. Подробнее о контейнере свойств и самих свойствах смотрите в материалах: [[:products:pussy:concepts:property|]], [[:products:pussy:concepts:propertycontainer|]], [[:products:pussy:api:pyub:types:propertycontainer|]].
  
-Итак, все важные классы мы уже определили, теперь нужно сообщить Менеджеру какой класс нужно устанавливать. Для этого в модуле //[[:products:pussy:api:pyub:utils|]]// есть функция //register_ubwidget()//, в нее надо передать ссылку на класс-потомок **UBWidget**, в плагине можно зарегистрировать только один класс, это действие нужно выполнить в файле //__init__.py//. Также в этом файле по желанию можно определить дополнительную информацию о плагине, создать переменную //ub_info//  ={…}, это типичный словарьдопускаются ключи и значения только строкового типа.+Итак, все важные классы мы уже определили, теперь нужно сообщить Менеджеру какой класс нужно устанавливать. Для этого в модуле //[[:products:pussy:api:pyub:utils|]]// есть функция //register_ubwidget()//, в нее надо передать ссылку на класс-потомок **UBWidget**, в плагине можно зарегистрировать только один класс, это действие нужно выполнить в файле //_ _init.py_ _//. Также в этом файле по желанию можно определить дополнительную информацию о плагине, создать переменную //ub_info//  ={…}, это типичный словарьдопускаются ключи и значения только строкового типа, в таблице ниже показан пример оформления, некоторые пункты могут быть исключены по желанию.
  
-| |**Ключ** |**Пример** |**Описание** |+| |**Ключ** |**Пример значения** |**Описание** |
 |1  |description  |“Этот плагин выводит спутник на орбиту”|Описание плагина. Дайте емкое и лаконичное описание плагина. Например, для чего он предназначен и т.д.| |1  |description  |“Этот плагин выводит спутник на орбиту”|Описание плагина. Дайте емкое и лаконичное описание плагина. Например, для чего он предназначен и т.д.|
 |2  |author  |"Иван Иванов"|Имя автора| |2  |author  |"Иван Иванов"|Имя автора|
-|3  |author_webpage  |“ivan_ivanov.com”  |Веб-страница автора|+|3  |author_webpage  |“[[http://www.ironmesh.ru|www.ironmesh.ru]]”  |Веб-страница автора|
 |4  |author_email  |“ivan_ivanov@mail.com”  |Адрес электронной почты автора| |4  |author_email  |“ivan_ivanov@mail.com”  |Адрес электронной почты автора|
 |5  |version  |“1.3.4”  |Версия плагина| |5  |version  |“1.3.4”  |Версия плагина|
 |6  |wiki_url  |“ivan_ivanov.wiki.com”  |Ссылка на страницу вики| |6  |wiki_url  |“ivan_ivanov.wiki.com”  |Ссылка на страницу вики|
 +
 +Подведем итоги. В данной статье я дал необходимы сведения касательно разработки собственных плагинов, как вы можете убедиться, в этом нет ничего сложного, при наличии опыта разработки с применение перечисленных технологий. Более подробную информацию ищите в других разделах вики. Если что-то осталось неясным, то можете задать свои вопросы в [[https://discord.gg/JD5yKPrKCk|Discord]].
  
  
products/pussy/other/quick_start.1701009916.txt.gz · Последнее изменение: (внешнее изменение)