[AutoIt] TabsList: открытие, сохранение, просмотр tab-файлов
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: [AutoIt] TabsList: открытие, сохранение, просмотр tab-файлов Author: Skif_off PostPosted: Thu Jun 23, 2016 18:52
    —
TabsList (0.1.5.2, 2017.04.22)
Ссылка (самодостаточный скрипт, две скомпилированные версии (с UPX/без UPX), описание), скрин

Скрипт для показа списка TAB-файлов в указанном каталоге (поиск TAB-файлов в подкаталогах не поддерживается!) и загрузки с заменой открытых вкладок (команды opentabs*) или с добавлением к уже открытым (команды appendtabs*). В ТС 9 появилась возможность сохранять вкладки без диалога сохранения (команды savetabs*), добавлены все варианты.
 Возможности:

Юникод используется везде, где только можно, но открыть вкладки, если полное имя TAB-файла содержит символы вне текущей неюникодной локали, можно только с ТС 8.52 и выше.

 В usercmd.ini необходимо добавить пользовательские команды:

Проверка их наличия происходит при запуске скрипта, при отсутствии будет предложено добавить (после добавления будет предложен автоматический перезапуск ТС). Удаление и добавление em_TabsList_* возможно и параметрами запуска, соответственно --add-em-commands и --del-em-commands.
При запуске скрипт ищет файл usercmd.ini рядом с wincmd.ini (используется %COMMANDER_INI%), если не найден, то просит пользователя указать файл или указать каталог, где создать usercmd.ini (в диалогах будет предложен каталог с wincmd.ini).

При запуске без параметров скрипт проверяет в wincmd.ini (%COMMANDER_INI%) значение параметра TabDir в секции Configuration, если параметр не используется или каталог не существует, то предлагает указать каталог с TAB-файлами вручную. RedirectSection и AlternateUserIni поддерживаются.

В главном окне добавлена подсказка активной панели ТС (проверяется при запуске скрипта). По умолчанию на ТС версии 9 и выше включена проверка и в фоне, но на версиях младше 9 фоновая проверка включается дополнительно, т.к. необходимо использовать TCFS2Tools (модуль должен быть установлен в ТС).

Файл конфигурации (TabsList.ini) создаётся автоматически только после того, как будет найдено родительское окно ТС, расположение:
- если скрипт и %COMMANDER_INI% внутри %COMMANDER_PATH% (обычно портативная установка), то будет использоваться ini-файл рядом со скриптом;
- если скрипт внутри %COMMANDER_PATH%, а %COMMANDER_INI% - нет, то будет использоваться ini-файл рядом с %COMMANDER_INI%;
- иначе - ini-файл рядом со скриптом.

Примечание. В случае сохранения TAB-файла с новым именем только с существующими каталогами (из окна просмотра содержимого TAB-файла) при проверке существования каталога переменные окружения разворачиваются только если первым символом строки идёт символ процента "%". Это сделано для скорости, пока не вижу причины пересмотреть такой подход.

Писалось и проверялось в первую очередь под AutoIt 3.3.8.1, с 3.3.12.0 тоже должно работать, но нужно уточнить директивы компиляции.
 Запуск нескомпилированного скрипта:

Подробнее, включая параметры запуска, горячие клавиши, описание файла конфигурации (все опции доступны из окна скрипта), примечания см. в файле TabsList.txt.

P.S. Локализация добавлена в порядке изучения способов, ошибки более чем возможны Smile
Строки $Str1, $Str2 и $Str3 менять аккуратнее! Строка $Str3 используется для поиска заголовков $Str1 и $Str2, чтобы различить поля с путями и заголовки.


Last edited by Skif_off on Sat Apr 22, 2017 16:51; edited 22 times in total

#2:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Thu Jun 23, 2016 21:18
    —
Quote:
Shift+Spase
Орфографическая ошибка в описании, должно быть
Quote:
Shift+Space

#3:  Author: Skif_off PostPosted: Thu Jun 23, 2016 22:26
    —
Вахмурка
Спасибо, исправил Smile Странная ошибка - не улавливаю, откуда вылезла Smile

#4:  Author: Skif_off PostPosted: Thu Jun 30, 2016 02:49
    —
Обновил: теперь проблем с юникодом вроде нигде не должно быть.

#5:  Author: Skif_off PostPosted: Fri Jul 29, 2016 02:35
    —
Обновил: некоторые уточнения чтения файла конфигурации в случае использования AlternateUserIni и RedirectSection.

#6:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Jul 29, 2016 12:51
    —
Skif_off
Надо обязательно делать нормальное сохранение опций в INI-файл, одноразовые опции неудобны. Кроме того, на первой странице. ИМХО, должны быть три радиокнопки с нынешними опциями, а четвёртой опцией — чекбокс для управления закрытием основного окна TabList после загрузки вкладок. (Если я, допустим, ошибся и выполнил не то действие или получил при правильном действии обратную привязку вкладок к панелям, открывать для повторения всё это заново не особо приятно.)

