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:

Это самого фар ограничение? Потому что терминологии Python такой штуки как __init__.py не существует - это же не модуль, а обозначение импортируемого package.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Python adapter

Post by John Doe »

DrKnS wrote:Увы, нельзя - в терминологии фара папка плагином не бывает.
Это не должно помешать научить FarCmds загружать плагины из указанной папки, рекурсивно
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
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 »

John Doe wrote: Это не должно помешать научить FarCmds загружать плагины из указанной папки, рекурсивно
Не должно.
Где Wishes на багтрекере, вы, наверное, в курсе.
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/trexinc/evil-program ... in.cpp#L84

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: 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 »

Ссылки на GitHub в шапке не хватает. )
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 »

При обновлении Python 3.5.1 до 3.5.2 все копии 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 »

Ну вот такой у них умный инсталлер.
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 »

4900 крэшится через раз при загрузке вот такого плагина.

Code: Select all

__title__ = "Python Recorder"

def GetGlobalInfoW(info):
    global __title__
    info["Title"] = __title__
    info["Author"] = "Far group"
    info["Desc"] = "Python plugin example"
    info["Guid"] = "31A0D11E-B9D8-4A9B-88C7-2D2983802C51"

def GetPluginInfoW(info):
    global __title__
    info["MenuString"] = __title__
    info["Guid"] = "DAF1257B-E011-4B5A-B5DC-732581BDF3BA";

def OpenW(info):
    print("Hello Python World\n")
Attachments
clipcrop.png
clipcrop.png (8.02 KiB) Viewed 12357 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 »

После обновления до последнего pygin.7z (379105) теперь вылет на другой функции. Тоже через раз.
clipcrop01.png
clipcrop01.png (8.14 KiB) Viewed 12351 times
Ещё бывает такое:
clipcrop02.png
clipcrop02.png (5.09 KiB) Viewed 12351 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 »

- 4900 был давно.
- 379105 - это что? Последний в гите.
- гуиды надо иметь свои.
- у меня вроде бы всё работает.
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 »

379105 - это размер архива pygin.7z Не знаю как по-другому идентифицировать. Смена гуидов ничего не дала. Сейчас попробую с последней сборкой Far'а.
Last edited by techie on Fri 28 Apr, 2017 10:40, edited 1 time in total.
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 »

Не помогло. Вот что выводит, если кнопку Stack нажать.



Это 32-битная система, может в этом дело? Или в конфликтах с Python garbage collector?
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 »

Скачал PDB, подложил в %FARHOME%. Теперь Stack вот такой:

Code: Select all

0x685D1DD0 Free
0x685C99FA Free
0x685D23BD Free
0x0116F953 Plugin::ExecuteFunctionSeh<Plugin::ExecuteStruct<0,1>,GlobalInfo * &> (c:\src\unicode_far\plclass.hpp:308)
0x0116D360 seh_invoke<<lambda_aea1a5ab9ab4599c75cf5767da215209>,<lambda_e653ac410c4258a6ce9d02fe87349247>,<lambda_c78e72e91534c6804eda7df20d644122> > (c:\src\unicode_far\f
0x0116BC50 Plugin::GetGlobalInfo (c:\src\unicode_far\plclass.cpp:798)
0x0116B5BA Plugin::LoadData (c:\src\unicode_far\plclass.cpp:581)
0x0118F4B8 PluginManager::LoadPlugin (c:\src\unicode_far\plugins.cpp:235)
0x011901FD PluginManager::LoadPlugins (c:\src\unicode_far\plugins.cpp:436)
0x01054134 ControlObject::Init (c:\src\unicode_far\ctrlobj.cpp:94)
0x0114BEF6 MainProcess (c:\src\unicode_far\main.cpp:227)
0x0114E635 mainImpl (c:\src\unicode_far\main.cpp:793)
0x0114E811 wmain_seh (c:\src\unicode_far\main.cpp:823)
0x0114E90E <lambda_93e8a75ad0d6631789a8313e38bae319>::operator() (c:\src\unicode_far\main.cpp:851)
0x0114E982 seh_invoke<<lambda_93e8a75ad0d6631789a8313e38bae319>,<lambda_eb6f9db54eb0b154dda06e08ba319848>,<lambda_b1c7d289a037a6c5b48976ae0d4fd300> > (c:\src\unicode_far\f
0x0114E8B1 main (c:\src\unicode_far\main.cpp:845)
0x011F771E __scrt_common_main_seh (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253)
0x7719D3B1 BaseThreadInitThunk
0x77911527 RtlInitializeExceptionChain
0x779114FA RtlInitializeExceptionChain
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

0x66C0B1D4 PyUnicode_CopyCharacters
0x66C0B291 _PyUnicode_Ready
0x66BC0E66 PyWrapper_New
0x66BC1763 PyDict_New
0x66BC21F4 PyDict_GetItem
0x685D04E7 Free
0x685C8E50 Free
0x685C993F Free
0x685D23BD Free
0x0116F953 Plugin::ExecuteFunctionSeh<Plugin::ExecuteStruct<0,1>,GlobalInfo * &> (c:\src\unicode_far\plclass.hpp:308)
...
Post Reply

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