SetDirectoryInfo::UserData

Разработка Far.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: SetDirectoryInfo::UserData

Post by Skirda »

Latest post of the previous page:

Проблема в том, что Far "юзает" SetDirectoryInfo в терминах "имени"...
Хмм... есть пара идей. Начнем вот с этого патча:
Attachments
!setdir.diff.7z
(796 Bytes) Downloaded 118 times
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: SetDirectoryInfo::UserData

Post by NightRoman »

А в базу его нельзя? Или он слишком экспериментальный?
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: SetDirectoryInfo::UserData

Post by NightRoman »

Skirda
Я сейчас на машине, не готовой к сборке Фара из исходников. Но могу потестировать, если прикрепишь собранный экзешник Фара с минимальным набором файлов (лнг, вроде). Или в личку, чтоб тут не мусорить. Хотя, может, и еще кто соберется потестить.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: SetDirectoryInfo::UserData

Post by Skirda »

Посмотрел код и пришел к выводу, что для Поисковика без переделки АПИ-структуры 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: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg »

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: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: SetDirectoryInfo::UserData

Post by Skirda »

Перечитай, что я выше написал (hint: strSaveDir)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg »

Skirda wrote:Перечитай, что я выше написал (hint: strSaveDir)
добавить OPIF_USERDATA и struct UserData в OpenPanelInfo. ну или без флага, но занулять OpenPanelInfo в Plugin::GetOpenPanelInfo. даже наверное лучше без флага.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg »

а почему UserData.Data передаётся, а UserData.FreeData нет? смысл теряется ж.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

SetDirectoryInfo::UserData

Post by Skirda »

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: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg »

Skirda wrote:ФАР в этом случае будет ожидать в UserData данные для CurDir? (по аналогии с PluginPanelItem)
да.
Skirda wrote:Ломаем" АПИ?
такой необходимости нет.
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: SetDirectoryInfo::UserData

Post by NightRoman »

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: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: SetDirectoryInfo::UserData

Post by Skirda »

zg wrote:
Skirda wrote:Ломаем" АПИ?
такой необходимости нет.
Как бы слом не предвидится.
Hint
We are the Borg. You will be assimilated.
So Say We All!
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Re: SetDirectoryInfo::UserData

Post by zg »

Skirda wrote:Как бы слом не предвидится.
именно на этот очевидный вариант я и «намекал».
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 5 times

Re: SetDirectoryInfo::UserData

Post by Skirda »

В общем что-то вот такое получилось - тыч.
Изменения в АПИ, согласно поста выше (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: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: SetDirectoryInfo::UserData

Post by NightRoman »

Проверяю.
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: SetDirectoryInfo::UserData

Post by NightRoman »

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

Return to “Development”