----------------------------------------------------------------------------------------------------
-- Folder Shortcuts Menu v. 2.01
-- (c) 2013 Smitis
----------------------------------------------------------------------------------------------------
local cfg = {}
cfg.file_menu = "Shortcuts.farmenu" -- имя файла меню, если пусто, будет использоваться главное меню
cfg.menu_item = "Shortcuts" -- заголовок меню (на самом деле это имя подменю, которое выводится в заголовок)
cfg.def_name = "FolderShortcuts-" -- начальная часть имени подменю по умолчанию
cfg.max_len = 60 -- максимальная длина имени ссылки, длинные имена обрезаются
cfg.add_date = false -- добавлять дату перед именем ссылки
-- Макросы
cfg.add_from_menu = "CtrlAltShift` AltShift`" -- макросы добавляющие ссылки прямо из меню
cfg.show_main = "CtrlAltShift`" -- открыть общее меню
-- пример макросов с цифровыми клавишами
cfg.add_link = "/(R|L)AltShift[0-9]/" -- добавить ссылку в подменю
cfg.show_sub = "/(R|L)Ctrl(R|L)AltShift[0-9]/" -- открыть подменю
-- пример макросов с алфавитно-цифровыми клавишами
--cfg.add_link = "/(R|L)AltShift[0-9A-Z]/" -- добавить ссылку в подменю
--cfg.show_sub = "/(R|L)Ctrl(R|L)AltShift[0-9A-Z]/" -- открыть подменю
----------------------------------------------------------------------------------------------------
local function scmenu_open(common) -- открыть меню
if cfg.file_menu and cfg.file_menu:len()>0 then
mf.usermenu(3,cfg.file_menu)
else
mf.usermenu(1)
if Area.Dialog then
Keys("Enter")
else
return
end
end
if Menu.Select(cfg.menu_item,0) == 0 then
-- Создать общее подменю
Keys "Ins Right Enter Tab"
print(cfg.menu_item)
Keys "CtrlEnter"
end
Keys "Enter"
if common then return end
local hk = akey(1):sub(-1)
if Menu.Select(hk.." ",1) > 0 and Menu.ItemStatus() == 65 then
-- Подменю есть - войти
Keys "Enter"
return true
else
-- Подменю нет - добавить
Keys( "Ins Right Enter "..hk.." Tab" )
print( cfg.def_name..hk )
Keys( "CtrlEnter Enter" )
return true
end
return false
end
----------------------------------------------------------------------------------------------------
local function scmenu_add() -- добавить шорткат
local post = ""
local dir = panel.GetPanelDirectory(nil,1)
local name = APanel.Path0
if APanel.HostFile ~= "" then
name = APanel.HostFile
elseif APanel.Path ~= "" then
name = APanel.Path
end
name = name:match("([^\\/]+)$") -- убрать путь
if cfg.add_date then name=mf.date("%Y-%m0-%d ")..name end
name = name:sub(1,cfg.max_len)
Keys "Ins Enter Tab" print(name) Keys "Tab"
post = 'dir={Name="'..dir.Name..'",Param="'..dir.Param..'",PluginId="'..win.Uuid(dir.PluginId)..'",File="'..dir.File..'"};'
post = post..'current="'..panel.GetCurrentPanelItem(nil,1).FileName..'";'
post = post..'dir.PluginId=win.Uuid(dir.PluginId);if panel.SetPanelDirectory(nil,1,dir) and current~="" then Panel.SetPos(0,current) end panel.RedrawPanel(nil,1)'
print('lm:post '..post:gsub("%!","!!"):gsub("\\","\\\\"))
Keys "CtrlEnter"
end
----------------------------------------------------------------------------------------------------
Macro { -- Показать подменю
description="Shortcuts Menu: Show";
area="Shell Search QView Info Tree";
key=cfg.show_sub;
action=scmenu_open;
}
----------------------------------------------------------------------------------------------------
Macro { -- Добавить в подменю
description="Shortcuts Menu: Add shortcut";
area="Shell Search QView Info Tree";
key=cfg.add_link;
action=function()
if scmenu_open() then
-- Добавляем ссылку
scmenu_add()
Keys "ShiftF10"
end
end;
}
----------------------------------------------------------------------------------------------------
Macro { -- Показать общее меню
description="Shortcuts Menu: Show common";
area="Shell Search QView Info Tree";
key=cfg.show_main;
action=function()
scmenu_open(true)
end;
}
----------------------------------------------------------------------------------------------------
Macro { -- Добавить к текущему подменю открытого меню
description="Shortcuts Menu: Add shortcut";
area="UserMenu";
key=cfg.add_from_menu;
action=function()
if Menu.ItemStatus()==65 then -- входим в подменю
Keys "Enter"
end
Keys "Home"
scmenu_add()
end;
}
----------------------------------------------------------------------------------------------------