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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

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

Начиная с этой версии я перестал выкладывать текст скрипта в сообщении (уж больно трудоёмко стало, т.к. он вырос). Тем более что “Select all” на сайте опять перестал работать. Теперь только во вложении в виде 7z-архива.
Сведения о версии:
Версия 1.4.12.
  1. Исправлена ошибка процедуры настройки, возникшая из-за изменения интерфейса. Ошибка проявлялась при вызове настройки сликом средней клавиши (колёсиком) на заголовке панели.
  2. Сделана возможность вызова диалога настройки скрипта через меню настроек плагинов.
ClickToTitleDir-1.4.12.7z
(24.95 KiB) Downloaded 28 times

Вместе с файлом самого скрипта поставляются языковые файлы ClickToTitleDirRus.lng и ClickToTitleDirEng.lng и файл помощи ClickToTitleDirRus.hlf.
Last edited by buniak_a_h on Mon 25 Dec, 2023 02:15, edited 69 times in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Слегка исправлен скрипт, чтоб восстановить вызов верхнего МЕНЮ мышкой (на рамке ВНЕ заголовка)
Last edited by buniak_a_h on Sun 29 Sep, 2019 12:04, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Версия 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: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

buniak_a_h, в случае, когда длинный путь усекается многоточием в середине, как отработает макрос при щелчке по многоточию или рядом с ним? А по последующим компонентам пути?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

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.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Увы, я не нашёл сразу, как проверить настройку ( не знал про 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.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Вышла версия 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: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

buniak_a_h, спасибо вам за интересную и неожиданную в Фаре функциональность!
Я попробовал, и меня сразу очень огорчило то, что дёргается туда-сюда системный буфер обмена. Дело в том, что я использую менеджер буфера обмена, который поддерживает мульти-буфер и выводит всплывающее уведомление на каждое изменение активного буфера. В результате при однократном использовании вашего скрипта я получаю два уведомления и одно «мусорное» значение в мульти-буфере. Поэтому я взялся и исправил это, благо, знал, как. А заодно и в тексте скрипта кое-что поулучшал — как в коде, так и в документации:
  1. local F=far.Flags
  2.  
  3. --local BaxUtils=require"Bax.BaxUtils"
  4.  
  5. --local DialogItem = BaxUtils.DialogItem
  6.  
  7. --local FlagsToNumber=BaxUtils.FlagsToNumber
  8.  
  9. local tin=table.insert
  10.  
  11. local DestPan, Mouse_X0, Mouse_X, WL=nil
  12.  
  13.  
  14.  
  15. local function Cond()--key)
  16.  
  17.  DestPan = nil
  18.  
  19.  local Y0= Far.GetConfig('Interface.ShowMenuBar') and 1 or 0
  20.  
  21.  if Mouse.Y==Y0 then -- Если постоянное меню включено, то заменить "0" на "1"
  22.  
  23.   local lPan, rPan=APanel.Left and APanel or PPanel, not PPanel.Left and PPanel or APanel
  24.  
  25.   WL=lPan.Width
  26.  
  27.   Mouse_X0 = Mouse.X
  28.  
  29.   Mouse_X = Mouse.X+2
  30.  
  31.   if (Mouse_X <= WL) then
  32.  
  33.    DestPan = lPan
  34.  
  35.   elseif (Mouse_X > WL) then
  36.  
  37.    DestPan = rPan
  38.  
  39.   end
  40.  
  41.   return DestPan ~= nil and not DestPan.Plugin and DestPan.Visible
  42.  
  43.  end
  44.  
  45. end;
  46.  
  47.  
  48.  
  49. local function DoClipboard()
  50.  
  51.  local oldClipboardMode = mf.clip(5,2) -- Включить внутренний буфер обмена
  52.  
  53.  local LSave = mf.clip()
  54.  
  55.  Keys('AltIns CtrlHome ' .. (Far.GetConfig('Interface.ShowMenuBar') and 'Down ' or '') .. 'ShiftEnd Enter')
  56.  
  57.  local Line = mf.clip()
  58.  
  59.  mf.clip(1, LSave) -- Восстановить содержимое буфера обмена
  60.  
  61.  mf.clip(5, oldClipboardMode) -- Восстановить прежний режим буфера обмена
  62.  
  63.  return Line
  64.  
  65. end
  66.  
  67.  
  68.  
  69. local function DoMenu(lPath)
  70.  
  71.  local sMenu = ''
  72.  
  73.  local function AccumulateMenu(FindInfo, FName)
  74.  
  75.   if FindInfo.FileAttributes:find'd' then
  76.  
  77.    sMenu = sMenu .. FName:sub(lPath:len()+2) .. '\n'
  78.  
  79.   end
  80.  
  81.  end
  82.  
  83.  far.RecursiveSearch(lPath, '*.*', AccumulateMenu, 'FRS_SCANSYMLINK')
  84.  
  85.  if sMenu ~= '' then
  86.  
  87.   sMenu = Menu.Show(sMenu,nil,nil,nil,Mouse_X0,1)
  88.  
  89.   if sMenu and sMenu ~= '' then
  90.  
  91.    Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, lPath .. '\\' .. sMenu)
  92.  
  93.    return true
  94.  
  95.   end
  96.  
  97.  end
  98.  
  99.  return false
  100.  
  101. end
  102.  
  103.  
  104.  
  105. Macro{
  106.  
  107.   id="D98641E3-1382-4C43-B8D2-B2197BDBDBE7";
  108.  
  109.   area="Shell"; -- Menu Tree Dialog Disks  Editor Grabber FindFolder Desktop UserMenu DialogAutoCompletion Search ShellAutoCompletion MainMenu Info Other Help QView Viewer
  110.  
  111.   key="MsLClick";
  112.  
  113.   description="Переход на каталог по клику мышкой на заголовке панели";
  114.  
  115.   flags=""; -- DisableOutput RunAfterFARStart EmptyCommandLine NotEmptyCommandLine NoFilePanels NoFilePPanels NoPluginPanels NoPluginPPanels NoFolders NoPFolders NoFiles NoPFiles Selection PSelection NoSelection NoPSelection EVSelection NoEVSelection NoSendKeysToPlugins
  116.  
  117.   condition=Cond;
  118.  
  119.   action=function()
  120.  
  121.    local Line = DoClipboard()
  122.  
  123.    if DestPan.Left then
  124.  
  125.     Line = Line:sub(1,WL)
  126.  
  127.    else
  128.  
  129.     Line = Line:sub(WL+1)
  130.  
  131.     Mouse_X = Mouse_X - WL
  132.  
  133.    end
  134.  
  135.    --local
  136.  
  137.    local Tail=Line:sub(Mouse_X)
  138.  
  139.    local lPath, aFolder=DestPan.Path, {}
  140.  
  141.    if Line:sub(Mouse_X+1,Mouse_X+2) == ':\\' then
  142.  
  143.     -- Смена диска
  144.  
  145.     if DestPan.Left then
  146.  
  147.      Keys"AltF1"
  148.  
  149.     else
  150.  
  151.      Keys"AltF2"
  152.  
  153.     end
  154.  
  155.    elseif Line:sub(Mouse_X,Mouse_X+1) == ':\\' then
  156.  
  157.     Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, Line:sub(Mouse_X-1,Mouse_X+1), lPath:match"^.-\\([^\\]+).*$")
  158.  
  159.    else
  160.  
  161.     local bWas=false
  162.  
  163.     while lPath:len() > 3 do
  164.  
  165.      local l1,l2=lPath:match"^(.*)\\([^\\]+)$"
  166.  
  167.      if l2 then
  168.  
  169.       tin(aFolder, 1, l2)
  170.  
  171.       if not Tail:find(table.concat(aFolder, '\\'),1,true) then
  172.  
  173.        table.remove(aFolder,1)
  174.  
  175.        if (#aFolder == 0 and Line:sub(1,Mouse_X-1):sub(-(l2:len()+1)) == l2 .. ' ') or
  176.  
  177.           (Line:sub(Mouse_X-1,Mouse_X-1) == '\\') then
  178.  
  179.         bWas = true;
  180.  
  181.         DoMenu(lPath)
  182.  
  183.        else
  184.  
  185.         if DestPan.Path ~= lPath then
  186.  
  187.          bWas = true;
  188.  
  189.          Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, lPath, aFolder[1])
  190.  
  191.         end
  192.  
  193.         break
  194.  
  195.        end
  196.  
  197.        if bWas then return end
  198.  
  199.       end
  200.  
  201.       lPath = l1
  202.  
  203.      else
  204.  
  205.       break
  206.  
  207.      end
  208.  
  209.     end -- while lPath:len() > 3 do
  210.  
  211.     -- Сюда попадаю, если папки не найдено
  212.  
  213.     if not bWas then Keys"F9" end
  214.  
  215.    end
  216.  
  217.   end;
  218.  
  219. }
  220.  
  221.  
  222.  
  223. Macro{
  224.  
  225. --  id="";
  226.  
  227.   area="Shell"; -- Menu Tree Dialog Disks Shell Editor Grabber FindFolder Desktop UserMenu DialogAutoCompletion Search ShellAutoCompletion MainMenu Info Other Help QView Viewer
  228.  
  229.   key="MsRClick";
  230.  
  231.   description="Переход на каталог по (правому) клику мышкой на заголовке панели с использованием диалога";
  232.  
  233. --  filemask="";
  234.  
  235.   flags=""; -- DisableOutput RunAfterFARStart EmptyCommandLine NotEmptyCommandLine NoFilePanels NoFilePPanels NoPluginPanels NoPluginPPanels NoFolders NoPFolders NoFiles NoPFiles Selection PSelection NoSelection NoPSelection EVSelection NoEVSelection NoSendKeysToPlugins
  236.  
  237. --  priority=50;
  238.  
  239. --  sortpriority=50;
  240.  
  241.   condition=Cond;
  242.  
  243.   action=function()
  244.  
  245.    local function FindPanTitle(Line)
  246.  
  247.     local BoxSymbols=Far.GetConfig"System.BoxSymbols"
  248.  
  249.     local patt_fmt=[=[^[%s]-%%s*()[^%s]+()%%s([%s]*)]=]
  250.  
  251.     local patt=patt_fmt:format(BoxSymbols,BoxSymbols,BoxSymbols)
  252.  
  253.  
  254.  
  255.     local br=Line:match"^(%b[])"
  256.  
  257.     if br then Line = '╔' .. ('═'):rep(br:len()-1) .. Line:sub(br:len()+1) end
  258.  
  259.     local aRes={Line:match(patt, DestPan.Left and 1 or WL+1)}
  260.  
  261.     return aRes[1], aRes[2]-1
  262.  
  263.    end -- FindPanTitle
  264.  
  265.    local Y0= Far.GetConfig('Interface.ShowMenuBar') and 1 or 0
  266.  
  267.    local Line = DoClipboard()
  268.  
  269.  
  270.  
  271.    -- Поиск начала и конца заголовка панели
  272.  
  273.    local Title_X1, Title_X2 = FindPanTitle(Line)
  274.  
  275.    local DlgItems={}
  276.  
  277.    local w=Title_X2-Title_X1+1
  278.  
  279.    --DlgItems[1] = DialogItem{"DI_EDIT"; y1=Y0; x1=1; x2=w+1; Text=DestPan.Path; Flags="DIF_READONLY|DIF_CENTERGROUP"}
  280.  
  281.    --DlgItems[2] = DialogItem{"DI_BUTTON";Text='◄'; x1=0; y1=Y0; Flags="DIF_NOBRACKETS|DIF_BTNNOCLOSE|DIF_NOFOCUS"}
  282.  
  283.    --DlgItems[3] = DialogItem{"DI_BUTTON";Text='►'; x1=w+2; y1=Y0; Flags="DIF_NOBRACKETS|DIF_BTNNOCLOSE|DIF_NOFOCUS"}
  284.  
  285.    --                         x1    y1  x2   y2
  286.  
  287.    DlgItems[1] = {"DI_EDIT";   1;   Y0; w+1; Y0;  0; 0; 0; {DIF_READONLY=1; DIF_CENTERGROUP=1;}; DestPan.Path; }
  288.  
  289.    DlgItems[2] = {"DI_BUTTON"; 0;   Y0; 0;   Y0;  0; 0; 0; {DIF_NOBRACKETS=1; DIF_BTNNOCLOSE=1; DIF_NOFOCUS=1;}; '◄';}
  290.  
  291.    DlgItems[3] = {"DI_BUTTON"; w+2; Y0; 0;   Y0;  0; 0; 0; {DIF_NOBRACKETS=1; DIF_BTNNOCLOSE=1; DIF_NOFOCUS=1}; '►'; }
  292.  
  293.    local Need=false
  294.  
  295.    local function DlgProc(hDlg, Msg, Param1, Param2)
  296.  
  297.     if Msg == F.DN_INITDIALOG then
  298.  
  299.      hDlg:send("DM_SETCURSORPOS", 1, {X=APanel.Path:len()})
  300.  
  301.     elseif Msg == F.DN_CTLCOLORDLGITEM and
  302.  
  303.            (Param1 == 2 or Param1 == 3) then
  304.  
  305.      local SelColor=far.AdvControl(far.Flags.ACTL_GETCOLOR, far.Colors.COL_MENUARROWS)
  306.  
  307.      Param2[1].ForegroundColor = SelColor.ForegroundColor
  308.  
  309.      Param2[1].BackgroundColor = SelColor.BackgroundColor
  310.  
  311.      Param2[1].Flags = SelColor.Flags
  312.  
  313.      Param2[2].ForegroundColor = SelColor.ForegroundColor
  314.  
  315.      Param2[2].BackgroundColor = SelColor.BackgroundColor
  316.  
  317.      Param2[2].Flags = SelColor.Flags
  318.  
  319.      return Param2
  320.  
  321.     elseif Msg==F.DN_CONTROLINPUT and
  322.  
  323.        Param1 == 1 and
  324.  
  325.        Param2.EventType == F.MOUSE_EVENT then
  326.  
  327.      Need = true
  328.  
  329.     --elseif Msg==F.DN_DRAWDLGITEMDONE and Param1==1 and Need then
  330.  
  331.     elseif Msg == F.DN_ENTERIDLE and Need then
  332.  
  333.      Need=false
  334.  
  335.      local bDone
  336.  
  337.      local iPos=hDlg:send(F.DM_GETCURSORPOS, 1).X
  338.  
  339.      --if iPos==1 then
  340.  
  341.      -- bDone = true
  342.  
  343.      -- mf.postmacro(function() if DestPan.Left then Keys"AltF1" else Keys"AltF2" end end)
  344.  
  345.      if DestPan.Path:sub(iPos+1,iPos+1) == '\\' then
  346.  
  347.       bDone = DoMenu(DestPan.Path:sub(1, iPos))
  348.  
  349.      else
  350.  
  351.       local NewPath, NewItem=DestPan.Path..'\\',''
  352.  
  353.       while NewPath:len() > iPos do
  354.  
  355.        local np, ni = NewPath:match"^(.*)\\([^\\]*)$"
  356.  
  357.        if np and np:len() > iPos then
  358.  
  359.         NewPath, NewItem = np, ni
  360.  
  361.        else
  362.  
  363.         break
  364.  
  365.        end
  366.  
  367.       end
  368.  
  369.       Panel.SetPath(APanel.Left == DestPan.Left and 0 or 1, NewPath, NewItem)
  370.  
  371.       bDone = true
  372.  
  373.      end
  374.  
  375.      if bDone then hDlg:send"DM_CLOSE" end
  376.  
  377.     elseif Msg == F.DN_BTNCLICK then
  378.  
  379.      local iPos=hDlg:send(F.DM_GETCURSORPOS, 1).X
  380.  
  381.      if Param1 == 2 then -- ◄
  382.  
  383.       iPos = (DestPan.Path:sub(1,iPos):match".*()\\" or 2)-1
  384.  
  385.      else-- ►
  386.  
  387.       iPos = DestPan.Path:match("[^\\]*()\\", iPos+1) or DestPan.Path:len()
  388.  
  389.      end
  390.  
  391.      hDlg:send("DM_SETCURSORPOS", 1, {X=iPos})
  392.  
  393.     end
  394.  
  395.    end -- DlgProc
  396.  
  397.    --far.Dialog('', Title_X1-2,Y0,Title_X1+w,Y0,nil,DlgItems, FlagsToNumber("FDLG_NODRAWSHADOW|FDLG_SMALLDIALOG"), DlgProc)
  398.  
  399.    far.Dialog('', Title_X1-2,Y0,Title_X1+w,Y0,nil,DlgItems, bor(F.FDLG_NODRAWSHADOW, F.FDLG_SMALLDIALOG), DlgProc)
  400.  
  401.   end;
  402.  
  403. }
  404.  
  405.  
  406.  
  407.  
  408.  
  409. local Info = package.loaded.regscript or function(...) return ... end
  410.  
  411. local nfo = Info {_filename or ...,
  412.  
  413.   name        = "GoToMouse";
  414.  
  415.   description = "Переход на каталог по клику мышкой на заголовке панели";
  416.  
  417.   version     = "1.0.5"; --http://semver.org/lang/ru/
  418.  
  419.   author      = "BAX";
  420.  
  421.   url         = "https://forum.farmanager.com/viewtopic.php?p=155435#p155435";
  422.  
  423.   id          = "D98641E3-1382-4C43-B8D2-B2197BDBDBE7";
  424.  
  425.   history     = [[
  426.  
  427. 2019/09/29 v1.0.1: Первая публичная версия.
  428.  
  429. 2019/09/29 v1.0.2: При клике на слэш выводится список вложенных каталогов для выбора.
  430.  
  431. 2019/09/29 v1.0.3:
  432.  
  433.      1. Клик непосредственно после имени текущей папки выводит список вложенных папок для выбора.
  434.  
  435.      2. Клик ВНЕ заголовка (на рамке) вызывает верхнее МЕНЮ (как без макроса).
  436.  
  437. 2019/09/30 v1.0.4:
  438.  
  439.      1. При переходе на папку указатель позиционируется на папке, идущей в исходной адресной строке
  440.  
  441.         после целевой папки.
  442.  
  443.      2. Клик на букве диска теперь вызывает переход в корневую папку диска с позиционированием на
  444.  
  445.         первой папке старого пути.
  446.  
  447.      3. Клик непосредственно перед буквой диска вызывает диалог выбора диска для целевой панели.
  448.  
  449. 2019/10/01 v1.0.5:
  450.  
  451.      1. Реализован автоматический учёт настройки Interface.ShowMenuBar ([ ] Always show the menu bar).
  452.  
  453.      2. Клик ПРАВОЙ кнопкой вызывает простейший диалог (точнее, на месте заголовка панели создаётся
  454.  
  455.         поле ввода, где клик по имени папки вызывает переход).
  456.  
  457. 2019/10/01 V1.0.6:
  458.  
  459.      1. Устранено засорение системного буфера обмена (актуально при использовании мульти-буферов).
  460.  
  461.      2. Исправлено правописание в истории версий; улучшена декомпозиция кода.
  462.  
  463.   ]]
  464.  
  465. }
  466.  
  467. if not nfo then return end
