Python adapter

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

Python adapter

Postby DrKnS » Wed 30 Dec, 2015 17:52

Не прошло и трёх лет, как у меня дошли руки набросать демо.

В аттаче пример для Python. Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.
Attachments
pygin_20170515_6117a9d.7z
(406.83 KiB) Downloaded 5 times

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

Python adapter

Postby 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 Guest on Sun 10 Jan, 2016 22:42, edited 1 time in total.
Reason: Спрятан оверквотинг

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sun 10 Jan, 2016 17:31

Скока? Может написано уже всё? Как Far свои плагины подгружает? Если показать как выглядит этот бойлерплейт, то я могу попробовать автоматом снегерить или погуглить уже готовый по ключевам словам.

Ну вот так и выглядит, как заведение указателя на функцию и заполнение его по GetProcAddress. И так тыщу раз. Много нудной писанины.
Эээ. Это каждый раз так делать при вылете?

Нет, это такой ad hoc, который работает вот прямо сейчас. По нормальному, конечно, надо писать логи или как-то расширить интерфейс для передания этой информации в Far.
Так это, в дистрибутиве оно с точкой.

Уже нет.

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

Python adapter

Postby techie » Sun 10 Jan, 2016 19:05

DrKnS wrote:Source of the post Ну вот так и выглядит, как заведение указателя на функцию и заполнение его по GetProcAddress. И так тыщу раз. Много нудной писанины.


Так тыщу или меньше? Мне казалось там не особо много их.

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

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sun 10 Jan, 2016 19:37

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

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

Python adapter

Postby 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: 712
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 22 times
Been thanked: 2 times

Python adapter

Postby techie » Sun 10 Jan, 2016 23:37

Кстати эта штука - CUDA Extension Wrangler - использует pycparser, который также используется в CFFI, a CFFI в свою очередь может использоваться для проброса Far API в Python скрипты.

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

Python adapter

Postby 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: 712
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 22 times
Been thanked: 2 times

Python adapter

Postby techie » Sun 07 Aug, 2016 19:18

helloworld крэшится на 4747. Где копать?

pygin_crash.png
pygin_crash.png (5.7 KiB) Viewed 1513 times

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sun 07 Aug, 2016 20:01

techie wrote:Source of the post Где копать?
4753.

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

Python adapter

Postby techie » Fri 12 Aug, 2016 07:41

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

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Fri 12 Aug, 2016 18:06

techie wrote:Может stable билд выложить правильный?

4774.jpg
4774.jpg (50.99 KiB) Viewed 1390 times

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

Python adapter

Postby techie » Sat 13 Aug, 2016 05:30

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

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

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sat 13 Aug, 2016 09:13

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

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sat 13 Aug, 2016 15:19

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

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

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

Python adapter

Postby techie » Sun 14 Aug, 2016 11:30

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

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sun 14 Aug, 2016 13:34

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

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

Python adapter

Postby techie » Sun 14 Aug, 2016 13:50

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


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

Who is online

Users browsing this forum: No registered users and 1 guest