- -- Panel Helper, 2022-01-09
- -- Tim Sobolev
- local Panels
- local ACTIVE, PASSIVE = 0, 1
- function ItemsString(items)
- items_string = ""
- items_number = 0
- for idx, item in pairs(items) do
- items_number = items_number + 1
- items_string = items_string.." \""..item.."\""
- end
- return items_number, items_string
- end
- function PanelItems()
- items={}
- panel_roots = {[ACTIVE]=APanel.Path, [PASSIVE]=PPanel.Path}
- panel_sizes = {[ACTIVE]=APanel.ItemCount, [PASSIVE]=PPanel.ItemCount}
- for k, v in pairs(panel_roots) do
- if v ~= "" then panel_roots[k] = v.."\\" end
- end
- if APanel.Left then
- panel_types = {ACTIVE, PASSIVE}
- else
- panel_types = {PASSIVE, ACTIVE}
- end
- if APanel.Selected or PPanel.Selected then
- for _,panel_type in ipairs(panel_types) do
- for i = 1, panel_sizes[panel_type] do
- if Panel.Item(panel_type, i, 8) then
- table.insert(items, {panel_type, Panel.Item(panel_type, i, 0)})
- end
- end
- end
- end
- if #items < 2 then
- if #items == 1 then
- item_name = items[1][2]
- else
- item_name = APanel.Current
- end
- items = {
- {panel_types[1], item_name},
- {panel_types[2], item_name},
- }
- end
- panel_items = {}
- for k,v in ipairs(items) do
- if Panel.FExist(v[1], v[2]) ~= 0 then
- table.insert(panel_items, panel_roots[v[1]]..v[2])
- end
- end
- return panel_items
- end
- function PanelItemsString()
- return ItemsString(PanelItems())
- end
- function SelectedItems()
- items={}
- if APanel.Selected then
- for i = 1,APanel.ItemCount do
- if Panel.Item(ACTIVE, i, 8) then
- items[i] = Panel.Item(ACTIVE, i, 0);
- end
- end
- else
- items[APanel.CurPos]=APanel.Current
- end
- return items
- end
- function SelectedItemsString()
- return ItemsString(SelectedItems())
- end
- function SetDirectory(var, path)
- if path then
- directory = var..path
- else
- directory = var
- end
- Panel.SetPath(ACTIVE, directory)
- end
- function SetEnvDirectory(var, path)
- SetDirectory(win.GetEnv(var), path)
- end
- function SetShellDirectory(var, path)
- DataValue, DataType = win.GetRegKey("HKLM", "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", var)
- SetDirectory(DataValue, path)
- end
- function SetSystemDirectory(var, path)
- DataValue, DataType = win.GetRegKey("HKLM", "Software\\Microsoft\\Windows\\CurrentVersion", var)
- SetDirectory(DataValue, path)
- end
- function SetUserDirectory(var, path)
- DataValue, DataType = win.GetRegKey("HKCU", "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", var)
- SetDirectory(DataValue, path)
- end
- return {
- PanelItems = PanelItems,
- PanelItemsString = PanelItemsString,
- SelectedItems = SelectedItems,
- SelectedItemsString = SelectedItemsString,
- SetDirectory = SetDirectory,
- SetEnvDirectory = SetEnvDirectory,
- SetShellDirectory = SetShellDirectory,
- SetSystemDirectory = SetSystemDirectory,
- SetUserDirectory = SetUserDirectory
- }
GeSHi © Codebox Plus Extension
Лично используется в пользовательском меню:
- A: Archive
- {
- P: Archive with password
- lua: for idx, item in pairs(require("Panels").SelectedItems()) do print("arc:c -t:zip -p:!?$$Password?! \""..item..".zip\" \""..item.."\""); Keys("Enter") end
- }
- :--
- D: Diff selected
- lua: if Plugin.Exist("AF4DAB38-C00A-4653-900E-7A8230308010") then _G.cmd="vc:"; else _G.cmd="git diff"; end
- lua: items_number, items_string = require("Panels").PanelItemsString(); if items_number > 1 then print(_G.cmd..items_string); Keys("Enter") end
- :--
- L: Downloads
- lua: require("Panels").SetUserDirectory("{374DE290-123F-4565-9164-39C4925E467B}")
- T: Temp
- lua: require("Panels").SetEnvDirectory("TEMP")
- U: User
- {
- U: User Directory
- lua: require("Panels").SetEnvDirectory("USERPROFILE")
- --:
- P: Program Files
- lua: require("Panels").SetUserDirectory("Local AppData", "\\Programs")
- T: Temp
- lua: require("Panels").SetUserDirectory("Local AppData", "\\Temp")
- --:
- A: Application Data
- lua: require("Panels").SetUserDirectory("AppData")
- D: Documents
- lua: require("Panels").SetUserDirectory("Personal")
- F: Favorites
- lua: require("Panels").SetUserDirectory("Favorites")
- M: Start Menu
- lua: require("Panels").SetUserDirectory("Start Menu")
- L: Local Application Data
- lua: require("Panels").SetUserDirectory("Local AppData")
- N: NetHood
- lua: require("Panels").SetUserDirectory("NetHood")
- O: Desktop
- lua: require("Panels").SetUserDirectory("Desktop")
- R: Recent Files
- lua: require("Panels").SetUserDirectory("Recent")
- S: SendTo Menu
- lua: require("Panels").SetUserDirectory("SendTo")
- *: Startup
- lua: require("Panels").SetUserDirectory("Startup")
- --:
- C: IE Cache
- lua: require("Panels").SetUserDirectory("Cache")
- H: IE History
- lua: require("Panels").SetUserDirectory("History")
- K: IE Cookies
- lua: require("Panels").SetUserDirectory("Cookies")
- Q: IE Qiuck Launch
- lua: require("Panels").SetUserDirectory("AppData", "\\Microsoft\\Internet Explorer\\Quick Launch")
- }
- W: Windows
- {
- W: Windows Directory
- lua: require("Panels").SetEnvDirectory("WINDIR")
- S: System Directory
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\system32")
- X: System WOW64 Directory
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\SysWOW64")
- --:
- C: Common Files
- lua: require("Panels").SetSystemDirectory("CommonFilesDir")
- F: Fonts
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\Fonts")
- I: Installer
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\Installer")
- L: Logs
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\Logs")
- P: Program Files
- lua: require("Panels").SetSystemDirectory("ProgramFilesDir")
- T: Temp
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\Temp")
- Z: WinSXS
- {
- Z: WinSXS
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\winsxs")
- --:
- B: Backup
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\winsxs\\Backup")
- C: ManifestCache
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\winsxs\\ManifestCache")
- I: Install Temp
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\winsxs\\InstallTemp")
- T: Temp
- lua: require("Panels").SetEnvDirectory("SystemRoot", "\\winsxs\\Temp")
- }
- --:
- A: Application Data
- lua: require("Panels").SetShellDirectory("Common AppData")
- D: Documents
- lua: require("Panels").SetShellDirectory("Common Documents")
- M: Start Menu
- lua: require("Panels").SetShellDirectory("Common Start Menu")
- O: Desktop
- lua: require("Panels").SetShellDirectory("Common Desktop")
- *: Startup
- lua: require("Panels").SetShellDirectory("Common Startup")
- --:
- E: Event Viewer
- eventvwr.msc
- G: Group Policy
- gpedit.msc
- U: Utils
- explorer shell:::{ED7BA470-8E54-465E-825C-99712043E01C}
- }
GeSHi © Codebox Plus Extension