Pygin — Python adapter

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Pygin — Python adapter

Post by DrKnS » Wed 30 Dec, 2015 17:52

Image

Не прошло и трёх лет, как у меня дошли руки набросать демо для Python.
Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Mon 15 May, 2017 13:25

Latest post of the previous page:

Code: Select all

AttributeError: 'NoneType' object has no attribute 'PluginMenuItems'
Более понятно было бы что-нибудь типа.

Code: Select all

GetPluginInfoW did not return `PluginInfo' structure

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Mon 15 May, 2017 13:37

Code: Select all

╔═ Pygin: std::exception ═╗
║ bad cast                ║
╟─────────────────────────╢
║         { OK }          ║
╚═════════════════════════╝
Вылетает с этой вот хренью. Устал я.

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Python adapter

Post by DrKnS » Mon 15 May, 2017 14:55

techie wrote: Здесь на самом деле не создаётся объекта. Поэтому все изменения здесь будут во всех созданных объектах отражатся, пока объект их не перекроет.
Ну да, не создается, я как бы в курсе.
Тип класса ищется по имени ("FarPluginClass", да), потом этот тип инстанцируется адаптером.
Можно было просто сразу назвать класс не HelloWorldPlugin, а FarPluginClass. Как сейчас - это типа typedef.
techie wrote:лучше без лишних импортов
Ok.
techie wrote: Вылетает с этой вот хренью. Устал я.
В архиве лежит пример, как надо делать. Делайте так же, вылетать не будет.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Mon 15 May, 2017 20:29

DrKnS wrote: В архиве лежит пример, как надо делать. Делайте так же, вылетать не будет.
Это не питон, а шаманство какое-то. Не понимаю, в чём проблема. В том, что теперь надо обязательно использовать тип uuid из стандартной библиотеки? В питоне строгая типизация считается дурным тоном. Он хорош именно из-за duck typing.

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Python adapter

Post by DrKnS » Mon 15 May, 2017 21:08

techie wrote: Это не питон, а шаманство какое-то.
Весьма верно подмечено, это не питон. Это интеграция питона с совсем-не-питоном.
У себя в питоне можно как угодно, но при выходе из функции питон заканчивается и duck typing заканчивается, а strong typing начинается.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Tue 16 May, 2017 02:45

Я не очень горю становиться адептом очередного карго культа.

1. Что будет с Far, если плагиновый и менюшный GUID не указаны?
2. Почему Far не чекает плагины на дублицирующиеся GUIDы, и не предупреждает/вываливается, если для него это так важно?
3. Почему Far не может генерить GUID сам по адресу плагина в памяти + номеру строки меню, возвращаемого в GetPluginInfoW?
4. Зачем GUID надо писать с минусами строкой в 36 символов? Почему нельзя использовать строку с любой длиной?
5. Зачем ограничивать символы в GUID A-F, если хочется больше уникальности?

Пока я не получил ответы на эти вопросы.

Shmuel
Posts: 5234
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

Python adapter

Post by Shmuel » Tue 16 May, 2017 07:21

techie wrote: Я не очень горю становиться адептом очередного карго культа.
Прошло более 3 лет.

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Python adapter

Post by DrKnS » Tue 16 May, 2017 07:43

techie, это, несомненно, прекрасные вопросы, но они уже заданы в другой теме, а здесь это полнейший оффтопик.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Thu 18 May, 2017 14:12

Не знаю я почему это оффтопик здесь. В контексте питон адаптера эти гуиды как кость в горле. Я видел много binding'ов к C и С++ продуктам, много плагинов на питоне инетерфейсов для реализации. Опустим момент, что нигде для идентификации плагинов и меню не использовались гуиды. Более важно, что каждый раз подробно объяснялись особенности использования питона, и с какими архитектурными решениями это связно. Если важно сохранять ссылки, то объяснялось, кто и как их собирает. Если были дурные интерфейсы для С++, но приводился пример проблемы, которая всплывает, если их убрать.

Я не вижу смысла задавать прекрасные вопросы в общем виде в темах, кто народ не горит желанием копать и отвечать на них. Лучше решать их в контексте конкретных реализаций, и здесь они конкретно про Python адаптер. С другой целью меня эти гуиды больше не интересуют.

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Python adapter

Post by DrKnS » Thu 18 May, 2017 20:57

techie wrote: В контексте питон адаптера эти гуиды как кость в горле.
Кому-то налоги как кость в горле.
Кому-то ПДД как кость в горле.
Кому-то соседи как кость в горле.

Однако, если вы хотите пользоваться благами цивилизации, то на это горло приходится наступать и делать так, как все.

Гуиды в фаре используются для идентификации плагинов, независимо от особенностей языка и особенностей автора.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Tue 23 May, 2017 14:39

Ладно, как проверить, что плагин через адаптер загружен и версию самого адаптера?

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Python adapter

Post by DrKnS » Tue 23 May, 2017 15:01

techie wrote: как проверить, что плагин через адаптер загружен
Как обычно - по наличию его в тех меню, в которых он должен быть.
версию самого адаптера?
В свойствах файла. Фар её пока отображать не умеет.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Wed 24 May, 2017 13:13

А плагин сам может получить версию адаптера?

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Python adapter

Post by DrKnS » Wed 24 May, 2017 13:25

Нет.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Mon 12 Jun, 2017 14:27

На работает новый интерфейс. Выдаёт мусор в меню вместо названия.

Last edited by DrKnS on Mon 12 Jun, 2017 20:27, edited 1 time in total.
Reason: [c] -> [code]

User avatar
DrKnS
Posts: 4648
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

Python adapter

Post by DrKnS » Mon 12 Jun, 2017 20:25

techie wrote:
Mon 12 Jun, 2017 14:27
Выдаёт мусор
Ух ты, баг.

Ок, исправил, перевыложил.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Tue 13 Jun, 2017 09:11

А уж думал опять <прилагательное пропущено> ююиды. :o

Post Reply

Return to “Разработка плагинов”