Поведение, когда нужно сделать выбор из нескольких макросов

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О порядке расположения макросов в меню их выбора

Post by Shmuel »

Latest post of the previous page:

sToLp
Идея 1: А может сортировать по именам файлов, а порядок макросов внутри каждого файла сохранять и в меню?

Идея 2: Добавить в определение макроса опциональное поле SortingPriority (0-100, default=50), тогда можно будет полностью управлять порядком макросов в меню.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О порядке расположения макросов в меню их выбора

Post by sToLp »

Shmuel wrote:Идея 1: А может сортировать по именам файлов, а порядок макросов внутри каждого файла сохранять и в меню?
Этот вариант представляется мне весьма гибким. Но, предполагаю, что у тех, кто вполне доволен автоматической сортировкой, он может вызвать неудобство необходимостью следить за взаимным расположением файлов.
Shmuel wrote:Идея 2: Добавить в определение макроса опциональное поле SortingPriority (0-100, default=50), тогда можно будет полностью управлять порядком макросов в меню.
А вот этот вариант представляется мне идеальным. Поскольку, если я правильно понимаю, он не затрагивает интересы тех, кого устраивает любая сортировка по умолчанию. И вместе с тем позволяет тем, кому нужна пользовательская сортировка, делать её когда требуется.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О порядке расположения макросов в меню их выбора

Post by Shmuel »

sToLp wrote: А вот этот вариант представляется мне идеальным.
Уговорили.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О порядке расположения макросов в меню их выбора

Post by sToLp »

Shmuel wrote:Уговорили.
shmuel 03.03.2016 21:40:00 +0200 - build 561
1. В определение стационарных макросов добавлено опциональное поле sortpriority - для управления
порядком расположения макросов в меню "Исполнить макрос".
Большое спасибо за сугубо деловой подход!
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

О порядке расположения макросов в меню их выбора

Post by IgorZ »

Р-р-р-р-р!!! Вам деловой подход, а мне теперь LuaManager допиливать! ;)
Кстати, нововведение ведь и к .lua, и к .moon относится?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

О порядке расположения макросов в меню их выбора

Post by Shmuel »

IgorZ
1. Допиливать во всяком случае не срочно, т.к. это поле ничего не ломает в существующих скриптах.
2. Естественно.
User avatar
abelenki
Posts: 501
Joined: Thu 02 Jul, 2009 07:39
Location: Perm, Russia
Has thanked: 174 times
Been thanked: 23 times
Contact:

О порядке расположения макросов в меню их выбора

Post by abelenki »

после build 536 я для себя вот такой выход нашёл, чтобы не терять кастомную сортировку:



т.е. просто добавил цифры в описание макросов (description).
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

О порядке расположения макросов в меню их выбора

Post by IgorZ »

Shmuel wrote:IgorZ
1. Допиливать во всяком случае не срочно, т.к. это поле ничего не ломает в существующих скриптах.
Поздно. Уже. :quiet:
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

О порядке расположения макросов в меню их выбора

Post by sToLp »

Shmuel
Регулярно возникают ситуации, когда достаточно выставить sortpriority даже одному, ну двум, макросам из набора, и сформированным этим набором макросов меню "Исполнить макрос" становится заметно приятнее пользоваться. Вот даже ещё раз захотелось выразить благодарность за удачно найденное и реализованное решение.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Поведение, когда нужно сделать выбор из нескольких макросов

Post by John Doe »

Гуид меню конфликта макросов не попал в far.Guids
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Поведение, когда нужно сделать выбор из нескольких макросов

Post by Shmuel »

John Doe wrote: Wed 09 Aug, 2017 14:15Гуид меню конфликта макросов не попал в far.Guids
Это неудивительно, т.к far.Guids содержит только гуиды Фара, но не плагинов. Эта таблица генерируется из файла DlgGuid.hpp.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Поведение, когда нужно сделать выбор из нескольких макросов

Post by Shmuel »

Некоторые тонкости в связи с последними изменениями:

1. Автоматически добавляемые номера пунктов меню (1-9, A-Z) не подсвечиваются, но тем не менее являются "горячими клавишами".

2. Если пользователь с помощью амперсанда & добавил горячую клавишу, то она будет работать как обычно, если нет конфликта с символом-номером какого-либо пункта меню. Если же есть конфликт, например на символе D, то при нажатии D победит номер пункта, а при нажатии AltD победит подсвеченная амперсандом клавиша.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Поведение, когда нужно сделать выбор из нескольких макросов

Post by John Doe »

Shmuel wrote: Mon 14 Aug, 2017 08:271. Автоматически добавляемые номера пунктов меню (1-9, A-Z) не подсвечиваются, но тем не менее являются "горячими клавишами".
Эти горячие клавиши реализованы сейчас через BreakKeys, что делает невозможным их обработку в ProcessDialogEvent (это использует скрипт ConcurrentHotkeys).

Предлагаю использовать не BreakKeys, а фаровский встроенный механизм хоткеев — AccelKey.
Мои тесты показывают, что это работает хорошо, и ровно с теми тонкостями, что описаны постом выше.

Пример:

Code: Select all

far.Show(far.Menu({},{
  {text="&A",AccelKey="1"},
  {text="&B",AccelKey="2"},
  {text="&B2",AccelKey="3"},
  {text="&5",AccelKey="4"},
  {text="&4",AccelKey="5"},
}))
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Поведение, когда нужно сделать выбор из нескольких макросов

Post by Shmuel »

AccelKey - регистрозависимый. BreakKey - тоже, но их можно добавить по 2 штуки на клавишу, а AccelKey - нельзя.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Поведение, когда нужно сделать выбор из нескольких макросов

Post by John Doe »

Shmuel wrote: Wed 16 Aug, 2017 09:14AccelKey - регистрозависимый.
Мои эксперименты показывают, что всё хуже.
AccelKey просто не срабатывает без Shift (проблема только с буквами).
Зато с Shift'ом одинаково срабатывают оба варианта

Code: Select all

far.Menu({},{{text="Q",AccelKey="Q"},})
far.Menu({},{{text="q",AccelKey="q"},})
Есть и другие странности, для обсуждения создам отдельную тему.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Поведение, когда нужно сделать выбор из нескольких макросов

Post by sToLp »

Выношу три хотелки на предварительное рассмотрение.

1. По нажатию AltF4 в строке меню выбора макросов соответствующий макрос открывается в редакторе на позиции action. И когда он по объёму кода относительно небольшой, то это вполне практично. А вот когда объём кода макроса значительный, то предпочтительнее было бы открывать его в позиции сразу за открывающей фигурной скобкой. Поскольку опыт показывает, что чаще всего из меню выбора макросов обращаться приходится к полям area, key и description, в т.ч., и особенно, когда одно или некоторые из них отсутствуют.

2. Формат стационарных макросов дополнить чем-то типа многострочного опционального поля userinfo, с возможностью оперативного доступа к нему в т.ч. из макробраузеров. Для помещения в это поле зачастую необходимой поясняющей пользовательской информации произвольного содержания, порой весьма объёмной.

3. Стационарные макросы дополнить проверенной временем полезной функциональностью, уже более двух лет реализуемой сервисным макросом, обеспечивающим запуск макросов из меню выбора макросов, при наличии в конце поля description обозначения запускающего ключа. По возможности, предпочтительнее было бы иметь эту функциональность "из коробки".
Post Reply

Return to “Обсуждение макросов”