Инструменты пользователя

Инструменты сайта


ru:documentation:movebutton_about

О плагине

Плагин ModifyDialogs предназначен для небольших косметических изменений вида диалогов Total Commander.

В первых версиях плагин (под названием MoveButton) работал только с окном копирования/перемещения. В настоящее время можно отслеживать и обрабатывать до 32 диалогов, каждый из которых может содержать до 16 различных классов элементов управления и до 32 элементов управления для каждого класса.

Для диалогов можно производить следующие действия: перемещение и изменение размеров самого диалога, перемещение и изменение размеров элементов управления диалога, центрирование диалогов относительно главного или родительского окна, сохранение и загрузку позиций и размеров окна.

Обратите внимание, что плагин может работать не во всех диалогах (например, не работает в диалоге поиска файлов).

Базовые понятия

Плагин может работать в двух режимах — простом и расширенном. В простом режиме выполняется корректировка только двух диалогов — копирования и перемещения. Для использования простого режима достаточно вызвать одну команду ModifyDialogs, опционально — с параметром.

При работе в расширенном режиме можно задать произвольный диалог из имеющихся в составе Total Commander. Для задания обработки диалога необходимо сначала вызвать команду AddDialog, а затем одну или несколько команд AddControl — для добавления элементов управления. Для добавления следующего диалога нужно вызвать AddDialog с параметрами следующего диалога и добавить для него элементы управления.

Если нужно только производить действия над диалогом (сохранение положения или центрирование), то элементы управления можно не добавлять.

После окончания добавления диалогов нужно вызвать команду ModifyDialogs без параметров.

Поскольку в 32-битной и 64-битной версиях Total Commander используются разные классы элементов управления, для поддержки обеих версий необходимо в конфигурации Autorun сделать два набора и загружать нужный в зависимости от версии программы.

Для определения классов, экземпляров элементов управления и видимого текста для фильтра удобно использовать программу Au3Info из дистрибутива Autoit3. Для просмотра структуры диалога и базовых тестов над его элементами управления можно использовать InqSoft Window Scanner. Разумеется, это только для примера, вы можете использовать свои любимые инструменты.

Некоторые примеры использования плагина в расширенном режиме можно посмотреть на странице примеров.

Фильтрация по условию

Для того, чтобы плагин мог работать с различными диалогами, имеющими один класс, есть возможность добавить дополнительные условия с помощью команды AddCondition. К сожалению, не всегда есть возможность с достоверностью установить различия программно, такие диалоги будут обрабатываться как один и тот же диалог.

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

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

Пример неоднозначности в использовании условий:

# Диалог "Фильтр...": 
AddDialog "TCOMBOINPUT" 
AddCondition /TEXT "" 0 "Total Commander" 

# Диалог создания каталога: 
AddDialog "TCOMBOINPUT" 
AddCondition /EXISTS:0 "TButton" 3

В этом коде второй диалог будет всегда определяться как диалог фильтра, поскольку тоже имеет заголовок «Total Commander». Чтобы исключить неоднозначность, нужно добавить условие существования кнопки в первый диалог либо поменять диалоги местами.

# Диалог "Фильтр...": 
AddDialog "TCOMBOINPUT" 
AddCondition /TEXT "" 0 "Total Commander" 
AddCondition /EXISTS:1 "TButton" 3

# Диалог создания каталога: 
AddDialog "TCOMBOINPUT" 
AddCondition /EXISTS:0 "TButton" 3

Теперь диалог фильтра будет найден только в случае, если в дополнение к заголовку «Total Commander» существует кнопка TButton3. Соответственно, второй диалог будет тоже найден, поскольку в нем кнопка TButton3 не существует. Условие поиска по заголовку в данном случае не играет роли, но может понадобиться в случае добавления третьего диалога с классом TCOMBOINPUT.

# Диалог создания каталога: 
AddDialog "TCOMBOINPUT" 
AddCondition /EXISTS:0 "TButton" 3

# Диалог "Фильтр...": 
AddDialog "TCOMBOINPUT" 
AddCondition /TEXT "" 0 "Total Commander" 

В этом варианте диалог создания каталога будет найден, поскольку в нем не существует кнопка TButton3, а в диалоге фильтра существует.

ru/documentation/movebutton_about.txt · Последнее изменение: 2020/04/24 16:41 — loopback

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki