Pygin — Python adapter

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
DrKnS
Posts: 4619
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 122 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 » Sun 10 Jan, 2016 16:58

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: 4619
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 122 times
Contact:

Python adapter

Post by DrKnS » Sun 10 Jan, 2016 17:31

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

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 » Sun 10 Jan, 2016 19:05

DrKnS wrote: Ну вот так и выглядит, как заведение указателя на функцию и заполнение его по GetProcAddress. И так тыщу раз. Много нудной писанины.
Так тыщу или меньше? Мне казалось там не особо много их.

Неужели нет генераторов, которые из обычного .h файла генерят этот прокси?

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

Python adapter

Post by DrKnS » Sun 10 Jan, 2016 19:37

Ну вот прямо сейчас, в dll, которая (почти) ничего не делает, используется 23.
Дальше будет больше, а всего их там за тысячу.

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 » Sun 10 Jan, 2016 23:01

Блииин.

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

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 » Sun 10 Jan, 2016 23:37

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

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

Code: Select all

>py:'https://%s/dist/' % ('nodejs.org')
'https://nodejs.org/dist/'
>>>

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 » Sun 07 Aug, 2016 19:18

helloworld крэшится на 4747. Где копать?
pygin_crash.png
pygin_crash.png (5.7 KiB) Viewed 2174 times

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

Python adapter

Post by DrKnS » Sun 07 Aug, 2016 20:01

techie wrote: Где копать?
4753.

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 » Fri 12 Aug, 2016 07:41

Ага. Теперь работает. Может stable билд выложить правильный? http://www.farmanager.com/download.php?l=en

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

Python adapter

Post by DrKnS » Fri 12 Aug, 2016 18:06

techie wrote:Может stable билд выложить правильный?
4774.jpg
4774.jpg (50.99 KiB) Viewed 2051 times

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 » Sat 13 Aug, 2016 05:30

@DrKnS, а можно как-то организовать релоад плагинов? А то каждый раз Far перезапускать неудобно.

Ещё бы какую-нибудь отладочную консоль, чтобы ловить ошибки загрузки плагинов.

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

Python adapter

Post by DrKnS » Sat 13 Aug, 2016 09:13

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

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

Python adapter

Post by DrKnS » Sat 13 Aug, 2016 15:19

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

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

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 » Sun 14 Aug, 2016 11:30

А можно вместо `load:helloworld\__init__.py` просто `load:helloworld`?

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

Python adapter

Post by DrKnS » Sun 14 Aug, 2016 13:34

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

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 » Sun 14 Aug, 2016 13:50

Это самого фар ограничение? Потому что терминологии Python такой штуки как __init__.py не существует - это же не модуль, а обозначение импортируемого package.

Post Reply

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