Установка режима "Отмеченные впереди"

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Установка режима "Отмеченные впереди"

Post by buniak_a_h »

Извините, пожалуйста если не нашёл существующий ответ.
Вопрос в следующем: как из скрипта управлять (включать-выключать) режим сортировки "Отмеченные впереди"?
Аналогичны режим "Папки впереди" (в panel.GetPanelInfo(…).Flags характеризуется флагом PFLAGS_DIRECTORIESFIRST) устанавливается функцией panel.SetDirectoriesFirst.
Вроде, абсолютно симметричный режим для отмеченных элементов (флаг PFLAGS_SELECTEDFIRST). Но функции panel.SetSelectedFirst я не нашёл. В функции panel.SetSortMode тоже нет (или не описано) такой возможности.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Установка режима "Отмеченные впереди"

Post by citRiks »

Если не захотят вносить в ФАР этот функционал,
то на крайняк можно костыль вроде этого, приобщаю для справки:
viewtopic.php?f=57&t=9430
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Установка режима "Отмеченные впереди"

Post by buniak_a_h »

Ну, как послать Shift+F12 - это я умею. Просто мне странно. Ведь и SortMode можно устанавливать через KeyStroke. Однако сделали же аж 3 функции (panel.SetSortMode, panel.SetSortOrder и panel.SetDirectoriesFirst). И тут вдруг выясняется, что абсолютно аналогичный флаг не установить без клавишных. Даже имена флагов начинаются одинаково! Да и в пользовательских сортировках их все можно указать. Обидно! И автор отвалил… :-(
P/S. Вы давали ссылку на обсуждение изменения настроек. Но "помеченные впереди" - это не настройка ФАРа! Это - подрежим сортировки. В частности, он относится только к одной панели.
Last edited by buniak_a_h on Sat 30 Jan, 2021 14:51, edited 1 time in total.
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Установка режима "Отмеченные впереди"

Post by 2useven10 »

far:config <RAlt> first
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Установка режима "Отмеченные впереди"

Post by buniak_a_h »

2useven10, это Вы к чему? Как определить состояние я знаю. Можно как Вы написали, можно через panel.GetPanelInfo . Вопрос не в том, как получить, а как установить. Для папок есть panel.SetDirectoriesFirst, а для отмеченных - нету. Дискриминация какая-то!
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Установка режима "Отмеченные впереди"

Post by 2useven10 »

buniak_a_h wrote: Sat 30 Jan, 2021 14:49 Но "помеченные впереди" - это не настройка ФАРа!
К тому что это ложное утверждение.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Установка режима "Отмеченные впереди"

Post by citRiks »

buniak_a_h wrote: Sat 30 Jan, 2021 14:49 Но "помеченные впереди" - это не настройка ФАРа! Это - подрежим сортировки. В частности, он относится только к одной панели.
как уже было отмечено, еще как настройка :)
послать Shift-F12 нетрудно конечно,
но для этого надо знать стоит ли сейчас "Помеченные впереди".
Поэтому хоть и этот костыль "не совсем то",
но он показывает свой хоть и костыльный, но рабочий подход,
и я предположил что может быть полезен как отправная точка.
Ну я бы по крайней мере предпочел бы иметь готовую отправную точку,
даже и сам зная теоретически все нужные АПИ
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Установка режима "Отмеченные впереди"

Post by buniak_a_h »

2useven10,citRiks, меня не интересует настройка ФАРа. Меня интересует текущее состояние переключателя для конкретной панели. И это - не одно и то же. Проверить легко: запомните состояние Panel.Left.SelectedFirst и Panel.Right.SelectedFirst, затем в панели нажмите Ctrl+F12 (поменяв это состояние на обратное), зайдите в far:config и убедитесь, что там ничего не изменилось. Ну, если не включено автосохранение…
Last edited by buniak_a_h on Sat 30 Jan, 2021 15:48, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Установка режима "Отмеченные впереди"

Post by buniak_a_h »

citRiks wrote: Sat 30 Jan, 2021 15:39 надо знать стоит ли сейчас "Помеченные впереди"
Как я описал, из far:config этого не понять. А вот по panel.GetPanelInfo(...).Flags - можно (посмотреть, установлен ли флаг PFLAGS_SELECTEDFIRST).
Last edited by buniak_a_h on Sat 30 Jan, 2021 15:52, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Установка режима "Отмеченные впереди"

Post by citRiks »

buniak_a_h wrote: Sat 30 Jan, 2021 15:51 Как я описал, из far:config этого не понять
Да вроде можно понять:
image.png
image.png (4.26 KiB) Viewed 2565 times
а по panel.GetPanelInfo() зато можно понять текущее состояние, да.
Поэтому мне показалось что за неимением лучшего выбора надо использовать и это тоже,
но я мог и чего-то недопонять
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Установка режима "Отмеченные впереди"

Post by buniak_a_h »

citRiks wrote: Sat 30 Jan, 2021 16:01 Да вроде можно понять:
Ну а теперь поменяйте в панели и посмотрите в far:config. НО! Если у Вам выключено автосохранение!
Начальное состояние (на примере правой панели). SelectedFirst выключено:
image.png
image.png (4.53 KiB) Viewed 2558 times
Panel.Right.SelectedFirst │boolean│false
Включаю SelectedFirst (жму Shift+F12):
image.png
image.png (2.52 KiB) Viewed 2558 times
Panel.Right.SelectedFirst │boolean│false
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Установка режима "Отмеченные впереди"

Post by 2useven10 »

buniak_a_h wrote: Sat 30 Jan, 2021 15:48 И это - не одно и то же.
С этим никто не спорит. И дискриминация SelectedFirst тоже не оспаривается.
add: Насколько я понимаю, из плагинов через PanelControl режим тоже не выставляется.
Last edited by 2useven10 on Sat 30 Jan, 2021 17:19, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Установка режима "Отмеченные впереди"

Post by buniak_a_h »

Применил свой любимый приём - «враппер». Написал в _macroinit.lua следующее:
  1. if not panel.SetSelectedFirst then
  2.  
  3.  panel.SetSelectedFirst = function(handle, whatpanel, aSelFirst)
  4.  
  5.   if not Area.Shell then return end
  6.  
  7.   local SelFirst = panel.GetPanelInfo(handle, whatpanel)
  8.  
  9.   if not SelFirst then return end
  10.  
  11.   SelFirst = band(SelFirst.Flags, far.Flags.PFLAGS_SELECTEDFIRST) == far.Flags.PFLAGS_SELECTEDFIRST
  12.  
  13.   if SelFirst == aSelFirst then return end
  14.  
  15.   if handle then whatpanel = panel.IsActivePanel(handle) and 0 or 1 end
  16.  
  17.   if whatpanel == 0 then panel.SetActivePanel(nil, 0) end
  18.  
  19.   pcall(Keys, "ShiftF12")
  20.  
  21.   if whatpanel == 0 then panel.SetActivePanel(nil, 0) end
  22.  
  23.  end
  24.  
  25. end
У указанной функции есть ограничения. Вот что знаю я:
1. работает только в area = Shell
2. Функция Keys в некоторых случаях вызывает сообщение типа accross yeld…
Post Reply

Return to “Нужна помощь”