'======================= ОСНОВНЫЕ ВОЗМОЖНОСТИ УТИЛИТЫ ====================================== 1. Создание контекстных и выпадающих меню из bar, mnu, tcm файлов 2. Настройка вида меню 3. Настройка тем меню 4. Вызов любых команд из меню 5. Использование своего синтаксиса меню 6. При удерживании Shift и кликом левой кнопки мыши в буфер обмена копируется код кнопки для вставки на панель инструментов Total Commander 7. При удерживании Ctrl и кликом левой кнопки мыши открывается bar на редактирование заданной кнопки, остальные файлы (mnu, tcm) открываются в редакторе 8. Использование локальных шрифтов 9. Включение/Выключение прозрачности меню при нажатии правой кнопки мыши 10. Диалог смены темы для нескольких меню '================================= ПАРАМЕТРЫ =============================================== FILEBAR/MNU||#THEME||$TITLE - FILEBAR/MNU - обязательный параметр, который идёт всегда первым, где FILEBAR/MNU - путь к файлу .bar или .mnu - далее необязательные параметры, которые разделяются || - #THEME - внешний вид меню, где THEME - имя секции в MENUIMG.ini, в которой прописываются настройки в ключах BkColor - фон меню, IconBkColor - 1-й фон области значков, IconBkGrdColor - 2-й фон области значков, SelectBkColor - фон пункта при наведении курсора, SelectRectColor - обводка вокруг фона пункта при наведении курсора, TextColor - цвет текста меню, SelectTextColor - изменение цвета текста при наведении курсора - $TITLE - название меню, где TITLE - название отображаемое в самом вверху
GGG8, то есть М - пункт меню S - разделитель P - подменю E - конец подменю
Синтаксис команды в таком случае M=Name¦PAth¦Param¦Icon Где - Path - Путь к программе или встроенный парамерт Total Commander Param - Параметры запуска программы Icon - Номер иконки в библиотеке wcmicons.dll или любой другой библиотеке или просто иконка ( должна быть тогда добавлена соответствующая функция) Name - имя команды, отображаемое в меню
LonerD, желание усложнять, по вашему выражению, оттуда - не хочется сваливать все команды в один ini файл, а есть использовать разные bar< то в них нет работы с подменю. Если бы не было дальнейших задумок на этот счет, я бы не писал об этом
[plus]Ладно, все разжевано, остальное уже будет просто попыткой набить себе сообщения.. Хватит.[/plus]
Сообщение отредактировал asmadeus - Четверг, 14.03.2013, 03:45
Если это не структура, тогда я не пойму, что надо.
Вот теперь структура... и если ты не против я суммирую информацию с GGG8, то могу уже можно думать именно над этим вариантом (любые другие тоже будут рассмотрены, как только будет понятен смысл и синтаксис)
Вот примерное видение.
Код
[MENU_SISTEM] I=%COMMANDER_PATH%\Wcmicons.dll С=%COMMANDER_PATH%\UserCmd.ini¦@Name¦@LANGTC N=Название меню M=Родной компьютер Win+ E¦::{20D04FE0-3AEA-1069-A2D8-08002B30309D}¦¦¦298¦ S M=Диспетчер Задач Ctrl+Shift+Esc¦%WINDIR%\System32\taskmgr.exe¦¦¦299¦ M=Панель Управления Alt+T¦%WINDIR%\System32\control.exe¦¦¦300¦ S M=Открыть файл под курсором в NotePad¦notepad.exe¦%P%N¦¦551¦ P=Управление питанием компьютера M=Погасить монитор¦%COMMANDER_PATH%\Utilities\Systems\PowerOff\PowerOff.exe¦monitor_off¦¦2012 M=Выключение Ctrl+Shift+Alt+Del¦shutdown¦-s -t 0¦¦30¦ E G=Открыть с приоритетом M=Запуск с приоритетом Low¦em_start_prioritylow¦¦¦125¦ M=Запуск с приорит. BelowNormal¦em_start_prioritybelownormal¦¦%COMMANDER_PATH%\My.dll¦1225¦ G=Серое название M=Запуск с приоритетом Normal¦em_start_prioritynormal¦¦¦125¦1 S M=Запуск с приорит. AboveNormal¦em_start_priorityabovenormal¦¦¦¦
[MENU_SISTEM] - название секции меню, это действительно удобно, т.к. в одном файле могут быть десятки меню, со своими настройками: [MENU_1] , [MENU_2]
I - библиотека по умолчанию, используемая в этом меню (можно будет не указывать, тогда прописывать свои путь к библиотекам или иконкам) C - указывается пути файлов, если используются пользовательские команды em_, в которых они прописываются. @Name - текущий файл меню, @LANGTC- ищется имя языкового файла с командами (Wcmd_Rus.ini) N - Название меню (можно будет не указывать) P - Начало подменю Е - Конец подменю M - Пукт меню S - Разделитель G - "Серое" название в середине меню
Синтаксис пунктов меню 1. Название 2. Команда (могут использоваться em_, cm_ команды) 3. Параметр 4. Путь к библиотеки/значку (по умолчанию берётся из ключа I=...) 5. Номер значка 6. Запуск программы 0 (или пустой) - обычный режим; 1 - скрытый Разделитель команд ¦ если какой-то пункт не используется, то он "пустой", но все 5 разделителей должны быть обязательны.
Возможны изменения и добавления... не обещаю сразу это сделать - в планах стоят другие цели, но как только, так сразу
Всем спасибо за интерес и участию в процессе!
Можно и так
Код
[MENU_SISTEM] ICON=%COMMANDER_PATH%\Wcmicons.dll СOMMAND=%COMMANDER_PATH%\UserCmd.ini¦@Name¦@LANGTC NAMETITLE=Название меню MENUITEM=Родной компьютер Win+ E¦::{20D04FE0-3AEA-1069-A2D8-08002B30309D}¦¦¦298¦ SEPARATOR MENUITEM=Диспетчер Задач Ctrl+Shift+Esc¦%WINDIR%\System32\taskmgr.exe¦¦¦299¦ MENUITEM=Панель Управления Alt+T¦%WINDIR%\System32\control.exe¦¦¦300¦ SEPARATOR MENUITEM=Открыть файл под курсором в NotePad¦notepad.exe¦%P%N¦¦551¦ POPUP=Управление питанием компьютера MENUITEM=Погасить монитор¦%COMMANDER_PATH%\Utilities\Systems\PowerOff\PowerOff.exe¦monitor_off¦¦2012 MENUITEM=Выключение Ctrl+Shift+Alt+Del¦shutdown¦-s -t 0¦¦30¦ END_POPUP GREY=Открыть с приоритетом MENUITEM=Запуск с приоритетом Low¦em_start_prioritylow¦¦¦125¦ MENUITEM=Запуск с приорит. BelowNormal¦em_start_prioritybelownormal¦¦%COMMANDER_PATH%\My.dll¦1225¦ MENUITEM=Запуск с приоритетом Normal¦em_start_prioritynormal¦¦¦125¦1 SEPARATOR MENUITEM=Запуск с приорит. AboveNormal¦em_start_priorityabovenormal¦¦¦¦
а можно и так и так
[plus]а на счёт нового синтаксиса - в том же тотале есть места, которые давно мне известны, но..
так что никто не боится нового синтаксиса, тем более он не ради прихоти, а ведёт на другой уровень). Большинству этого не надо, а мы на него не равняемся, ибо то, что сегодня непонятно, после завтра становится общепринятым) [/plus]
Чем же ваше предложение отличается от того, что уже есть в утилите?
Возможностью указывать любой файл или файлы с em-командами.
Цитата
Зачем же вставлять [команды ниже меню], когда то же самое есть UserCmd.ini
Мне - незачем совершенно. Это не я предложил комбинировать в одном файле меню и команды. Но раз поступило таковое пожелание от asmadeus - я сформулировал концепцию в более простом и наглядном представлении - не в одну строчку, а по-тоталовски разложить всё по полочкам.
Цитата
Ведь одной и той же em_ командой я пользуюсь не только в этом меню, но и на панелях...
Чем и где пользуетесь лично и конкретно вы - это уже лично и исключительно ваше право и желание. Утилита делается для широкого круга пользователей. И гибкость в работе вкупе с юзабельными настройками - залог успешного развития программы (скрипта). И вполне актуален момент подгрузки нужных команд только в конкретном меню. Логично для оптимизации файла с em-командами и оптимизации работы самого Тотала вынести часть специфических команд в отдельный файл. Тем самым уменьшится основной ini-файл с командами, а специфические команды можно будет вызывать только посредством MENUIMG.
Цитата
Зачем же дублировать и там и там?
Незачем. Никто кроме вас про дублирование и не упоминал.
Цитата
И откуда берутся значки в вашем варианте?
В каком из моих вариантов? Если в том конкретном фрагменте, код которого я привёл, - значков нет, так как это лишь демонстрационный пример. Для добавления их можно использовать упомянутую мною стандартную функцию Тотала, а именно ключ buttonXX в секциях пользовательских команд. Если в моём варианте "ещё лучше (наверное, оптимальный вариант) - как в Акелпаде." - то соответственно иконки добавляются как в меню Акелпада (это немного напоминает ваш вариант, только без кучи вертикальных разделителей). DreamLair.net
Сообщение отредактировал LonerD - Четверг, 14.03.2013, 18:38
я сформулировал концепцию в более простом и наглядном представлении
Вы сформулировали то, что уже есть в утилите... осталось добавить ключ, где можно прописывать пути к файлам с командами.
Цитата (LonerD)
Тем самым уменьшится основной ini-файл с командами
Для функций работы с INI файлами неважен размер файла, на время считывания ключа не влияет объём файла, так что выносить это двойная работа, ну раз так лично хочется...
Цитата (LonerD)
ещё лучше (наверное, оптимальный вариант) - как в Акелпаде.
Чем он лучше. Известны проблемы с параметрами в AkelPad, а именно с кавычками, пробелами,..., так зачем же переносить проблемы, от которых хочется избавится.
Andrey_A, что суммируешь мои наработки с другими, я не против. Только одно я по моему забыл упомянуть - нужно не ручное редактирование файла меню ( ручное на крайний случай), а так - взял код кнопки с сайта, нажал добавить - и тебе все само раскидалось по команде нового синтаксиса
Ок, наймём кого-нибудь для раскидки кнопок))) Шутка, а если серьёзно не думал, что утилита подымет волну, ведь делал для себя и для сборки... постепенно всё реализую и главное чёткая постановки задачи... 20-30 строк и любая идея внесена... Конвертация прямая и обратная записана. Спасибо.
Цитата (ХарВик)
Предлагаю сделать подгрузку в под меню целыми bar'ами
ХарВик, С днём рождения, спасибо за очень хорошее предложение, я знаю, что ты что-то подобное озвучивал ещё год назад, вот и пришло время его реализовать...
Конечно тестирование ещё покажет свои нюансы, но выявилось ещё в утилите TCIMG (а здесь подтвердилось), что Идентификатор элемента управления TMyListBox1,2... выдаёт различные результаты - оказалось он "бегает" в разных ситуациях - легко можно это увидеть, открыв несколько FTP и появляется TMyListBox3,4..., поэтому
Цитата (LonerD)
TMyListBox1 absolute (0;0) (0;0) - верхний левый угол меню помещается в верхний левый угол правой файловой панели Тотала.
использовать его нестабильно, лучше брать для вызова меню другие элементы
"%Z%P%N||#OLSilver||$Супер~~меню" - Создать контекстное меню из файла (bar,mnu) под курсором. (цветовая тема OLSilver, заголовок "Супер~~меню")
"%Z%%COMMANDER_PATH%%\BAR\Buffer.bar" - Созать контекстное меню из файла Buffer.bar. (цветовая тема по умолчанию, без заголовка)
"%Z%P%N||#OLSilver||$Меню||d0:0" - Создать меню ... в верхнем левом углу экрана "%Z%P%N||#OLSilver||$Меню||d100:100" - Создать меню ... в координатах 100px, 100px от левого верхнего угла экрана
"%Z%P%N||#OLSilver||$Меню||p0:100" - Создать меню ... в левом нижнем углу экрана "%Z%P%N||#OLSilver||$Меню||p100:0" - Создать меню ... в правом верхнем углу экрана "%Z%P%N||#OLSilver||$Меню||p100:100" - Создать меню ... в нижнем правом углу экрана "%Z%P%N||#OLSilver||$Меню||p25:25" - Создать меню ... в центре левого угла экрана "%Z%P%N||#OLSilver||$Меню||p50:50" - Создать меню ... в центре экрана
"%Z%P%N||#OLSilver||$Меню||t0:0" - Создать меню ... в верхнем левом углу Total Commander "%Z%P%N||#OLSilver||$Меню||t100:100" - Создать меню ... в координатах 100px, 100px от левого верхнего угла Total Commander
"%Z%P%N||#OLSilver||$Меню||c0:100" - Создать меню ... в левом нижнем углу Total Commander "%Z%P%N||#OLSilver||$Меню||c100:0" - Создать меню ... в правом верхнем углу Total Commander "%Z%P%N||#OLSilver||$Меню||c100:100" - Создать меню ... в нижнем правом углу Total Commander "%Z%P%N||#OLSilver||$Меню||c25:25" - Создать меню ... в центре левого угла Total Commander "%Z%P%N||#OLSilver||$Меню||c50:50" - Создать меню ... в центре Total Commander
"%Z%P%N||#OLSilver||$Меню||a0:0:TPathPanel1" - Создать меню ... в верхнем левом углу заголовка левой файловой панели "%Z%P%N||#OLSilver||$Меню||a0:0:TPathPanel2" - Создать меню ... в верхнем левом углу заголовка правой файловой панели "%Z%P%N||#OLSilver||$Меню||a0:100:TPathPanel1" - Создать меню ... на 100px ниже верхнего левого угла заголовка левой файловой панели
"%Z%P%N||#OLSilver||$Меню||b50:50:TPathPanel1" - Создать меню ... в центре заголовка левой файловой панели "%Z%P%N||#OLSilver||$Меню||b0:100:TPathPanel1" - Создать меню ... в левом нижнем углу заголовка левой файловой панели "%Z%P%N||#OLSilver||$Меню||b100:0:TPathPanel1" - Создать меню ... в правом верхнем углу заголовка левой файловой панели "%Z%P%N||#OLSilver||$Меню||b100:100:TPathPanel1" - Создать меню ... в нижнем правом углу заголовка левой файловой панели
Добавлена возможность вызова меню с дополнительными параметрами: - внешний вид боковой слева надписи меню - отображение значка на пункте заголовка вложенного меню - изменение значка при наведении курсора на пункт заголовка вложенного меню - отображение слева от меню изображения BMP
08.04.2013 [1.4] [+] Добавлены новые команды "&VERTTHEME!!INSCRIPTION" ">PATHICN,NICON" "<PATHICN,NICON" "^PATHBMP"
Код
"%Z%P%N||#OLSilver||$Меню||&v_BTY!!Боковая~~надпись~~меню" - Создать меню ... с боковой панелью (стиль v_BTY и надписью "Боковая надпись меню") "%Z%P%N||#OLSilver||$Меню||&v_BRW!!Боковая~~надпись~~меню" - Создать меню ... с боковой панелью (стиль v_BRW)
"%Z%P%N||#OLSilver||$Меню||<%%COMMANDER_PATH%%\Wcmicons.dll,0" - Создать меню ... отображение значка при наведении курсора на пункты заголовков вложенных меню
"%Z%P%N||#OLSilver||$Меню||<%%COMMANDER_PATH%%\Wcmicons.dll,0||>%%COMMANDER_PATH%%\Wcmicons.dll,102" - Создать меню ... присвоить значок, а отображать другой при наведении курсора
"%Z%P%N||#OLSilver||$Меню||^%%COMMANDER_PATH%%\menu.bmp" - Создать меню ... прикрепив к левому краю изображение bmp
прошу прощения, но не могу вставить свою тему боковой панели...
вот мой ини файл
Код
; MENUIMG.ini [Собрал Составил Изменил... Аверин Андрей Averin-And@yandex.ru ] [MENUIMG 1.2 Версия от 01.04.2013 специально для Total Commander Image] [Сайт поддержки http://tc-image.3dn.ru ] [Setting] ; PauseTcPrm - Пауза между созданием и вызовом пользовательской команды TC (команда tcprm) PauseTcPrm=100
[Default] ; фон меню BkColor=F0F0F0 ; 1-й фон области значков IconBkColor=F0F0F0 ; 2-й фон области значков IconBkGrdColor=FFFFFF ; фон пункта при наведении курсора SelectBkColor=B6BDD2 ; обводка вокруг фона пункта при наведении курсора SelectRectColor=404285 ; цвет текста меню TextColor=000000 ; изменение цвета текста при наведении курсора SelectTextColor=000000
; темы вертикальных надписей ; [v_Название_Темы] ; VerBkColor=D00000 - 1-й цвет фона ; VerBkGradColor=CEE23A - 2-й цвет фона ; VerTextColor=00FFFF - цвет текста
В итоге - боковая панель просто черного цвета, без текста. И это при любых цветах - пробовал разные. Только прописаные изначально темы меняются нормально
Сообщение отредактировал asmadeus - Среда, 27.11.2013, 18:54