Макрос, позволяющий RClick-ом выделять / вызывать меню

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by IgorZ » Sat 05 May, 2012 04:51

В Conemu есть удобная фича: короткий Rclick выделяет файл, а длинный вызывает контекстное меню. Но не всегда возможно использовать Conemu. Для чистого Far-а мной написан данный макрос. В качестве основы для первоначальной версии использован макрос Max Rusov для вызова EMenu.

Данный макрос вызывается по нажатию правой кнопки мыши. Если время нажатия правой кнопки мыши меньше MinDelay, выделяется файл, иначе вызывается EMenu.

Версия 1.0. Для MacroLib.

Версия 2.0, для чистого lua.
Последняя версия также есть во вложении.
Attachments
RClick.lua.7z
(697 Bytes) Downloaded 145 times

2useven10
Posts: 2953
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 77 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by 2useven10 » Sat 05 May, 2012 05:20

IgorZ wrote:Миллисекунды в качестве длительности нажатия были бы удобнее, но чего нет, того нет.
Far.UpTime ?

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by IgorZ » Sat 05 May, 2012 06:26

2useven10 wrote:
IgorZ wrote:Миллисекунды в качестве длительности нажатия были бы удобнее, но чего нет, того нет.
Far.UpTime ?
Хм. Действительно, упустил из виду. Спасибо.
Даже проще получается.

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by SUSim » Sat 05 May, 2012 17:55

Хороший макрос, но только публиковать его надо на Макролибе
SimSU ··· ·· -- ··· ··-

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by IgorZ » Fri 27 Sep, 2013 04:17

Добавлена версия для чистого lua.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by John Doe » Wed 18 Dec, 2013 12:22

Тема перенесена из "Обсуждения".
Просьба добавить в шапку полный текст макроса.

IgorZ
Posts: 448
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 5 times
Been thanked: 8 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by IgorZ » Thu 19 Dec, 2013 03:35

John Doe wrote:Просьба добавить в шапку полный текст макроса.
Сделано.

P. S. Просьба сделать первый пост дублирующимся на каждой странице.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by John Doe » Wed 25 Dec, 2013 12:20

WindowsXP
Вместе с графическим меню в 90% случаев выскакивает и меню консоли Изменить {Пометить/Вставить/...}
С чем связано? Можно ли побороть (кроме как поменять вызов на текстовое меню)?

Пробовал уменьшать MinDelay, не влияет.

Update
Немного помогла настройка emenu: Menu position (•) At the mouse cursor
Но проблема видимо глубже: http://forum.farmanager.com/viewtopic.php?f=9&t=7540

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by John Doe » Thu 26 Dec, 2013 09:48

Пока разбирался с описанной выше проблемой обнаружил у макроса пару недостатков:
  1. Может реагировать на двойное нажатие, без удержания. Решается небольшим изменением логики.
    (Кстати в комментарии неточность: сказано будто меню вызывается после отпускания)
  2. При вызове меню макрос инвертирует пометку текущего элемента, в некоторых случаях зря: под указателем мыши может находиться пустая колонка панели, в этом случае rightclick ничего не помечает. (по умолчанию, но см. hlf:@Panel.RightClickRule)
    Можно побороть, если контролировать изначальное состояние панелей.
    (Кстати с этими пустыми колонками и без того не просто)
  3. Есть смысл распространить действие макроса на область Tree.
Вот мой вариант:

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by John Doe » Mon 13 Oct, 2014 12:46

Альтернативная модификация: меню вызывается сочетанием ЛКМ + ПКМ (MsLClick+MsRClick):
Особенности:
  • При использовании графического меню (rclk_gui:) меню вызывается после отпускания кнопки мыши (в целях обхода бага).
  • При использовании текстового меню (rclk_txt:) необходимо убедиться, что в настройках EMenu активна опция (•) В позиции курсора мыши, иначе меню будет закрываться сразу после отпускания кнопок мыши.
    (Альтернативно: открыть Параметры/Настройки меню, и для обоих клавиш изменить значение на Ничего не делать)

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by John Doe » Tue 14 Oct, 2014 14:39

Поведение управляется параметрами:

Code: Select all

local GUImenu = true  -- показывать графическое / или текстовое меню
local HoldMode = true -- срабатывать при удержании ПКМ / или при нажатии ПКМ+ЛКМ
Варианта вызова:
  • Удержанием правой клавиши мыши (ПКМ)
  • Одновременным нажатием правой и левой клавиши (ПКМ+ЛКМ).
    Можно нажимать одну, а потом другую клавишу, порядок не принципиален.
    Примечание:
Особенности:
  • Есть возможность вызывать как текстовое меню, так и графическое.
    Можно выбрать какой из вариантов будет основным, а какой дополнительным.
    (Дополнительный вариант срабатывает при удержании модификаторов Shift или Ctrl)
  • При использовании графического меню (rclk_gui:) меню вызывается после отпускания кнопки мыши (в целях обхода бага).
Attachments
RightClickAlt2.lua.7z
(1.25 KiB) Downloaded 29 times

KonovaPE
Posts: 7
Joined: Wed 22 Oct, 2014 13:43

Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by KonovaPE » Thu 23 Oct, 2014 07:34

Не знал, что color в code не отрабатывает. Без выделения цвета:

Code: Select all

RClick выделяет файл/ длинный RClick вызывает контекстное меню (c) IgorZ
...
local EMPath = win.GetEnv("FARHOME").."\\Plugins\\EMenu\\EMenu.dll"
...

local function OnTimer()
timer:Close() timer = nil
if Mouse.Button==2 and (MouseClickOn==APanel.Path.."\\"..APanel.Current) then
 Panel.Select(0,2,1)
 Plugin.Load(EMPath,0)
 far.MacroPost('Plugin.Command("'..EMenu..'","rclk_txt:")')
end
MouseClickOn = ""
end

Macro{
 area="Shell"; key="MsRClick"; description="EMenu: mouse activation";
 condition=function() return not timer end; action=function()
 Plugin.Unload(EMPath);
 Keys("MSRClick")
 MouseClickOn = APanel.Path.."\\"..APanel.Current
 timer = far.Timer(MinDelay,OnTimer)
end;
}

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by John Doe » Thu 23 Oct, 2014 08:56

1. Если плагин лежит в обычном месте (как и указано в скрипте), то он в любом случае будет загружен при старте фара.
2. Фактически EMenu загружается не при старте, а при первом использовании.
3. Даже будучи загруженным, ресурсов он особо не потребляет, и в фоне не работает. Смысла выгружать соответственно мало.

KonovaPE
Posts: 7
Joined: Wed 22 Oct, 2014 13:43

Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by KonovaPE » Thu 23 Oct, 2014 10:01

Да, но скрипт в зависимости от версии FAR'а то работал, то не работал, а так будет работать всегда

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by John Doe » Thu 23 Oct, 2014 10:14

KonovaPE wrote: в зависимости от версии FAR'а то работал
Это что-то новое. С чего бы ему?

KonovaPE
Posts: 7
Joined: Wed 22 Oct, 2014 13:43

Макрос, позволяющий RClick-ом выделять / вызывать меню

Post by KonovaPE » Thu 23 Oct, 2014 10:18

На 4141 у меня всегда выскакивает EMenu. Собственно из-за этого и сделал загрузку-выгрузку

Post Reply

Return to “Полезные макросы и скрипты”

Who is online

Users browsing this forum: No registered users and 5 guests