Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Своё меню: хитрости извне

© Copyright
Эта статья защищена авторским правом, и на её правку наложены ограничения.

Уже давно появилась цель получить более гибкий подход к управлению окном ТС. Основной задачей была возможность увеличивать рабочую область за счёт скрытия строки заголовка, не лишаясь при этом функционала управления окном с возможностью его расширения путём приумножения кнопочного ряда.

И вот однажды в свет вышла весьма продуктивная утилита под названием TCFS2, явившаяся качественной заменой уже рассматриваемого для этой цели аналога TCFS. Благодаря моим идейным соображениям по развитию её функционала автор сумел воплотить в жизнь ряд моментов, которые смогли частично способствовать реализации вышестоящей задачи.

Преимущества TCFS2

Здесь хотелось бы обратить ваше внимание на существенные отличия выбранной утилиты от предшественника:

  • малый размер дистрибутива;
  • отсутствие ложных срабатываний;
  • отсутствие необходимости в привязке глобальных горячих клавиш;
  • отсутствие графического настройщика;
  • возможность выполнения нескольких команд при запуске;
  • для более гибкого использования требует вдумчивого изучения синтаксиса файла конфигурации.

Примечание: об остальных отличиях можно узнать из отдельной статьи по утилите.

Настройка кодировки

Необходимым аспектом для последующей модификации меню TC является предварительная системная настройка, необходимая для отображения в нём юникодных шрифтовых символов.
Наиболее предпочтительными шрифтами, некогда вошедшими в основной дистрибутив Windows XP/Vista/7, для наших нужд оказались Arial Unicode и Lucida Sans Unicode, поскольку помимо графем из основного набора кодовых страниц включают в себя значительное разнообразие символов из ряда нестандартных, которые вполне могут сменять кнопочные иконки, внешне идентифицирующие выполняемые из ТС команды.

Цвет и внешний вид окна.jpg
1. Перво-наперво нам потребуется зайти в системные настройки и указать любой из двух шрифтов. В Windows XP вызываем диалог "Свойства: экран" на вкладке Оформление по кнопке или из комстроки,
	rundll32.exe shell32.dll Control_RunDLL desk.cpl,,2
жмём кнопку "Дополнительно", вызывая диалог "Дополнительное оформление".
В Windows Vista/7 аналогичный диалог с названием "Цвет и внешний вид окна" вызывается так:
	rundll32.exe shell32.dll Control_RunDLL desk.cpl,desc,

Из первого списка выбираем последний элемент Строка меню, из второго - шрифт, например, Lucida Sans Unicode. Устанавливаем размеры, например, 17 и 8 соответственно. Жмём [ОК].

Сохранить как из AkelPad mnu.jpg
2. Далее необходимо перевести языковые файлы ТС в нужную кодировку.

Для этого откроем файл "%COMMANDER_PATH%\Language\Wcmd_rus.lng" в редакторе с возможностью сохранять файлы в юникод-кодировке без ВОМ.
Посмотрим на примере AkelPad-а. В самом начале файла следующей за строкой Russian (Русский) впишем строку codepage=65001 для системной идентификации кодовой страницы UTF-8, жмём Ctrl+Shift+S(Сохранить как...), в диалоге в списке Кодировка: выбираем 65001 UTF-8, убираем галочку с ВОМ, сохраняем файл в папке Language. Без редактирования открываем из папки Language и сохраняем аналогичным образом файл wcmd_rus.mnu.
Файл wmcd_rus.inc сохраним в UTF-8, но с ВОМ (для правильного отображения символов в утилизаторе плагина TwinKey на странице Клавиатура).

Кнопки управления

Теперь переходим к созданию кнопок управления окном ТС.

1. Сначала распакуем скачанный архив ТСFS2 в папку внутри ТС, например, ...\Utils\TCFS2\. Откроем файл TCFS2.ini в текстовом редакторе и в любые (желательно рядом с близким по смылу заголовком в комментарии) новые строки секции Items вставляем код:
[Items]
; Вспомогательные команды

