Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[AutoIt] TabsList: открытие, сохранение, просмотр tab-файлов
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Thu Jun 23, 2016 18:52    Post subject: [AutoIt] TabsList: открытие, сохранение, просмотр tab-файлов Reply with quote

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
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Thu Jun 23, 2016 21:18    Post subject: Reply with quote

Quote:
Shift+Spase
Орфографическая ошибка в описании, должно быть
Quote:
Shift+Space

_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Thu Jun 23, 2016 22:26    Post subject: Reply with quote

Вахмурка
Спасибо, исправил Smile Странная ошибка - не улавливаю, откуда вылезла Smile
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Thu Jun 30, 2016 02:49    Post subject: Reply with quote

Обновил: теперь проблем с юникодом вроде нигде не должно быть.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Fri Jul 29, 2016 02:35    Post subject: Reply with quote

Обновил: некоторые уточнения чтения файла конфигурации в случае использования AlternateUserIni и RedirectSection.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Fri Jul 29, 2016 12:51    Post subject: Reply with quote

Skif_off
Надо обязательно делать нормальное сохранение опций в INI-файл, одноразовые опции неудобны. Кроме того, на первой странице. ИМХО, должны быть три радиокнопки с нынешними опциями, а четвёртой опцией — чекбокс для управления закрытием основного окна TabList после загрузки вкладок. (Если я, допустим, ошибся и выполнил не то действие или получил при правильном действии обратную привязку вкладок к панелям, открывать для повторения всё это заново не особо приятно.)
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Fri Jul 29, 2016 17:27    Post subject: Reply with quote

Avada
Конфиг временно откладывал, т.к. скрипт сильно менялся и вопрос с правами на запись рядом открыт. Набросок в итоге был: если %COMMANDER_INI% внутри %COMMANDER_PATH% - хранить ini-файл рядом со скриптом, иначе - рядом с %COMMANDER_INI%. Так ведь нормально? --append, наверное, придётся выпилить.
Avada wrote:
Если я, допустим, ошибся и выполнил не то действие или получил при правильном действии обратную привязку вкладок к панелям, открывать для повторения всё это заново не особо приятно.

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

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



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sat Aug 06, 2016 04:41    Post subject: Reply with quote

Обновил:
- добавлен файл конфигурации (TabsList.ini);
- правки для поддержки длинных (>MAX_PATH) путей. (Примечание: длинные пути будут корректно проверены/изменены/открыты, но могут отображаться в списке не целиком.);
- поправлена обработка горячих клавиш;
- параметр --append удалён;
- вместо встроенного InputBox AutoIt рисуется своё окно (убрано ограничение длины (254 символа) возвращаемой строки, функционал аналогичен, размер ограничен шириной экрана);
- при редактировании пути добавляется кнопка "Вставить путь...", с возможностью выбрать каталог вручную;
- в меню ПКМ добавлены два пункта для открытия tab-файла: замена и добавление вкладок;
- в меню ПКМ добавлены клавиатурные сочетания;
- некоторые внутренние изменения/исправления.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Sat Aug 06, 2016 10:08    Post subject: Reply with quote

Skif_off
В целом изменения пошли на пользу. Но и замечания имеются.
Не нравится мне название опции "Добавить несколько". Почему бы не сделать "Заменить текущие вкладки" и "Добавить вкладки к текущим"? И лучше не "посмотреть tab-файл", а "Просмотреть TAB-файл". (На варианте "TAB-файл" не настаиваю, но он де-факто принят в русификации.)
Теперь окно просмотра. Лучше не Shift+Space, а Shift+Пробел. Не "Сохранить пути FS-плагинов", а "сохранять" (это не разовое действие, а долговременная установка). И пояснение этой опции (для чего она) очень бы не повредило.
А вот на кнопке выше — там "сохранить". Но надпись на этой кнопке насчёт нового имени меня, например, ввела в полное заблуждение — я полагал, что сейчас мне дадут выбрать это имя самому для того, чтобы сохранить копию имеющегося TAB-файла. Вместо этого сначала ничего не происходит (а почему так долго, кстати?), а по прошествии изрядного времени получаем пустой новый файл с допиской "_clean" в имени. При этом окно просмотра закрывается, невзирая ни на какие опции, с возвратом в главное окно. Это зачем? Исходный файл цел, с ним можно продолжать работать, это же не удаление.
Ладно. Что я дальше в рамках TabList могу сделать с пустым файлом? Ничего не могу. То есть это заготовка для продолжения работы другими инструментами (контекстное меню вкладки или появившаяся в TC 9 команда savetabs с кучей вариантов вызова.) Хорошо, допустим. Но какой смысл вообще был наследовать имя, если новый файл всё равно пустой? Как мне надо будет потом, так и обзову. Тогда уж просто clean.tab логичнее, нет?
И что означает подсказка у этой кнопки "С только существующими путями"? Если "только с существующими", то всё равно пояснение непонятное. Имеется в виду сохранение только в папку с исходным файлом или что-то другое?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sat Aug 06, 2016 15:26    Post subject: Reply with quote

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 минут:

Так, нашёл ошибку, глупая совсем - не дожал клавишу, похоже.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Sat Aug 06, 2016 16:31    Post subject: Reply with quote

Skif_off
Что касается пути FS-плагинов, то замена FS-плагинов на плагины файловой системы понятности не прибавляет и не убавляет. Как выглядят эти пути, я знаю. Вопрос был про другое — зачем вообще нужна эта опция и в чём разница поведения при разных её состояниях?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sat Aug 06, 2016 18:05    Post subject: Reply with quote

Avada
Суть работы фичи: читается tab-файл и последовательно проверяется существование каждого пути, если не существует (папка была удалена/перемещена/переименована), то скрипт удалит его, в итоге в tab-файле останутся только те каталоги, которые в данный момент существуют/доступны. Но в tab-файл могут попасть, например, пути типа "\\\VirtualPanel\Profile\" и проверить, что такой путь реально существует и ТС его откроет, нельзя (точнее - нельзя быстро), а раз его в файловой системе не существует, то такой путь должен быть удалён: если галочку поставить, то скрипт будет игнорировать подобные пути и они останутся в tab-файле.


Last edited by Skif_off on Sun Aug 07, 2016 00:28; edited 1 time in total
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Sat Aug 06, 2016 23:23    Post subject: Reply with quote

Skif_off
Про плагины понял (но тогда логичнее вместо "Сохранять пути..." — "Не удалять пути..."). Не понял про "суть работы фичи". При каких условиях эта фича (удаление несуществующих путей) срабатывает? Где опция, которая её запускает? Кнопка "Удалить" — это удаление самого TAB-файла, а больше я там ничего подходящего не вижу.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sun Aug 07, 2016 00:40    Post subject: Reply with quote

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-файла, в некоторых условиях, копаю.

Добавлено спустя ещё сколько-то минут:
Стыдоба-а-а, переделывал функцию, при одном условии потерял счётчик и получил зацикливание... Файлы обновил.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1232

Post (Separately) Posted: Sun Aug 07, 2016 18:14    Post subject: Reply with quote

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

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

Добавлено спустя сколько-то минут:
P.P.S. Критика локализации приветствуется, если совсем мрак - лучше в ЛС.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group