Autorun

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

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

Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Loopback
Да, версия по данной ссылке.

Пока тестирую на данной команде.

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

ControlSetMouseAction /M:U /B:1 17 ShowPopupMenu /A:16 %COMMANDER_PATH%\Language\HINTS.MNU
Само содержание MNU примерно такое

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

MENUITEM "Переименовать\tF2  ", em_hotkey
MENUITEM "Создать файл/папку\tF7  ", em_hotkey
MENUITEM SEPARATOR
MENUITEM "Настройки\tA+P  ", em_hotkey
MENUITEM "Поиск\tA+F  ", em_hotkey
Иконка одна для всех пунктов
В WCMICONFLAT.INC прописана 10000=277
TC 11.58 combo, Windows 11 x64
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

jentoso
А, вот в чем дело. Вообще-то .inc файл предназначен для маппинга значков внутренних команд для главного меню, поэтому плагин читает индексы из .inc только для cm-команд. Для em-команд значок должен прописываться в usercmd.ini (или Wcmd_XXX.ini), откуда их плагин и читает.

Прописывание в .inc <10000+индекс em-команды в меню>, если я правильно помню, недокументированная возможность. Да, она добавит значок в главное меню, но не ассоциирует его с em-командой. Добавление такой em-команды на панель инструментов не поставит правильный значок автоматически. Я бы сказал, что это не совсем корректное использование пользовательских команд.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Loopback
Теперь понято в чем дело. Можно и без иконки в таком случае обойтись.

А почему не отображаются все стандартные иконки, которые в главном меню, если к примеру вызвать WCMD_EXT_RUS.MNU?
TC 11.58 combo, Windows 11 x64
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

jentoso
Не знаю, нужны конкретные файлы, набором. Может парсер где-то неверно отрабатывает. Может значок не читается.

Попробовал скачать и проверить расширенное меню. Я не вижу разницы в значках между главным меню и меню выводимым плагином... Там где их нет, их нет и в главном меню.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Loopback
Кажется я отловил баг (только пока не понял где именно: у вас в коде или у себя в голове).
Следующим тестовым примером я хочу добиться, чтобы у меня:
  1. При вызове диалога копирования F5 на кнопках отображалось A2, A3, A4.
  2. При вызове диалога копирования F5 с пришпиленной доп-панелькой на кнопках отображалось A2P, A3P, A4P.
  3. При вызове диалога создания ярлыка CS+F5 на кнопках отображалось B2, B3, B4.
  4. При вызове диалога создания ярлыка CS+F5 с пришпиленной доп-панелькой на кнопках отображалось B2P, B3P, B4P.
[cut="Тестовый пример"]

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

AddDialog DIALOG_COPYMOVE
AddCondition /VISIBLE:1 "TButton" 1
AddControl "TButton" 2 "A2"
AddControl "TButton" 3 "A3"
AddControl "TButton" 4 "A4"
AddDialog DIALOG_COPYMOVE_PINNED
# AddCondition /VISIBLE:1 "TButton" 1
AddControl "TButton" 2 "A2P"
AddControl "TButton" 3 "A3P"
AddControl "TButton" 4 "A4P"

AddDialog DIALOG_COPYMOVE
AddCondition /VISIBLE:0 "TButton" 1
AddControl "TButton" 2 "B2"
AddControl "TButton" 3 "B3"
AddControl "TButton" 4 "B4"
AddDialog DIALOG_COPYMOVE_PINNED
# AddCondition /VISIBLE:0 "TButton" 1
AddControl "TButton" 2 "B2P"
AddControl "TButton" 3 "B3P"
AddControl "TButton" 4 "B4P"
[/cut]
Но вместо желаемо-ожидаемого у меня A2..., A2P..., B2... отображаются, а B2P ни в какую. Обратите, пожалуйста, внимание на закомментированный AddCondition после DIALOG_COPYMOVE_PINNED: он не действует, что с ним, что без него, результат тот же.

Сейчас получается, что DIALOG_COPYMOVE_PINNED работает только в паре с DIALOG_COPYMOVE. Т.е. вот такая запись работает, отображается и A3, и A3P:

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

AddDialog DIALOG_COPYMOVE
AddControl "TButton" 3 "A3"
AddDialog DIALOG_COPYMOVE_PINNED
AddControl "TButton" 3 "A3P"
А вот такая запись не работает, A3P не отображается:

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

AddDialog DIALOG_COPYMOVE_PINNED
AddControl "TButton" 3 "A3P"
Добавлено:
Хм... А в 64-бит у меня DIALOG_COPYMOVE_PINNED вообще перестал работать. Ну, ладно, вначале с 32-бит бы разобраться.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Loopback
Вот как отображается у меня
Изображение

Если такое поведение только у меня, скорее всего это частный случай (особенность системы, наличие загруженных плагинов и т.д.), но в целом на работоспособность не влияет.
TC 11.58 combo, Windows 11 x64
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