const_bb=set_tcini(TCFS2, Buttonheight, tcini(Buttonbar, Buttonheight,#)), test(tcini(TCFS2,Buttonheight,#)<=tcini(Buttonbar,Buttonheight,#)) | tcm(2901) set_tcini(Buttonbar,Buttonheight,tcini(TCFS2, Buttonheight,#)) tcm(2901)

; Установить размер кнопок в панели инструментов относительно ширины окна TC
set_sizebb=msg($0B, 0) tcm(2901) set_tcini(Buttonbar, Buttonheight, wb) set_tcini(Buttonbar, PopupIconSize, wb-5) tcm(2901) msg($0B, 1)

; Центрирование и пропорциональное уменьшение размеров окна и кнопок панели инструментов:
sp=set_style(# & ~$00008000) move(@*7/64, @*7/64, @*25/32, @*25/32) run_item(set_sizebb), style(# & $00008000), sp | set_style(# | $00008000) msg($0B, 0) move(0, 0, @, cyWorkArea-1) run_item(set_sizebb) msg($0B, 1), , sp

; Скрыть заголовок + включить режим "восстановить" + установить максимальный размер:
run=run_item(c0) redraw() show(9) run_item(const_bb) set_style(# ^ $00008000)  move(0, 0, @, cyWorkArea-1) redraw() tcm(2918)

; Свернуть окно TC в строку главного меню (+заголовка, если есть) / Восстановить
sw_menu=set_tcini(TCFS2, WindowHight, hTcWindow) move(, , , #-hTcWindowCli, 1), test(hTcWindowCli>0) | move(, , , tcini(TCFS2, WindowHight, #), 0)

update=redraw() tcm(2918)	; Полная перерисовка и обновление

Также добавляем код в секцию Macros:

[Macros]
wb=(wTcWindow-2*GetSystemMetrics(5)-2*GetSystemMetrics(7)+3)*tcini(TCFS2,Buttonheight,#)/(cxScreen-2*GetSystemMetrics(5)-2*GetSystemMetrics(7)+3)
Сохраняем файл.
2. Теперь создадим пользовательские команды. Заходим из главного меню Тотала в Инструменты, выбираем первый пункт Список команд ТС..., в диалоге "Выбор команды" устанавливаем курсор на usercmd.ini, нажимаем кнопку [Новая], пишем название, например, em_MaxRestore, подтверждаем, в диалоге "Изменение пользовательской команды" в поле Команда вставляем "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /u- /ei sp update и там же в поле Подсказка пишем Уменьшить/увеличить окно ТС с учётом центра экрана и размера кнопок, подтверждаем.

По такому же принципу создадим ещё несколько удобных команд:

Название Команда Параметры Подсказка
em_SwitchWindow&MainMenu "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ei sw_menu Переключаться между строкой главного меню и всем окном ТС
em_MoveTCWindow "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ea begin_move Начать передвижение окна TC мышью
em_TCRestart %COMMANDER_PATH%\Utils\TinnyTCRestarter.exe 100 Перезапустить ТС
em_SepMove "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ei sp_move Установить разделитель панелей на вертикальной оси, выбранной кликом ЛКМ
3. Открываем файл wcmd_rus.mnu в AkelPad и в самом конце следом за закрывающим тегом END_POPUP вставляем такие строки:
MENUITEM "↺", em_TCRestart
MENUITEM "║", em_SepMove
MENUITEM "⌆", em_MoveTCWindow
MENUITEM "◚", em_SwitchWindow&MainMenu
MENUITEM "▃", $7D0
MENUITEM "◙", em_MaxRestore
MENUITEM "◘", $5F14

Примечание: для правильного отображения символов в AkelPad в главном меню кликните пункт "Шрифт..." и выберите соответствующий.

Сохраняем файл mnu в том же редакторе, где и в первый раз. Настройки параметров сохранения при этом будут учитываются предыдущие.
Естественно, впоследствии при желании вы можете расширить кнопочный ряд, добавив свои команды. Хочется также отметить, что с появлением возможности внедрять в главное меню спецсимволы вы фактически открываете себе поле для фантазий при выборе ёмких заменителей уже существующих заголовков меню, тем самым увеличивая свободное пространство для появления новых. Для любителей выжимать из меню максимум внутреннего и стороннего функционала описанный способ может стать хорошим решением для экономии экранного пространства и внешне выраженной портативности.

Запуск ТС без строки заголовка окна

Перейдём к окончательной процедуре, а именно - научим ТС запускаться сразу без строки заголовка. Для этого у нас должен быть установлен контентный плагин autorun.wdx (если нет, то установите и настройте согласно описанию в ReadMe, в цветовых схемах передвиньте позицию с плагином на верхнюю строчку). Итак, перейдём в папку установленного плагина, скопируем дочерний плагин TCFS2Tools.dll в подкаталог Plugins, после вернёмся в родительскую папку, откроем autorun.cfg в текстовом редакторе и обязательно пропишем в нём следующие строки (расположение и последовательность выберите по усмотрению):

LoadLibrary Plugins\TCFS2Tools.dll
# Скрытие строки заголовка
ShellExec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" "/d=0 /ei run"

Сохраняем файл стандартным образом, перезапускаем Тотал.

В итоге меню при запуске ТС должно выглядеть так :
ТС без строки заголовка.jpg
Попробуйте теперь поиграться нажатиями новых кнопок. Уверен - вам понравятся эти фичи, и вы быстро к ним привыкнете.
Желаю удачи в освоении!

Смотрите также

Flasher
09.01.2011

Ключевые слова: полный экран, FullScreen, TCFS2, меню, главное меню, скрытие меню, скрытие заголовка, строка заголовка, хитрости