View previous topic :: View next topic |
Author |
Message |
jentoso

Joined: 20 Dec 2007 Posts: 378
|
(Separately) Posted: Thu Aug 24, 2023 22:44 Post subject: |
|
|
Loopback
Да, версия по данной ссылке.
Пока тестирую на данной команде.
Code: | ControlSetMouseAction /M:U /B:1 17 ShowPopupMenu /A:16 %COMMANDER_PATH%\Language\HINTS.MNU |
Само содержание MNU примерно такое
Code: | 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.51 combo, Windows 10 x64 |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1533
|
(Separately) Posted: Thu Aug 24, 2023 23:54 Post subject: |
|
|
jentoso
А, вот в чем дело. Вообще-то .inc файл предназначен для маппинга значков внутренних команд для главного меню, поэтому плагин читает индексы из .inc только для cm-команд. Для em-команд значок должен прописываться в usercmd.ini (или Wcmd_XXX.ini), откуда их плагин и читает.
Прописывание в .inc <10000+индекс em-команды в меню>, если я правильно помню, недокументированная возможность. Да, она добавит значок в главное меню, но не ассоциирует его с em-командой. Добавление такой em-команды на панель инструментов не поставит правильный значок автоматически. Я бы сказал, что это не совсем корректное использование пользовательских команд. |
|
Back to top |
|
 |
jentoso

Joined: 20 Dec 2007 Posts: 378
|
(Separately) Posted: Fri Aug 25, 2023 00:05 Post subject: |
|
|
Loopback
Теперь понято в чем дело. Можно и без иконки в таком случае обойтись.
А почему не отображаются все стандартные иконки, которые в главном меню, если к примеру вызвать WCMD_EXT_RUS.MNU? _________________ TC 11.51 combo, Windows 10 x64 |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1533
|
(Separately) Posted: Fri Aug 25, 2023 00:27 Post subject: |
|
|
jentoso
Не знаю, нужны конкретные файлы, набором. Может парсер где-то неверно отрабатывает. Может значок не читается.
Попробовал скачать и проверить расширенное меню. Я не вижу разницы в значках между главным меню и меню выводимым плагином... Там где их нет, их нет и в главном меню. |
|
Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 257 Location: Электросталь
|
(Separately) Posted: Fri Aug 25, 2023 06:31 Post subject: |
|
|
Loopback
Кажется я отловил баг (только пока не понял где именно: у вас в коде или у себя в голове).
Следующим тестовым примером я хочу добиться, чтобы у меня:
- При вызове диалога копирования F5 на кнопках отображалось A2, A3, A4.
- При вызове диалога копирования F5 с пришпиленной доп-панелькой на кнопках отображалось A2P, A3P, A4P.
- При вызове диалога создания ярлыка CS+F5 на кнопках отображалось B2, B3, B4.
- При вызове диалога создания ярлыка CS+F5 с пришпиленной доп-панелькой на кнопках отображалось B2P, B3P, B4P.
 Тестовый пример Code: | 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" |
Но вместо желаемо-ожидаемого у меня A2..., A2P..., B2... отображаются, а B2P ни в какую. Обратите, пожалуйста, внимание на закомментированный AddCondition после DIALOG_COPYMOVE_PINNED: он не действует, что с ним, что без него, результат тот же.
Сейчас получается, что DIALOG_COPYMOVE_PINNED работает только в паре с DIALOG_COPYMOVE. Т.е. вот такая запись работает, отображается и A3, и A3P:
Code: | AddDialog DIALOG_COPYMOVE
AddControl "TButton" 3 "A3"
AddDialog DIALOG_COPYMOVE_PINNED
AddControl "TButton" 3 "A3P" |
А вот такая запись не работает, A3P не отображается:
Code: | AddDialog DIALOG_COPYMOVE_PINNED
AddControl "TButton" 3 "A3P" |
Добавлено:
Хм... А в 64-бит у меня DIALOG_COPYMOVE_PINNED вообще перестал работать. Ну, ладно, вначале с 32-бит бы разобраться. |
|
Back to top |
|
 |
jentoso