yozhik писал(а):При вызове диалога создания ярлыка CS+F5 на кнопках отображалось B2, B3, B4.
Мы же отфильтровали диалог копирования, так что для этого диалога надо делать отдельный обработчик с помощью AddDialog.
yozhik писал(а):При вызове диалога создания ярлыка CS+F5 с пришпиленной доп-панелькой на кнопках отображалось B2P, B3P, B4P.
Исключение для панельки реализовано только для диалога копирования...

Кстати, тут обнаружился интересный баг тотала: если диалог копирования стартует раскрытым (ключ ShowCopyOptions=1), то при открытии диалога создания ярлыка отсутствует кнопка "Опции".

yozhik писал(а):Сейчас получается, что DIALOG_COPYMOVE_PINNED работает только в паре с DIALOG_COPYMOVE.
Всё верно, pinned и post зависимые, DIALOG_COPYMOVE всё равно должен быть объявлен. Фильтры для pinned и post не работают, фильтрация определяется настройками основного диалога (поскольку фактически для всех трех вариантов это остается один и тот же диалог). Пожалуй, это и правда недостаточно документированный момент.

jentoso
Не, ну так, разумеется, не должно быть. Хотелось бы понять, в чем тут дело. Похоже до сих пор никто с такой проблемой не сталкивался.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Loopback
Оставил только плагин Autorun, чтобы исключить влияние других плагинов, но эффект с иконками не изменился.
Затем переименовал свой набор иконок WCMICONSFLAT.dll (WCMICONSFLAT.INC) в WCMICONS.dll (WCMICONS.INC), выбрал последний в качестве библиотеки по умолчанию и в итоге все иконки стали отображаться в PopupMenu, но за исключением пользовательских указанных в WCMICONS.INC.
TC 11.58 combo, Windows 11 x64
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

jentoso
Неплохо для начала всё-таки однозначно понять, имеет ли проблема вообще отношение к плагину. Почитайте про порядок работы с библиотеками значков для меню в описании ключа DefaultLib здесь и оцените, всё ли правильно делаете и всё ли нормально отображается в главном меню БЕЗ плагина.
И поясните, пожалуйста, насчёт "пользовательских указанных в WCMICONS.INC". Пользовательские — это что? Связки с командами значков, добавленные пользователем для встроенных команд (cm_), НИЧЕМ не должны функционально отличаться в этом INC-файле от стандартных связок. Если данная библиотека вообще загружается, а не отвергается с использование вместо неё библиотеки по умолчанию.

Loopback
Добавление в INC-файлы связок em-команд со значками действительно не документировано, а на практике создаёт массу проблем. Начиная с того, что числовой идентификатор такой команде присваивается не статический, а по факту динамический, зависящий ТОЛЬКО от порядкового номера данной пользовательской команды среди прочих аналогичных команд данного MNU-файла. Сбить эти настройки проще простого.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Avada
По поводу иконок, правильнее будет сказано это иконки пользовательских команд в главном меню.
Иконки были присвоены для em-команд, чтобы ничего лишнего не происходило при их нажатии (просто памятки для горячих клавиш).
Учитывая, что с отображением всех стандартных иконок в Popupmenu разобрался, а связка в INC-файлы em-команд со значками не документировано и создаем массу проблем, наверно стоит на этом и завершить.
TC 11.58 combo, Windows 11 x64
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Loopback писал(а):Мы же отфильтровали диалог копирования, так что для этого диалога надо делать отдельный обработчик с помощью AddDialog.
Верно. Я так и сделал в тестовом примере и оно благополучно работает: надписи B2, B3, B4 отображаются.
Loopback писал(а):Исключение для панельки реализовано только для диалога копирования...
А, теперь понятно. Это как раз у меня и вызвало когнитивный диссонанс (баг в моей голове, как я выразился). Беда то в том, что при введении отдельного обработчика для диалога ярлыков (ДЯ) он наследует настройки PINNED из предыдущего обработчика, т.е. из диалога копирования (ДК). В тестовом примере не только не отображаются B3P, B4P, но вместо них отображаются A3P, A4P — в этом казус (прошу пардону, видимо мне надо было это дословно отрапортовать, но я понадеялся, что вы мой тест у себя воспроизведёте). В реальном же окружении это приводит к тому, что если я настроил ДК, то мне ДЯ лучше вообще не трогать, ибо если я его трону, то он у меня в PINNED состоянии станет вот таким:
Изображение

И никак евонный PINNED не исправить, единственный выход — это отказаться от настройки ДЯ.
Loopback писал(а):Кстати, тут обнаружился интересный баг тотала
Я его уже зарепортил, и Гислер его уже исправил. Обновитесь, пожалуйста, до TC 11.01RC1 :) .
Loopback писал(а):Фильтры для pinned и post не работают, фильтрация определяется... Пожалуй, это и правда недостаточно документированный момент.
Вот, вот, очень хорошо было бы прояснить как именно в этом случае работает фильтрация для PINNED. Что определяет границы действия фильтра: следующий вызов AddDialog или вызов AddDialog без PINNED? И вообще не всякий случай очевиден. Вот например, в 64-бит в ДК кнопка «F2 В очередь» это Button 2, а в ДК PINNED она уже Button 7. Хорошо бы юзеру быть уверенным, что когда он настроил Кнопку 2 в одном состоянии диалога, эта настройка экстраполируется на Кнопку 7 в другом состоянии этого же диалога — само по себе это не очевидно.

