Page 6 of 7

Переключение дисков по Ctrl/Alt/Shift+←/→

Posted: Fri 02 Nov, 2012 05:53
by IgorZ
Макрос написан по мотивам анси-плагина Change Active Drive by Ilya V. Gershman
Стрелки (или другие назначенные клавиши) в сочетании с LeftCtrl/LeftAlt/RightCtrl/RightAlt/Shift в указанных комбинациях меняют диск для левой/правой/активной/пассивной (в зависимости от настроек) панели. Замечания и предложения принимаются с благодарностью.


Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Thu 17 Dec, 2015 07:47
by IgorZ

Latest post of the previous page:

Mauro72 wrote:May be a blank space between drives [C D E F..]?
Only if as option.
Mauro72 wrote:Highlighted the current drive in uppercase, not lowercase.
Similarly.
Mauro72 wrote:And a option to show always the drives in two panels?
Please, more detail.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Thu 17 Dec, 2015 15:39
by Mauro72
Please, more detail.
Easy, show the drives always, not only when press CTRL (left panel)/ALT (right panel) + arrows.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Fri 18 Dec, 2015 09:36
by IgorZ
Версия 3.0.8 - Настройка вывода символов панели с разделением пробелами. Настройка выделения текущего диска нижним регистром. Рефакторинг. Мелкие правки.
Mauro72 wrote:
Please, more detail.
Easy, show the drives always, not only when press CTRL (left panel)/ALT (right panel) + arrows.
No. This drives panels will need to redraw almost every time when FAR panels are redrawn. Before this is necessary to determine, is it really required, or no. All this will increase the load on the system and potentially lower reliability without increasing functionality.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Thu 24 Mar, 2016 05:28
by IgorZ
Версия 3.1.0 - Более гибкая настройка управления. Переработана справка.

Теперь можно назначать переключение любой панели на любые комбинации -> и <- с модификаторами. Ну и справка заодно приведена в соответствие с возможностями скрипта и переведена на стандартный механизм.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Fri 25 Mar, 2016 07:47
by IgorZ
Версия 3.1.1 - Мелкие правки. Изменены символы для обозначения плагинов, добавляющихся к списку дисков по умолчанию - оказывается, в каких-то случаях те, что были, могут приводить к ошибкам. Исправлен непереведённый с русского фрагмент в английской справке. Собственно, те, кто не пользуются английской справкой и уже переназначили обозначения плагинов, как им удобно, могут не беспокоиться.
Заодно причесал головной пост - устаревшие варианты скрипта формата .fmlua выкинул из текста, заменив на вложения.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Wed 25 May, 2016 11:23
by IgorZ
Версия 3.2.0 -
  • Максимально гибкая настройка управления. Теперь можно указывать любые комбинации, вплоть до (к примеру) AltShiftQ для левой панели и RCtrlRAltShiftW для правой. Вроде, за время тестирования все ошибки выловлены, но поскольку возможны скрытые камни в связи с какими-то комбинациями клавиш, на всякий случай пусть полежит и предыдущая версия.
  • Смена места хранения данных. Внимание: в связи с данным новшеством рекомендую перенести настройки скрипта при помощи специальной утилиты. Хотя, в принципе, должен и старые настройки находить, если новых нет. Но не гарантирую, что в любых обстоятельствах, и что так будет и в последующих версиях.
  • Мелкие правки.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Thu 15 Jun, 2017 09:50
by IgorZ
Версия 3.3.0 - Диски и плагины можно назначать на разные комбинации. После смены клавиш скрипты перезагружаются (чтобы обновить клавиши вызова макроса). Убрана область Menu из определения пункта меню плагинов. При выводе справки используется язык справки фара. Справка допилена. Nfo. Мелкие правки.
Поясню подробнее насчёт "Диски и плагины можно назначать на разные комбинации". В настройках можно указывать, какими клавишами переключать диски и плагины, к примеру

Code: Select all

║ 1 Левая Ctrl RAlt          3 Активная Shift              ║
║ 2 ПраваяAlt RCtrl          4 Пассивная                   ║
║ 5 <--   Left               6 -->      Right              ║
Теперь можно написать

Code: Select all

║ 1 Левая Ctrl RAlt          3 Активная Shift              ║
║ 2 ПраваяAlt RCtrl          4 Пассивная                   ║
║ 5 <--   \dNum7 \pNum1 Num4 6 -->      \dNum9 \pNum3 Num6 ║
Тогда пара Num7/Num9 будет выводить и, соответственно, переключать только диски, пара Num1/Num3 только плагины, а пара Num4/Num6, как и раньше, и те, и другие. В качестве признаков используются \d/\D и \p/\P.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Fri 08 Dec, 2017 10:03
by IgorZ
Версия 3.3.1 -
  • Нажатие буквы диска/символа плагина перемещает курсор в панели. К примеру, если скрипт активирован с помощью комбинации Ctrl+что-то, то CtrlC переместит курсор на диск C, а нажатие Ctrl/ переместит курсор на плагин, обозначенный символом / . Разумеется, не всякий символ получится так ввести, к примеру, Ctrl? не выйдет, только Ctrl/.
  • Изменён способ выделения начального диска в панели, на пробу. На схеме по умолчанию, во всяком случае, видно гораздо лучше, поскольку используется окраска с другим цветом фона. Раньше использовался цвет выделенного файла в панели, у которого фон, как правило, совпадает с фоном обычного файла, поэтому видно было не очень хорошо.
  • Рефакторинг, мелкие правки. В частности, теперь назначение на плагин русской буквы отрабатывает, вроде бы, полностью корректно.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Sun 10 Dec, 2017 17:27
