Нюансы обрамления текстов кнопок диалогов скобками

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Нюансы обрамления текстов кнопок диалогов скобками

Post by NightRoman »

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

При создании диалога с кнопками тексты кнопок заданы так:

Code: Select all

'Done' '&Fail' 'T&est' 'L&ist' 'More' 'Exit'
, где первая кнопка - дефолтная.

Запускаем диалог и видим следующее (что абсолютно ОК):

Code: Select all

{ Done } [ Fail ] [ Test ] [ List ] [ More ] [ Exit ]
Теперь, пока диалог открыт, запрашиваем у кнопок текст через АПИ, получаем такие тексты кнопок:

Code: Select all

'{ Done }' '[ &Fail ]' '[ T&est ]' '[ L&ist ]' '[ More ]' '[ E&xit ]'
Это OK или логическая "нестыковка"? Это ведь не те тексты кнопок, что были заданы при создании диалога, а обрабленные скобками, причем, разными. Это нормально?

Далее, в моем случае это все делается, чтобы по заданному любому диалогу динамически сгенерить PSF скрипт создания шаблона такого диалога. В скрипте для кнопок используется тот текст, что взяли из АПИ (с "нестыковкой"). То есть сгенерированный скрипт создает кнопки с такими текстами, которые получил при генерации:

Code: Select all

'{ Done }' '[ &Fail ]' '[ T&est ]' '[ L&ist ]' '[ More ]' '[ E&xit ]'
При этом сначала, допустим, забыли указать, что первая кнопка дефолтная. Получаем такие кнопки в запускаемом диалоге:

Code: Select all

[ { Done } ] [ Fail ] [ Test ] [ List ] [ More ] [ Exit ]
1 артифакт:
[ { Done } ]

Потом по ошибке указали не первую, а вторую. Получаем такие кнопки:

Code: Select all

[ { Done } ] { [ Fail ] } [ Test ] [ List ] [ More ] [ Exit ]
2 артифакта:
[ { Done } ] { [ Fail ] }

Но если указали первую кнопку дефолтной, то все получаем правильно (то есть про 2 случая можно сказать "сам дурак", конечно):

Code: Select all

{ Done } [ Fail ] [ Test ] [ List ] [ More ] [ Exit ]
Вобщем, определенный ИИ тут применяется. Получается, что движок в определенных ситуациях пытается понять, добавлять или не добавлять фигурные или квадратные скобки. Насколько это гладко делается - не берусь судить, некоторые эффекты просто описаны. Разработчикам на заметку.

Возможно, было бы меньше тонкостей и двусмысленностей, если бы АПИ возвращал тексты кнопок именно такими, какими их создал плагин, а не обрабленными разными скобками в зависимости от дефолтности.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Нюансы обрамления текстов кнопок диалогов скобками

Post by DrKnS »

Возможно, было бы меньше тонкостей и двусмысленностей, если бы АПИ возвращал тексты кнопок именно такими, какими их создал плагин
API - понятие растяжимое. Тексты кнопок можно получать как минимум двумя способами, и как минимум в одном из них скобки точно фильтруются.

Что имеется в виду?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Нюансы обрамления текстов кнопок диалогов скобками

Post by NightRoman »

Ага. Я такой использую - DM_GETCONSTTEXTPTR по индексу кнопки, как элемента диалога. Про другой не знаю, что за способ? Возможно, он и решит все нюансы.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Нюансы обрамления текстов кнопок диалогов скобками

Post by NightRoman »

как минимум в одном из них скобки точно фильтруются
Какой? Если не помнишь, то не надо искать, конечно, сам займусь.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Нюансы обрамления текстов кнопок диалогов скобками

Post by DrKnS »

DM_GETCONSTTEXTPTR по индексу кнопки
Ну вот, даже тремя уже )
что за способ?
DM_GETTEXT[PTR]
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: Нюансы обрамления текстов кнопок диалогов скобками

Post by Alexey Samlyukov »

DM_GETCONSTTEXTPTR - в писании же написано для каких элементов он актуален.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Нюансы обрамления текстов кнопок диалогов скобками

Post by NightRoman »

Alexey Samlyukov wrote:DM_GETCONSTTEXTPTR - в писании же написано для каких элементов он актуален.
Вижу, вижу. Но поди разберись, что было в писании несколько лет назад, когда это было заюзано.

Но факт, фактом - оно работает для кнопок тоже. Что возвращает только не ясно. С одной стороны физический текст в данный момент (скобки включены в него), с другой стороны логический текст плагина (хоткейные амперсенды тоже включены). Просто раз оно работает, может-таки пусть и работает, только осмысленно и документированно? Например, документируем - дает и скобки, и амперсенды. Все понятно. Надо такое - пользуй, не надо - пользуй другое.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Нюансы обрамления текстов кнопок диалогов скобками

Post by NightRoman »

DM_GETTEXTPTR сработал, как надо. Спасибо.

Ну а с ИИ по "одеванию" скобок, если уж на вход идут тексты кнопок уже со скобками - смотрите, если что. Как-то странно оно работает. В принципе можно было бы вообще ничего не делать, у кнопок же флаг есть одевать или не одевать. Просят одевать скобки, так и одевать всегда. Не просят - не одевать никогда.
Post Reply

Return to “Разработка плагинов”