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

Latest post of the previous page:

techie wrote: Wed 05 Jul, 2017 06:35ну что?
Сабж, если что, создавался как Proof-of-Concept адаптера, дабы убедиться, что оно реализуемо, работоспособно и т. п.
Мной не двигало стремление в одиночку создать полноценную интерацию с питоном.
Скорее, предоставить минимальный каркас, на базе которого можно потом что-то строить.
Цель эта, в принципе, достигнута, и на этом можно было бы и закончить.

Процесс, однако, оказался весьма затягивающим и доставляющим, так что я продолжу.
Но не стоит ждать каких либо обещаний и сроков: вдохновение может прийти завтра, а может и через год.

Как обычно: код доступен, если присылать патчи @ делать пулл реквесты - дело пойдет быстрее.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Python adapter

Post by tstr »

Спасибо, и вдохновенья Вам )
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 »

Портировать интерфейсы Far ручками долго. CFFI может сгенерить обёртки для C, и для С++ есть инструменты, но не компилируется уже совсем у меня в мозгах, да и визуал студии нет. Если бы можно было клонировать код и пересобрать одной командой сразу в Far, то можно было бы попробовать, а так слишком много времени уходит.

Сейчас мне надо сделать обёртку для того, чтобы открыть панель с файликами, которые я получаю по команде git diff, и соответственно обрабатывать префикс git: плагином.
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 »

Как задать IncludePath правильно, чтобы скомпилялся? https://ci.appveyor.com/project/techton ... ild/1.0.22
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 »

set PythonPath=C:\Python36
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: Fri 07 Jul, 2017 18:31Портировать интерфейсы Far ручками долго. CFFI может сгенерить обёртки для C
Вы же ещё недавно жаловались, что какие-то жалкие ууиды - это не пайтонвэй.
А с этим вашим FFI вообще все богомерзкие сишные потроха с явными типами и ручным управлением памятью будут торчать наружу.
И зачем так жить? Лучше тогда сразу на сишечке, там хоть синтаксис проще.
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/pybind/pybind11 например, но я тоже ими не пользуюсь.
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: Sun 09 Jul, 2017 16:06А какой альтеративный путь?
Путь один - ручками.
Механически портировать один в один вредно и бессмысленно.
Например, InputBox, которая пишет строку в переданный адрес и возвращает true/false. В питоне тоже можно извратиться и передать, скажем, пустой список, куда эта строка будет записана, но это маразм и ересь, проще тупо вернуть строку или None, если отменили.

Добавил GetMsg, InputBox, Menu, Message, ShowHelp.
Новые билды - на AppVeyor.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Python adapter

Post by tstr »

DrKnS wrote: Tue 18 Jul, 2017 18:47Новые билды - на AppVeyor.
Подскажите, плиз, как именно туда попасть.
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 »

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

P.S. Добавил кнопку в шапку.
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 »

techie wrote: Thu 31 Dec, 2015 06:14А нельзя выбрать с какой версией дружить? Или выбрать её автоматом в расчёте на то, что питоновский код совместим между версиями.
Не прошло и двух лет, как стало можно - теперь линкуется с python3.dll и должен работать с любой 3.x.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Pygin — Python adapter

Post by tstr »

а OpenW / OPEN_FROMMACRO уже можно?
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 »

tstr wrote: Thu 10 Aug, 2017 22:53OPEN_FROMMACRO
А что это, как вы этим пользуетесь и как хотите видеть в .py?
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Pygin — Python adapter

Post by tstr »

При открытии плагина вызывается 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: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Pygin — Python adapter

Post by DrKnS »

Ок, добавил.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Pygin — Python adapter

Post by tstr »

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

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

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