Page 12 of 13

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

Posted: Fri 04 Mar, 2016 09:21
by Shmuel

Latest post of the previous page:

IgorZ
1. Допиливать во всяком случае не срочно, т.к. это поле ничего не ломает в существующих скриптах.
2. Естественно.

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

Posted: Fri 04 Mar, 2016 09:38
by abelenki
после build 536 я для себя вот такой выход нашёл, чтобы не терять кастомную сортировку:



т.е. просто добавил цифры в описание макросов (description).

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

Posted: Wed 09 Mar, 2016 11:37
by IgorZ
Shmuel wrote:IgorZ
1. Допиливать во всяком случае не срочно, т.к. это поле ничего не ломает в существующих скриптах.
Поздно. Уже. :quiet:

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

Posted: Wed 16 Mar, 2016 09:27
by sToLp
Shmuel
Регулярно возникают ситуации, когда достаточно выставить sortpriority даже одному, ну двум, макросам из набора, и сформированным этим набором макросов меню "Исполнить макрос" становится заметно приятнее пользоваться. Вот даже ещё раз захотелось выразить благодарность за удачно найденное и реализованное решение.

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

Posted: Wed 09 Aug, 2017 14:15
by John Doe
Гуид меню конфликта макросов не попал в far.Guids

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

Posted: Wed 09 Aug, 2017 14:28
by Shmuel
John Doe wrote: Wed 09 Aug, 2017 14:15Гуид меню конфликта макросов не попал в far.Guids
Это неудивительно, т.к far.Guids содержит только гуиды Фара, но не плагинов. Эта таблица генерируется из файла DlgGuid.hpp.

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

Posted: Mon 14 Aug, 2017 08:27
by Shmuel
Некоторые тонкости в связи с последними изменениями:

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

2. Если пользователь с помощью амперсанда & добавил горячую клавишу, то она будет работать как обычно, если нет конфликта с символом-номером какого-либо пункта меню. Если же есть конфликт, например на символе D, то при нажатии D победит номер пункта, а при нажатии AltD победит подсвеченная амперсандом клавиша.

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

Posted: Wed 16 Aug, 2017 09:07
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"},
}))

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

Posted: Wed 16 Aug, 2017 09:14
by Shmuel
AccelKey - регистрозависимый. BreakKey - тоже, но их можно добавить по 2 штуки на клавишу, а AccelKey - нельзя.

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

Posted: Wed 16 Aug, 2017 09:44
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"},})
Есть и другие странности, для обсуждения создам отдельную тему.

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

Posted: Sun 22 Oct, 2017 10:22
by sToLp
Выношу три хотелки на предварительное рассмотрение.

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

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

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

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

Posted: Sun 22 Oct, 2017 11:11
by Shmuel
sToLp, на обсуждение хотелок сейчас времени нет, так что без меня. В заключение, если сочтёте нужным - на мантис.

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

Posted: Sun 22 Oct, 2017 11:47
by zg
sToLp wrote: Sun 22 Oct, 2017 10:223. Стационарные макросы дополнить проверенной временем полезной функциональностью, уже более двух лет реализуемой сервисным макросом, обеспечивающим запуск макросов из меню выбора макросов, при наличии в конце поля description обозначения запускающего ключа. По возможности, предпочтительнее было бы иметь эту функциональность "из коробки".
идея возможно хорошая. я понимаю, что хранение клавиши в конце описания макроса оправдано простотой реализации в качестве макроса. но зачем предлагать это тащить в «коробку»? просто дополнительное поле postkey, в котором хранить или строку или массив строк — гораздо лучше и масштабируемее.

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

