Pygin — Python adapter
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Python adapter
Latest post of the previous page:
В шапке ссылка на гитхаб, там, если прокрутить страницу вниз, автоматически показывается readme.md, в верхнем левом углу которого серо-зелёная кнопка с надписью "build passing", которая ведет на AppVeyor. Там жмите на любой job, потом artifacts, потом 7z.
P.S. Добавил кнопку в шапку.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Pygin — Python adapter
Не прошло и двух лет, как стало можно - теперь линкуется с python3.dll и должен работать с любой 3.x.
Pygin — Python adapter
При открытии плагина вызывается OpenW(self, info), сейчас в info - только Guid.
Цель экспериментального плагина - обработать флаги из info.OpenFrom для, например OPEN_COMMANDLINE и OPEN_FROMMACRO, с получением ссотв. структур OpenCommandLineInfo и OpenMacroInfo соответственно.
первая для обработки вызова плагина через комстроку (для эксперимента с
1. переименованием переданных имён файлов;
2. для обработки наподобие lua: префикса например через питоновский eval()),
вторая для создания макро-функции. например ….eval(), ну или интерфейсного аналога Lunatic Python: python.execute(statement), python.eval(expression), python.globals(), python.locals(), python.builtins() etc.
Цель экспериментального плагина - обработать флаги из info.OpenFrom для, например OPEN_COMMANDLINE и OPEN_FROMMACRO, с получением ссотв. структур OpenCommandLineInfo и OpenMacroInfo соответственно.
первая для обработки вызова плагина через комстроку (для эксперимента с
1. переименованием переданных имён файлов;
2. для обработки наподобие lua: префикса например через питоновский eval()),
вторая для создания макро-функции. например ….eval(), ну или интерфейсного аналога Lunatic Python: python.execute(statement), python.eval(expression), python.globals(), python.locals(), python.builtins() etc.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Pygin — Python adapter
Code: Select all
far.PanelControl(far.Panels.Active, far.FileControlCommands.GetCurrentPanelItem).FileName
Pygin — Python adapter
Это тоже надо в шапку. Последний билд - жмякаете зелёную кнопку, потом любой job, потом artifacts, потом 7z.
Pygin — Python adapter
Избавился от винды. Теперь только если API будет с другими менеджерами совместим. Пока на https://github.com/ranger/ranger остановился.
Для примеров использования API на Python есть хорошая штука - https://sphinx-gallery.readthedocs.io/en/latest/
Для примеров использования API на Python есть хорошая штука - https://sphinx-gallery.readthedocs.io/en/latest/
Pygin — Python adapter
По API. Из текущего https://github.com/trexinc/evil-program ... far.py#L49
Более читабельно:
self.far с гуидом плагина можно дешёво сделать через https://docs.python.org/3.6/library/fun ... tialmethod
Вопрос только зачем плагину может понадобится вызывать InputBox с чужим GUID?
Code: Select all
Response = far.InputBox(
self.Guid,
uuid.UUID("{0F87C22C-4F6F-4B71-90EC-C3C89B03010B}"),
"Attention",
"Your opinion is very important to us:",
"InputHistory",
"",
1024,
"InputBoxTopic",
far.InputBoxFlags.Buttons)
Code: Select all
Response = self.far.InputBox(
title="Attention",
prompt="Your opinion is very important to us:",
history="InputHistory",
default="",
help="InputBoxTopic",
flags=far.InputBoxFlags.Buttons)
Вопрос только зачем плагину может понадобится вызывать InputBox с чужим GUID?
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Pygin — Python adapter
Чтоб я ещё понимал, как они используются эти гуиды, бо в моё понимание pythonic API они не влазят.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Pygin — Python adapter
kwargs поддерживаются, но расставлять их везде мне что-то лень.
Спасибо, сделал.self.far с гуидом плагина можно дешёво сделать
Pygin — Python adapter
пробую установить версию «lunatic-python-20170817.7z» из первого сообщения темы на ночной Far c новым профилем: Windows 7 x64 с обновлениями, устаовлена х64 anaconda 4.4.0 и обновлена из собственных репозитариев до python-3.6.2-0 в числе прочего.
устанавливаю модуль lunatic-python-20170817.7z\lunatic-python\src\out\python36\64bit\python.dll в %FARPROFILE%\Macros\lib64 ,
а скрипт py-hash.lua в %FARPROFILE%\Macros\scripts , перегружаю Far, вызываю скрипт на любом файле, получаю вывод в консоль:
,
при этом sys.path, если его напечатать или вывести в файл - корректный.
в Sysinternals File Monitor видим, что при попытке найти модуль, загружаемый из контекста питона через «import lua» ищет как положено, в директориях питоновского sys.path, только вместо имени модуля ставит строку «<string>» :
использование рантайма в папке Far, наличие/отсутствие полной инсталляции в %PATH%, использование оф. сборки CPython (инсталл и embedded версии 3.6.2) на ситуацию не влияют.
возможно импорт - это часть проблемы, модуль lua в контексте Lunatic Python должен быть как и модуль pygin в контексте pygin - встроенным модулем. тем не менее он ищется pygin-ом в неверных местах.
устанавливаю модуль lunatic-python-20170817.7z\lunatic-python\src\out\python36\64bit\python.dll в %FARPROFILE%\Macros\lib64 ,
а скрипт py-hash.lua в %FARPROFILE%\Macros\scripts , перегружаю Far, вызываю скрипт на любом файле, получаю вывод в консоль:
,
при этом sys.path, если его напечатать или вывести в файл - корректный.
в Sysinternals File Monitor видим, что при попытке найти модуль, загружаемый из контекста питона через «import lua» ищет как положено, в директориях питоновского sys.path, только вместо имени модуля ставит строку «<string>» :
использование рантайма в папке Far, наличие/отсутствие полной инсталляции в %PATH%, использование оф. сборки CPython (инсталл и embedded версии 3.6.2) на ситуацию не влияют.
возможно импорт - это часть проблемы, модуль lua в контексте Lunatic Python должен быть как и модуль pygin в контексте pygin - встроенным модулем. тем не менее он ищется pygin-ом в неверных местах.