Page 2 of 5

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 15:54
by Shmuel

Latest post of the previous page:

Skirda wrote:Есть предложение в UserMenu добавить "выбор обработчика контента"
Идея интересная, только непонятно, почему её надо увязывать с DI_MEMO.

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:03
by Shmuel
John Doe wrote:
Smitis wrote:
Shmuel wrote:Вопрос ко всем: стоит ли попытаться сделать, чтобы это работало?
Открывать меню и возвращать управление макросу? Конечно!
Почему так категорично?
Могут быть разные сценарии.
Сейчас попробовал вариант с возвращением управления макросу, не дожидаясь закрытия меню, - вроде нормально работает. Может действительно сделать оба варианта, а выбор каким-то флагом?

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:06
by John Doe
Можно Mode сделать набором битовых флагов (т.е. 1,2,4,8,16...).
Хотя может это и не принято в Lua

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:15
by Shmuel
John Doe wrote:Можно Mode сделать набором битовых флагов (т.е. 1,2,4,8,16...).
Хотя может это и не принято в Lua
Это уже проблема попроще, вернее, почти не проблема.
Главное, меня интересует: нужны ли оба варианта? Какие сценарии хороши для какого варианта?

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:20
by John Doe
Shmuel wrote:Это уже проблема попроще, вернее, почти не проблема.
Подумалось, что в Lua есть более гибкое средство - таблицы.
Shmuel wrote:Главное, меня интересует: нужны ли оба варианта? Какие сценарии хороши для какого варианта?
1. Нужно показать пользователю меню и дождаться выбора.
2. Нужно сам выбор осуществить в макросе.

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:29
by Shmuel
John Doe wrote:
Shmuel wrote:Главное, меня интересует: нужны ли оба варианта? Какие сценарии хороши для какого варианта?
1. Нужно показать пользователю меню и дождаться выбора.
2. Нужно сам выбор осуществить в макросе.
Если mf.usermenu() - последняя операция в макросе, то второй вариант работает, как первый. Нужен ли первый вариант?

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:35
by John Doe
Вот именно что "если".
Если после закрытия меню макрос должен продолжить работу.

P.S.
Возможностей много, я ещё не думал над конкретным применением функции, поэтому живых примеров нет

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:38
by Shmuel
Ваше мнение понятно: нужны оба варианта. Но я что-то не припоминаю ни одной макрофункции, где была бы возможность такого выбора.

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:41
by John Doe
Назовите макрофункции, к которым такая возможность вообще применима.

А вообще есть mmode(3, или как его там

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 16:53
by John Doe
Как вам такая мысль: что если поведением mf.usermenu будет управлять тот же mmode(3,x)?

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 17:24
by Shmuel
John Doe wrote:Как вам такая мысль: что если поведением mf.usermenu будет управлять тот же mmode(3,x)?
Мне кажется, что управление с помощью параметра функции элегантнее.

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 18:08
by NightRoman
А не мог бы Фар сам предоставить какую-нибудь комбинацию клавиш для запуска меню повсюду прямо из коробки? Фича очень удобная получается, а многие юзера-не-гики так и не узнают, что она есть, если это только макросом через какую-то функцию делается. (Как, например, F11 есть везде, и все это знают и пользуют).

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 21:30
by Smitis
NightRoman wrote:А не мог бы Фар сам предоставить какую-нибудь комбинацию клавиш для запуска меню повсюду прямо из коробки? Фича очень удобная получается, а многие юзера-не-гики так и не узнают, что она есть, если это только макросом через какую-то функцию делается. (Как, например, F11 есть везде, и все это знают и пользуют).
Жаль, что F2 в редакторе уже занята.
А вообще, понадобятся разные файлы меню по умолчанию, например, в редакторе врядли нужно меню, открываемое из панелей.

Re: mf.usermenu

Posted: Fri 01 Mar, 2013 21:52
by John Doe
Shmuel wrote:
John Doe wrote:Как вам такая мысль: что если поведением mf.usermenu будет управлять тот же mmode(3,x)?
Мне кажется, что управление с помощью параметра функции элегантнее.
Управление через mmode мне самому активно не нравится.

Но если функций, [а]синхронностью выполнения которых надо управлять, больше чем одна, то хочется какого-то общего решения.
Например, можно было бы для этого выделить некую сервисную функцию.
Если опираться на имеющиеся средства, то примерно так:

Code: Select all

function asyncCall(f,...)
  local prev=mmode(3,1)
  local r=f(...)
  mmode(3,prev)
  return r
end
Update
С DrawLine работает, что ожидаемо, т.к. это пример из Энциклопедии
Но с mf.usermenu пока не работает...

Re: mf.usermenu

Posted: Sat 02 Mar, 2013 07:20
by NightRoman
Smitis wrote:А вообще, понадобятся разные файлы меню по умолчанию, например, в редакторе врядли нужно меню, открываемое из панелей.
Сложный вопрос. Полно команд, которые могу отовсюду вызываться. В разных файлах их дублировать - нехорошо. Хуже, чем если в общем меню будут неприменимые к данной области команды (их юзер просто не будет вызывать).

Тут лучше доработать саму систему юзер-меню с учетом новых реалий. А именно, у команд и подменю иметь свойство - области, в которых эти элементы должны показываться

А может даже лучше не скрывать, а показывать серыми - такой вариант лучше с точки зрения редактирования меню на месте. Ибо при скрытых элементах возникают нюансы редактирования - неоднозначность вставки в некоторых случаях, невозможность отредактировать/удалить скрытые элементы и т.п.

Re: mf.usermenu

Posted: Sat 02 Mar, 2013 10:43
by Shmuel
В 3226 mf.usermenu изменилась:
-- параметры поменялись местами
-- появился флаг, управляющий синхронностью/асинхронностью вызова

Описание функции в мануале приведено в соответствие с этими изменениями.