В стандартной поставке ФАРа присутствует 2 скрипта (Panel.CtrlLeft.lua и Panel.CtrlRight.lua), которые позволяют быстро сменить диск. Однако, обнаружились проблемы, в силу чего скрипты только частично работоспособны.
Я сделал скрипт, который является полностью работоспособным, кому нужно - пользуйтесь на здоровье!
Если выбираем "предидущий диск" но диск является первым в списке -- попадём на последний диск (закольцовано по кругу). То же самое по поводу последнего диска. По желанию можно сделать, чтобы утыкаясь в последний\первый диск макрос переставал переключать диски, но я выбрал вариант с кольцеванием, т.к. сделали action - получили результат. Всегда.
Panel.CtrlLeftRight.lua — Быстро перейти на Предыдущий\Следующий диск
Panel.CtrlLeftRight.lua — Быстро перейти на Предыдущий\Следующий диск
- Attachments
-
- Panel.CtrlLeftRight.zip
- (1.16 KiB) Downloaded 105 times
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Быстро перейти на Предыдущий\Следующий диск - Макрос, работающий в отличии от базового
Идея правильная, но вместо того чтобы полагаться на название пункта лучше проверить его свойства.
Мой вариант:
P.S.
Добавил сюда: viewtopic.php?p=106210#p106210
Мой вариант:
Code: Select all
local separator = 0x00000004
Macro {
description="Change current drive: next";
area="Shell"; key="CtrlRight"; flags="EmptyCommandLine";
action = function()
Keys"F9 Enter Up Enter Down"
if band(Menu.ItemStatus(Object.CurPos-1),separator)~=0 then
Keys"Home";
end;
Keys"Enter";
end;
}
local show_plugins = 0x00000040
Macro {
description="Change current drive: previous";
area="Shell"; key="CtrlLeft"; flags="EmptyCommandLine";
action = function()
Keys"F9 Enter Up Enter Up"
if Object.Eof and band(Drv.ShowMode,show_plugins)~=0 then
repeat
Keys"Up"
until band(Menu.ItemStatus(Object.CurPos+1),separator)~=0
end;
Keys"Enter";
end;
}
Добавил сюда: viewtopic.php?p=106210#p106210
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Panel.CtrlLeftRight.lua — Быстро перейти на Предыдущий\Следующий диск
И для справки:
в Полезных скриптах уже есть два макроса, сходных по назначению, но более удобных.
в Полезных скриптах уже есть два макроса, сходных по назначению, но более удобных.
- Shell_ArrowChDrv.lua из набора SimSU: выполняет смену диска после отпускания Ctrl, таким образом можно и плагин запустить.
- Переключение дисков по Ctrl/Alt/Shift+<-/->: рисует панель дисков (штатное меню дисков не используется)
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Panel.CtrlLeftRight.lua — Быстро перейти на Предыдущий\Следующий диск
В штатных макросах после завершения выбора диска посылается ещё
Это на случай, если диск недоступен, чтобы молча ворнинг закрыть? Или возможна другая цель?
Предлагаю альтернативную замену штатным макросам: Отличие от штатных:
Это на случай, если диск недоступен, чтобы молча ворнинг закрыть? Или возможна другая цель?
Предлагаю альтернативную замену штатным макросам: Отличие от штатных:
- Один макрос вместо двух
- Вызванный на плагиновой панели, макрос переходит в реальную панель, не меняя диск
- В списке выбираются только диски (регэкспом), плагины пропускаются.
Примечание: макросы выше по теме делают то же, но по коду они чуть сложнее - В случае ошибки перехода на диск ворнинг не закрывается
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Panel.CtrlLeftRight.lua — Быстро перейти на Предыдущий\Следующий диск
Можно и умнее, переходить в этом случае на следующий диск.
Но по коду уже не так прямолинейно, поэтому такое в Addons не предлагаю: