Page 2 of 4
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 17:57
by John Doe
Latest post of the previous page:
HaRT wrote:в Фаре не поддерживается цепочка макросов на одно и то же кнопкосочетание
Расскажите как вы это представляете (может оказаться что всё поддерживается).
HaRT wrote: где ещё и реализовывать моё предложение, как тут в макросе на CtrlV.
Например полно других сочетаний.
Во всяком случае мне пока не ясно как именно вы предлагаете на одной и той же клавише совместить два на первый взгляд несовместимых действия.
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 18:09
by HaRT
John Doe wrote: как вы это представляете
Некий аналог наследования функциональности или делегирования функций: обработчик (макрос) верхнего уровня может выполнить действия до/после/вместо перехватываемого действия. При этом перехватываемое действие может само являться подобным обработчиком, который оборачивает следующий и т.д.
Насколько я знаю, сейчас подобной функциональности можно частично добиться использованием условий и приоритетов. Кстати, сейчас попробую задействовать условие, чтобы можно было на вставку в командную строку навесить отдельный макрос…
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 18:19
by John Doe
Для начала, в фаре нет даже самого понятия "действие", и это действительно неудобно.
(обсуждалось, например тут:
http://forum.farmanager.com/viewtopic.php?f=54&t=6270)
HaRT wrote: можно частично добиться использованием условий и приоритетов.
А если отвлечься от деталей реализации?
Какого конкретно поведения вы хотите достичь?
Не вообще, а в контексте вашей практической задачи.
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 19:00
by HaRT
John Doe wrote: Какого конкретно поведения вы хотите достичь?
Чтобы вставку файлов как файлов (на панель) и как их путей (в командную строку) можно было настраивать разными макросами.
Впрочем, первого я уже достиг, несколько модифицировав Ваш вышеприведённый макрос:
local function AllBitsSet( val, mask )
return mask == band( val, mask )
end
local function APanelRealFiles()
local PANEL_OPIFLAGS_REGULAR, PANEL_OPIFLAGS_REALNAMES = 0, 0x20
return APanel.Visible and
( APanel.OPIFlags == PANEL_OPIFLAGS_REGULAR or
AllBitsSet( APanel.OPIFlags, PANEL_OPIFLAGS_REALNAMES ) )
end
local function APanelPasteOK()
return APanel.Visible and APanelRealFiles()
end
local function ClipboardDropAvailable()
local CF_HDROP = 15
return C.IsClipboardFormatAvailable( CF_HDROP ) ~= 0
end
Macro {
area="Shell"; key="CtrlV";
condition = function()
return CmdLine.Empty and APanelPasteOK() and ClipboardDropAvailable()
end;
action = function()
EMenuCommand( 'paste "' .. APanel.Path .. '"' )
end;
}
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 20:00
by John Doe
HaRT wrote: APanelRealFiles
Кстати да, макросы в шапке этого пока не учитывают.
HaRT wrote: разными макросами.
Т.е. вставку в командную строку отдельно, а не на CtrlV?
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 20:05
by HaRT
John Doe wrote: вставку в командную строку отдельно, а не на CtrlV?
Да, отдельно, но как раз таки тоже на
CtrlV
.
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 20:12
by John Doe
В одном случае я хочу запустить paste, в другом просто вставить в командную строку.
В обоих случаях в клипборде содержится CF_HDROP.
Откуда машине знать чего я хочу?
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 20:14
by HaRT
John Doe wrote: Откуда машине знать чего я хочу?
Так ведь на то и есть condition'ы, чтобы я, человек, объяснил тупой машине, когда что.
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 20:19
by John Doe
HaRT wrote: Так ведь на то и есть condition'ы
Так каковы же они, в вашем случае?
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 20:34
by HaRT
John Doe wrote: каковы же они
Для вставки файлов, как и написано в моём коде выше,
Code: Select all
condition = function()
return CmdLine.Empty and APanelPasteOK() and ClipboardDropAvailable()
end;
А макрос на вставку путей я ещё не делал.
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 21:01
by sToLp
Возможно я чего то не понимаю, но ведь, кажется, после сабжевого макроса на CtrlX в комстроку по ShiftIns можно вставить имя вырезанного файла с путём к нему.
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 21:28
by John Doe
HaRT wrote: как и написано в моём коде выше
Действительно, проглядел.
sToLp wrote: после сабжевого макроса на CtrlX в комстроку по ShiftIns можно вставить имя вырезанного файла с путём к нему.
И?
CtrlX и CtrlV "как в Windows"
Posted: Wed 01 Jul, 2015 22:18
by sToLp
HaRT wrote: А макрос на вставку путей я ещё не делал.
John Doe wrote:sToLp wrote: после сабжевого макроса на CtrlX в комстроку по ShiftIns можно вставить имя вырезанного файла с путём к нему.
И?
Например, пишу в комстроке: 'goto:', запускаю сабжевый же CtrlV и потом запускаю команду. Или же надо ещё что-то другое?
Упс! Кажется дошло: адрес файла то после его переноса изменился. Речь ведь об этом?
CtrlX и CtrlV "как в Windows"
Posted: Thu 02 Jul, 2015 11:54
by John Doe
sToLp wrote: адрес файла то после его переноса изменился. Речь ведь об этом?
Возможно вас ввело в заблуждение, что в шапке не описан макрос на Ctrl-C, но о чём вы пытаетесь спросить до сих пор непонятно.
После Ctrl-X с файлом физически ничего не происходит, для перемещения необходимо следом выполнить Ctrl-V при пустой командной строке.
CtrlX и CtrlV "как в Windows"
Posted: Thu 02 Jul, 2015 15:08
by sToLp
John Doe wrote:Возможно вас ввело в заблуждение, что в шапке не описан макрос на Ctrl-C
Да, подзапутался, кажись.
Убедительная просьба, по возможности, сопровождать текст макросов комментариями и приводить поясняющие description.
John Doe wrote:После Ctrl-X с файлом физически ничего не происходит, для перемещения необходимо следом выполнить Ctrl-V при пустой командной строке.
Это я, кажется, понимаю. Ведь это, вроде бы, и есть главная фишка конструкции. И, по-моему, весьма полезная.
John Doe wrote: но о чём вы пытаетесь спросить до сих пор непонятно
Правильно ли я понимаю, что:
Пока что связка макросов Ctrl-X — Ctrl-V работает так, что после переноса файлов можно по ShiftIns в комстроку вставить полные (с путями, но старыми, бывшими до переноса) имена вырезанных файлов?
И Вы с
HaRT`ом добиваетесь того, чтобы пути вставлялись новые, и не только по ShiftIns, а, при определённых условиях, и по Ctrl-V?
CtrlX и CtrlV "как в Windows"
Posted: Thu 02 Jul, 2015 15:58
by HaRT
sToLp wrote: в комстроку вставить полные (с путями, но старыми, бывшими до переноса) имена вырезанных файлов
Да
sToLp wrote: чтобы пути вставлялись новые
Нет
sToLp wrote: не только по ShiftIns, а, при определённых условиях, и по Ctrl-V
Да