[util] TC Menu: вопросы, ответы, предложения

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

В параметрах TCMenu надо собрать все переменные ТС, используемые в кнопках тулбара.
В твоем примере во 2-й кнопке присутствуют переменные %p%n, значит в параметрах TCMenu должно быть "-p %p -n %n".
5-я и 22-я кнопка не содержат переменных ТС и, поэтому, никак не влияют на параметры TCMenu.

Если же , допустим, в шестой кнопке используется переменная %Т, то ее надо добавить в параметры TCMenu - "-p %p -n %n -Т %Т". И т.д.
Аватара пользователя
Leopoldus
Сообщения: 45
Зарегистрирован: Вт янв 22, 2008 14:32

Сообщение Leopoldus »

Спасибо, стало чуть более понятно, но все равно не до конца.
Как TCMenu определяет, к какой именно кнопке вложенного тулбара относятся переменные, указанные в строке параметров кнопки? Если бы синтаксис включал номер кнопки, то было бы ясно (например, "2:p %p -n %n"), но ничего такого нет. А как же тогда?
Ты не мог бы привести в качестве примера полную строку для нашего примера (то есть, тулбар из 30 кнопок, из которых переменные TC есть у 2-й и 6-й, а парамеры у 5-й и 22-й кнопок) в том виде, в котором она должна быть, чтобы ее можно было бы просто тупо скопировать и вставить в строку параметров кнопки. Потом я по этому образцу сделю остальное.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Leopoldus писал(а):Как TCMenu определяет, к какой именно кнопке вложенного тулбара относятся переменные,
Никак не определяет, это не требуется. %p - он и в Африке %p. Где бы он ни попался (хоть во всех кнопках подряд) все равно он будет заменен на одно и то же, а значит, в каких именно кнопках он стоит совершенно неважно.
Leopoldus писал(а):Ты не мог бы привести в качестве примера полную строку для нашего примера
Так я ее и привел, практически полностью. Осталось только добавить вначале имя самого файла тулбара.

Код: Выделить всё

c:\totalcmd\mybar.bar -p %p -n %n -Т %Т
Вот прямо бери и вставляй. :)

ЗЫ. И еще раз напоминаю - если некоторые кнопки не имеют переменных ТС (в твоем примере - 5-я и 22-я), то они прозрачны для TCMenu и абсолютно никаких телодвижений от юзера не требуют.
Аватара пользователя
Leopoldus
Сообщения: 45
Зарегистрирован: Вт янв 22, 2008 14:32

Сообщение Leopoldus »

Ага! Теперь, кажется, и до меня дошло :oops:
Не слишком быстро, но лучше ведь поздно, чем никогда?
Спасибо, пошел настраивать кнопки!
Аватара пользователя
Leopoldus
Сообщения: 45
Зарегистрирован: Вт янв 22, 2008 14:32

Сообщение Leopoldus »

Почти все настроил, но не получается с кнопкой внешнего Lister-а. На оригинальном тулбаре в строке параметров этой кнопки прописано:
?%N
(открытие файла под курсором с запросом на подтверждение, все работает).
Обе переменных (? и %N) уже прописаны в параметрах кнопки TC Menu и работают для других кнопок. Но кнопка Lister на тулбар из TCMenu не работает: имя файла под курсором не вставляется автоматически в поле, предназначенное для имени открываемого файла, хотя чуть выше она в том же диалоге присутствует в качестве подзаголовка.
В чем может быть дело?

З.Ы.
Если вообще не имеет никакого значения порядок и пр., в котором идут переменные в строке параметров кнопки TC Menu, то не проще ли было бы сразу задать в коде TC Menu все возможные переменные TC, благо их не так уж много? Тогда пользователю оставалось бы ввести только имя тулбара...
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Leopoldus писал(а):Обе переменных (? и %N) уже прописаны в параметрах кнопки TC Menu
Вопросительный знак - это не переменная! В параметры TCMenu выносятся только переменные - буквы со знаком процента.
Кроме того, после вопросительного знака должен быть пробел.
Leopoldus писал(а):не проще ли было бы сразу задать в коде TC Menu все возможные переменные
Не только не проще, а попросту невозможно. Откуда TCMenu может знать что именно в данный момент соответствует параметру %N, например???
Аватара пользователя
Leopoldus
Сообщения: 45
Зарегистрирован: Вт янв 22, 2008 14:32