Надеюсь, я не задел ваших авторских чувств.
Кстати, считаю, что текущее название неудачное, т.к. слишком общее. Предлагаю переименовать скрипт в ClickToTitleDir.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

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

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

И одно пожелание: хочется иметь опцию, как выводить меню при нажатии по разделителю. Лично мне больше бы понравилось, если бы оно было без рамки и без полей. Я бы и сам опцию легко добавил, но, чтобы это хорошо вписалось в инфраструктуру regscriptа, надо перенести блок Info в начало и уже тогда разместить в нём опции (пока одну). Если вы готовы принять такое изменение, я его внесу.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

HaRT, спасибо за исправления.
Отдельно о чтении с экрана: я сделал перанально... Было бы проще, если б был функционал типа SaveScreen, но в текстовом виде. И ведь в процедуре, реализующей SaveScreen, наверняка есть чтение с экрана! Жаль, что такая полезна информация пропадает... (пожелание к разработчикам)
За задержку - извините: у меня уже давно изменился текст макроса; пришлось сливать со старым...
HaRT wrote: Tue 01 Oct, 2019 19:50 Надеюсь, я не задел ваших авторских чувств
Надеюсь, в Info.author останется упоминание BAX. Авторские всё равно не светят ;-) Остальное - только греет: кого-то заинтересовало - значит, не зря.
HaRT wrote: Tue 01 Oct, 2019 20:13 Если вы готовы принять такое изменение, я его внесу.
Если можно - не сразу. Хотелось бы сначала "причесать" мелочи, опубликовать - и потом уже буду готов. Просто чтоб не сливать всё снова...
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Tue 01 Oct, 2019 20:13 1. Не реагирует ожидаемым образом двоеточие после буквы диска
Вроде, сделал... но наткнулся на непреодолимое препятствие. Если открыт редактор и/или вьюер, то на месте начала пути выводится [n+m] (если путь длинный). Из-за этого (а) иногда вообще на первый слэш не попасть (тем более на двоеточие); (б) не определить букву диска. Если на экране скобка (от счётчиков окон) налезает только на букву диска - я поборол. Но если закрыто больше - я не поборю...
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Tue 01 Oct, 2019 20:13 Хотелось бы, чтобы двоеточие реагировало так же, как и буква диска,
На самом деле выбор диска по клику на букву я считаю излишним, сделан для соблюдения логики. Клик на букву-признак сортировки (встроенная возможность) ничем не хуже, и даже удобнее... Мне так каэцца...
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

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: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

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

И отдельное спасибо, что приняли моё предложение о переименовании скрипта.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

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.
Post Reply

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