Posted: Sun 22 Oct, 2017 14:08
by John Doe
zg wrote: Sun 22 Oct, 2017 11:47просто дополнительное поле postkey
Когда-то обсуждали, что было бы удобно иметь возможность задавать дополнительные поля в таблице макроса.
На мантисе не нашёл, стоит завести виш. Edit: http://forum.farmanager.com/viewtopic.php?f=15&t=10966
sToLp wrote: Sun 22 Oct, 2017 10:22Формат стационарных макросов дополнить чем-то типа многострочного опционального поля userinfo
Если для описаний, то и description можно сейчас многострочный создавать.
sToLp wrote: Sun 22 Oct, 2017 10:22предпочтительнее было бы открывать его в позиции сразу за открывающей фигурной скобкой.
Почему не написать макрос для перемещения к началу определения?

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

Posted: Sun 22 Oct, 2017 20:08
by sToLp
zg wrote: Sun 22 Oct, 2017 11:47хранение клавиши в конце описания макроса оправдано простотой реализации
Именно так. К примеру, текущая реализация меню выбора макросов на хоткей F5 у меня выглядит И наибольшее удобство для меня представляют хоткеи/шорткаты, завершающие строки этого меню. По ним можно запускать соответствующие позиции, и их не нужно всякий раз вытягивать из памяти, поскольку они перед глазами.

zg wrote: Sun 22 Oct, 2017 11:47дополнительное поле postkey, в котором хранить или строку или массив строк — гораздо лучше и масштабируемее
Если, при этом, хоткеи/шорткаты, первые из содержащихся в этом поле (т.е. проставленные пользователем в самом его начале), будут дополнительно выводиться в конце строк данного меню (вслед за содержанием поля description), то я двумя руками за такое решение. Поскольку, к тому же, похоже, что такое поле одновременно стало бы реализацией и второй хотелки.

John Doe wrote: Sun 22 Oct, 2017 14:08
zg wrote: Sun 22 Oct, 2017 11:47просто дополнительное поле postkey
Когда-то обсуждали, что было бы удобно иметь возможность задавать дополнительные поля в таблице макроса.
На мантисе не нашёл, стоит завести виш.
С учётом вышеизложенного, по данной позиции так и сделал.

John Doe wrote: Sun 22 Oct, 2017 14:08
sToLp wrote: Sun 22 Oct, 2017 10:22Формат стационарных макросов дополнить чем-то типа многострочного опционального поля userinfo
Если для описаний, то и description можно сейчас многострочный создавать.
Кажется, я пропустил информацию об этом.
Но коли так, то передо мною встаёт проблема выбора: либо использовать description как на иллюстрации выше (под спойлером), либо дополнять его необходимой поясняющей пользовательской информацией. Ведь одновременно то эти позиции, кажется, не совместимы? Тем с большей надеждой буду ждать результатов реализации виша по предыдущей позиции.

John Doe wrote: Sun 22 Oct, 2017 14:08
sToLp wrote: Sun 22 Oct, 2017 10:22предпочтительнее было бы открывать его в позиции сразу за открывающей фигурной скобкой.
Почему не написать макрос для перемещения к началу определения?
Хотелка вынесена на обсуждение, чтобы выяснить: не предпочтительнее ли и для других форумчан был бы переход к началу макроса, а не к позиции action? Если же ответ нет (т.е. переход к action предпочтительнее) или ответ не однозначен, то и виш заводить не стоит. И тогда решением будет макрос.

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

Posted: Mon 23 Oct, 2017 07:28
by John Doe
sToLp wrote: Sun 22 Oct, 2017 20:08Если, при этом, хоткеи/шорткаты, первые из содержащихся в этом поле (т.е. проставленные пользователем в самом его начале), будут дополнительно выводиться в конце строк данного меню (вслед за содержанием поля description),
Совсем автоматически не будут, но ваш скрипт может и это делать.

Но я тут подумал, что с дополнительным полем не так всё просто: сторонний скрипт (ваш) должен как-то получить к нему доступ, и мне пока не ясно как.

Одно из возможных направлений — возможность заменить меню конфликта макросов своей функцией (ещё одна тема для мантиса).