Эти разделы файла конфигурации Total Commander содержат информацию о текущем состоянии вкладок на левой [lefttabs] и правой [righttabs] панелях. Прежде всего, следует отметить, что выражение "текущее состояние" не совсем верно. Попробуйте в произвольный момент открыть файл wincmd.ini и просмотреть эти разделы - вы убедитесь, что они отражают состояние вкладок не на данный момент, а, скорее всего, на момент начала сеанса работы. Чтобы синхронизировать эти разделы, необходимо выдать команду cm_ConfigSaveSettings. Прежде всего, двигаясь от общего к частному, рассмотрим наиболее распространенный случай, когда открыто множество вкладок. Вот один из примеров раздела [lefttabs], а именно - содержание файла XXcopy.tab, который я в целях наглядности несколько подправил. Здесь и далее рассматривается левая панель, для правой всё аналогично.
[lefttabs] 0_path=c:\utils\XXcopy\ 0_options=1|0|0|0|0|1|0 1_path=c:\user\HTML\Статьи\XXcopy\ 1_caption=Статьи\XXcopy 1_options=1|0|0|0|0|1|0 2_path=c:\Utils\Test\ 2_options=13|0|0|0|0|0|0 3_path=c:\user\Batches\ 3_options=1|0|0|0|0|2|0 4_path=c:\Utils\ 4_options=5|0|0|0|0|0|0 5_path=\\\Registry\HKEY_USERS\ 5_options=1|0|0|0|0|0|0 6_path=:: 6_caption=Desktop 6_options=1|0|0|0|0|0|0 7_path=D:\Documents and Settings\ 7_options=1|0|0|0|0|0|0 8_path=c:\Utils\Test\ 8_options=1|3|1|0|0|0|0 activetab=4 На первый взгляд, все очевидно. Вкладки нумеруются слева направо, первый индекс 0. У каждой вкладки два обязательных ключа: <номер>_path и <номер>_options и один необязательный - <номер>_caption, содержащий заголовок (название) вкладки, присвоенное пользователем. Начнем с ключа <номер>_options. Подробное изучение смысла, который вкладывается в цифры, не проводилось, однако удалось сделать некоторые наблюдения. Первая цифра - вид, используемый для представления файлов. Например, 0 - brief, 1 - full, 4 - show comments и т. д. Номер 13 в ключе 2_options соответствует одному из content-плагинов, идущим в моем списке под №8. Третья цифра с конца показывает, находится ли текущая директория внутри архива, предыдущая - тип архива, и т. д. Для меня при написании скрипта TabTools была наиболее важна предпоследняя цифра, которая может принимать значения 0, 1 или 2, что соответствует состоянию "запертости" вкладки - "unlock", "lock" и "lock, but directory changes allowed" соответственно. Обратим внимание, что кавычки не используются даже в тех строках, что содержат пробелы (например, 7_path=D:\Documents and Settings\). Символ :: означает рабочий стол. Ключ 5_path=\\\Registry\HKEY_USERS\ - FS-плагин TurboRegistry. Казалось бы, все просто. Ключ activetab=4 тоже вроде бы сомнений не вызывает. А вот теперь вопрос на засыпку: какая директория является текущей? Вы думаете, c:\Utils\? А вот и нет! Не существует никакой связи между цифрами 4 в ключах activetab и 4_path. Точнее, отдаленная связь есть - текущая вкладка располагается рядом с c:\Utils\, но в общем случае отображает другой путь и другие опции! Аналогично, пытаясь ответить на вопрос "Сколько вкладок открыто на левой панели?", вы скажете "Девять" и опять ошибетесь - десять. Попутно заметим, что, сохранив текущий набор вкладок в файл, мы получим несколько иную структуру, как раз-таки отвечающую нашим ожиданиям. Во-первых, общее число вкладок будет на единицу (а не на два) больше номера последней. Во-вторых, значение ключа activetab будет указывать именно на текущую вкладку с соответствующим номером. Но нас интересует не файл с содержанием вкладок, а раздел конфигурации. Дело в том, что информация о текущем пути и опциях всегда хранится не в разделах [lefttabs] и [righttabs], а [left] и [right]. Типовое содержание раздела [left]: [left] path=d:\Winnt\ ShowAllDetails=1 show=1 negative Sortorder=1 SpecialView=0 sortorder=3
Тут все еще проще и в пояснениях не нуждается. При этом заголовок панели, если он есть, все равно располагается в разделе [lefttabs], в ключе activecaption, и в этом есть смысл. Теперь рассмотрим некоторые особые, частные случаи. Прежде всего, загляните в свои настройки, раздел "Folder Tabs", флаг "Show tab header also when there is only one tab". Не знаю как вы, а я не вижу в установке этого флага решительно никакого смысла. Впрочем, если этот флаг все-таки стоит, придется рассмотреть один частный случай вместо двух. Итак, предполагая, что флаг сброшен, закроем все вкладки (например, с помощью моего скрипта CloseAllTabs) и вернем панель к первозданному виду, характерному для менее продвинутых файл-менеджеров или для самого ТС версии ниже 6. Сохранив настройки и открыв файл конфигурации, мы увидим, что раздел [lefttabs] отсутствует - ровно до тех пор, пока мы не создадим вкладку - тогда их сразу будет две. Однако в разделе [lefttabs], напомним, будет содержаться информация всего об одной из них - той, которая не является активной. Можно ли добиться, чтобы при единственной вкладке раздел [lefttabs] существовал? Как я узнал при написании скрипта TabTools - можно. В реальной жизни такая ситуация вряд ли встретится, но хорошая программа должна предусматривать все, даже маловероятные, возможности. Создадим две вкладки, одну из них запрем, а вторую закроем. На панели останется одна запертая вкладка. Тогда раздел будет иметь вид:
[lefttabs] activetab=0 activelocked=1 Единственное, что может здесь меняться - значение ключа activelocked: 1 - "lock" или 2 - "lock, but directory changes allowed". Стоит нам отпереть вкладку, она пропадет (если флаг сброшен) или, в противном случае, присвоит ключу activelocked значение 0. Напомню, что из файла конфигурации нельзя установить, какая панель - левая или правая - является активной в данный момент времени. Для этого можно использовать плагин tc. Напоследок приведу информацию для программистов - путь к текущей директории на левой панели можно получить и без чтения раздела [left], а запросив текст дочернего окна №3 класса TMyPanel.