by sToLp
На мой взгляд, макрос стал почти идеальным.
Однако всегда ведь есть возможность совершенствования. В частности:
IgorZ wrote:
Fri 08 Dec, 2017 10:03
  • Изменён способ выделения начального диска в панели, на пробу...
Это очень хорошо. При этом, было бы предпочтительнее, чтобы курсор на позиции начального диска обозначался бы подсветкой также, как и на других позициях.

А так же было бы хорошо, чтобы меню можно было бы выводить не в одной позиции, а одновременно в двух (например, в самой верхней — 0 и в самой нижней — -1).

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Mon 11 Dec, 2017 07:55
by IgorZ
sToLp wrote:
Sun 10 Dec, 2017 17:27
На мой взгляд, макрос стал почти идеальным.
Однако всегда ведь есть возможность совершенствования. В частности:
IgorZ wrote:
Fri 08 Dec, 2017 10:03
  • Изменён способ выделения начального диска в панели, на пробу...
Это очень хорошо. При этом, было бы предпочтительнее, чтобы курсор на позиции начального диска обозначался бы подсветкой также, как и на других позициях.
Не совсем понял, что имеется в виду. Подсветка текущего диска должна обладать бОльшим приоритетом, чем подсветка начального? То есть, если курсор текущей позиции стоит на начальном диске, то отмечать его не как начальный диск, а как текущую позицию? Если да, поменяйте в файле местами строки 408 и 409, то есть

Code: Select all

    far.Text(PanelPos+DrvNum+(SpDelim and DrvNum-1 or 0),OutStr,SelColor,DrvList:sub(DrvNum,DrvNum)) -- и курсор
и

Code: Select all

    far.Text(StartOut,OutStr,StartColor,DrvList:sub(StartDrv,StartDrv)) -- и стартовый диск
Кстати, если большинство считает аналогично, то поменяю в дистрибутиве - мне без особой разницы.
sToLp wrote:
Sun 10 Dec, 2017 17:27
А так же было бы хорошо, чтобы меню можно было бы выводить не в одной позиции, а одновременно в двух (например, в самой верхней — 0 и в самой нижней — -1).
Зачем??? :?

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Mon 11 Dec, 2017 09:24
by sToLp
IgorZ wrote:
Mon 11 Dec, 2017 07:55
sToLp wrote:
Sun 10 Dec, 2017 17:27
было бы предпочтительнее, чтобы курсор на позиции начального диска обозначался бы подсветкой также, как и на других позициях
Не совсем понял, что имеется в виду.
При прокрутке курсора по меню, когда он попадает вновь на начальный диск, то не подсвечивается (как бы пропадает) и становится непонятным: где же курсор в этот момент?

Дополнено:
Предложенный Вами вариант смены указанных строк местами данную задачу решает. Спасибо!

IgorZ wrote:
Mon 11 Dec, 2017 07:55
sToLp wrote:
Sun 10 Dec, 2017 17:27
А так же было бы хорошо, чтобы меню можно было бы выводить не в одной позиции, а одновременно в двух (например, в самой верхней — 0 и в самой нижней — -1).
Зачем??? :?
По нынешним временам мониторы бывают большими (и даже очень большими) и на них удобнее были бы дублированные меню.


А также (если это возможно и не слишком обременительно) было бы удобно, чтобы меню могло бы постоянно оставаться на экране и, кроме прочего, переключение можно было бы осуществлять кликом мыши. :oops:

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Fri 15 Dec, 2017 07:26
by IgorZ
sToLp wrote:
Mon 11 Dec, 2017 09:24
IgorZ wrote:
Mon 11 Dec, 2017 07:55
sToLp wrote:
Sun 10 Dec, 2017 17:27
А так же было бы хорошо, чтобы меню можно было бы выводить не в одной позиции, а одновременно в двух (например, в самой верхней — 0 и в самой нижней — -1).
Зачем??? :?
По нынешним временам мониторы бывают большими (и даже очень большими) и на них удобнее были бы дублированные меню.
Пока предложу патч, который выводит меню фиксированно в первой и последней строке. Две настраиваемые позиции потребуют переработки настроек, переделки окна конфигурации - в общем, долго и нудно. А кроме Вас, пока никто не возжелал два экземпляра панели.
Так что строки 407-409 (три far.Text(...)) замените на
  1.     far.Text(PanelPos,0,StdColor,"["..OutList.."]") -- отрисуем список дисков
  2.     far.Text(StartOut,0,StartColor,DrvList:sub(StartDrv,StartDrv)) -- и стартовый диск
  3.     far.Text(PanelPos+DrvNum+(SpDelim and DrvNum-1 or 0),0,SelColor,DrvList:sub(DrvNum,DrvNum)) -- и курсор
  4.     far.Text(PanelPos,WPanel.Height-1,StdColor,"["..OutList.."]") -- отрисуем список дисков
  5.     far.Text(StartOut,WPanel.Height-1,StartColor,DrvList:sub(StartDrv,StartDrv)) -- и стартовый диск
  6.     far.Text(PanelPos+DrvNum+(SpDelim and DrvNum-1 or 0),WPanel.Height-1,SelColor,DrvList:sub(DrvNum,DrvNum)) -- и курсор
