ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Здесь обсуждается всё, что касается макросов.
Post Reply
buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

ClickToTitleDir — переход к папкам по щелчку на заголовке панели (и др.)

Post by buniak_a_h » Sun 29 Sep, 2019 07:51

Макрос навеян этим:
PieApple wrote:
Thu 23 Jan, 2014 12:57
Еще хотел бы поделиться идеей, реализованной в Проводнике с Windows 7, Total Commander, что если нажать мышкой на имя папки в адресной строке сверху, то происходит переход вверх на эту папку.
На самом деле получилось прикольно и, возможно, полезно (если Вы любите настольных грызунов).
Суть:
Клик мышой на заголовке панели, содержащей имя папки, вызывает переход (как в проводнике). А если клик приходится на разделитель (бэкслэш), то предоставляется выбор, в какую папку перейти.
Первоначальный макрос сваян «на коленке» за полчасика, потому не судите строго. Если будут отзывы и замечания — попробую «докрутить».

Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.


Так как проект несколько разросся, то теперь вместе с файлом самого скрипта поставляются языковой файл ClickToTitleDirRus.lng и файл помощи ClickToTitleDirRus.hlf.

ClickToTitleDir-1.2.10.7z
(16.06 KiB) Downloaded 2 times
Last edited by buniak_a_h on Sun 20 Oct, 2019 22:23, edited 35 times in total.

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по нажатии на заголовке панели

Post by buniak_a_h » Sun 29 Sep, 2019 12:03

Слегка исправлен скрипт, чтоб восстановить вызов верхнего МЕНЮ мышкой (на рамке ВНЕ заголовка)
Last edited by buniak_a_h on Sun 29 Sep, 2019 12:04, edited 1 time in total.

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по нажатии на заголовке панели

Post by buniak_a_h » Sun 29 Sep, 2019 23:46

Версия 1.0.4
Опыт показал, что это довольно удобно (особенно если надо "подняться" на несколько уровней или выбрать для перехода одну из многих вложенных папок) :)
Last edited by buniak_a_h on Sun 29 Sep, 2019 23:47, edited 1 time in total.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

Переход к папкам по нажатии на заголовке панели

Post by HaRT » Mon 30 Sep, 2019 00:02

buniak_a_h, в случае, когда длинный путь усекается многоточием в середине, как отработает макрос при щелчке по многоточию или рядом с ним? А по последующим компонентам пути?
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по нажатии на заголовке панели

Post by buniak_a_h » Mon 30 Sep, 2019 00:18

HaRT wrote:
Mon 30 Sep, 2019 00:02
buniak_a_h, в случае, когда длинный путь усекается многоточием в середине, как отработает макрос при щелчке по многоточию или рядом с ним? А по последующим компонентам пути?
По многоточия не испытывал. Правее - нормально (проверено). Просто формирование целевой папки идет не от заголовка, а то A[P]anel.Path. Анализ справа налево от хвоста имени папки.
Что точно не сработает - это если имя ОДНОГО каталога (я имею в виду - то, что между слэшами) не помещается в заголовок. Ну... Не думаю, что этот случай должен как-то учитываться.
upd. Испытал на многоточии. Переходит на тот каталог, в котором печатается … . Позиционируется на следующей папке. Т.е. максимально удобно (как ни странно)
Last edited by buniak_a_h on Mon 30 Sep, 2019 00:23, edited 1 time in total.

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по нажатии на заголовке панели

Post by buniak_a_h » Mon 30 Sep, 2019 00:30

Увы, я не нашёл сразу, как проверить настройку ( не знал про Far.Cfg_Get('Interface','ShowMenuBar') ). Поэтому макрос накарябан для случая, когда постоянный показ МЕНЮ выключен. Если кому-нибудь потребуется - пишите, докручу.
upd
Как выяснилось, Far.Cfg_Get - это . Надо проверять Far.GetConfig('Interface.ShowMenuBar')
upd2
Last edited by buniak_a_h on Mon 30 Sep, 2019 01:39, edited 2 times in total.

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по нажатии на заголовке панели

Post by buniak_a_h » Tue 01 Oct, 2019 04:23

Вышла версия 1.0.5 . Главное отличие: при клике ПРАВОЙ кнопкой мыши по заголовку панели на месте заголовка образуется однострочное поле ввода (на самом деле - R/O). Далее как раньше: клик по каталогу вызывает переход; клик по слэшу - выбор вложенного каталога. Справа и слева от поля ввода предусмотрены кнопки ◄ и ► для перемещения в поле ввода с помощью мышки.
upd В текст вкралась описка, препятствовавшая переходам по слэшам влево (по кнопке ◄). Исправлено...
Last edited by buniak_a_h on Tue 01 Oct, 2019 06:46, edited 1 time in total.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

