Page 1 of 2

Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 11:47
by Shmuel
DV wrote:Портировал ли кто этот (или подобный) макрос под FAR3?
Независимая реализация той же функциональности + выравнивание по правому краю слишком длинных пунктов меню:
  1. local function FillTable(t, path)
  2.  
  3.   while true do
  4.  
  5.     path = path:match("(.*)\\[^\\]+$")
  6.  
  7.     if path==nil then break end
  8.  
  9.     t[#t+1] = {path=path.."\\"}
  10.  
  11.   end
  12.  
  13. end
  14.  
  15.  
  16.  
  17. local function ShowMenu()
  18.  
  19.   local items = {}
  20.  
  21.   if APanel.Plugin then
  22.  
  23.     FillTable(items, APanel.Path)
  24.  
  25.     if items[1] then items[#items+1] = { separator=true } end
  26.  
  27.     items[#items+1] = { path=APanel.Path0 }
  28.  
  29.   end
  30.  
  31.   FillTable(items, APanel.Path0)
  32.  
  33.   if items[1] then
  34.  
  35.     for k,v in ipairs(items) do
  36.  
  37.       if v.path then
  38.  
  39.         local extra = v.path:len() - Far.Width + 8
  40.  
  41.         v.text = extra<=0 and v.path or "..."..v.path:sub(extra+4)
  42.  
  43.       end
  44.  
  45.     end
  46.  
  47.     local item = far.Menu({Title="Go to ..."}, items)
  48.  
  49.     if item then Panel.SetPath(0, item.path) end
  50.  
  51.   end
  52.  
  53. end
  54.  
  55.  
  56.  
  57. Macro {
  58.  
  59.   description="Menu with list of parent directories (CD up)";
  60.  
  61.   area="Shell"; key="CtrlBS";
  62.  
  63.   condition=function() return CmdLine.Empty and APanel.Visible end;
  64.  
  65.   action=ShowMenu;
  66.  
  67. }
Есть и ещё одна реализация на основе этого кода: GoUp.
HaRT wrote: Mon 09 May, 2016 21:05Представляю на суд общественности свой вариант, сделанный на основе выложенного в шапке.
Отличия:
1. Добавлены горячие клавиши от 0 до Z, далее просто выравнивание пробелами.
2. Выбор элемента означает не переход в директорию, а переход на директорию — об этом напоминает отсутствие разделителя (‘\’) на концах путей.
3. При попытке перехода на саму букву диска открывается меню дисков.
4. Макрос назначен на AltPgUp.

Re: Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 12:16
by Kerberos464
DV wrote:Помнится, был такой плагин - CDup - позволяющий прыгать из текущей папки в любую родительскую, вплоть до корня диска.
Теперь, с появлением макрофункции Menu.Show, это стало возможно и без плагина:

Code: Select all

$If (CmdLine.Empty && APanel.Visible && !APanel.Plugin) %mm = ""; %p = APanel.Path; %i = rindex(%p,"\\"); $While (%i >= 2) %p = substr(%p,0,%i); %mm = %mm + %p + "\\\r\n"; %i = rindex(%p,"\\"); $End $If (%mm != "") %p = Menu.Show(%mm, "Go to ..."); $If (%p != "") panel.setpath(0,%p); $End $End $End
Вешаем макрос на клавишу BS - и вуаля!
спасибо, удобно! :)

Re: Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 12:31
by Wave
Не работает на нефайловых панелях. В частности, на RegBrowser. Ну и на Bs лично у меня висит гораздо более привычный CtrlPgUp. Этот повесил на CtrlBs в обвязке с ещё одним.

Re: Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 12:38
by HaRT
Лично у меня подобное дано назначено на AltPgUp.

Re: Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 13:04
by DV
HaRT wrote:Лично у меня подобное дано назначено на AltPgUp.
Но где же сам макрос? ;)

Re: Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 13:26
by HaRT
DV wrote:Но где же сам макрос? ;)
У меня не макрос, а скрипт для SHPCE (мир его праху).
Да к тому же вроде бы похожая функциональность уже была реализована в плагине HotDir.

Re: Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 14:19
by Maximus5
макрос, поддерживающий плагиновые панели

Re: Меню со списком родительских папок (CD up)

Posted: Mon 18 Jul, 2011 20:17
by DAtaMan
:crazy:
Во флагах макроса:

Code: Select all

[ ] Командная строка
Вроде работает в редакторах реестра, ArcLite и Observer.

Re: Меню со списком родительских папок (CD up)

Posted: Tue 19 Jul, 2011 07:09
by igor_andreev
Вах, как сразу удобно стало, всем спасибо :)

Re: Меню со списком родительских папок (CD up)

Posted: Wed 20 Jul, 2011 20:55
by DAtaMan

1. Добавлены хоткеи.
2. Возможна пометка нескольких путей. Тогда 1-ый отмеченный сверху - путь для активной панели, 2-ой - для пассивной.

Re: Меню со списком родительских папок (CD up)

Posted: Wed 20 Jul, 2011 22:18
by Wave
Макролиб ругается на FSPLIT_NAME (подозреваю, что следом ругнётся и на FSPLIT_EXT).

Re: Меню со списком родительских папок (CD up)

Posted: Wed 20 Jul, 2011 23:06
by DAtaMan
Wave wrote:Макролиб ругается на FSPLIT_NAME (подозреваю, что следом ругнётся и на FSPLIT_EXT).
Даже если импортировать "Addons\Macros\MacroConsts.reg" ?

Re: Меню со списком родительских папок (CD up)

Posted: Thu 21 Jul, 2011 08:38
by DV
Раз уж пошла такая пьянка :) то вот расширенный вариант самого первого макроса:

Что умеет: находясь внутри архива (плагин arclite) или же реестра (плагин registry), показывает двойной список "родительских" папок - сначала для плагиновой панели, потом для файловой панели, позволяя "выпрыгнуть" из архива в любую реальную папку выше. Также добавлена некоторая "магия" для исключения элементов "\" и "\\" из списка для плагина network.
Не умеет: показывать буквы дисков, но это можно прикрутить по желанию :)

Re: Меню со списком родительских папок (CD up)

Posted: Fri 13 Dec, 2013 16:41
by DV
Портировал ли кто этот (или подобный) макрос под FAR3?

Re: Меню со списком родительских папок (CD up)

Posted: Fri 13 Dec, 2013 16:55
by Shmuel
DV wrote:Портировал ли кто этот (или подобный) макрос под FAR3?
Только что, конвертером.