[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Andrey_A, ХарВик, chip642  
Установка/снятие состояния недоступного (серого) пункта меню
Andrey_AДата: Среда, 10.07.2013, 19:53 | Сообщение № 1
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Установка/ снятие состояния недоступного (серого) пункта меню Total Commander


Для тех, кто настраивал под себя главное меню, наверняка хотелось как-то структурировать, улучшить, оптимизировать...
Про некоторые эксперименты с меню вы можете прочитать тут и тут

В утилите TCIMG 2.8. beta 14 от 10.07.2013 появилась возможность устанавливать для пунктов меню состояние недоступности, отображаемое серым цветом.

Для чего это нужно?
На сегодняшний день для Total Commander существует много утилит, скриптов, команд для автоматизации...
Те, кто пытался организовать и объединять нужный функционал в меню, сталкивался с проблемой как лучше объединить темы и подтемы.
В сборке Total Commander Image когда-то создал заголовки для подтем и придумал, как их делать недоступными и подсвечивать серым цветом.

Пример:



Но это был своего рода костыль, я просто создал в команду cm_Ziro=554 (cm_Ziro - использовал в меню для отделения заголовка от команд), т.е приравнял её к существующей в Total Commander команде (cm_FtpAbort- Прервать текущую FTP-команду), пункт, которой недоступен (серый), если не используется FTP ...
Но когда включался FTP, то все такие заголовки превращались в "тыкву" (в обычный пункт меню)

Проводя эксперименты с меню, выяснилось, что это можно делать и без этого.



Команда menug=NUMBER||iMenu1,iMenu2, ... ,iMenuN(||iMenu1,iMenu2, ... ,iMenuN||...)

[helpquote]- NUMBER - 1 - установить серый пункт меню, 0 - снять серый пункт меню
- iMenu1,iMenu2, ... ,iMenuN - номер пункта, которому устанавливается/снимается атрибут серого пункта меню. Если пункт находится в подменю (неважно на какой глубине), то указываются весь путь: все соответствующие номера пунктов через запятую, последнему из которых будет присвоен указанный атрибут. Если необходимо присвоить атрибут нескольким пунктам меню, то они (пути) прописываются через разделитель "||". При подсчёте учитывать сепаратор.[/helpquote]

Примеры:

Доступно только для пользователей

Доступно только для пользователей

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Доступно только для пользователей

Доступно только для пользователей

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Доступно только для пользователей

Доступно только для пользователей

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

Доступно только для пользователей

Доступно только для пользователей

Так же эту возможность можно использовать при "блокировки" отдельных пунктов меню при определённых условиях.

Для того, чтобы заданные пункты меню "блокировались" при старте Total Commander, необходимо в прописать в autorun.cfg (конфигурационном файле плагина autorun.wdx) строку:

Код
# установить заданным пунктам меню состояние недоступности (отображение серым цветом) Total Commander при запуске
shellexec "%COMMANDER_PATH%\TCIMG.exe" "menug=0||1,3,5||2,6||3,2,1"


Испытания и тестирование продолжаются. Присоединяйтесь к этому историческому процессу. Все обсуждения статьи, предложения, сообщения об ошибках можно в этой теме или в теме TCIMG



 
Andrey_AДата: Среда, 17.07.2013, 21:36 | Сообщение № 2
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Продолжение предыдущего сообщения...

Пошёл немного дальше. При большом количестве "заголовков", которым необходимо делать состоянии недоступности, вышеописанная команда неудобна.
Во первых, вычисление всех номеров представляется мне очень нудным занятием. Во вторых, при изменении меню надо будет заново составлять, что тоже не хотелось бы делать.

В утилите TCIMG 2.8. beta 16 от 17.07.2013 ввёл новую команду menux, которая решает эту задачу.

Команда menux=NUMBER||NameCommand

[helpquote]
[Установка/Снятие состояния недоступного (серого) для пунктов меню заданной команды Total Commander]
- NUMBER - 1 - установить серый пункт меню, 0 - снять серый пункт меню
- NameCommand - имя команды, названиям которых будет установлено состояние[/helpquote]

Рассмотрим на примере:

Тем пунктам меню, которым необходимо "заблокировать" присваиваем одинаковую для всех команду, к примеру, em_Grey. Ей даже нет необходимости создавать команду в UserCmd.ini, т.к. в главном меню она никогда не будет нажиматься.

Цитата
POPUP "Внутренние ассоциации..."
MENUITEM "Внутренние ассо&циации в TC Image Alt+H", $207
MENUITEM "Обновление внутренних ассоциаций Alt+J", em_and_2927
MENUITEM "Файл-отчёта о количестве символах в строках FilterN", em_and_2876
MENUITEM "Копировать в буфер путь в виде "Путь" "%1"", em_and_2590
MENUITEM "Вкл./Выкл. ассоциаций в TC Image", em_and_2858
MENUITEM "•••••••••• ДОБАВЛЕНИЕ В АССОЦИАЦИИ ТС •••••••••", em_Grey
MENUITEM "Добавить выделенные РАСШИРЕНИЯ файлов (№ фильтра вводится)", em_and_1804
MENUITEM "Добавить выделенные ''ЧИСТЫЕ ИМЕНА'' файлов (№ фильтра вводится)", em_and_1805
MENUITEM "Добавить выделенные ИМЕНА файлов (№ фильтра вводится)", em_and_1806
MENUITEM "•••••••••• ДОБАВЛЕНИЕ В ИГНОРИРУЕМЫЕ АССОЦИАЦИИ ТС ••••••••••", em_Grey
MENUITEM "Добавить выделенные РАСШИРЕНИЯ файлов (№ фильтра вводится)", em_and_1807
MENUITEM "Добавить выделенные ''ЧИСТЫЕ ИМЕНА'' файлов (№ фильтра вводится)", em_and_1808
MENUITEM "Добавить выделенные ИМЕНА файлов (№ фильтра вводится)", em_and_1809
MENUITEM "•••••••••• УДАЛЕНИЕ ИЗ АССОЦИАЦИИ ТС ••••••••••", em_Grey
MENUITEM "Удалить выделенные РАСШИРЕНИЯ файлов", em_and_1810
MENUITEM "Удалить выделенные ''ЧИСТЫЕ ИМЕНА'' файлов", em_and_1811
MENUITEM "Удалить выделенные ИМЕНА файлов", em_and_1812
MENUITEM SEPARATOR
MENUITEM "Набор колонок отображающий ассоциации", em_and_716
MENUITEM "Обновить информацию для набора колонок", em_and_715
END_POPUP


И теперь нажав на кнопку все пункты, имеющие команду em_Grey станут "серыми":

Доступно только для пользователей

Обратное действие

Доступно только для пользователей

Для того, чтобы пункты меню с заданной командой "блокировались" при старте Total Commander, необходимо в прописать в autorun.cfg (конфигурационном файле плагина autorun.wdx) строку:

Код
# установить состояние недоступности пунктам меню Total Commander с командой em_Grey  при запуске     
shellexec "%COMMANDER_PATH%\TCIMG.exe" "menux=1||em_Grey"


Испытания и тестирование продолжаются. Присоединяйтесь к этому историческому процессу. Все обсуждения статьи, предложения, сообщения об ошибках можно в этой теме или в теме TCIMG



 
asmadeusДата: Четверг, 13.03.2014, 00:07 | Сообщение № 3
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Разрули тему - не работает ни через авторан, ни через кнопку.
Код
TOTALCMD#BAR#DATA
"D:\Total Commander\Utils\TCIMG\TCIMG.exe"
menux=1||em_1234
D:\Total Commander\Utils\TCIMG\TCIMG.exe
Установить состояние недоступности пунктам меню, которым присвоена команда em_Grey
D:\Total Commander\Utils\TCIMG\

-1

win 7x64
 
Andrey_AДата: Четверг, 13.03.2014, 08:50 | Сообщение № 4
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
Цитата asmadeus ()
не работает ни через авторан, ни через кнопку

У меня на 32 всё рабтает и с em_1234 и em_Grey

Нет под рукой 7x64
Как будет возможность посмотрю...

------------------- Добавлено --------------
Проверил на Вашей сборке.. есть разница в определённых местах и версиях и путях...
Попробуй 59_b8.zip


 
asmadeusДата: Четверг, 13.03.2014, 15:33 | Сообщение № 5
Генералиссимус

На сайте с: 14.12.2012
Город: Кривой Рог
Сообщений: 1375
Награды: 29
Репутация: 32
Цитата Andrey_A ()
Проверил на Вашей сборке.. есть разница в определённых местах и версиях и путях... Попробуй 59_b8.zip

работает)) слава великому комбинатору)) up
 
  • Страница 1 из 1
  • 1
Поиск:

Интеллектуальные права и отказ от ответственности