Переход к папкам по нажатии на заголовке панели

Post by HaRT » Tue 01 Oct, 2019 19:50

buniak_a_h, спасибо вам за интересную и неожиданную в Фаре функциональность!
Я попробовал, и меня сразу очень огорчило то, что дёргается туда-сюда системный буфер обмена. Дело в том, что я использую менеджер буфера обмена, который поддерживает мульти-буфер и выводит всплывающее уведомление на каждое изменение активного буфера. В результате при однократном использовании вашего скрипта я получаю два уведомления и одно «мусорное» значение в мульти-буфере. Поэтому я взялся и исправил это, благо, знал, как. А заодно и в тексте скрипта кое-что поулучшал — как в коде, так и в документации:
  1. local F=far.Flags
  2. --local BaxUtils=require"Bax.BaxUtils"
  3. --local DialogItem = BaxUtils.DialogItem
  4. --local FlagsToNumber=BaxUtils.FlagsToNumber
  5. local tin=table.insert
  6. local DestPan, Mouse_X0, Mouse_X, WL=nil
  7.  
  8. local function Cond()--key)
  9.  DestPan = nil
  10.  local Y0= Far.GetConfig('Interface.ShowMenuBar') and 1 or 0
  11.  if Mouse.Y==Y0 then -- Если постоянное меню включено, то заменить "0" на "1"
  12.   local lPan, rPan=APanel.Left and APanel or PPanel, not PPanel.Left and PPanel or APanel
  13.   WL=lPan.Width
  14.   Mouse_X0 = Mouse.X
  15.   Mouse_X = Mouse.X+2
  16.   if (Mouse_X <= WL) then
  17.    DestPan = lPan
  18.   elseif (Mouse_X > WL) then
  19.    DestPan = rPan
  20.   end
  21.   return DestPan ~= nil and not DestPan.Plugin and DestPan.Visible
  22.  end
  23. end;
  24.  
  25. local function DoClipboard()
  26.  local oldClipboardMode = mf.clip(5,2) -- Включить внутренний буфер обмена
  27.  local LSave = mf.clip()
  28.  Keys('AltIns CtrlHome ' .. (Far.GetConfig('Interface.ShowMenuBar') and 'Down ' or '') .. 'ShiftEnd Enter')
  29.  local Line = mf.clip()
  30.  mf.clip(1, LSave) -- Восстановить содержимое буфера обмена
  31.  mf.clip(5, oldClipboardMode) -- Восстановить прежний режим буфера обмена
  32.  return Line
  33. end
  34.  
  35. local function DoMenu(lPath)
  36.  local sMenu = ''
  37.  local function AccumulateMenu(FindInfo, FName)
  38.   if FindInfo.FileAttributes:find'd' then
  39.    sMenu = sMenu .. FName:sub(lPath:len()+2) .. '\n'
  40.   end
  41.  end
  42.  far.RecursiveSearch(lPath, '*.*', AccumulateMenu, 'FRS_SCANSYMLINK')
  43.  if sMenu ~= '' then
  44.   sMenu = Menu.Show(sMenu,nil,nil,nil,Mouse_X0,1)
  45.   if sMenu and sMenu ~= '' then
  46.    Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, lPath .. '\\' .. sMenu)
  47.    return true
  48.   end
  49.  end
  50.  return false
  51. end
  52.  
  53. Macro{
  54.   id="D98641E3-1382-4C43-B8D2-B2197BDBDBE7";
  55.   area="Shell"; -- Menu Tree Dialog Disks  Editor Grabber FindFolder Desktop UserMenu DialogAutoCompletion Search ShellAutoCompletion MainMenu Info Other Help QView Viewer
  56.   key="MsLClick";
  57.   description="Переход на каталог по клику мышкой на заголовке панели";
  58.   flags=""; -- DisableOutput RunAfterFARStart EmptyCommandLine NotEmptyCommandLine NoFilePanels NoFilePPanels NoPluginPanels NoPluginPPanels NoFolders NoPFolders NoFiles NoPFiles Selection PSelection NoSelection NoPSelection EVSelection NoEVSelection NoSendKeysToPlugins
  59.   condition=Cond;
  60.   action=function()
  61.    local Line = DoClipboard()
  62.    if DestPan.Left then
  63.     Line = Line:sub(1,WL)
  64.    else
  65.     Line = Line:sub(WL+1)
  66.     Mouse_X = Mouse_X - WL
  67.    end
  68.    --local
  69.    local Tail=Line:sub(Mouse_X)
  70.    local lPath, aFolder=DestPan.Path, {}
  71.    if Line:sub(Mouse_X+1,Mouse_X+2) == ':\\' then
  72.     -- Смена диска
  73.     if DestPan.Left then
  74.      Keys"AltF1"
  75.     else
  76.      Keys"AltF2"
  77.     end
  78.    elseif Line:sub(Mouse_X,Mouse_X+1) == ':\\' then
  79.     Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, Line:sub(Mouse_X-1,Mouse_X+1), lPath:match"^.-\\([^\\]+).*$")
  80.    else
  81.     local bWas=false
  82.     while lPath:len() > 3 do
  83.      local l1,l2=lPath:match"^(.*)\\([^\\]+)$"
  84.      if l2 then
  85.       tin(aFolder, 1, l2)
  86.       if not Tail:find(table.concat(aFolder, '\\'),1,true) then
  87.        table.remove(aFolder,1)
  88.        if (#aFolder == 0 and Line:sub(1,Mouse_X-1):sub(-(l2:len()+1)) == l2 .. ' ') or
  89.           (Line:sub(Mouse_X-1,Mouse_X-1) == '\\') then
  90.         bWas = true;
  91.         DoMenu(lPath)
  92.        else
  93.         if DestPan.Path ~= lPath then
  94.          bWas = true;
  95.          Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, lPath, aFolder[1])
  96.         end
  97.         break
  98.        end
  99.        if bWas then return end
  100.       end
  101.       lPath = l1
  102.      else
  103.       break
  104.      end
  105.     end -- while lPath:len() > 3 do
  106.     -- Сюда попадаю, если папки не найдено
  107.     if not bWas then Keys"F9" end
  108.    end
  109.   end;
  110. }
  111.  
  112. Macro{
  113. --  id="";
  114.   area="Shell"; -- Menu Tree Dialog Disks Shell Editor Grabber FindFolder Desktop UserMenu DialogAutoCompletion Search ShellAutoCompletion MainMenu Info Other Help QView Viewer
  115.   key="MsRClick";
  116.   description="Переход на каталог по (правому) клику мышкой на заголовке панели с использованием диалога";
  117. --  filemask="";
  118.   flags=""; -- DisableOutput RunAfterFARStart EmptyCommandLine NotEmptyCommandLine NoFilePanels NoFilePPanels NoPluginPanels NoPluginPPanels NoFolders NoPFolders NoFiles NoPFiles Selection PSelection NoSelection NoPSelection EVSelection NoEVSelection NoSendKeysToPlugins
  119. --  priority=50;
  120. --  sortpriority=50;
  121.   condition=Cond;
  122.   action=function()
  123.    local function FindPanTitle(Line)
  124.     local BoxSymbols=Far.GetConfig"System.BoxSymbols"
  125.     local patt_fmt=[=[^[%s]-%%s*()[^%s]+()%%s([%s]*)]=]
  126.     local patt=patt_fmt:format(BoxSymbols,BoxSymbols,BoxSymbols)
  127.  
  128.     local br=Line:match"^(%b[])"
  129.     if br then Line = '╔' .. ('═'):rep(br:len()-1) .. Line:sub(br:len()+1) end
  130.     local aRes={Line:match(patt, DestPan.Left and 1 or WL+1)}
  131.     return aRes[1], aRes[2]-1
  132.    end -- FindPanTitle
  133.    local Y0= Far.GetConfig('Interface.ShowMenuBar') and 1 or 0
  134.    local Line = DoClipboard()
  135.  
  136.    -- Поиск начала и конца заголовка панели
  137.    local Title_X1, Title_X2 = FindPanTitle(Line)
  138.    local DlgItems={}
  139.    local w=Title_X2-Title_X1+1
  140.    --DlgItems[1] = DialogItem{"DI_EDIT"; y1=Y0; x1=1; x2=w+1; Text=DestPan.Path; Flags="DIF_READONLY|DIF_CENTERGROUP"}
  141.    --DlgItems[2] = DialogItem{"DI_BUTTON";Text='◄'; x1=0; y1=Y0; Flags="DIF_NOBRACKETS|DIF_BTNNOCLOSE|DIF_NOFOCUS"}
  142.    --DlgItems[3] = DialogItem{"DI_BUTTON";Text='►'; x1=w+2; y1=Y0; Flags="DIF_NOBRACKETS|DIF_BTNNOCLOSE|DIF_NOFOCUS"}
  143.    --                         x1    y1  x2   y2
  144.    DlgItems[1] = {"DI_EDIT";   1;   Y0; w+1; Y0;  0; 0; 0; {DIF_READONLY=1; DIF_CENTERGROUP=1;}; DestPan.Path; }
  145.    DlgItems[2] = {"DI_BUTTON"; 0;   Y0; 0;   Y0;  0; 0; 0; {DIF_NOBRACKETS=1; DIF_BTNNOCLOSE=1; DIF_NOFOCUS=1;}; '◄';}
  146.    DlgItems[3] = {"DI_BUTTON"; w+2; Y0; 0;   Y0;  0; 0; 0; {DIF_NOBRACKETS=1; DIF_BTNNOCLOSE=1; DIF_NOFOCUS=1}; '►'; }
  147.    local Need=false
  148.    local function DlgProc(hDlg, Msg, Param1, Param2)
  149.     if Msg == F.DN_INITDIALOG then
  150.      hDlg:send("DM_SETCURSORPOS", 1, {X=APanel.Path:len()})
  151.     elseif Msg == F.DN_CTLCOLORDLGITEM and
  152.            (Param1 == 2 or Param1 == 3) then
  153.      local SelColor=far.AdvControl(far.Flags.ACTL_GETCOLOR, far.Colors.COL_MENUARROWS)
  154.      Param2[1].ForegroundColor = SelColor.ForegroundColor
  155.      Param2[1].BackgroundColor = SelColor.BackgroundColor
  156.      Param2[1].Flags = SelColor.Flags
  157.      Param2[2].ForegroundColor = SelColor.ForegroundColor
  158.      Param2[2].BackgroundColor = SelColor.BackgroundColor
  159.      Param2[2].Flags = SelColor.Flags
  160.      return Param2
  161.     elseif Msg==F.DN_CONTROLINPUT and
  162.        Param1 == 1 and
  163.        Param2.EventType == F.MOUSE_EVENT then
  164.      Need = true
  165.     --elseif Msg==F.DN_DRAWDLGITEMDONE and Param1==1 and Need then
  166.     elseif Msg == F.DN_ENTERIDLE and Need then
  167.      Need=false
  168.      local bDone
  169.      local iPos=hDlg:send(F.DM_GETCURSORPOS, 1).X
  170.      --if iPos==1 then
  171.      -- bDone = true
  172.      -- mf.postmacro(function() if DestPan.Left then Keys"AltF1" else Keys"AltF2" end end)
  173.      if DestPan.Path:sub(iPos+1,iPos+1) == '\\' then
  174.       bDone = DoMenu(DestPan.Path:sub(1, iPos))
  175.      else
  176.       local NewPath, NewItem=DestPan.Path..'\\',''
  177.       while NewPath:len() > iPos do
  178.        local np, ni = NewPath:match"^(.*)\\([^\\]*)$"
  179.        if np and np:len() > iPos then
  180.         NewPath, NewItem = np, ni
  181.        else
  182.         break
  183.        end
  184.       end
  185.       Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, NewPath, NewItem)
  186.       bDone = true
  187.      end
  188.      if bDone then hDlg:send"DM_CLOSE" end
  189.     elseif Msg == F.DN_BTNCLICK then
  190.      local iPos=hDlg:send(F.DM_GETCURSORPOS, 1).X
  191.      if Param1 == 2 then -- ◄
  192.       iPos = (DestPan.Path:sub(1,iPos):match".*()\\" or 2)-1
  193.      else-- ►
  194.       iPos = DestPan.Path:match("[^\\]*()\\", iPos+1) or DestPan.Path:len()
  195.      end
  196.      hDlg:send("DM_SETCURSORPOS", 1, {X=iPos})
  197.     end
  198.    end -- DlgProc
  199.    --far.Dialog('', Title_X1-2,Y0,Title_X1+w,Y0,nil,DlgItems, FlagsToNumber("FDLG_NODRAWSHADOW|FDLG_SMALLDIALOG"), DlgProc)
  200.    far.Dialog('', Title_X1-2,Y0,Title_X1+w,Y0,nil,DlgItems, bor(F.FDLG_NODRAWSHADOW, F.FDLG_SMALLDIALOG), DlgProc)
  201.   end;
  202. }
  203.  
  204.  
  205. local Info = package.loaded.regscript or function(...) return ... end
  206. local nfo = Info {_filename or ...,
  207.   name        = "GoToMouse";
  208.   description = "Переход на каталог по клику мышкой на заголовке панели";
  209.   version     = "1.0.5"; --http://semver.org/lang/ru/
  210.   author      = "BAX";
  211.   url         = "https://forum.farmanager.com/viewtopic.php?p=155435#p155435";
  212.   id          = "D98641E3-1382-4C43-B8D2-B2197BDBDBE7";
  213.   history     = [[
  214. 2019/09/29 v1.0.1: Первая публичная версия.
  215. 2019/09/29 v1.0.2: При клике на слэш выводится список вложенных каталогов для выбора.
  216. 2019/09/29 v1.0.3:
  217.      1. Клик непосредственно после имени текущей папки выводит список вложенных папок для выбора.
  218.      2. Клик ВНЕ заголовка (на рамке) вызывает верхнее МЕНЮ (как без макроса).
  219. 2019/09/30 v1.0.4:
  220.      1. При переходе на папку указатель позиционируется на папке, идущей в исходной адресной строке
  221.         после целевой папки.
  222.      2. Клик на букве диска теперь вызывает переход в корневую папку диска с позиционированием на
  223.         первой папке старого пути.
  224.      3. Клик непосредственно перед буквой диска вызывает диалог выбора диска для целевой панели.
  225. 2019/10/01 v1.0.5:
  226.      1. Реализован автоматический учёт настройки Interface.ShowMenuBar ([ ] Always show the menu bar).
  227.      2. Клик ПРАВОЙ кнопкой вызывает простейший диалог (точнее, на месте заголовка панели создаётся
  228.         поле ввода, где клик по имени папки вызывает переход).
  229. 2019/10/01 V1.0.6:
  230.      1. Устранено засорение системного буфера обмена (актуально при использовании мульти-буферов).
  231.      2. Исправлено правописание в истории версий; улучшена декомпозиция кода.
  232.   ]]
  233. }
  234. if not nfo then return end