Сообщение Leopoldus »

Кроме того, после вопросительного знака должен быть пробел.
Вообще-то, в настройках этой кнопки на исходном тулбаре пробела не было - и она работала. Добавил пробел, теперь заработала и кнопка на вложенном тулбаре TC Menu. :)

Однако в результате всех манипуляций перестали работать две другие кнопки на вложенном тулбаре TC Menu при открытии файлов с пробелами в именах.

Вот как выглядят рабочие параметры этих кнопок на исходном тулбаре:

Код: Выделить всё

Command:      C:\Program Files\Bred2\Bred2r.exe
Parameters:   ? %P%N
(должен открывать файл под курсором, например, C:\File name.ext в редакторе Bred2 с предварительным запросом, но вместо этого пытается открыть файл с именем C:\"File name.ext"

Код: Выделить всё

Command:   C:\Program Files\Bred3\bred3_2k.exe
Parameters: %P%N
(должен открывать файл под курсором, например, C:\File name.ext в редакторе Bred3 без предварительного запроса, но вместо этого пытается открыть файл с именем C:\"File - то есть, кавычки не на месте и теряется часть имени после пробела)

А вот строка параметров в кнопке TC Menu:

Код: Выделить всё

"C:\Program Files\TotalCmd_02\nested bar creator\bars\Bar_01.bar" -$ -P %P -N %N -p %p -n %n -t %t -m %m -L %L -F %F
Где может быть ошибка?
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Это не ошибка, дело в том, что ТС имеет специальную обработку для некоторых параметров, когда они используются парами (например %P%N). А при запуске через TCMenu эта пара оказывается разорванной. Но почему ты используешь два формата - и %N %P и %n %p? Если тебя устраивают короткие имена файлов, то используй только %n %p. Тогда проблем быть не должно.
Если же тебе обязательно нужно использовать длинные имена файлов, то есть два пути.

1. Определить свою переменную, скажем %А. Тогда в кнопке будет

Код: Выделить всё

Command:   C:\Program Files\Bred3\bred3_2k.exe
Parameters: %A
, а в параметрах TCMenu надо добавить 2. Создать команду em_xxx и использовать ее.
Вообще-то, в настройках этой кнопки на исходном тулбаре пробела не было
Да, но если ты читал ридми, то мог обратить внимание на то, что TCMenu обрабатывает "?" не так как ТС. :wink:
Аватара пользователя
Leopoldus
Сообщения: 45
Зарегистрирован: Вт янв 22, 2008 14:32

Сообщение Leopoldus »

Но почему ты используешь два формата - и %N %P и %n %p? Если тебя устраивают короткие имена файлов, то используй только %n %p
При запросе на открытие файла хочется видеть, что именно открываешь, иначе нет смысла и вводить запрос. Для этого нужны длинные имена. А некоторые другие кнопки требуют, наоборот, коротких. Поэтому в параметрах TC Menu имеются обе пары.
1. Определить свою переменную, скажем %А. Тогда в кнопке будет
Выглядит просто как магия :lol: И, главное, работает!
Но у этого варианта имеется недостаток: требуется корежить настройки кнопок исходного тулбара, в результате они, естественно, перестают работать. А иногда необходимо использовать именно оригинальный тулбар.
Так что, наверное, остается только второй вариант
2. Создать команду em_xxx и использовать ее.
Так что пойду разбираться с em_xxx.

Спасибо за помощь! Кажется, я стал намного умнее... :wink:
Аватара пользователя
kalikanzaros
Сообщения: 90
Зарегистрирован: Вт июл 03, 2007 19:09

Сообщение kalikanzaros »

VadiMGP
- Добавлена поддержка вложенных .bar файлов. Если выбранный пункт меню содержит только имя .bar файла, то этот .bar файл будет показан вместо текущего меню. Если в параметре также задано слово "menu", то этот .bar файл будет показан как меню второго уровня.
а можно пример файла в котором работает меню 2го уровня?
у меня получается сделать только показ вместо текущего меню...
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Ну вот, например файл ex.bar

Код: Выделить всё

[Buttonbar]
ButtonCount=2
button1=%COMMANDER_PATH%\TOTALCMD.exe,1
cmd1=%COMMANDER_PATH%\DEFAULT.BAR
param1=
path1=
menu1=DEFAULT1
button2=%COMMANDER_PATH%\TOTALCMD.exe,1
cmd2=%COMMANDER_PATH%\DEFAULT.BAR
param2=menu
path2=
menu2=DEFAULT2
и, соответственно, кнопка

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCMenu\TCMenu.exe
%%COMMANDER_PATH%%\ex.bar
%COMMANDER_PATH%\wciconex.dll,35
example


-1
AlexNCH
Сообщения: 5
Зарегистрирован: Сб янв 10, 2009 15:59

Сообщение AlexNCH »

Приветствую!
Извиняюсь за возможное повторение, я первый раз на этом форуме.
Прежде всего хочу выразить автору данного плагина огромный респект! Весьма полезная утилита.

Пользуюсь TCMenu очень давно. Правда, кроме параметра "-$" других параметров никогда не использовал.
Понравился данный плагин (v.1.9) тем, что его можно было использовать как отдельную утилиту даже без Тотала. В качестве лаунчера программ. Причем, основным плюсом программы я считал тот факт, что программа постоянно не висит в памяти, а после отработки полностью выгружается. Можно вынести ярлык на рабочий стол и в качестве параметров указать путь к Вашему .bar файлу. Версия 1.9 прекрасно работает. Также можно повесить такой ярлык на панель быстрого запуска и Вы получите полноценное многоуровневое меню. Кроме того, я умудрился запускать такое меню по горячей клавише с помощью утилиты nncron.
Вчера, случайно попав на данный форум, узнал, что плагин развивается (еще раз респект автору) и уже существуют новые версии. Скачал и "прикрутил" к Тоталу новую версию. Но вот отдельно от Коммандера к сожалению новую версию пока не удалось приручить. Если запускать ярлыком (как описано выше), то меню запускается, но при попытке вызвать какую-нибудь программу TCMenu вылетает с ошибкой.
Буду весьма признателен если автор подскажет решение проблемы.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

AlexNCH
За добрые слова спасибо.

Что касается вылетания, то нужно больше информации. Выложи сюда свой bar файл, и приведи текст сообщения об ошибке.

ЗЫ.
AlexNCH писал(а):Если запускать ярлыком (как описано выше)
Если ты просто скопировал пример из моего предыдущего поста, то он не будет работать без ТС, потому что там используется переменная окружения %COMMANDER_PATH%. Нужно либо определить ее вручную, либо прописать пути явно.
AlexNCH
Сообщения: 5
Зарегистрирован: Сб янв 10, 2009 15:59

Сообщение AlexNCH »

VadiMGP писал(а):AlexNCH
Выложи сюда свой bar файл
Вот:
[Buttonbar]
ButtonCount=2
button1=E:\Soft\ImgBurn\ImgBurn.exe
cmd1=E:\Soft\ImgBurn\ImgBurn.exe
path1=E:\Soft\ImgBurn\
menu1=ImgBurn
button2=C:\Program Files\Nero\Nero8\Nero Burning Rom\nero.exe,0
cmd2=""C:\Program Files\Nero\Nero8\Nero Burning Rom\nero.exe""
path2=C:\Program Files\Nero\Nero8\Nero Burning Rom\
menu2=nero
[AlternativeCache]
CacheIndex1=0
CacheIndex2=1
VadiMGP писал(а):Если ты просто скопировал пример из моего предыдущего поста
Не копировал
Вот скрин ошибки:
Изображение
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

AlexNCH
А в ярлыке запуска имя bar файла указано в абсолютном виде (полный путь) или относительно стартовой директории. Если указано относительное имя, то попробуй указать полный путь.
Ответить