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

Здесь обсуждается всё, что касается макросов.
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:

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 обозначения запускающего ключа. По возможности, предпочтительнее было бы иметь эту функциональность "из коробки".
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

sToLp, на обсуждение хотелок сейчас времени нет, так что без меня. В заключение, если сочтёте нужным - на мантис.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

sToLp wrote: Sun 22 Oct, 2017 10:223. Стационарные макросы дополнить проверенной временем полезной функциональностью, уже более двух лет реализуемой сервисным макросом, обеспечивающим запуск макросов из меню выбора макросов, при наличии в конце поля description обозначения запускающего ключа. По возможности, предпочтительнее было бы иметь эту функциональность "из коробки".
идея возможно хорошая. я понимаю, что хранение клавиши в конце описания макроса оправдано простотой реализации в качестве макроса. но зачем предлагать это тащить в «коробку»? просто дополнительное поле postkey, в котором хранить или строку или массив строк — гораздо лучше и масштабируемее.
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 »

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предпочтительнее было бы открывать его в позиции сразу за открывающей фигурной скобкой.
Почему не написать макрос для перемещения к началу определения?
Last edited by John Doe on Mon 23 Oct, 2017 13:59, edited 1 time in total.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

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

Post 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 предпочтительнее) или ответ не однозначен, то и виш заводить не стоит. И тогда решением будет макрос.
Last edited by sToLp on Sun 22 Oct, 2017 20:30, edited 1 time in total.
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 »

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

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

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

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