Но вообще с этими PINNED хорошо бы разобраться. Из истории с вышеупомянутым багом видно, что ДК и ДЯ — взаимозависимы, по факту это вообще один и тот же диалог, только видимость некоторых элементов различается. Если я пришпилил ДК, а затем сразу же вызвал ДЯ, то у меня и ДЯ тоже отобразится пришпиленным. Такие вот дела.

Ну, и в 64-бит настройки для DIALOG_COPYMOVE_PINNED не работают. Кажется работали некоторое время назад. Кажется работали до того, как вы сделали отрисовку (такую замечательную) иконок для маврофильного режима. Точно я не уверен, но помню что я тогда по-всякому тестировал свой код для ДК и всё везде работало. Мне дополнительные тесты предпринимать или вы уже сами увидели?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

jentoso
Ок, смог повторить на наборе из последней ссылки в этой теме. Буду смотреть.
yozhik писал(а): Беда то в том, что при введении отдельного обработчика для диалога ярлыков (ДЯ) он наследует настройки PINNED из предыдущего обработчика, т.е. из диалога копирования (ДК).
Теперь всё ясно. Дело в том, что DIALOG_COPYMOVE используется только для диалога копирования. Он не просто заменяет класс, а включает дополнительную обработку диалога, которая для диалога ярлыков неприменима.

Код должен быть примерно такой:

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

AddDialog DIALOG_COPYMOVE
AddCondition /VISIBLE:1 "TButton" 1
AddControl "TButton" 2 "A2"
AddControl "TButton" 3 "A3"
AddControl "TButton" 4 "A4"
AddDialog DIALOG_COPYMOVE_PINNED
AddControl "TButton" 2 "A2P"
AddControl "TButton" 3 "A3P"
AddControl "TButton" 4 "A4P"

AddDialog "TInpComboDlg"
AddControl "TButton" 2 "B2"
AddControl "TButton" 3 "B3"
AddControl "TButton" 4 "B4"
Как быть с прикрепленным окном тут - не знаю. Хоть и старался сделать универсальное решение, каждый раз нововведения ломают уже сделанное и не всё можно исправить без каких-то совсем вычурных ходов.

Взять хотя бы историю с плавающими экземплярами в x64. Оказалось, что в момент, когда плагин выполняет работу и все контролы уже должны быть созданы (непосредственно перед отображением окна), оказалось, что скрытые контролы (те, которые под кнопкой Опции) еще не созданы! А создаются они с приличной задержкой (не менее 100мс) уже после отображения окна. Т.е. код плагина видит один набор контролов, а Au3Info - другой. Выглядит бредово, но вот так в лазарусе реализовано. И что тут можно сделать?

Так же и с прикрепленным диалогом. Ему потребовалась спецобработка, что уже плохо, но потом оно появилось и для ярлыков. И что теперь - делать еще одно исключение для диалога ярлыков?
yozhik писал(а):Но вообще с этими PINNED хорошо бы разобраться. Из истории с вышеупомянутым багом видно, что ДК и ДЯ — взаимозависимы, по факту это вообще один и тот же диалог, только видимость некоторых элементов различается. Если я пришпилил ДК, а затем сразу же вызвал ДЯ, то у меня и ДЯ тоже отобразится пришпиленным. Такие вот дела.
Хорошо бы, но пока я не знаю, как всё это нормально решить. Остается ждать озарения :D
yozhik писал(а):Ну, и в 64-бит настройки для DIALOG_COPYMOVE_PINNED не работают.
Да вроде код из этого поста - работает нормально.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Loopback писал(а):И что теперь - делать еще одно исключение для диалога ярлыков?
Нет, ничего не надо делать. Я попробую всё настроить стандартным путём AddDialog "TInpComboDlg" с перечислением фильтров и по результатам отчитаюсь. А потом уже будем ждать озарения :)
Loopback писал(а):Да вроде код из этого поста - работает нормально.
Ух, он и у меня работает! Значит что-то там вмешивается и скорее всего этот «что-то» и есть ДЯ. Попозже проверю, сообщу.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

jentoso
Оказался банальный копипаст-баг, вместо нужного имени сопутствующего .inc подставлялось "wcmicons.inc", в котором, разумеется, нет всех индексов.

Tweaks 2023-08-25
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Loopback
Это изменение в части отображения иконки к пользовательским командам?
Я приводил к использованию WCMICONS.dll (WCMICONS.INC), но как уже выше выяснили, что связка в INC-файлы em-команд со значками проблематична.
TC 11.58 combo, Windows 11 x64
Ответить