Страница 1 из 1

Иконка на кнопке панели инструментов из em-команды

Добавлено: Вт авг 28, 2012 16:29
ApceH
Столкнулся с проблемой. Имеется em-команда для запуска некой программы (exe-шник). На панели создаю кнопку с этой командой. При этом автоматически из em-команды TC берёт указанную там иконку (button=) и название (menu=) и присваивает их данной кнопке, т.е. записывает в BAR-файл.
Затем мне понадобилось изменить иконку и/или название в em-команде. К сожалению, на кнопку панели это никак не повлияет.
Получается, если я хочу изменять иконку/название автоматизировано, то придётся изменить и все вхождения этой em-команды в BAR-файлах (у меня некоторые кнопки дублируются). В лучшем случае, мне придётся хранить список BAR-файлов и номеров кнопок для каждой подобной em-команды.

Или я что-то не учёл, или надо репортить хотелку: чтобы если иконка/надпись в кнопке не назначена, а кнопка ссылается на em-команду, то попытаться взять иконку/надпись из em-команды. Ведь с cm-командами это выполняется в отношении надписи (хотя иконку тоже нельзя оставлять пустой).

Добавлено: Вт авг 28, 2012 17:28
Flasher
Если речь о присвоении значений ключам вне стандартного диалога, то, естественно, требуется менять вхождения самостоятельно, а потом прогружать панель через OpenBar.
ApceH писал(а):у меня некоторые кнопки дублируются
Вместе с индексами? Так нельзя.
ApceH писал(а):В лучшем случае, мне придётся хранить список BAR-файлов и номеров кнопок для каждой подобной em-команды.
Зачем? Можно в цикле перебирать команды по номерам и после вставки производить замену далее идущих индексов.
ApceH писал(а):если иконка/надпись в кнопке не назначена, а кнопка ссылается на em-команду, то попытаться взять иконку/надпись из em-команды
Через диалог это так и происходит, если в данной команде эта иконка имеется и поле "Файл значка:" пустует.

Добавлено: Вт авг 28, 2012 19:11
ApceH
Flasher писал(а):Вместе с индексами? Так нельзя.
:D нет конечно. Дублируются в разных панелях. У меня как бы по задачам сгруппированы панели.
Flasher писал(а):Через диалог это так и происходит, если в данной команде эта иконка имеется и поле "Файл значка:" пустует.
Да, но это надо в автоматизированном режиме. Не буду же я для каждой панели открывать редактирование, вставлять кнопку, назначать em-команду, и всё это автоматизированно. И даже если так, всё равно нужно будет хранить список, какие панели открывать и под каким номером нужная кнопка... Не вариант.

Моя мысль такова: usercmd.ini (и прочие аналогичные файлы) должны быть неким репозиторием команд, чтобы на панелях, в меню, на горячие клавиши только индекс команды задавать. Индексом и являлось бы имя em-команды. А пока к этому индексу зачем-то приходится добавлять информацию об иконке (обязательно) и названии (иначе будет имя em-команды).

Добавлено: Вт авг 28, 2012 19:30
Вахмурка

Добавлено: Вт авг 28, 2012 19:31
Flasher
ApceH
В таком случае стоит использовать команды меню "Запуск" (701-899).

Добавлено: Вт авг 28, 2012 19:37
Вахмурка
Сначала запостил, а потом понял, что это не решение.

Предложение Flasher'а дельное, но у этих команд слишком много недостатков.

Добавлено: Вт авг 28, 2012 19:41
Flasher
Вахмурка писал(а):но у этих команд слишком много недостатков
С учётом требуемого недостатком прежде всего может быть ограничение по кол-ву, а так вроде бы ничего отличимого.

Добавлено: Вт авг 28, 2012 21:25
Вахмурка
Ну, например, как прописать иконку? И самое главное, то, что меня в в свое время бесило и из-за чего я и отказался от cm_UserMenu - при обновлении программы перезаписывается totalcmd.inc и, следовательно, пользовательские команды.

Добавлено: Вт авг 28, 2012 22:28
Mellomann
А зачем в панели инструментов ссылаться на условную команду, если можно явно указать то, что она подразумевает?
:lol:

Добавлено: Вт авг 28, 2012 22:38
Avada
Mellomann
А затем, что "условная команда" создаётся, чтобы дальше вызываться как угодно с использованием одного и того же готового имени — хоть из командной строки, хоть клавишей, хоть кнопкой, хоть пунктом в главном меню...

Добавлено: Вт авг 28, 2012 22:56
ApceH
Mellomann
Надо :roll:
У меня в сборке имеются заглушки для неустановленных программ. У плользователя появляется выбор: скачать и поставить эту прогу, выбрать среди уже установленных на компе или смириться.
Если пользователь указал уже установленную прогу, то заглушка меняет в usercmd.ini соответствующие ключи. Работать кнопки уже после этого начинают хорошо — запускают выбранную программу. Но иконку мне приходится менять в каждом BAR-файле. А значит приходится жёстко задать список, где и под каким номером нужная кнопка.

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

P.S. Забыл пояснить, иконка может и скорее всего будет отличаться, так как для неустановленных программ изначально копируются "истощённые" иконки: полупрозрачные и чёрно-белые.

Добавлено спустя 16 минут:

:( :( :(
Впрочем, не так это и нужно. Сейчас только увидел и вспомнил, что на кнопки с командами (а не явными исполняемыми файлами) нельзя перетаскивать файлы!!!
Получается для моей цели нужно тупо пробежаться по BAR-ам и внести нужные изменения. Использовать em-команды получается нет смысла... Сейчас сформулирую 2 хотелки в соответствующей теме.

Добавлено: Ср авг 29, 2012 17:28
Flasher
ApceH писал(а):Но иконку мне приходится менять в каждом BAR-файле. А значит приходится жёстко задать список, где и под каким номером нужная кнопка.
Когда-то меня НАЗАРЕТ спрашивал, как можно это сделать мягче. Моё предложение, которым я пользуюсь, было следующим: менять не значения в Bar-ах, а переименовывать соотв. 2 файла иконок/библиотек по простой схеме:
Имя.ico > Имя2.ico, Имя1 > Имя.ico, Имя2.ico > Имя1.ico
Это даёт возможность менять вид иконки постоянно. Использовать можно в т.ч. при переключении тех или иных режимов, включая инверсные.