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
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 » Wed 09 Aug, 2017 13:35

Latest post of the previous page:

tstr wrote:
Wed 09 Aug, 2017 12:52
Подскажите, плиз, как именно туда попасть
В шапке ссылка на гитхаб, там, если прокрутить страницу вниз, автоматически показывается readme.md, в верхнем левом углу которого серо-зелёная кнопка с надписью "build passing", которая ведет на AppVeyor. Там жмите на любой job, потом artifacts, потом 7z.

P.S. Добавил кнопку в шапку.

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 » Thu 10 Aug, 2017 20:56

techie wrote:
Thu 31 Dec, 2015 06:14
А нельзя выбрать с какой версией дружить? Или выбрать её автоматом в расчёте на то, что питоновский код совместим между версиями.
Не прошло и двух лет, как стало можно - теперь линкуется с python3.dll и должен работать с любой 3.x.

tstr
Posts: 512
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Pygin — Python adapter

Post by tstr » Thu 10 Aug, 2017 22:53

а OpenW / OPEN_FROMMACRO уже можно?

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 » Thu 10 Aug, 2017 23:26

tstr wrote:
Thu 10 Aug, 2017 22:53
OPEN_FROMMACRO
А что это, как вы этим пользуетесь и как хотите видеть в .py?

tstr
Posts: 512
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Pygin — Python adapter

Post by tstr » Fri 11 Aug, 2017 06:47

При открытии плагина вызывается 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.

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 » Fri 11 Aug, 2017 17:23

Ок, добавил.

tstr
Posts: 512
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Pygin — Python adapter

Post by tstr » Fri 11 Aug, 2017 17:36

спасибо, ближайшее время попробую шагнуть дальше.

в заметки: заводятся замечательно что веб-дебаггер wdb, что PyCharm в режиме Python Remote Debugger.

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 » Fri 25 Aug, 2017 20:02

techie wrote:
Sat 17 Jun, 2017 11:10
Как получить текущий файл на панели из функции OpenW?

Code: Select all

far.PanelControl(far.Panels.Active, far.FileControlCommands.GetCurrentPanelItem).FileName

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

Pygin — Python adapter

Post by techie » Sat 26 Aug, 2017 07:25

DrKnS wrote:
Wed 09 Aug, 2017 13:35
зелёная кнопка с надписью "build passing", которая ведет на AppVeyor. Там жмите на любой job, потом artifacts, потом 7z.
Это тоже надо в шапку. Последний билд - жмякаете зелёную кнопку, потом любой job, потом artifacts, потом 7z.

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

Pygin — Python adapter

Post by techie » Sat 26 Aug, 2017 08:05

Избавился от винды. Теперь только если API будет с другими менеджерами совместим. Пока на https://github.com/ranger/ranger остановился.

Для примеров использования API на Python есть хорошая штука - https://sphinx-gallery.readthedocs.io/en/latest/

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

Pygin — Python adapter

Post by techie » Sat 26 Aug, 2017 08:47

По API. Из текущего https://github.com/trexinc/evil-program ... far.py#L49

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)
self.far с гуидом плагина можно дешёво сделать через https://docs.python.org/3.6/library/fun ... tialmethod

Вопрос только зачем плагину может понадобится вызывать InputBox с чужим GUID?

User avatar
John Doe
Бюрократ
Posts: 11251
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 82 times

Pygin — Python adapter

Post by John Doe » Sat 26 Aug, 2017 09:11

techie wrote:
Sat 26 Aug, 2017 08:47
зачем плагину может понадобится вызывать InputBox с чужим GUID?
Тут не GUID плагина, а гуид диалога.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Pygin — Python adapter

Post by Shmuel » Sat 26 Aug, 2017 09:16

John Doe wrote:
Sat 26 Aug, 2017 09:11
Тут не GUID плагина, а гуид диалога
Far API требует оба. LuaFAR - только гуид диалога.

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

Pygin — Python adapter

Post by techie » Sat 26 Aug, 2017 15:52

Чтоб я ещё понимал, как они используются эти гуиды, бо в моё понимание pythonic API они не влазят.

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 » Sat 26 Aug, 2017 19:08

techie wrote:
Sat 26 Aug, 2017 08:47
Более читабельно
kwargs поддерживаются, но расставлять их везде мне что-то лень.
self.far с гуидом плагина можно дешёво сделать
Спасибо, сделал.

tstr
Posts: 512
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 4 times
Been thanked: 5 times

Pygin — Python adapter

Post by tstr » Mon 28 Aug, 2017 06:30

пробую установить версию «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-ом в неверных местах.

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 » Mon 28 Aug, 2017 09:07

Вроде бы всё работает:
both.png
both.png (79.49 KiB) Viewed 3191 times

Post Reply

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