Joined: 20 Dec 2007 Posts: 378
|
(Separately) Posted: Fri Aug 25, 2023 10:28 Post subject: |
|
|
Loopback
Вот как отображается у меня
Если такое поведение только у меня, скорее всего это частный случай (особенность системы, наличие загруженных плагинов и т.д.), но в целом на работоспособность не влияет. _________________ TC 11.51 combo, Windows 10 x64 |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1533
|
(Separately) Posted: Fri Aug 25, 2023 13:01 Post subject: |
|
|
yozhik wrote: | При вызове диалога создания ярлыка CS+F5 на кнопках отображалось B2, B3, B4. |
Мы же отфильтровали диалог копирования, так что для этого диалога надо делать отдельный обработчик с помощью AddDialog.
yozhik wrote: | При вызове диалога создания ярлыка CS+F5 с пришпиленной доп-панелькой на кнопках отображалось B2P, B3P, B4P. |
Исключение для панельки реализовано только для диалога копирования...
Кстати, тут обнаружился интересный баг тотала: если диалог копирования стартует раскрытым (ключ ShowCopyOptions=1), то при открытии диалога создания ярлыка отсутствует кнопка "Опции".
yozhik wrote: | Сейчас получается, что DIALOG_COPYMOVE_PINNED работает только в паре с DIALOG_COPYMOVE. |
Всё верно, pinned и post зависимые, DIALOG_COPYMOVE всё равно должен быть объявлен. Фильтры для pinned и post не работают, фильтрация определяется настройками основного диалога (поскольку фактически для всех трех вариантов это остается один и тот же диалог). Пожалуй, это и правда недостаточно документированный момент.
jentoso
Не, ну так, разумеется, не должно быть. Хотелось бы понять, в чем тут дело. Похоже до сих пор никто с такой проблемой не сталкивался. |
|
Back to top |
|
 |
jentoso

Joined: 20 Dec 2007 Posts: 378
|
(Separately) Posted: Fri Aug 25, 2023 13:58 Post subject: |
|
|
Loopback
Оставил только плагин Autorun, чтобы исключить влияние других плагинов, но эффект с иконками не изменился.
Затем переименовал свой набор иконок WCMICONSFLAT.dll (WCMICONSFLAT.INC) в WCMICONS.dll (WCMICONS.INC), выбрал последний в качестве библиотеки по умолчанию и в итоге все иконки стали отображаться в PopupMenu, но за исключением пользовательских указанных в WCMICONS.INC. _________________ TC 11.51 combo, Windows 10 x64 |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Fri Aug 25, 2023 14:21 Post subject: |
|
|
jentoso
Неплохо для начала всё-таки однозначно понять, имеет ли проблема вообще отношение к плагину. Почитайте про порядок работы с библиотеками значков для меню в описании ключа DefaultLib здесь и оцените, всё ли правильно делаете и всё ли нормально отображается в главном меню БЕЗ плагина.
И поясните, пожалуйста, насчёт "пользовательских указанных в WCMICONS.INC". Пользовательские — это что? Связки с командами значков, добавленные пользователем для встроенных команд (cm_), НИЧЕМ не должны функционально отличаться в этом INC-файле от стандартных связок. Если данная библиотека вообще загружается, а не отвергается с использование вместо неё библиотеки по умолчанию.
Loopback
Добавление в INC-файлы связок em-команд со значками действительно не документировано, а на практике создаёт массу проблем. Начиная с того, что числовой идентификатор такой команде присваивается не статический, а по факту динамический, зависящий ТОЛЬКО от порядкового номера данной пользовательской команды среди прочих аналогичных команд данного MNU-файла. Сбить эти настройки проще простого. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
jentoso

