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 Вызов функций TC изнутри

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



Joined: 25 May 2011
Posts: 4
Location: Беларусь, Гомель

Post (Separately) Posted: Wed May 25, 2011 13:58    Post subject: WFX Вызов функций TC изнутри Reply with quote

Пишу FS-плагин.
Есть ли возможность:
1. обрабатывать в плагине нажатие F3, F4, F9 ?
2. использовать для внутреннего копирования функции самого TC ? (пример: файл плагина - это реальный файл на винте, и при желании его можно куда-нибудь скопировать или перенести).

P.S. Поиск тут ничего не нашёл, FsLinksToLocalFiles/FsGetLocalName попробовал - не работает.
_________________
Praemonitus praemunitus
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed May 25, 2011 15:16    Post subject: Reply with quote

Обрабатывать нажатия клавиш в плагине нельзя (разве что хуками и прочей низкоуровневой ерундой).

По нажатию F3/F4 тотал обычно извлекает файл во временную папку и открывает в листере/редакторе. По F8 (думаю, это подразумевалось, а не F9) тотал вызывает функцию плагина по удалению файла/папки. Если плагин скажет тоталу, что он - плагин временной панели, тотал будет спрашивать у плагина путь к физическому файлу вместо извлечения файла во временную папку.

Использовать функции тотала нельзя, никакой интерфейс для этого тотал не предоставляет (единственное, что предоставляет - это показ окон с полем ввода).
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KorneySan



Joined: 25 May 2011
Posts: 4
Location: Беларусь, Гомель

Post (Separately) Posted: Wed May 25, 2011 15:25    Post subject: Reply with quote

MVV wrote:
По F8 (думаю, это подразумевалось, а не F9) тотал вызывает функцию плагина по удалению файла/папки.

Я имел в виду именно F9, поскольку F8 у меня отлично заработала - после вопроса об удалении срабатывают все "вложенные" действия.
MVV wrote:
Если плагин скажет тоталу, что он - плагин временной панели, тотал будет спрашивать у плагина путь к физическому файлу вместо извлечения файла во временную папку.

Пробовал. В списке есть файлы типа .txt, которые, разумеется, должны были открыться. Однако на выходе получился пшик. ЧЯДНТ?
MVV wrote:
Использовать функции тотала нельзя, никакой интерфейс для этого тотал не предоставляет

Т.е. чтобы скопировать файл "из плагина, придётся реализовывать FsGetFile и остальной геморрой самостоятельно?

И ещё вопрос. Нашёл тут на форуме способ обновить панель через cm_RereadSource, однако и он не работает. В тоже время при "открытии" файла текст подтверждения указывает на то, что информация о файлах успешно обновилась. Почему же не обновилась панель?
_________________
Praemonitus praemunitus
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed May 25, 2011 15:53    Post subject: Reply with quote

Quote:
Я имел в виду именно F9

А что есть F9?

Quote:
Пробовал. В списке есть файлы типа .txt, которые, разумеется, должны были открыться.

Плагин точно экспортирует функции FsLinksToLocalFiles и FsGetLocalName?

Quote:
Т.е. чтобы скопировать файл "из плагина, придётся реализовывать FsGetFile и остальной геморрой самостоятельно?

И ещё вопрос. Нашёл тут на форуме способ обновить панель через cm_RereadSource, однако и он не работает. В тоже время при "открытии" файла текст подтверждения указывает на то, что информация о файлах успешно обновилась. Почему же не обновилась панель?

Придется. Тотал ведь не знает, какая файловая система у плагина.

При вызове cm_RereadSource какая панель активна? Обновляется только активная панель. И вообще, вызов этой команды приводит к куче неприятных моментов типа выхода из архивов.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
KorneySan



Joined: 25 May 2011
Posts: 4
Location: Беларусь, Гомель

Post (Separately) Posted: Wed May 25, 2011 16:16    Post subject: Reply with quote

MVV wrote:
А что есть F9?

ХЕЗ. Я думал, что есть реакция на Fx, так что вопрос закрыт.
MVV wrote:
Плагин точно экспортирует функции FsLinksToLocalFiles и FsGetLocalName?

Code:

function FsLinksToLocalFiles:bool; stdcall;
begin
 Result:=True;
end;

function FsGetLocalName(RemoteName:pchar;maxlen:integer):bool; stdcall;
 var
   fn, rn: String;
   i: Integer;
begin
 CS_GLN.Enter;
 fn:=StrPas(RemoteName);
 Delete(fn, 1, 1);
 i:=DataIndex(fn);
 if i<0 then
   Result:=False
 else
  begin
   rn:=ExtractToken('saveto', DataGet(i));
   if FileExists(rn) then
    begin
     FillChar(RemoteName, maxlen, 0);
     if Length(rn)<maxlen then
      begin
       StrPCopy(RemoteName, rn);
       Result:=true;
      end
     else
       Result:=false;
    end
   else
     Result:=false;
  end;
 CS_GLN.Leave;
end;

exports
  FsInit,
  FsFindFirst,
  FsFindNext,
  FsFindClose,
  FsGetDefRootName,
  FsSetDefaultParams,
  FsExecuteFile,
  //FsGetFile,
  //FsStatusInfo,
  FsExtractCustomIcon,
  FsDeleteFile,
  FsLinksToLocalFiles,
  FsGetLocalName;

Как-то так.

MVV wrote:
Придется. Тотал ведь не знает, какая файловая система у плагина.

Ясно, спасибо.
MVV wrote:
При вызове cm_RereadSource какая панель активна? Обновляется только активная панель. И вообще, вызов этой команды приводит к куче неприятных моментов типа выхода из архивов.

Активна панель с моим плагином. Более того - панель не обновляется даже по кнопке "Обновить содержимое панели".
Просто задача стоит таким образом: происходят внешние изменения данных, которые должны отразиться в обновлении панели (меняются значки и размер файлов).
_________________
Praemonitus praemunitus
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6170
Location: Москва

Post (Separately) Posted: Thu May 26, 2011 01:25    Post subject: Reply with quote

KorneySan wrote:
Просто задача стоит таким образом: происходят внешние изменения данных, которые должны отразиться в обновлении панели (меняются значки и размер файлов).

Поменяй для обновившегося файла дату модификации, чтобы при перечитывании каталога Тотал её получил. Тогда он обновит и остальное.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
KorneySan



Joined: 25 May 2011
Posts: 4
Location: Беларусь, Гомель

Post (Separately) Posted: Thu May 26, 2011 09:13    Post subject: Reply with quote

CaptainFlint wrote:
Поменяй для обновившегося файла дату модификации, чтобы при перечитывании каталога Тотал её получил. Тогда он обновит и остальное.

Спасибо, помогло.
До этого я устанавливал дату модификации, одинаковую с датой создания. Теперь я устанавливаю дату модификации в текущее время, обновление работает.
_________________
Praemonitus praemunitus
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