Pygin — Python adapter

Место, где разработчики плагинов могут поделиться своим опытом.
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:

DrKnS wrote: Это ж надо бойлерплейта написать ещё больше, чем для интеграции с Far.
Скока? Может написано уже всё? Как Far свои плагины подгружает? Если показать как выглядит этот бойлерплейт, то я могу попробовать автоматом снегерить или погуглить уже готовый по ключевам словам.
DrKnS wrote: Следи за руками:
Эээ. Это каждый раз так делать при вылете? :o
DrKnS wrote:Точки в именах папок нельзя, да.
Так это, в дистрибутиве оно с точкой.
Last edited by techie on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятан оверквотинг
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 »

Скока? Может написано уже всё? Как Far свои плагины подгружает? Если показать как выглядит этот бойлерплейт, то я могу попробовать автоматом снегерить или погуглить уже готовый по ключевам словам.
Ну вот так и выглядит, как заведение указателя на функцию и заполнение его по GetProcAddress. И так тыщу раз. Много нудной писанины.
Эээ. Это каждый раз так делать при вылете?
Нет, это такой ad hoc, который работает вот прямо сейчас. По нормальному, конечно, надо писать логи или как-то расширить интерфейс для передания этой информации в Far.
Так это, в дистрибутиве оно с точкой.
Уже нет.
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: Ну вот так и выглядит, как заведение указателя на функцию и заполнение его по GetProcAddress. И так тыщу раз. Много нудной писанины.
Так тыщу или меньше? Мне казалось там не особо много их.

Неужели нет генераторов, которые из обычного .h файла генерят этот прокси?
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 »

Ну вот прямо сейчас, в dll, которая (почти) ничего не делает, используется 23.
Дальше будет больше, а всего их там за тысячу.
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 »

Блииин.

А вот чего нарыл - не https://github.com/CudaWrangler/cuew/bl ... en.py#L537 - не поможет, нет? От вот этого товарища http://nazg-gul.dyndns.org/site/projects/ который достаточно хорошо известен в Blender3D. Тоже пытался Far под линукс сделать. =)
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 »

Кстати эта штука - CUDA Extension Wrangler - использует pycparser, который также используется в CFFI, a CFFI в свою очередь может использоваться для проброса Far API в 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 »

Не знаю, сюда или не сюда, хочется странного - префикс `py:` для быстрого вываливания в Python консоль.

Code: Select all

>py:'https://%s/dist/' % ('nodejs.org')
'https://nodejs.org/dist/'
>>>
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 »

helloworld крэшится на 4747. Где копать?
pygin_crash.png
pygin_crash.png (5.7 KiB) Viewed 13320 times
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: Где копать?
4753.
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 »

Ага. Теперь работает. Может stable билд выложить правильный? http://www.farmanager.com/download.php?l=en
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:Может stable билд выложить правильный?
4774.jpg
4774.jpg (50.99 KiB) Viewed 13197 times
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, а можно как-то организовать релоад плагинов? А то каждый раз Far перезапускать неудобно.

Ещё бы какую-нибудь отладочную консоль, чтобы ловить ошибки загрузки плагинов.
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: а можно как-то организовать релоад плагинов?
unload: load: как везде же.
techie wrote: Ещё бы какую-нибудь отладочную консоль, чтобы ловить ошибки загрузки плагинов.
DrKnS wrote: По нормальному, конечно, надо писать логи или как-то расширить интерфейс для передания этой информации в Far.
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 »

Обновил архив в первом посте.

- Теперь адаптер вызывает __init__.py из своего каталога до загрузки плагинов. Соответственно, там можно самостоятельно, прямо на питоне, написать сколь угодно сложную отладочную консоль. По умолчанию весь вывод дублируется в %temp%\pygin.log.
- Код теперь там.
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 »

А можно вместо `load:helloworld\__init__.py` просто `load:helloworld`?
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 »

Увы, нельзя - в терминологии фара папка плагином не бывает.
Post Reply

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