WDX и всплывающие подсказки
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Написание плагинов для Total Commander

#1: WDX и всплывающие подсказки Author: HexTALocation: Могилёв PostPosted: Thu Aug 31, 2006 22:22
    —
При написании своего WDX плагина возникла проблема:

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

Есть ли способ отображать многострочный текст в подсказках нормально? (TotalCmd v6.55)

#2:  Author: fundukLocation: Санкт-Петербург PostPosted: Thu Aug 31, 2006 22:49
    —
Пока нет. Возвращай несколько строк - юзер сам настроит подсказку.

#3:  Author: HexTALocation: Могилёв PostPosted: Fri Sep 01, 2006 09:43
    —
"Пока нет" - это значит, возможно будет в следующих версиях?
Жаль, хотелось красиво и сразу, ну и за это спасибо.

#4:  Author: fundukLocation: Санкт-Петербург PostPosted: Fri Sep 01, 2006 15:12
    —
HexTA wrote:
"Пока нет" - это значит, возможно будет в следующих версиях?
Это просят периодически, но Гислер не отвечает. Может, будет, может, нет.

#5:  Author: OticonLocation: Харьков PostPosted: Thu Sep 21, 2006 21:44
    —
Столкнулся с похожей проблемой.
Кроме того в подсказке максимальная длина одного значения, возвращаемого плагином, ограничена 255 символами. Я не ошибаюсь?
А какой стандартный максимальный размер буфера для FieldValue ?
Где-нибудь это описано?
Я вышел на странное значение - 2308 байта. Больше начинаются глюки. Но для нормальной реализации поиска мне надо около 5000.
И за что отвечает maxlen? Это оно или нет?

#6:  Author: CaptainFlintLocation: Москва PostPosted: Thu Sep 21, 2006 22:50
    —
Oticon wrote:
И за что отвечает maxlen? Это оно или нет?

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

#7:  Author: OticonLocation: Харьков PostPosted: Fri Sep 22, 2006 20:22
    —
Спасибо.

А будьте добры, объясните индейцу, как задается этот maxlen?
Только для всей ветви (в функции ContentGetSupportedField) или можно для каждого подпункта его задавать (в функции ContentGetValue)? Как правильно?
У меня не получается его передать. Как правильно это сделать?
Pinteger(maxlen)^ := X
Или я просто не там его передаю?

И еще один вопрос, как правильно передать в FieldValue число типа Real? Очень нужно для правильной сортировки, иначе я мог бы просто вывести его как String.
Как передавать строку или целое понятно (Pinteger и StrCopy). С Real по аналогии не получается.

Естественно, все сказанное относится к Delphi.

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

#8:  Author: CaptainFlintLocation: Москва PostPosted: Fri Sep 22, 2006 20:35
    —
Oticon wrote:
А будьте добры, объясните индейцу, как задается этот maxlen?

Его передаёт Тотал плагину, а не наоборот! Laughing
То есть, перед вызовом плагина Тотал выделяет у себя в памяти буфер, чтобы плагин мог в этот буфер что-то записать. И вызывает плагин, передавая ему адрес буфера и размер выделенного блока в качестве параметров, просто для того, чтобы плагин знал, сколько ему места отведено. Менять ни адрес, ни переданный maxlen нельзя! Это входные параметры (для плагина), а не выходные.

Oticon wrote:
И еще один вопрос, как правильно передать в FieldValue число типа Real?

Для вещественных значений интерфейс предусматривает тип ft_numeric_floating. Его надо вернуть для соответствующего поля в ContentGetSupportedField, а в ContentGetValue просто приводить указатель на FieldValue к указателю на нужный вещественный тип. К сожалению, я плохо помню паскалевские типы. В SDK плагина сказано, что для вещественных значений требуется использовать 64-битный тип, определённый ISO-стандартом. Не думаю, что Дельфи отклонился от стандарта в этой области, но какой из всех его вещественных типов является 64-битным, я не смогу так сходу сказать. Надо смотреть справочники.

#9:  Author: OticonLocation: Харьков PostPosted: Fri Sep 22, 2006 20:48
    —
С maxlen понятно, спасибо. Жаль что нельзя его увеличить - это сильно ограничивает.
А по поводу вещественных чисел, я наверно действительно по глупой привычке использовал 32 битный тип. Надо проверить, в ПН на работе посмотрю.
Сейчас еще поищу у вас исходники WDX-плагинов, себе для примеров, наверняка найду что-то для повышения опыта.
Где еще можно их найти?

#10:  Author: fundukLocation: Санкт-Петербург PostPosted: Fri Sep 22, 2006 20:53
    —
На wincmd.ru полно исходников. Смотри, например:
AudioInfo
Chmdir (он спаренный - wCdx)
Exif
FileDescriptions
JpgComment (не помню, релизнули ли его уже на wincmd.ru или нет)
MP3Info
SuperWDX
xPDFSearch

#11:  Author: OticonLocation: Харьков PostPosted: Fri Sep 22, 2006 21:10
    —
Спасибо большое!!!
Из них я всего парочку смотрел, буду искать остальные.

А стоит ли выкладывать мой плагин на wincmd.ru.
Это уже не первая версия, просто решил кое-чего добавить и исправить ошибки.
Дело в том, что плагин используется для показа информации о файлах in4.
Это - "файлу обміну даними результатів землевпорядних робіт в електронному вигляді" (цитата).Используются, наверно, только в Украине, но могут быть востребованы и в России или других странах СНГ (возможно, в несколько изменненом виде).
По-этому переводить его на английский язык не имеет смысла.
Помнится, это одно из требований.
По сути - текстовый файл, чем-то сродни XML, с довольно сложной структурой и МНОЖЕСТВОМ ньюансов.

#12:  Author: fundukLocation: Санкт-Петербург PostPosted: Fri Sep 22, 2006 21:27
    —
СтОит выкладывать однозначно. Здесь много пользователей из Украины. А про требование - там только описание аддона надо придумать английское (а не локализовывать сам плагин). Напиши всё как есть и то, что это не для англоговорящих =)



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group