Pygin — Python adapter

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

Pygin — Python adapter

Post by DrKnS »

Image

Не прошло и трёх лет, как у меня дошли руки набросать демо для Python.
Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

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: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

Code: Select all

╔═ Pygin: std::exception ═╗
║ bad cast                ║
╟─────────────────────────╢
║         { OK }          ║
╚═════════════════════════╝
Вылетает с этой вот хренью. Устал я.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

techie wrote: Здесь на самом деле не создаётся объекта. Поэтому все изменения здесь будут во всех созданных объектах отражатся, пока объект их не перекроет.
Ну да, не создается, я как бы в курсе.
Тип класса ищется по имени ("FarPluginClass", да), потом этот тип инстанцируется адаптером.
Можно было просто сразу назвать класс не HelloWorldPlugin, а FarPluginClass. Как сейчас - это типа typedef.
techie wrote:лучше без лишних импортов
Ok.
techie wrote: Вылетает с этой вот хренью. Устал я.
В архиве лежит пример, как надо делать. Делайте так же, вылетать не будет.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

DrKnS wrote: В архиве лежит пример, как надо делать. Делайте так же, вылетать не будет.
Это не питон, а шаманство какое-то. Не понимаю, в чём проблема. В том, что теперь надо обязательно использовать тип uuid из стандартной библиотеки? В питоне строгая типизация считается дурным тоном. Он хорош именно из-за duck typing.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

techie wrote: Это не питон, а шаманство какое-то.
Весьма верно подмечено, это не питон. Это интеграция питона с совсем-не-питоном.
У себя в питоне можно как угодно, но при выходе из функции питон заканчивается и duck typing заканчивается, а strong typing начинается.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

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

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

Пока я не получил ответы на эти вопросы.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Python adapter

Post by Shmuel »

techie wrote: Я не очень горю становиться адептом очередного карго культа.
Прошло более 3 лет.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

techie, это, несомненно, прекрасные вопросы, но они уже заданы в другой теме, а здесь это полнейший оффтопик.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

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

Я не вижу смысла задавать прекрасные вопросы в общем виде в темах, кто народ не горит желанием копать и отвечать на них. Лучше решать их в контексте конкретных реализаций, и здесь они конкретно про Python адаптер. С другой целью меня эти гуиды больше не интересуют.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

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

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

Гуиды в фаре используются для идентификации плагинов, независимо от особенностей языка и особенностей автора.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

Ладно, как проверить, что плагин через адаптер загружен и версию самого адаптера?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

techie wrote: как проверить, что плагин через адаптер загружен
Как обычно - по наличию его в тех меню, в которых он должен быть.
версию самого адаптера?
В свойствах файла. Фар её пока отображать не умеет.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

А плагин сам может получить версию адаптера?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

Нет.
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

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

Last edited by DrKnS on Mon 12 Jun, 2017 20:27, edited 1 time in total.
Reason: [c] -> [code]
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

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

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

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