Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Использование контентных функций в wfx-плагине

 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
vlarx



Joined: 22 Oct 2009
Posts: 5

Post (Separately) Posted: Thu Oct 22, 2009 17:39    Post subject: Использование контентных функций в wfx-плагине Reply with quote

Привет всем!!
Только начал осваивать написание плагинов для TC, пишу wfx на Delphi. С основными функциями разобрался, с контентными функциями никак не получается..

Нужные мне колонки настроил функцией FsContentGetDefaultView - отображаются нормально.
Как я понял, значения для файлов в этих колонках должны передаваться Коммандеру функцией FsContentGetValue. FsContentGetSupportedField и FsContentGetValue описал и экспортировал, но они не вызываются Коммандером при просмотре моих файлов в wfx-плагине.
Помогите найти грабли.. Smile
Back to top
View user's profile Send private message
vlarx



Joined: 22 Oct 2009
Posts: 5

Post (Separately) Posted: Thu Oct 22, 2009 17:43    Post subject: Reply with quote

P.S. Коммандер: Total Commander 7.50a
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Thu Oct 22, 2009 18:29    Post subject: Reply with quote

Показывай исходник, телепатическая машинка в ремонте у меня.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
vlarx



Joined: 22 Oct 2009
Posts: 5

Post (Separately) Posted: Fri Oct 23, 2009 08:38    Post subject: Reply with quote

Code:

function FsContentGetSupportedField(FieldIndex:integer;FieldName,Units:pchar; maxlen:integer):integer; stdcall;
begin
  MessageBoxA(0, PChar('Test FsContentGetSupportedField'), '', 0);
  Units[0]:=#0;
  if (FieldIndex<0) or (FieldIndex>=2) then begin
    Result:=FT_NOMOREFIELDS;
    Exit;
  end;
  StrLCopy(FieldName, _Fields[FieldIndex], MaxLen);
  Result:=ft_string;
end;

function FsContentGetValue(fn: pchar; FieldIndex, UnitIndex: integer;
  FieldValue: PChar; maxlen, flags: integer): integer; stdcall;
begin
  MessageBoxA(0, PChar('Test FsContentGetValue'), '', 0);
  case FieldIndex of
     0: StrLCopy(FieldValue, PChar('Test 1'), MaxLen);
     1: StrLCopy(FieldValue, PChar('Test 2'), MaxLen);
  end;
  if (Result=FT_STRING) and (lstrlen(FieldValue)=0) then
    Result:= FT_FIELDEMPTY;
end;

function FsContentGetDefaultView(ViewContents,ViewHeaders,ViewWidths,
  ViewOptions:pchar;maxlen:integer):bool; stdcall;
begin
  result:=true;
  StrPCopy(ViewContents,'[fs.'+_Fields[0]+']\n[fs.'+_Fields[1]+']');
  StrPCopy(ViewHeaders,_Fields[0]+'\n'+_Fields[1]);
  StrPCopy(ViewWidths,'100,25,75,85');
end;

//..

exports
      FsContentGetDefaultView,
      FsContentGetSupportedField,
      FsContentGetValue,
      FsInit,
      FsFindFirst,
      FsFindNext,
      FsGetDefRootName,
      FsFindClose;


FsContentGetDefaultView отрабатывает нормально, показывая то, что мне нужно.
Сообщений "Test FsContentGetSupportedField" и "Test FsContentGetValue" не появляется при показе папок и файлов в плагине. При каком событии или условии Коммандер должен вызывать эти функции?
Может что-то специальное нужно указать в FsFindFirst, FsFindNext?
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Oct 23, 2009 10:02    Post subject: Reply with quote

Этот код работает, нужные вызовы делаются. Справку сейчас посмотреть не могу (она в неподдерживаемых семёркой hlp-файлах), потому предлагаю сделать вот что: взять исходники TWinamp (http://wincmd.ru/plugring/TWinAmp3.html) и начать сравнивать вызовы функций.
По крайней мере я так и сделал - заменил функции в TWinamp твоим кодом (с некоторой подгонкой, естественно), всё заработало с первого раза.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
vlarx



Joined: 22 Oct 2009
Posts: 5

Post (Separately) Posted: Fri Oct 23, 2009 10:16    Post subject: Reply with quote

Спасибо, щас буду пробовать...
Back to top
View user's profile Send private message
vlarx



Joined: 22 Oct 2009
Posts: 5

Post (Separately) Posted: Fri Oct 23, 2009 11:11    Post subject: Reply with quote

Всё, грабли нашёл!
Тут я немного слукавил, написав в функции FsContentGetDefaultView
Code:
StrPCopy(ViewContents,'[fs.'+_Fields[0]+']\n[fs.'+_Fields[1]+']');

На самом деле вместо fs у меня было имя моего плагина, вот фукнкции, видимо, и не вызывались... В справке этот момент приводится как пример, особого внимания не уделяется...

Щас нужные функции вызываются... Very Happy
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group