#7:  Author: Skif_off PostPosted: Fri Jul 29, 2016 17:27
    —
Avada
Конфиг временно откладывал, т.к. скрипт сильно менялся и вопрос с правами на запись рядом открыт. Набросок в итоге был: если %COMMANDER_INI% внутри %COMMANDER_PATH% - хранить ini-файл рядом со скриптом, иначе - рядом с %COMMANDER_INI%. Так ведь нормально? --append, наверное, придётся выпилить.
Avada wrote:
Если я, допустим, ошибся и выполнил не то действие или получил при правильном действии обратную привязку вкладок к панелям, открывать для повторения всё это заново не особо приятно.

Это да, неудобно, так сделал в силу отсутствия конфига: закрывать вручную после открытия вкладок - лишнее движение Smile

P.S. И, пожалуй, InputBox'ы надо всё-таки делать самому: Ok и Cancel не локализуются, в случае изменения пути между ними большое расстояние и, главное, есть ограничение на длину (254 символа максимум), что для говорившего "MAX_PATH" везде, где это уместно, совсем некрасиво, упустил Sad

#8:  Author: Skif_off PostPosted: Sat Aug 06, 2016 04:41
    —
Обновил:
- добавлен файл конфигурации (TabsList.ini);
- правки для поддержки длинных (>MAX_PATH) путей. (Примечание: длинные пути будут корректно проверены/изменены/открыты, но могут отображаться в списке не целиком.);
- поправлена обработка горячих клавиш;
- параметр --append удалён;
- вместо встроенного InputBox AutoIt рисуется своё окно (убрано ограничение длины (254 символа) возвращаемой строки, функционал аналогичен, размер ограничен шириной экрана);
- при редактировании пути добавляется кнопка "Вставить путь...", с возможностью выбрать каталог вручную;
- в меню ПКМ добавлены два пункта для открытия tab-файла: замена и добавление вкладок;
- в меню ПКМ добавлены клавиатурные сочетания;
- некоторые внутренние изменения/исправления.

#9:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Aug 06, 2016 10:08
    —
Skif_off
В целом изменения пошли на пользу. Но и замечания имеются.
Не нравится мне название опции "Добавить несколько". Почему бы не сделать "Заменить текущие вкладки" и "Добавить вкладки к текущим"? И лучше не "посмотреть tab-файл", а "Просмотреть TAB-файл". (На варианте "TAB-файл" не настаиваю, но он де-факто принят в русификации.)
Теперь окно просмотра. Лучше не Shift+Space, а Shift+Пробел. Не "Сохранить пути FS-плагинов", а "сохранять" (это не разовое действие, а долговременная установка). И пояснение этой опции (для чего она) очень бы не повредило.
А вот на кнопке выше — там "сохранить". Но надпись на этой кнопке насчёт нового имени меня, например, ввела в полное заблуждение — я полагал, что сейчас мне дадут выбрать это имя самому для того, чтобы сохранить копию имеющегося TAB-файла. Вместо этого сначала ничего не происходит (а почему так долго, кстати?), а по прошествии изрядного времени получаем пустой новый файл с допиской "_clean" в имени. При этом окно просмотра закрывается, невзирая ни на какие опции, с возвратом в главное окно. Это зачем? Исходный файл цел, с ним можно продолжать работать, это же не удаление.
Ладно. Что я дальше в рамках TabList могу сделать с пустым файлом? Ничего не могу. То есть это заготовка для продолжения работы другими инструментами (контекстное меню вкладки или появившаяся в TC 9 команда savetabs с кучей вариантов вызова.) Хорошо, допустим. Но какой смысл вообще был наследовать имя, если новый файл всё равно пустой? Как мне надо будет потом, так и обзову. Тогда уж просто clean.tab логичнее, нет?
И что означает подсказка у этой кнопки "С только существующими путями"? Если "только с существующими", то всё равно пояснение непонятное. Имеется в виду сохранение только в папку с исходным файлом или что-то другое?

#10:  Author: Skif_off PostPosted: Sat Aug 06, 2016 15:26
    —
Avada
Поправлю названия. Лучше бы списком Smile Пост раздует...
Avada wrote:
Не "Сохранить пути FS-плагинов", а "сохранять" (это не разовое действие, а долговременная установка).

Исходил из того, что опция для каждого разового действия: с одним нужно, с другим не нужно.
Avada wrote:
я полагал, что сейчас мне дадут выбрать это имя самому

Честно говоря, не помню, почему просто не добавил диалог, дописка "_clean" для того, чтобы в списке файл встал сразу после исходного и было понятно - копия именно этого файла.
Avada wrote:
Это зачем?

Это баг Smile Точно так же, как и время. Если бы время работы было сильно заметно - добавил бы какую-нибудь индикацию или вообще бы убрал проверки существования каталогов.
Хотя вроде не трогал эту часть, буду смотреть.
Avada wrote:
При этом окно просмотра закрывается, невзирая ни на какие опции, с возвратом в главное окно.