sToLp wrote:
Mon 11 Dec, 2017 09:24
А также (если это возможно и не слишком обременительно) было бы удобно, чтобы меню могло бы постоянно оставаться на экране и, кроме прочего, переключение можно было бы осуществлять кликом мыши. :oops:
Для этого надо перехватывать события панели: перерисовку и ввод. События консольного ввода скрипт может получать, а события перерисовки панели - нет. Только плагин.
Возможно, Вам для Ваших нужд подойдёт плагин PanelTabs? Фактически, он является реализацией Вашей идеи, доведённой до логического конца.
Или :twisted: TotalCommander...

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Fri 15 Dec, 2017 07:53
by Shmuel
IgorZ wrote:
Fri 15 Dec, 2017 07:26
События консольного ввода скрипт может получать, а события перерисовки панели - нет. Только плагин.
И плагин эти события не получает, если только панель не создана этим самым плагином.
В контексте данного обсуждения - никакой разницы между возможностями макроса и плагина.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Fri 15 Dec, 2017 08:00
by John Doe

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Fri 15 Dec, 2017 11:24
by sToLp
IgorZ wrote:
Fri 15 Dec, 2017 07:26
патч, который выводит меню фиксировано в первой и последней строке
...
строки 407-409 (три far.Text(...)) замените на
  1.     far.Text(PanelPos,0,StdColor,"["..OutList.."]") -- отрисуем список дисков
  2.     far.Text(StartOut,0,StartColor,DrvList:sub(StartDrv,StartDrv)) -- и стартовый диск
  3.     far.Text(PanelPos+DrvNum+(SpDelim and DrvNum-1 or 0),0,SelColor,DrvList:sub(DrvNum,DrvNum)) -- и курсор
  4.     far.Text(PanelPos,WPanel.Height-1,StdColor,"["..OutList.."]") -- отрисуем список дисков
  5.     far.Text(StartOut,WPanel.Height-1,StartColor,DrvList:sub(StartDrv,StartDrv)) -- и стартовый диск
  6.     far.Text(PanelPos+DrvNum+(SpDelim and DrvNum-1 or 0),WPanel.Height-1,SelColor,DrvList:sub(DrvNum,DrvNum)) -- и курсор
Большое спасибо! Патч работает как запрошено. С одним небольшим нюансом: после выбора пункта меню верхнее меню продолжает оставаться на панели, т.е. не перерисовывается.

IgorZ wrote:
Fri 15 Dec, 2017 07:26
Возможно, Вам для Ваших нужд подойдёт плагин PanelTabs? Фактически, он является реализацией Вашей идеи, доведённой до логического конца.
PanelTabs использую активно, практически постоянно. Он очень удобен. И хотелось бы, чтобы он оставался дееспособным и дальше. Однако альтернатива не помешала бы.

Кстати, в Far x86 пока так же продолжает работать подплагин плагина scrgadget — "Экранные гаджеты". Он выводит в начало третьих снизу строк панелей Far`а литеры дисков, удобные для их переключения мышью. Но этот плагин не работает в x64. И здесь альтернатива была бы весьма желательна.

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Mon 18 Dec, 2017 06:16
by IgorZ
sToLp wrote:
Fri 15 Dec, 2017 11:24
Большое спасибо! Патч работает как запрошено. С одним небольшим нюансом: после выбора пункта меню верхнее меню продолжает оставаться на панели, т.е. не перерисовывается.
Недоработка. Тогда еще одна модификация: строку 397

Code: Select all

local h = far.SaveScreen(PanelPos,OutStr,PanelPos+OutList:len()+2,OutStr) -- сохраним фрагмент экрана, на котором будем рисовать панель смены диска
меняем на

Code: Select all

local h = far.SaveScreen() -- сохраним весь экран, не мелочимся

Переключение дисков по Ctrl/Alt/Shift+<-/->

Posted: Mon 18 Dec, 2017 10:15
by IgorZ
Версия 3.3.2 - Внезапно совпало наличие свободного времени, интереса и идеи по способу реализации, так что теперь можно указывать несколько строк вывода, панель будет выводиться в каждой. В настройках пишем несколько строк через , или ;, например 0,-1. Старый вариант, естественно, поддерживается. Заодно поменял приоритет выделения начального диска и курсора выбора.