Надеюсь, я не задел ваших авторских чувств.
Кстати, считаю, что текущее название неудачное, т.к. слишком общее. Предлагаю переименовать скрипт в ClickToTitleDir.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

Переход к папкам по нажатии на заголовке панели

Post by HaRT » Tue 01 Oct, 2019 20:13

Теперь хочется сообщить о ещё не исправленных выявленных недоработках:
1. Не реагирует ожидаемым образом двоеточие после буквы диска — клик просто «проваливается» и активируется меню Фара. Хотелось бы, чтобы двоеточие реагировало так же, как и буква диска, ведь, чтобы попасть мышкой в одно знакоместо, всё же надо прицелиться, а в два уже проще.
2. Аналогично не реагирует обратный слэш после двоеточия. Но тут хотелось бы, чтобы он работал, как другие обратные слэши в пути, т.е. выводил меню директорий в корне.
Притом в п.1,2 хочется, чтобы : и \ работали как в полном, так и в усечённом пути.

Про «диалоговый» режим напишу на днях отдельно.

И одно пожелание: хочется иметь опцию, как выводить меню при нажатии по разделителю. Лично мне больше бы понравилось, если бы оно было без рамки и без полей. Я бы и сам опцию легко добавил, но, чтобы это хорошо вписалось в инфраструктуру regscriptа, надо перенести блок Info в начало и уже тогда разместить в нём опции (пока одну). Если вы готовы принять такое изменение, я его внесу.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по щелчку на заголовке панели

