'======================= ОСНОВНЫЕ ВОЗМОЖНОСТИ УТИЛИТЫ ====================================== 1. Создавать меню bar файлов 2. Создавать многопанельное меню, если в файле bar есть команда -2 (переход) 3. Настраивать вид меню, в том числе увеличивать размер значков 4. Создавать и настраивать заголовки для группы пунктов 5. Вызывать любые команды из меню '================================= ПАРАМЕТРЫ =============================================== FILEBAR||#THEME - FILEBAR - обязательный параметр, который идёт всегда первым, где FILEBAR - путь к файлу .bar. Поддерживаются относительные пути, для особых случаев для того чтобы передать путь до Total Commander используется внутренняя переменная %TC%. Если в пути есть пробел - используйте символы ~~ - далее необязательные параметры, которые разделяются || - #THEME - внешний вид меню, где THEME - имя секции в BARMENUIMG.ini, в которой прописываются настройки. Для создания своей темы прописывается имя вашей секции в BARMENUIMG.ini, дублируются необходимые ключи из секции [Default] и вносятся в них значения.
Примерно пол года назад с НА3АРЕТ'ом зашла речь о меню, которое бы разворачивалось в 2 столбика, в котором можно было устанавливать заголовки для груп пунктов, менять размеры значков...
Написав утилиту MENUIMG оказалось, что вызов в нескольких столбцов невозможен (хотя в ряде экспериментов получилось), т.к. вызов более одного контекстного меню - для системы явный глюк.
Нашлось вдохновение ещё раз вникнуть в мир меню и вот родилась утилита BARMENUIMG
Ещё раз хочу сказать спасибо за идею НА3АРЕТ'у, далее опишу ряд параметров и настройках в картинках...
В архиве для примера вложены несколько экспериментальных bar файлов, имена и изображения которых будут использоваться далее...
Для начала покажу разницу между отображением меню стандартным способом в Total Commander и в утилите BARMENUIMG
Так выглядит обычный, напичканный кнопками, bar файл Test.bar
Есть минусы в том, что нельзя при этом ничего поменять, чем как раз-таки можно исправить эту ситуацию в утилите. Вот один из вариантов как может выглядеть это же меню с помощью BARMENUIMG
Чтобы создать заголовок необходимо a) Создать пустую кнопку b) В команде прописать строку mm_Title c) В подсказке прописать НАЗВАНИЕ ЗАГОЛОВКА d) Значок такой кнопке НЕ назначается
Добавлена возможность: - вызывать меню относительно различных координат - вызывать команды по клику по значку - эффект появления меню из прозрачности - настраивать детально отступы/расстояния
Отдельное спасибо НА3АРЕТ'у за тестирование и внесение различных идей.
13.08.2013 [1.1] [±] Исправлено появление полосок в пунктах меню при коротких названиях [±] Исправлено положение координат меню, когда окно заходит за пределы экрана [+] Оптимизирован код, уменьшен размер утилиты [+] Добавлен вызов команд при клике по значку [+] Добавлено изменение размера значка при наведении курсора на пункт или значок [+] Добавлен значок по умолчанию shell32.dll,-110 , если путь к библиотеке/иконке не найден [+] Добавлен эффект появления меню из прозрачности [+] Добавлены в тему ключи SelectNewSizeIcon, SizeBetweenItem, SizeAfterTitle, SizeAfterIcon, SizeBeforeIcon, SizeFromAbove, EffectTransMenu [+] Добавлены параметры "dx:y" "pn:m" "tx:y" "cn:m" "ax:y:controlID" "bn:m:controlID" "rx:y" "kn:m"
Код
"%Z%P%N" - создать меню из файла под курсором (.bar) "%Z%%COMMANDER_PATH%%\webinst.bar" - создать меню из файла webinst.bar "%Z%%COMMANDER_PATH%%\webinst.bar||#UserMenu" - создать меню из файла webinst.bar, цветовая тема UserMenu
"%Z%%COMMANDER_PATH%%\webinst.bar||d0:0" - создать меню из файла webinst.bar в верхнем левом углу экрана "%Z%%COMMANDER_PATH%%\webinst.bar||d100:100" - создать меню из файла webinst.bar в координатах 100px, 100px от левого верхнего угла экрана
"%Z%%COMMANDER_PATH%%\webinst.bar||t0:0" - создать меню ... в верхнем левом углу Total Commander "%Z%%COMMANDER_PATH%%\webinst.bar||t100:100" - создать меню ... в координатах 100px, 100px от левого верхнего угла Total Commander
"%Z%%COMMANDER_PATH%%\webinst.bar||c0:100" - создать меню ... в левом нижнем углу Total Commander "%Z%%COMMANDER_PATH%%\webinst.bar||c100:0" - создать меню ... в правом верхнем углу Total Commander "%Z%%COMMANDER_PATH%%\webinst.bar||c100:100" - создать меню ... в нижнем правом углу Total Commander "%Z%%COMMANDER_PATH%%\webinst.bar||c25:25" - создать меню ... в центре левого угла Total Commander "%Z%%COMMANDER_PATH%%\webinst.bar||c50:50" - создать меню ... в центре Total Commander
"%Z%%COMMANDER_PATH%%\webinst.bar||a0:0:TPathPanel1" - создать Меню ... в верхнем левом углу заголовка левой файловой панели "%Z%%COMMANDER_PATH%%\webinst.bar||a0:0:TPathPanel2" - создать Меню ... в верхнем левом углу заголовка правой файловой панели "%Z%%COMMANDER_PATH%%\webinst.bar||a0:100:TPathPanel1" - создать меню ... на 100px ниже верхнего левого угла заголовка левой файловой панели
"%Z%%COMMANDER_PATH%%\webinst.bar||b50:50:TPathPanel1" - создать меню ... в центре заголовка левой файловой панели "%Z%%COMMANDER_PATH%%\webinst.bar||b0:100:TPathPanel1" - создать меню ... в левом нижнем углу заголовка левой файловой панели "%Z%%COMMANDER_PATH%%\webinst.bar||b100:0:TPathPanel1" - создать меню ... в правом верхнем углу заголовка левой файловой панели "%Z%%COMMANDER_PATH%%\webinst.bar||b100:100:TPathpanel1" - создать меню ... в нижнем правом углу заголовка левой файловой панели
"%Z%%COMMANDER_PATH%%\webinst.bar||r0:100" - создать меню ... от курсора на 100px вниз "%Z%%COMMANDER_PATH%%\webinst.bar||r100:100" - создать меню ... от курсора на 100px вниз и на 100px вправо "%Z%%COMMANDER_PATH%%\webinst.bar||r100:0" - создать меню ... от курсора на 100px вправо
"%Z%%COMMANDER_PATH%%\webinst.bar||r0:-100" - создать меню ... от курсора на 100px вверх "%Z%%COMMANDER_PATH%%\webinst.bar||r-100:-100" - создать меню ... от курсора на 100px вверх и на 100px влево "%Z%%COMMANDER_PATH%%\webinst.bar||r-100:0" - создать меню ... от курсора на 100px вверх
"%Z%%COMMANDER_PATH%%\webinst.bar||k-50:0" - создать меню ... по центру от курсора по Х
"%Z%%COMMANDER_PATH%%\webinst.bar||#UserMenu||k-50:0" - создать меню из файла webinst.bar по центру от курсора по Х, цветовая тема UserMenu
Добавлена возможность: : при удерживании Shift и кликом левой кнопки мыши в буфер обмена копируется код кнопки : при удерживании Ctrl и кликом левой кнопки мыши открывается bar на редактирование заданной кнопки, остальные файлы (mnu, tcm) открываются в редакторе : при нажатии правой кнопкой мыши появляется диалог о программе
08.10.2013 [1.3] [±] Исправлено положение курсора при наведении на пункты [+] Добавлены в тему ключи SizeDelEnd, SizeToTitle [+] Добавлено: при удерживании Shift и кликом левой кнопки мыши в буфер обмена копируется код кнопки [+] Добавлено: при удерживании Ctrl и кликом левой кнопки мыши открывается bar на редактирование заданной кнопки, остальные файлы (mnu, tcm) открываются в редакторе [+] Добавлено: при нажатии правой кнопкой мыши появляется диалог о программе
Отличная утилита! Есть одно пожелание, чтобы при наведение на строку, если текст не поместился полностью ( не очень хочется делать длинными строки), чтобы появлялась подсказка с содержанием всей строки (желательно с возможностью настройки шрифта, про фон и цвет, скромно промолчу).
Andrey_A, утилита отличная, меню очень удобное, единственная проблема, возникает в сборке от Назарет v64, em_CommandBarmeniumG888 - функция не реализована.
office, мне Назарет писал как-то, что у одного из пользователей есть проблемы - я не смог воспроизвести проблему.
Чтобы понять проблему поясню как работает вызов команд: У вас есть кнопка, но чтобы вызвать команду через Total Commander необходимо её создать. Для этого создаётся временная команда в UserCmd.ini с соответствующими параметрами вызова...
Код
[em_CommandBarmeniumG888] cmd= param=
а после исполнения удаляется...
Почему может не срабатывать: 1. Не хватает времени между записью команды в UserCmd.ini и вызовом. Это может происходить из-за медленного компьютера, загрузки процессора... Но можно увеличить это время в BARMENUIMG.ini в ключе
Код
; PauseTcPrm - Пауза между созданием и вызовом пользовательской команды TC PauseTcPrm=100
Поставьте 200,300, ... 800 (это миллисекунды)
2. Возможно UserCmd.ini заблокирован: стоит какой-либо атрибут, мешающий записи или система не даёт
По этому принципу работает несколько и других команд в различных утилитах и все работает... за 3 года 5 раз мне писали о такой ошибке, все решалось увеличением паузы.
Мне не очень нравится, когда кто-то или что-то изменяет настройки моих файлов. Это касается всего, а не только UserCmd.ini ( особенно файлов настроек и ключей реестра). Поэтому, у меня всё, всегда защищенно от записи. Если мне надо, что-то изменить, я открываю этот файл с помощью PSPada, и редактирую. Стараюсь, даже не использовать стандартные настройки через опции, Settings, Preferences и т.д. Мне пришлось, даже из-за этого, отказаться от многих функциональных возможностей TCIMG. Я имею ввиду те функции, которые используют временные команды em_Command...G888. К чему я всё это говорю. Я предлагаю отказаться от любых временных записей. Разработать, например, один файл настроек, который будет отвечать за вызов подобных функций. Типа INC.tci. Или создавать эту временную команду прямо в памяти (Типа временной переменной (Что приведёт к росту производительности.)).
Zmy, тогда никак - вносите предложения автору Total Commander Gislery. Как можно вызвать пользовательскую команду которой не существует?))) ---- А что касается создания команды в памяти поделитесь кодом...
Андрей, вот теперь этот параметр работает, как надо. А насчёт временных, так, например, вызов некоторых тоталовских команд с параметрами. Тот же loadsearch. Если, у usercmd.ini, стоит атрибут Только для чтения, то он выдаст окошко em_CommandTCIMG888.
При перетаскивании папки из Total Commander на панель, значок не отображается
[helpquote] 28.04.2015 [1.6] [±] Исправлена установка значка кнопкам [+] Добавлено: - если путь к библиотеке значков не найден, то устанавливается значок "стоп" shell32.dll,109 - если произошла ошибка при установке или таого значка не найдено, то устанавливается значок "предкпреждения" shell32.dll,77 [/helpquote]