WDX и всплывающие подсказки

Только для тех, кто пишет плагины под Total Commander. Обмен опытом, решение проблем.

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

Ответить
HexTA
Сообщения: 2
Зарегистрирован: Чт авг 31, 2006 21:41
Откуда: Могилёв

WDX и всплывающие подсказки

Сообщение HexTA »

При написании своего WDX плагина возникла проблема:

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

Есть ли способ отображать многострочный текст в подсказках нормально? (TotalCmd v6.55)
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Пока нет. Возвращай несколько строк - юзер сам настроит подсказку.
HexTA
Сообщения: 2
Зарегистрирован: Чт авг 31, 2006 21:41
Откуда: Могилёв

Сообщение HexTA »

"Пока нет" - это значит, возможно будет в следующих версиях?
Жаль, хотелось красиво и сразу, ну и за это спасибо.
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

HexTA писал(а):"Пока нет" - это значит, возможно будет в следующих версиях?
Это просят периодически, но Гислер не отвечает. Может, будет, может, нет.
Oticon
Сообщения: 13
Зарегистрирован: Чт сен 21, 2006 21:32
Откуда: Харьков

Сообщение Oticon »

Столкнулся с похожей проблемой.
Кроме того в подсказке максимальная длина одного значения, возвращаемого плагином, ограничена 255 символами. Я не ошибаюсь?
А какой стандартный максимальный размер буфера для FieldValue ?
Где-нибудь это описано?
Я вышел на странное значение - 2308 байта. Больше начинаются глюки. Но для нормальной реализации поиска мне надо около 5000.
И за что отвечает maxlen? Это оно или нет?
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Oticon писал(а):И за что отвечает maxlen? Это оно или нет?
maxlen - это размер буфера, который выделен Тоталом под возвращаемые данные. Попытаешься забросить в буфер большее количество данных - будет переполнение, со всеми вытекающими.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Oticon
Сообщения: 13
Зарегистрирован: Чт сен 21, 2006 21:32
Откуда: Харьков

Сообщение Oticon »

Спасибо.

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

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

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

Прошу меня простить, возможно это глупые вопросы, но это мой первый плагин для тотала. И кроме того, где еще могут лучше всего ответить на этот вопрос как не тут.
Заранее спасибо.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Oticon писал(а):А будьте добры, объясните индейцу, как задается этот maxlen?
Его передаёт Тотал плагину, а не наоборот! :lol:
То есть, перед вызовом плагина Тотал выделяет у себя в памяти буфер, чтобы плагин мог в этот буфер что-то записать. И вызывает плагин, передавая ему адрес буфера и размер выделенного блока в качестве параметров, просто для того, чтобы плагин знал, сколько ему места отведено. Менять ни адрес, ни переданный maxlen нельзя! Это входные параметры (для плагина), а не выходные.
Oticon писал(а):И еще один вопрос, как правильно передать в FieldValue число типа Real?
Для вещественных значений интерфейс предусматривает тип ft_numeric_floating. Его надо вернуть для соответствующего поля в ContentGetSupportedField, а в ContentGetValue просто приводить указатель на FieldValue к указателю на нужный вещественный тип. К сожалению, я плохо помню паскалевские типы. В SDK плагина сказано, что для вещественных значений требуется использовать 64-битный тип, определённый ISO-стандартом. Не думаю, что Дельфи отклонился от стандарта в этой области, но какой из всех его вещественных типов является 64-битным, я не смогу так сходу сказать. Надо смотреть справочники.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Oticon
Сообщения: 13
Зарегистрирован: Чт сен 21, 2006 21:32
Откуда: Харьков

Сообщение Oticon »

С maxlen понятно, спасибо. Жаль что нельзя его увеличить - это сильно ограничивает.
А по поводу вещественных чисел, я наверно действительно по глупой привычке использовал 32 битный тип. Надо проверить, в ПН на работе посмотрю.
Сейчас еще поищу у вас исходники WDX-плагинов, себе для примеров, наверняка найду что-то для повышения опыта.
Где еще можно их найти?
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

На wincmd.ru полно исходников. Смотри, например:
AudioInfo
Chmdir (он спаренный - wCdx)
Exif
FileDescriptions
JpgComment (не помню, релизнули ли его уже на wincmd.ru или нет)
MP3Info
SuperWDX
xPDFSearch
Oticon
Сообщения: 13
Зарегистрирован: Чт сен 21, 2006 21:32
Откуда: Харьков

Сообщение Oticon »

Спасибо большое!!!
Из них я всего парочку смотрел, буду искать остальные.

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

Сообщение funduk »

СтОит выкладывать однозначно. Здесь много пользователей из Украины. А про требование - там только описание аддона надо придумать английское (а не локализовывать сам плагин). Напиши всё как есть и то, что это не для англоговорящих =)
Ответить