Page 1 of 2

Расширение API - Intent

Posted: Mon 07 Mar, 2011 14:27
by Max Rusov
Предлагаю добавить в FAR 3 API понятие Intent (намерение) - мне кажется, что для такой системы как FAR,
чья функциональность практически в каждом аcпекте может быть расширена плагинами это было бы очень удобно.

Подробное описание данной идеи, удачно реализованной в платформе Android, можно посмотреть здесь:
http://developer.android.com/reference/ ... ntent.html

Вкратце: Вводится понятие "типовых действий" (Редактировать, Просмотреть, Скопировать, Искать и т.д.),
плагин, при регистрации, говорит, что он хочет обрабатывать такие-то действия (сообщает о намерении).
При возникновении необходимости выполнить данное действие FAR смотрит список всех зарегистрированных
обработчиков, и если их > 1 - выводит меню со списком и галочкой "использовать в дальнейшем".
Внутренний обработчик FAR (если он есть) - равноправен со всеми остальными, установленными плагинами.
Запомненная настройка может быть в любой момент сброшена через меню настроек (или при нажатии
волшебной клавиши, например выполнить команду, удерживая Shift...)

IMHO, сейчас самый удачный момент для введения данной технологии, если это будет признано полезным...

Re: Расширение API - Intent

Posted: Mon 07 Mar, 2011 22:27
by t-rex
ну так у нас для этого есть макросы

Re: Расширение API - Intent

Posted: Tue 08 Mar, 2011 19:24
by John Doe
Если на минуту забыть о целевой аудитории фара, то предложение интересное.

Кстати и для самих макросов тоже, а то сейчас приходится в каждый макрос пихать проверку а не открыта ли плагиновая панель, а если открыта, то реальные ли на ней файлы.

И всё именно потому что макрос привязан к клавише, а не к действию.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 09:40
by NightRoman
t-rex wrote:ну так у нас для этого есть макросы
Кажется, было бы хорошо для этого задействовать макросы. Но пока это не то, о чем автор говорит. Макросы покрывают класс операций описываемых 2-мя параметрами - зона и клавиша. А автор говорит об абстрактных событиях и возможно с параметрами. Например, событие/интент/как-угодно-назовите "перейти вверх с сетевой шары", параметр - путь этой шары. Сейчас Фар дергает плагин Network и это забито через гуид. А мог бы быть макрос в спец-зоне Event. Только бы еще параметры засылать в макрос уметь, а уж умельцы такие макросы напишут. В случае же с "перейти вверх с сетевой шары" Фар мог бы предоставлять аддон, что установит макрос, вызывающий Network (и я бы его себе не ставил, кстати, у нас такой нетворк обширный, что это операция долгая и малополезная, я бы что-то другое прицепил на эту операцию; ну это я так, просто для примера).

С макросовым подходом целевая аудитория этого подхода была бы шире, чем если то же самое сделать через АПИ. А в АПИ по большому счету это все уже есть. Экпортируемые функи плагинов и реализуют интенты.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 09:47
by Max Rusov
Ну вообще-то хотелось бы для таких действий как раз обойтись без макросов. Допустим, ставлю я плагин копирования, нажимаю F5 и у меня выскакивает менюшка:

Копировать с помощью:
1. Far
2. Extended Copy
[ ] Использовать в дальнейшем

Причем она выскакивает вне зависимости от того нажал я кнопку F5, выбрал пункт меню "Copy" или программно инициировал копирование через FarAPI.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 09:52
by NightRoman
Да, это тоже интересно и имеет смысл. Как бы о двух разных вещах получается идет речь, хоть и родственных. С макросами я как бы немного о другом влез, но все равно это было полезно, макросы тут пишут многие и легко могли бы получить пользу по своему вкусу. Плагины пишут не многие, все-таки.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 09:56
by Max Rusov
А, ты имеешь ввиду, что обработчиками таких событий могли бы быть и специально описанные макросы? Да, это тоже, наверное, имеет смысл...

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 10:04
by NightRoman
Ну да, была бы зона макросов Event и набор документированных событий и их параметров. По умолчанию Фар что-то делает по этим событиям, но если есть макрос, то зовет его. Макрос либо работает сам, либо вызывает $AEvent (как сейчас $AKey), чтобы отработала дефолтая обработка. А через макросы можно и плагины вызывать, если надо, но важно, что многие и без плагинов только макросами обойдутся, но сделают, что им надо.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 10:11
by Max Rusov
По правде говоря я пока usecase'ов не вижу, но, наверное, они найдутся...

Хотя, один придумал: поддержка старых плагинов, которые не используют новое (гипотетическое) API привязки к событиям. Что бы они не были в пролете - их можно будет прикрутить макросами...

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 10:31
by Kildor
Ещё один юзкейз — выполнить какие-то пре/пост действия.
Макрос что-то сделал, потом запустил обработчик, потом сделал что-то ещё.

Жаль только, что этого не будет.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 10:35
by NightRoman
Юз кейс я тоже привел - как можно было бы подключить Network к Фару вместо того, как это сделано сейчас (гуид в generalconfig.db - интересно, кто-то когда-то захочет воспользоваться такой кастомизацией?)

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 10:47
by Max Rusov
NightRoman wrote:Юз кейс я тоже привел - как можно было бы подключить Network к Фару вместо того, как это сделано сейчас
Не, я исхожу из того, что подобные привязки будут происходить автоматом, без макросов. А макросы можно было бы писать для особых случаев, когда обычная обработка не устраивает.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 10:53
by Max Rusov
Kildor wrote:Жаль только, что этого не будет.
Ну почему же. Если идея в целом будет признана полезной, я бы мог сделать базовую реализацию в FAR. Только не хочется потом еще и уговаривать кого-то чтобы правки приняли. Поэтому хотелось бы обсудить сначала стоит ли за это браться.

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 12:52
by Maximus5
Мне идея нравится, в бис-сборку включу с удовольствием :D

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 12:55
by Max Rusov
Может ты, для начала, http://bugs.farmanager.com/view.php?id=1914 включишь?

Re: Расширение API - Intent

Posted: Wed 25 Jan, 2012 13:45
by Kerberos464
"свой фар с играми и дамами" =)