Folder Shortcuts Menu

Здесь выкладываются готовые к использованию макросы и скрипты.
Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Folder Shortcuts Menu

Post by Smitis » Mon 08 Apr, 2013 10:22

Макросы для хранения ссылок на папки в пользовательском меню.

Внимание! Начиная с версии ФАРа ~3879 изменён синтаксис командной строки для вызова скриптов, используемый для создания ссылок. Старый синтаксис пока оставлен, но через какое-то время будет отменён. Для работы ссылок в новых версиях ФАРа необходимо открыть меню со ссылками, перейти в начало файла и произвести замену всех вхождений lm:post на lua:. Для новых версий ФАРа необходимо обновить версию Folder Shortcuts Menu на >= 2.07. Новая версия в зависимости от версии ФАРа использует старый или новый синтаксис.

Макросы:
CtrlShift-цифра - Сохранить ссылку на папку. При этом создаётся, если его ещё нет, файл меню с именем по умолчанию Shortcuts.farmenu. В меню ищется подменю с соответсвующей горячей клавишей. Если подменю нет, оно создаётся с дефолтным именем. В подменю создаётся пункт, влючающий дату (настраивается) и имя текущей папки/файла и вставляется команда перехода на папку, после чего меню закрывается.
AltShift-цифра - То же, что и предыдущий, но создаётся ссылка на обе панели.
CtrlAlt-цифра - Открыть подменю с сылками. Если подменю отсутствует - создаётся и открывается пустое.
CtrlShift` - Добавить ссылку непосредственно из открытого пользовательского меню. Работает в любом пользовательском меню!
AltShift` - То же, что и предыдущий, но создаётся ссылка на обе панели.
CtrlAlt` - Открыть общее меню.
Дополнительно возможны макросы (отключены по умолчанию):
- Вызов меню и вставка (вместо перехода) путей из ссылок в редакторе и полях ввода диалогов.
- Создание двойных ссылок для обеих панелей одновременно.
Примеры включения дополнительных макросов в FolderShortcutsMenu.sample.cfg

Особенности и отличия от встроенных в ФАР ссылок на папки:
- Всегда открывается список с ссылками, даже если ссылка одна или ссылок нет (единообразие поведения).
- Можно выходить из подменю на уровень вверх, заходить в другое подменю и т.д.
- Можно менять имена подменю на любые удобные (важно лишь сохранить горячие клавиши).
- Можно не ограничиваться шорткатами 0-9, а использовать буквенные клавиши и символы. См. примеры в тексте скрипта. Таким образом, групп ссылок (подменю) может быть более 10. Можно даже сделать так, что на цифрах будут стандартные ссылки на папки, а на буквах - через меню, и т.п.
- Так как это пользовательское меню, могут применятся все доступные средства для его редактрования. Подменю можно переименовывать, сортировать, заранее создавать с нужными именами и ссылками, удалять ссылки и подменю. Можно вообще пихать в меню всё что угодно, следует только помнить, что прилагаемые макросы открывают подменю по горячим клавишам.
- Вместо отдельного файла, можно использовать основное пользоваетльское меню ФАРа (выбирается в настройках).
- После перехода по ссылке происходит позиционирование на файл, который был текущим на момент создания ссылки.
- Можно создать одну ссылку сразу на обе панели.

Версия 2 работает с сетевыми папками, плагинами ftp, netbox, arclite, multiarc и observer. Почему-то не работает с torrentview и torrentinfo. С остальными плагинами не проверялась.
К сожалению, используемая функция panel.SetPanelDirectory не даёт полного контроля над сменой директории панели. Поэтому:
- Если отсутствует папка назначения, будет выведен диалог с сообщением об ошибке.
- Если отсутствует архив, arclite выдаст сообщение об ошибке, а если отсутствует ещё и папка, сообщений будет два.
Возможно, будут сообщения и в других каких-либо случаях.


Attachments
FolderShortcutsMenu.2.08.7z
Версия 2.08
(4.47 KiB) Downloaded 82 times

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Folder Shortcuts Menu

Post by Smitis » Thu 11 Apr, 2013 20:22

Версия 1.01. Небольшие доработки.
Изменения:
- Изменилась структура меню. Теперь в корне пользовательского меню подменю Shortcuts. Это сделано для того, чтобы в заголовке меню высвечивалось название подменю, а не непонятное "Local Menu".
- Меню может быть не в отдельном файле, а в основном пользовательском меню.
- Добавилась возможность делать ссылки на плагины. Не знаю, насколько хорошо получилось. Для архивнх плагинов сначала делается переход в папку с архивом, затем вход в архив, затем переход по архиву.
Разум когда-нибудь победит.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Folder Shortcuts Menu

Post by Smitis » Thu 18 Apr, 2013 12:11

Добавил версию 2, использующую дял перехода по ссылкам глобальную функцию. Версию 1 оставил.
К сожалению, в версии 2 используемый метод через panel.SetPanelDirectory не работает с плагинами multiarc, torrentinfo и torrentview.
Разум когда-нибудь победит.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Folder Shortcuts Menu

Post by John Doe » Thu 18 Apr, 2013 12:25

Code: Select all

_G.FSM = {}
_G.FSM.setdir = function(dir,current)
А зачем вам тут ещё и глобальная таблица?
Задел на будущее?

Если дело в этом, то я бы сделал иначе:

Code: Select all

if not Smitis then Smitis = {} end
Smitis.FSMsetdir = и т.д.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Folder Shortcuts Menu

Post by Smitis » Thu 18 Apr, 2013 12:31

Глобальная таблица на всякий случай.
Вообще, лучше было бы что-то вроде users.Smitis.FSMsetdir или scripts.Smitis.FSMsetdir, т.е. одна общая глобальная таблица, куда договориться помещать глобальные данные. Минимум засорения.
Разум когда-нибудь победит.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Folder Shortcuts Menu

Post by John Doe » Thu 18 Apr, 2013 12:37

Таблица первого уровня не может быть простым словом типа users или scripts, чтобы исключить коллизии.
Глобальная таблица под каждый макрос тоже не годится, заведите себе хотя бы одну (а внутри неё уж как вам захочется).
Договариваться всем вместе об общей таблице считаю НЕ НАДО. Т.к. это вообще не приветствуется, и тем более зоопарк нам не нужен.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Folder Shortcuts Menu

Post by Smitis » Thu 18 Apr, 2013 12:52

Ладно, сделал таблицу Smitis и функцию Smitis.FSM
А зоопарк был бы о одной таблице и никому особенно не мешал бы.

П.С.
Бывали подобные преценденты, например разделы Software в реестре.
Разум когда-нибудь победит.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Folder Shortcuts Menu

Post by John Doe » Thu 18 Apr, 2013 12:55

Проблема в другом.
Само наличие подобной договорённости автоматически поощряет плохую практику программирования на Lua

Сравнение с реестром некорректно.
У нас для подобных целей msave/mload - пользуйтесь на здоровье.

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: Folder Shortcuts Menu

Post by Shmuel » Thu 18 Apr, 2013 12:56

John Doe wrote:

Code: Select all

if not Smitis then Smitis = {} end
Можно короче:

Code: Select all

Smitis = Smitis or {}

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Folder Shortcuts Menu

Post by John Doe » Thu 18 Apr, 2013 12:58

100%
Точнее _G.Smitis = Smitis or {}

А вот так нельзя точно: _G.Smitis = {}
Сами подумайте: что произойдёт если эта конструкция появится в 2х разных скриптах.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Folder Shortcuts Menu

Post by Smitis » Thu 18 Apr, 2013 13:01

Согласен
Разум когда-нибудь победит.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Folder Shortcuts Menu

Post by John Doe » Thu 18 Apr, 2013 15:12

Smitis wrote: Отличия версии 1 от версии 2:
- В версии 1 ссылки делаются командами cd и lm:post прямо в меню. Содержимое коммандной строки может потеряться. Не делаются проверки. В общем, упрощённая версия.
- В версии 2 для перехода по ссылкам создаётся и используется глобальная функция, вызываемая из пользовательского меню.
Не понял почему не делать ссылки прямо в меню?
Где потеряется содержимое командной строки?
О каких проверках речь?

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Folder Shortcuts Menu

Post by John Doe » Thu 18 Apr, 2013 15:22

Сама функция тоже довольно простая, и оперирует только своими параметрами (т.е. среда ей не важна).
Значит её можно поместить в lm:post целиком.
Или загрузить из базы (mload).

Это к тому, что помимо использования глобальной среды всегда есть другие варианты.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Folder Shortcuts Menu

Post by Smitis » Thu 18 Apr, 2013 17:29

John Doe wrote:Не понял почему не делать ссылки прямо в меню?
В смысле?

В принципе, "ссылки" на папки хорошо получаются командой cd, правда без перехода к файлу (который был текущим при создании ссылки).
С плагинами сложнее.
Сама функция тоже довольно простая, и оперирует только своими параметрами (т.е. среда ей не важна).
Есть такая идея. Но внешнюю функцию можно модифицировать (улучшить). Тогда как уже созданные ссылки останутся неизменными. В настоящий момент, не всё гладко работает (не со всеми архивными плагинами).
О каких проверках речь?
Например, существует ли ещё папка.
Где потеряется содержимое командной строки?
Это уже несколько устарело. Уберу.
Разум когда-нибудь победит.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

Re: Folder Shortcuts Menu

Post by John Doe » Thu 18 Apr, 2013 17:46

"В смысле" ссылки могут хорошо получаться командой lm:post и не используя глобальный функций (это вы вероятно и без меня знаете)

P.S.
Кстати для перехода к файлу можно использовать команду goto:

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

Re: Folder Shortcuts Menu

Post by Smitis » Thu 18 Apr, 2013 17:56

Забыл про goto. Но это не важно.
"В смысле" ссылки могут хорошо получаться командой lm:post и не используя глобальный функций
Если окажется, что функция работает как надо, никаких изменений уже не надо вносить, то тогда да. Первоначально так и было. Просто, я сам уже её использую вместо встроеных ссылок на папки, смотрю что и как получается.
Разум когда-нибудь победит.

Post Reply

Return to “Полезные макросы и скрипты”

Who is online

Users browsing this forum: No registered users and 2 guests