Joined: 20 Dec 2007 Posts: 378
|
(Separately) Posted: Fri Aug 25, 2023 15:03 Post subject: |
|
|
Avada
По поводу иконок, правильнее будет сказано это иконки пользовательских команд в главном меню.
Иконки были присвоены для em-команд, чтобы ничего лишнего не происходило при их нажатии (просто памятки для горячих клавиш).
Учитывая, что с отображением всех стандартных иконок в Popupmenu разобрался, а связка в INC-файлы em-команд со значками не документировано и создаем массу проблем, наверно стоит на этом и завершить. _________________ TC 11.51 combo, Windows 10 x64 |
|
Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 257 Location: Электросталь
|
(Separately) Posted: Fri Aug 25, 2023 16:19 Post subject: |
|
|
Loopback wrote: | Мы же отфильтровали диалог копирования, так что для этого диалога надо делать отдельный обработчик с помощью AddDialog. |
Верно. Я так и сделал в тестовом примере и оно благополучно работает: надписи B2, B3, B4 отображаются.
Loopback wrote: | Исключение для панельки реализовано только для диалога копирования... |
А, теперь понятно. Это как раз у меня и вызвало когнитивный диссонанс (баг в моей голове, как я выразился). Беда то в том, что при введении отдельного обработчика для диалога ярлыков (ДЯ) он наследует настройки PINNED из предыдущего обработчика, т.е. из диалога копирования (ДК). В тестовом примере не только не отображаются B3P, B4P, но вместо них отображаются A3P, A4P — в этом казус (прошу пардону, видимо мне надо было это дословно отрапортовать, но я понадеялся, что вы мой тест у себя воспроизведёте). В реальном же окружении это приводит к тому, что если я настроил ДК, то мне ДЯ лучше вообще не трогать, ибо если я его трону, то он у меня в PINNED состоянии станет вот таким:
И никак евонный PINNED не исправить, единственный выход — это отказаться от настройки ДЯ.
Loopback wrote: | Кстати, тут обнаружился интересный баг тотала |
Я его уже зарепортил, и Гислер его уже исправил. Обновитесь, пожалуйста, до TC 11.01RC1 . Loopback wrote: | Фильтры для pinned и post не работают, фильтрация определяется... Пожалуй, это и правда недостаточно документированный момент. |
Вот, вот, очень хорошо было бы прояснить как именно в этом случае работает фильтрация для PINNED. Что определяет границы действия фильтра: следующий вызов AddDialog или вызов AddDialog без PINNED? И вообще не всякий случай очевиден. Вот например, в 64-бит в ДК кнопка «F2 В очередь» это Button 2, а в ДК PINNED она уже Button 7. Хорошо бы юзеру быть уверенным, что когда он настроил Кнопку 2 в одном состоянии диалога, эта настройка экстраполируется на Кнопку 7 в другом состоянии этого же диалога — само по себе это не очевидно.
Но вообще с этими PINNED хорошо бы разобраться. Из истории с вышеупомянутым багом видно, что ДК и ДЯ — взаимозависимы, по факту это вообще один и тот же диалог, только видимость некоторых элементов различается. Если я пришпилил ДК, а затем сразу же вызвал ДЯ, то у меня и ДЯ тоже отобразится пришпиленным. Такие вот дела.
Ну, и в 64-бит настройки для DIALOG_COPYMOVE_PINNED не работают. Кажется работали некоторое время назад. Кажется работали до того, как вы сделали отрисовку (такую замечательную) иконок для маврофильного режима. Точно я не уверен, но помню что я тогда по-всякому тестировал свой код для ДК и всё везде работало. Мне дополнительные тесты предпринимать или вы уже сами увидели? |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1533
|
(Separately) Posted: Fri Aug 25, 2023 17:44 Post subject: |
|
|
jentoso
Ок, смог повторить на наборе из последней ссылки в этой теме. Буду смотреть.
yozhik wrote: | Беда то в том, что при введении отдельного обработчика для диалога ярлыков (ДЯ) он наследует настройки PINNED из предыдущего обработчика, т.е. из диалога копирования (ДК). |
Теперь всё ясно. Дело в том, что DIALOG_COPYMOVE используется только для диалога копирования. Он не просто заменяет класс, а включает дополнительную обработку диалога, которая для диалога ярлыков неприменима.
Код должен быть примерно такой:
Code: | 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 wrote: | Но вообще с этими PINNED хорошо бы разобраться. Из истории с вышеупомянутым багом видно, что ДК и ДЯ — взаимозависимы, по факту это вообще один и тот же диалог, только видимость некоторых элементов различается. Если я пришпилил ДК, а затем сразу же вызвал ДЯ, то у меня и ДЯ тоже отобразится пришпиленным. Такие вот дела. |
Хорошо бы, но пока я не знаю, как всё это нормально решить. Остается ждать озарения
yozhik wrote: | Ну, и в 64-бит настройки для DIALOG_COPYMOVE_PINNED не работают. |
Да вроде код из этого поста - работает нормально. |
|
Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 257 Location: Электросталь
|
(Separately) Posted: Fri Aug 25, 2023 18:03 Post subject: |
|
|
Loopback wrote: | И что теперь - делать еще одно исключение для диалога ярлыков? |
Нет, ничего не надо делать. Я попробую всё настроить стандартным путём AddDialog "TInpComboDlg" с перечислением фильтров и по результатам отчитаюсь. А потом уже будем ждать озарения
Loopback wrote: | Да вроде код из этого поста - работает нормально. |
Ух, он и у меня работает! Значит что-то там вмешивается и скорее всего этот «что-то» и есть ДЯ. Попозже проверю, сообщу. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1533
|
(Separately) Posted: Fri Aug 25, 2023 23:15 Post subject: |
|
|
jentoso
Оказался банальный копипаст-баг, вместо нужного имени сопутствующего .inc подставлялось "wcmicons.inc", в котором, разумеется, нет всех индексов.
Tweaks 2023-08-25 |
|
Back to top |
|
 |
jentoso

Joined: 20 Dec 2007 Posts: 378
|
(Separately) Posted: Fri Aug 25, 2023 23:26 Post subject: |
|
|
Loopback
Это изменение в части отображения иконки к пользовательским командам?
Я приводил к использованию WCMICONS.dll (WCMICONS.INC), но как уже выше выяснили, что связка в INC-файлы em-команд со значками проблематична. _________________ TC 11.51 combo, Windows 10 x64 |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|