Post by buniak_a_h » Wed 02 Oct, 2019 03:08

HaRT, спасибо за исправления.
Отдельно о чтении с экрана: я сделал перанально... Было бы проще, если б был функционал типа SaveScreen, но в текстовом виде. И ведь в процедуре, реализующей SaveScreen, наверняка есть чтение с экрана! Жаль, что такая полезна информация пропадает... (пожелание к разработчикам)
За задержку - извините: у меня уже давно изменился текст макроса; пришлось сливать со старым...
HaRT wrote:
Tue 01 Oct, 2019 19:50
Надеюсь, я не задел ваших авторских чувств
Надеюсь, в Info.author останется упоминание BAX. Авторские всё равно не светят ;-) Остальное - только греет: кого-то заинтересовало - значит, не зря.
HaRT wrote:
Tue 01 Oct, 2019 20:13
Если вы готовы принять такое изменение, я его внесу.
Если можно - не сразу. Хотелось бы сначала "причесать" мелочи, опубликовать - и потом уже буду готов. Просто чтоб не сливать всё снова...

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по щелчку на заголовке панели

Post by buniak_a_h » Wed 02 Oct, 2019 08:26

HaRT wrote:
Tue 01 Oct, 2019 20:13
1. Не реагирует ожидаемым образом двоеточие после буквы диска
Вроде, сделал... но наткнулся на непреодолимое препятствие. Если открыт редактор и/или вьюер, то на месте начала пути выводится [n+m] (если путь длинный). Из-за этого (а) иногда вообще на первый слэш не попасть (тем более на двоеточие); (б) не определить букву диска. Если на экране скобка (от счётчиков окон) налезает только на букву диска - я поборол. Но если закрыто больше - я не поборю...

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по щелчку на заголовке панели

