FIN — Fix Incorrect Names

Здесь можно обсудить ваш любимый плагин.
User avatar
Alexey Samlyukov
Posts: 1760
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 5 times
Contact:

Re: FIN — Fix Incorrect Names

Post by Alexey Samlyukov »

Latest post of the previous page:

когда писалось, за основу брался changelog. сейчас глянул код - для DN_GETDIALOGINFO оно не нужно.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Re: FIN — Fix Incorrect Names

Post by Skirda »

Так... разберемся.

DN_* - это фар говорит плагину "дядь, я тут немного диалог инициализирую, хочу у тебя инфу про гуид" (так как фар передает сцылку на свою переменную, то он ее нулями и забивает)
DM_* - а это кто угодно (фар, плагин) другому - "мужик, дай мне гуид вон того диалога, ась?" (как фар может проинициализировать переменную плагина?)
We are the Borg. You will be assimilated.
So Say We All!

User avatar
NightRoman
Posts: 5919
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: FIN — Fix Incorrect Names

Post by NightRoman »

оффтопик и немного критика, но...

Может было бы лучше и не вводить эту структуру вообще, надо получить туда\сюда гуид диалога, пусть бы были отдельные команда и сообщение отдельно для гуида, адрес которого передается (и это весьма принятая практика в АПИ Фара). Мелкая гранулярность данных позволяет получить ровно те данные, что нужны, это хорошо - проще АПИ (команд больше, правда), часто более эффективная работа (не обязательно всегда). Фару не надо отрабатывать все эти "версии" структур опять же.

Но я не предлагаю ломать для этого конкретного случая. Сделано, пусть будет. Может, на будущее, типа просьба..

Просто по опыту написания ООП оболочки вокруг Фар (Фарнет) могу сказать, что чем больше структуры несвязанных напрямую данных Фар использует для коммуникации, тем более громоздкая работа получается. Часто эти структуры Фар или плагин обязаны заполнять целиком только из одного реально требуемого данного (но неизвестно какого, конечно, поэтому целиком все и заполняется).

User avatar
DrKnS
Posts: 5480
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: FIN — Fix Incorrect Names

Post by DrKnS »

Так, проясняем.

StructSize всегда ставит тот, кто аллоцирует структуру, ибо только он знает её размер.

Соответственно, для DM ставит плагин, для DN - фар.

Везде, где надо - поправлено.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FIN — Fix Incorrect Names

Post by Тигрёнок »

DrKnS wrote:StructSize всегда ставит тот, кто аллоцирует структуру, ибо только он знает её размер.
Соответственно, для DM ставит плагин, для DN - фар.
Во! Теперь я всё понял. Спасибо!
DrKnS wrote:StructSize Везде, где надо - поправлено.
Радует и обнадёживает...
Съешь мыша – стань настоящим клавишником!

User avatar
NightRoman
Posts: 5919
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: FIN — Fix Incorrect Names

Post by NightRoman »

Соответственно, для DM ставит плагин, для DN - фар.
Хорошо, что разобрались.

Не совсем понятно, зачем это делает Фар в DN, какой практический смысл?

User avatar
chupakabra
Posts: 1023
Joined: Wed 27 Jul, 2005 19:36
Contact:

Re: FIN — Fix Incorrect Names

Post by chupakabra »

NightRoman wrote:Не совсем понятно, зачем это делает Фар в DN, какой практический смысл?
Чтобы плагин знал версию структуры?

User avatar
NightRoman
Posts: 5919
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: FIN — Fix Incorrect Names

Post by NightRoman »

chupakabra
Чтобы плагин мог быть совместим со старыми версиями Фара? Если да, то это не очень хороший дизайн. Во-первых, в принципе не хорошо, что плагин поставлен в такую ситуацию, в нормальном АПИ этого желательно избегать. Во-вторых, это решается обновлением Фара, что всегда возможно в отличие от обновления плагина, автор которого пропал или забил на плагин.

User avatar
DrKnS
Posts: 5480
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 272 times

Re: FIN — Fix Incorrect Names

Post by DrKnS »

Для единообразия.
Размер там без надобности, но структура используется одна и та же для ввода и для вывода, так что пусть уж лучше там будет что-то осмысленное.
Если применения ему не видишь - просто игнорируй его.

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: FIN — Fix Incorrect Names

Post by Shmuel »

Тигрёнок
Не могу понять по исходникам, почему плагин правильно работает с путём .. (две точки) при копировании и переносе, вроде как он эти точки удаляет? Просвети, пожалуйста.

User avatar
John Doe
Бюрократ
Posts: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

Re: FIN — Fix Incorrect Names

Post by John Doe »

Может исходники не самые свежие?

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FIN — Fix Incorrect Names

Post by Тигрёнок »

Shmuel wrote:Не могу понять по исходникам, почему плагин правильно работает с путём .. (две точки) при копировании и переносе, вроде как он эти точки удаляет? Просвети, пожалуйста.
Сам не знаю...
Там очевидная ошибка (мерси!), но если по DM_SETDLGITEM подаётся пустая строка, то оно просто не отрабатывается FAR'ом... Более того, если сделать несколько изменений, то в ответ на передачу после них пустой строки, они откатятся.
Съешь мыша – стань настоящим клавишником!

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: FIN — Fix Incorrect Names

Post by Shmuel »

Исходники - свежие. Поигрался сам, вот что заметил:

1. Если использовать DM_SETDLGITEM, как делает плагин, то почти всегда файл копируется/переносится в родительскую папку, несмотря на удаление точек. Но был один случай, когда поведение было ожидаемым - варнинг "Incorrect target list".

2. Если же использовать DM_SETTEXT - ничего не переносится/не копируется, выдаётся варнинг.

Так что похоже, что это Фар чудит (хотя в плагине ситуация с .. в конце имени тоже должна была бы особо обрабатываться).

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: FIN — Fix Incorrect Names

Post by Shmuel »

Ещё заметил, что это странное поведение DM_SETDLGITEM имеет место в диалогах CopyFilesId, HardSymLinkId, но не наблюдается в FileOpenCreateId, FileSaveAsId, MakeFolderId. Хотя возможно, что это просто игра случая.

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: FIN — Fix Incorrect Names

Post by Тигрёнок »

Shmuel wrote:в плагине ситуация с .. в конце имени тоже должна была бы особо обрабатываться
Это понятно. Тем более, что Path\.. сейчас превращается в просто Path, что вообще никуда не годится...
Однако непонятно, что делать. Во что уместно превращать, скажем, путь из трёх точек или две точки с пробелом в конце? Или просто выдавать предупреждение, ничего не делая?
Съешь мыша – стань настоящим клавишником!

User avatar
John Doe
Бюрократ
Posts: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

Re: FIN — Fix Incorrect Names

Post by John Doe »

Не стоит мудрить. Надо молча обрезать пока не останется ".."
Path\.. это кому вообще понадобиться такое?

Опционально можно сделать запрос на изменение.

Post Reply

Return to “Обсуждение плагинов”