как создать пункт в меню с галочками (чекбоксами)

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

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

VJet
Сообщения: 1
Зарегистрирован: Чт сен 29, 2011 23:39

как создать пункт в меню с галочками (чекбоксами)

Сообщение VJet »

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

(список с такими пунктами будет размещен в меню "Запуск")
заранее спасибо за любой совет в нужную сторону.

http://i30.fastpic.ru/big/2011/1008/aa/ ... 589eaa.png
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

VJet
Нет. Пользовательские команды с состояниями в Тотале не реализованы, это поддерживается только для внутренних команд.

PS: Ссылку на картинку поправил.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

VJet
Да. Можно нарисовать значок с галочкой и без, а скриптом менять.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

CaptainFlint писал(а):Пользовательские команды с состояниями в Тотале не реализованы
А может уже настала пора сильно попросить Гислера это сделать?
На нашем форуме в который раз поднимается вопрос о реализации такой возможности. И каждый раз в качестве ответа предлагаются "танцы с бубном". На оффоруме идея выдвигалась?
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya
По принципу "нажал-отжал" с флагом в ini?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

И как тотал будет узнавать, что состояние изменилось, и надо изменить иконку?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Если - 0, то отжимать, если 1, то вдавливать.
Функция будет активироваться ключом в секциях usercmd.ini/wcmd_lng.ini.
Последний раз редактировалось Flasher Пн окт 10, 2011 10:18, всего редактировалось 1 раз.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Batya писал(а):А может уже настала пора сильно попросить Гислера это сделать?
Может, и пора, но вряд ли он в 8.0 сподобится (война с Лазарусом, судя по всему, отнимает у него все силы и время). А к 8.5 успеет забыть.

Ну и, само собой, надо сначала прикинуть, как это вообще должно работать, чтобы этим было удобно пользоваться.
MVV писал(а):И как тотал будет узнавать, что состояние изменилось, и надо изменить иконку?
Например, состояния — независимые команды, а в коде кнопки прописаны несколько команд, которые Тотал переключает циклически. Со значками только надо продумать. Например, если команды две, и у второй значок отсутствует, то для неё берётся значок первой и отрисовывается нажатым (и наоборот, для случая, когда начальным должно быть ненажатое состояние). Неясно пока, как запоминать состояния, как контролировать синхронизацию команд в меню/тулбаре/хоткеях (особенно если учесть, что последовательности команд там могут быть разными), как отображать состояния трёх и более команд… В общем, на 8.0 я бы не рассчитывал. Но идея в целом, мне кажется, интересная.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

CaptainFlint писал(а):Неясно пока, как запоминать состояния, как контролировать синхронизацию команд в меню/тулбаре/хоткеях (особенно если учесть, что последовательности команд там могут быть разными)
Выше написал как.
CaptainFlint писал(а):как отображать состояния трёх и более команд…
Можно обойтись и без этого извращения. Да и вряд ли у автора появится желание колупаться более чем с двумя командами. Здесь же проводится аналогия с уже существующим функционалом.
Я так вижу, что вообще одна команда нужна. Скрипт должен быть один, и он, кстати, и будет читать значение ключа, чтобы выполнить соотв. действие. Т.е. флаги и для скрипта и для команды должны располагаться в одном месте для верного срабатывания и установки маркера.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Flasher
Вариант с флагами интересен, но он может работать исключительно на скриптах. А мой хорош ещё тем, что позволит переключать и внутренние команды (например, создать команду переключения между пользовательким набором колонок и стандартным режимом станет плёвым делом).

Впрочем, ни на чём пока не настаиваю. Говорю же, это надо тщательно продумать. Явные флаги состояний тоже могут быть полезны, чтобы не дублировать скрипты и команды, когда они оказываются почти одинаковыми.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

CaptainFlint писал(а):А мой хорош ещё тем, что позволит переключать и внутренние команды (например, создать команду переключения между пользовательким набором колонок и стандартным режимом станет плёвым делом).
А команды как записывать? Через пробел? А если вн. команда поддерживает параметры?
CaptainFlint писал(а):Явные флаги состояний тоже могут быть полезны, чтобы не дублировать скрипты и команды, когда они оказываются почти одинаковыми.
В том-то и дело.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А если команда не отработала и переключать состояние не нужно? Тонкий это момент, без путаниц не обойдёшься.

Думаю, более полезной была бы возможность изменения значка пункта меню на лету. Например, возможность указания пути к значку в usercmd.ini. И чтобы тотал не кэшировал такой значок. Тогда скриптом можно было бы переключать значки при вызове команды.

Хм, а ведь по идее можно подменять иконки и флажки пунктов меню непосредственно перед его отображением... Правда, нужно будет точно определить, какой именно пункт меню соответствует какой команде.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):А если команда не отработала и переключать состояние не нужно?
Значит, это проблема того, кто написал такую кривую команду.
MVV писал(а):Например, возможность указания пути к значку в usercmd.ini. И чтобы тотал не кэшировал такой значок. Тогда скриптом можно было бы переключать значки при вызове команды.
В unercmd.ini и так можно путь к значку указывать. Ты о чём? Переписывать путь к значку скриптом? Ну, вот это точно лишнее. Да и вообще речь шла о нажатом/отжатом состоянии, значок сам по себе должен быть один.
MVV писал(а):Хм, а ведь по идее можно подменять иконки и флажки пунктов меню непосредственно перед его отображением... Правда, нужно будет точно определить, какой именно пункт меню соответствует какой команде.
Не совсем понял. Приведи пример, плз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

В unercmd.ini и так можно путь к значку указывать.
Точно. Тогда требуется лишь научить тотал отображать эти значки в меню.

Не вижу существенной разницы между изменением флага в INI и изменением пути к значку. В любом случае требуется правка INI.
Не совсем понял. Приведи пример, плз.
Это можно реализовать и без Гислера - через TWinKey или другой плагин, который встраивается в обработчик сообщений окна тотала. Менять значки или ставить/снимать галочки в зависимости от тех или иных параметров в каком-то конфиге, или ещё как-нибудь.
Перед отображением каждой менюшки винда посылает окну сообщение, где передаёт дескриптор менюшки, и можно внести изменения прямо перед отображением - например, поменять значок или поставить/снять галочку. Нужно лишь понять, какому пункту меню нужно что-то менять. Пока вижу только 1 вариант - по названию пункта меню.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Не вижу существенной разницы между изменением флага в INI и изменением пути к значку.
Разница
а) в кол-ве символов
б) в необходимости плодить значки для команд вкл./выкл.
MVV писал(а):где передаёт дескриптор менюшки
Всё, теперь понял, о чём ты. Мы же с тобой этот вопрос как-то решали. Но для скриптов всё равно флаги нужны. Кстати, не проверял в 8-ке, баг, проявившийся в TcMenuPopup, исправлен?
Последний раз редактировалось Flasher Пн окт 10, 2011 11:51, всего редактировалось 1 раз.
Ответить