Post by buniak_a_h » Wed 02 Oct, 2019 08:45

HaRT wrote:
Tue 01 Oct, 2019 20:13
Хотелось бы, чтобы двоеточие реагировало так же, как и буква диска,
На самом деле выбор диска по клику на букву я считаю излишним, сделан для соблюдения логики. Клик на букву-признак сортировки (встроенная возможность) ничем не хуже, и даже удобнее... Мне так каэцца...

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по щелчку на заголовке панели

Post by buniak_a_h » Wed 02 Oct, 2019 09:01

HaRT wrote:
Tue 01 Oct, 2019 20:13
хочется иметь опцию, как выводить меню при нажатии по разделителю. Лично мне больше бы понравилось, если бы оно было без рамки и без полей.
Я попробовал. без полей - это правильно. А вот без рамки мне не понравилось. Сделал одиночную рамку. Если нужна настройка - Вы обещали ... ;-)
HaRT wrote:
Tue 01 Oct, 2019 20:13
чтобы это хорошо вписалось в инфраструктуру regscriptа, надо перенести блок Info в начало <...>. Если вы готовы принять такое изменение, я его внесу.
Не знал, что это важно. Просто при написании Info не нужно, а чтоб не мешал - затащил в конец.
Я перенёс. Остальное (config или options в Info) - за Вами.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