Никаких опций и нет, опция закрытия просмотра рядом с кнопкой открытия пути и имеет отношение только к нему. Суть задуманного была в минимизации действий: просмотрел > принял решение > закрыл/удалил/сохранил > следующий. Нет нужды в дополнительном движении: Esc или крестик. Подумаю, наверное, оставлю закрытие только в случае удаления файла.
Avada wrote:
И что означает подсказка у этой кнопки "С только существующими путями"?

Полагал, что не будет вопросов, наверное, не совсем удачно выразился в описании, а подсказка отсылает к нему: скрипт получает список путей из tab-файла и проверяет каждый, существует ли он реально, доступен ли физически. Если недоступен - будет убран.

И не знаю, как объяснить, что такое путь FS-плагинов. Может быть, дать полное название "путь плагинов файловых систем"? Так длинее. Исходил из мысли, что пользователь видел подобное:
Code:
\\\NTFS - streams\C:\
\\\Registry\HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip\
\\\VirtualPanel\Profile\
\\\WebDAV\

и поймёт, о чём речь. Проверить же такой путь - это мрак. Как проверить тот-же FTP?

В самом ТС в подсказке кнопки написано:
Code:
1151="Сеть / FS-плагины"

а путь - он и есть путь.

Добавлено спустя 5 минут:

Так, нашёл ошибку, глупая совсем - не дожал клавишу, похоже.

#11:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Aug 06, 2016 16:31
    —
Skif_off
Что касается пути FS-плагинов, то замена FS-плагинов на плагины файловой системы понятности не прибавляет и не убавляет. Как выглядят эти пути, я знаю. Вопрос был про другое — зачем вообще нужна эта опция и в чём разница поведения при разных её состояниях?

#12:  Author: Skif_off PostPosted: Sat Aug 06, 2016 18:05
    —
Avada
Суть работы фичи: читается tab-файл и последовательно проверяется существование каждого пути, если не существует (папка была удалена/перемещена/переименована), то скрипт удалит его, в итоге в tab-файле останутся только те каталоги, которые в данный момент существуют/доступны. Но в tab-файл могут попасть, например, пути типа "\\\VirtualPanel\Profile\" и проверить, что такой путь реально существует и ТС его откроет, нельзя (точнее - нельзя быстро), а раз его в файловой системе не существует, то такой путь должен быть удалён: если галочку поставить, то скрипт будет игнорировать подобные пути и они останутся в tab-файле.


Last edited by Skif_off on Sun Aug 07, 2016 00:28; edited 1 time in total

#13:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Aug 06, 2016 23:23
    —
Skif_off
Про плагины понял (но тогда логичнее вместо "Сохранять пути..." — "Не удалять пути..."). Не понял про "суть работы фичи". При каких условиях эта фича (удаление несуществующих путей) срабатывает? Где опция, которая её запускает? Кнопка "Удалить" — это удаление самого TAB-файла, а больше я там ничего подходящего не вижу.

#14:  Author: Skif_off PostPosted: Sun Aug 07, 2016 00:40
    —
Avada
"суть работы фичи" - это всё, что происходит после нажатия кнопки "Сохранить с новым именем".
Avada wrote:
но тогда логичнее вместо "Сохранять пути..." — "Не удалять пути..."

Не уверен, т.к. никакого удаления не происходит: нужное вычитывается из просматриваемого файла и записывается в новый.


Обновил:
- добавлена обработка FTP
Code:
10_path=ftp://ftp.adobe.com/pub/adobe/reader/
10_session=ftp://ftp.adobe.com/pub/adobe/reader/
10_options=1|1|0|0|0|0|0

(ftp можно открыть с помощью и ТС, и Проводника.)
- исправлены баги с сохранением tab-файла (см. выше + разворачивались переменные окружения);
- при сохранении tab-файла добавлен запрос имени файла;
- окно просмотра автоматически закрывается только в случае удаления tab-файла;
- изменены названия некоторых опций;
- для русского Shift+Space заменено на Shift+Пробел;
- некоторые внутренние изменения/исправления.

Добавлено спустя сколько-то минут:
Вылезло непонятное зависание при сохранении tab-файла, в некоторых условиях, копаю.

Добавлено спустя ещё сколько-то минут:
Стыдоба-а-а, переделывал функцию, при одном условии потерял счётчик и получил зацикливание... Файлы обновил.

#15:  Author: Skif_off PostPosted: Sun Aug 07, 2016 18:14
    —
Обновил:
- в ini-файл добавлен параметр Lang ("Russian" или "English", при первом запуске на русскоязычной ОС будет автоматически выбрано "Russian");
- поправлены названия опций/Label + "tab-файл" >> "TAB-файл";
- в окне просмотра: подсказка горячих клавиш теперь справа от кнопки (эстетика, чтобы расстояние между Label и кнопкой всегда было одинаковое);
- что-то вроде рефакторинга.

P.S. Снова переделывать скриншот не стал, внешние изменения не сильные.

Добавлено спустя сколько-то минут:
P.P.S. Критика локализации приветствуется, если совсем мрак - лучше в ЛС.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group