SetDirectoryInfo::UserData

Разработка Far.
User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: SetDirectoryInfo::UserData

Post by NightRoman » Tue 18 Dec, 2012 16:12

Latest post of the previous page:

Skirda
Я сейчас на машине, не готовой к сборке Фара из исходников. Но могу потестировать, если прикрепишь собранный экзешник Фара с минимальным набором файлов (лнг, вроде). Или в личку, чтоб тут не мусорить. Хотя, может, и еще кто соберется потестить.

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

Re: SetDirectoryInfo::UserData

Post by Skirda » Wed 19 Dec, 2012 09:33

Посмотрел код и пришел к выводу, что для Поисковика без переделки АПИ-структуры OpenPanelInfo не обойтись, т.к...
Рассмотрим FindFiles::GetPluginFile. Здесь есть:

Code: Select all

  OpenPanelInfo Info;
  Global->CtrlObject->Plugins->GetOpenPanelInfo(ArcItem.hPlugin,&Info);
  string strSaveDir = NullToEmpty(Info.CurDir);
  ...
1)  SetPluginDirectory(FindData.strFileName,ArcItem.hPlugin);
  ...
2)  SetPluginDirectory(strSaveDir,ArcItem.hPlugin);
  ...
Если в (1) еще можно организовать передачу UserData, то вот для (2)... тоже можно, но только если "найти этот элемент панели" по имени, что не есть гуд.

Не для Поисковика - переделки только внутренние, АПИ не затрагивают.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg » Wed 19 Dec, 2012 17:02

FindFiles::GetPluginFile зовётся из одного места:

Code: Select all

bool bGet=GetPluginFile(FindItem.ArcIndex,FindItem.FindData,strTempDir,strSearchFileName);
FindItem.Data в этой точке содержит UserData.Data, FindItem.FreeData — UserData.FreeData.
в чём проблема передать?

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

Re: SetDirectoryInfo::UserData

Post by Skirda » Wed 19 Dec, 2012 17:12

Перечитай, что я выше написал (hint: strSaveDir)
We are the Borg. You will be assimilated.
So Say We All!

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg » Wed 19 Dec, 2012 17:19

Skirda wrote:Перечитай, что я выше написал (hint: strSaveDir)
добавить OPIF_USERDATA и struct UserData в OpenPanelInfo. ну или без флага, но занулять OpenPanelInfo в Plugin::GetOpenPanelInfo. даже наверное лучше без флага.

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg » Wed 19 Dec, 2012 17:24

а почему UserData.Data передаётся, а UserData.FreeData нет? смысл теряется ж.

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

SetDirectoryInfo::UserData

Post by Skirda » Wed 19 Dec, 2012 17:33

zg wrote:добавить OPIF_USERDATA и struct UserData в OpenPanelInfo.
ФАР в этом случае будет ожидать в UserData данные для CurDir? (по аналогии с PluginPanelItem)
zg wrote:а почему UserData.Data передаётся, а UserData.FreeData нет? смысл теряется ж.
ХЗ.

We are the Borg. You will be assimilated.
So Say We All!

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg » Wed 19 Dec, 2012 17:56

Skirda wrote:ФАР в этом случае будет ожидать в UserData данные для CurDir? (по аналогии с PluginPanelItem)
да.
Skirda wrote:Ломаем" АПИ?
такой необходимости нет.

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

Re: SetDirectoryInfo::UserData

Post by NightRoman » Thu 20 Dec, 2012 02:05

svs 19.12.2012 13:13:17 +0400 - build 3033

1. Mantis#0002207: SetDirectoryW() всегда передает в поле SetDirectoryInfo->UserData NULL
Продолжаем. Переделан механизм - ищем UserData не по имени, а берем из конкретного элемента панели.
Поисковик по прежнему отдает NULL.
Мои тесты отработали все. Это очень хороший знак. Но раз "Поисковик по прежнему отдает NULL.", то новый SetDirectoryW у меня используется только в режиме без поиска (раньше использовался воркэраунд с получением текущего элемента). Как будут подвижки с поиском, продолжу тестирование и, наверное, допишу новые тесты, так как функциональность существенно расширится. А пока режим родного Фар-поиска в панелях Фарнет отключен, используется свой поиск, но он не может 100% заменить родной (всякие F3, CtrlQ не работают на папках).

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

Re: SetDirectoryInfo::UserData

Post by Skirda » Thu 20 Dec, 2012 13:13

zg wrote:
Skirda wrote:Ломаем" АПИ?
такой необходимости нет.
Как бы слом не предвидится.
Hint
We are the Borg. You will be assimilated.
So Say We All!

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg » Thu 20 Dec, 2012 21:58

Skirda wrote:Как бы слом не предвидится.
именно на этот очевидный вариант я и «намекал».

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

Re: SetDirectoryInfo::UserData

Post by Skirda » Fri 21 Dec, 2012 08:38

В общем что-то вот такое получилось - тыч.
Изменения в АПИ, согласно поста выше (plugin.hpp приложен)
Осталось два непонятных момента
1) с GetPluginDirList, когда плагин просит инфу "вот по этому каталогу вон с той панели". Т.е. опять упираемся в "Имя", а не в конкретный элемент. Пока здесь передается {0,0} в качестве UserData.
2) Пока FreeData в качестве балласта - т.е. не вызывается. Нужно более конкретно смотреть все места :oops:

NightRoman, попробуй на этом тестовом билде (с учетом изменения АПИ), в т.ч. и в поисковике, если FAR не упадет - закоммичу :) (за это время просмотрю код на предмет FreeData).
We are the Borg. You will be assimilated.
So Say We All!

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

Re: SetDirectoryInfo::UserData

Post by NightRoman » Fri 21 Dec, 2012 13:44

Проверяю.

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

Re: SetDirectoryInfo::UserData

Post by NightRoman » Fri 21 Dec, 2012 13:56

Без поиска все тесты отработали. Это уже хорошо. С поиском тестов нет, естественно, так как он был сознательно вырублен. Сейчас что-нибудь руками попробую потестировать, если найдутся подходящие панели и данные.

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

Re: SetDirectoryInfo::UserData

Post by NightRoman » Fri 21 Dec, 2012 14:11

Глянул в панели и глянул в код. Вероятно, поисковик быстро попробовать не могу. Код Фарнет панелей сейчас слишком повязан на то, что родного поиска не было, надо дорабатывать без суеты и смотреть, что получится. Так что пробовать пока можно на любой плагиновой панели с поиском (на падения, не на новую функциональность, конечно). А я буду думать, как доработать панели Фарнет для нового поиска, тогда и видно будет, работает или нет.

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

Re: SetDirectoryInfo::UserData

Post by Skirda » Fri 21 Dec, 2012 14:19

Надо определиться и с FreeData.
Когда он должен зваться?
We are the Borg. You will be assimilated.
So Say We All!

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

Re: SetDirectoryInfo::UserData

Post by NightRoman » Fri 21 Dec, 2012 14:20

Когда файл плагина гарантированно больше не будет использоваться Фаром.

Post Reply

Return to “Development”

Who is online

Users browsing this forum: No registered users and 2 guests