Переход к папкам по щелчку на заголовке панели

Post by HaRT » Wed 02 Oct, 2019 11:15

buniak_a_h wrote:
Wed 02 Oct, 2019 08:45
На самом деле выбор диска по клику на букву я считаю излишним, сделан для соблюдения логики. Клик на букву-признак сортировки (встроенная возможность) ничем не хуже, и даже удобнее...
Про возможность вызвать выбор диска щелчком по признаку сортировки знаю. Однако идея вызывать его же при щелчке в заголовке слева от буквы диска пришла мне сразу же, когда я попробовал версию 1.0.4, т.е. независимо от вас (и я даже её реализовал локально, но зарылся в других улучшениях и отложил, а там и версия 1.0.5 подоспела). Это лишь подтверждает, что определённая логика интуитивности в этом есть, поэтому прошу эту функциональность не выбрасывать.

И отдельное спасибо, что приняли моё предложение о переименовании скрипта.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 904
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

Переход к папкам по щелчку на заголовке панели

Post by buniak_a_h » Wed 02 Oct, 2019 12:18

HaRT wrote:
Tue 01 Oct, 2019 20:13
Про «диалоговый» режим напишу на днях отдельно.
Вот, вроде, докрутил "диалоговый режим" (версиЯ 1.0.7).
Last edited by buniak_a_h on Wed 02 Oct, 2019 12:18, edited 1 time in total.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

Переход к папкам по щелчку на заголовке панели

Post by HaRT » Wed 02 Oct, 2019 12:43

buniak_a_h wrote:
Wed 02 Oct, 2019 12:18
Вот, вроде, докрутил "диалоговый режим" (версиЯ 1.0.7).
Спасибо, буду опираться на эту версию.
Объяснить работу диалоговых событий, увы, не могу, т.к. не имею достаточного опыта. Надеюсь, более искушённые скрипто/плагино-писатели увидят и ответят.
Не могли бы вы написать русским языком, какие действия в диалоговом режиме что означают? Это чтобы было понятно, где так задумано, а где ошибка.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

Return to “Обсуждение макросов”