wfxplugin.pas 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. unit WfxPlugin; { Plugin definitions version 2.0 }
  2. interface
  3. uses
  4. SysUtils {$IFDEF MSWINDOWS}, Windows{$ENDIF};
  5. { ids for FsGetFile }
  6. const FS_FILE_OK=0;
  7. FS_FILE_EXISTS=1;
  8. FS_FILE_NOTFOUND=2;
  9. FS_FILE_READERROR=3;
  10. FS_FILE_WRITEERROR=4;
  11. FS_FILE_USERABORT=5;
  12. FS_FILE_NOTSUPPORTED=6;
  13. FS_FILE_EXISTSRESUMEALLOWED=7;
  14. FS_EXEC_OK=0;
  15. FS_EXEC_ERROR=1;
  16. FS_EXEC_YOURSELF=-1;
  17. FS_EXEC_SYMLINK=-2;
  18. FS_COPYFLAGS_OVERWRITE=1;
  19. FS_COPYFLAGS_RESUME=2;
  20. FS_COPYFLAGS_MOVE=4;
  21. FS_COPYFLAGS_EXISTS_SAMECASE=8;
  22. FS_COPYFLAGS_EXISTS_DIFFERENTCASE=16;
  23. { flags for tRequestProc }
  24. const
  25. RT_Other=0;
  26. RT_UserName=1;
  27. RT_Password=2;
  28. RT_Account=3;
  29. RT_UserNameFirewall=4;
  30. RT_PasswordFirewall=5;
  31. RT_TargetDir=6;
  32. RT_URL=7;
  33. RT_MsgOK=8;
  34. RT_MsgYesNo=9;
  35. RT_MsgOKCancel=10;
  36. { flags for tLogProc }
  37. const msgtype_connect=1;
  38. msgtype_disconnect=2;
  39. msgtype_details=3;
  40. msgtype_transfercomplete=4;
  41. msgtype_connectcomplete=5;
  42. msgtype_importanterror=6;
  43. msgtype_operationcomplete=7;
  44. { flags for FsStatusInfo }
  45. const FS_STATUS_START=0;
  46. FS_STATUS_END=1;
  47. FS_STATUS_OP_LIST=1;
  48. FS_STATUS_OP_GET_SINGLE=2;
  49. FS_STATUS_OP_GET_MULTI=3;
  50. FS_STATUS_OP_PUT_SINGLE=4;
  51. FS_STATUS_OP_PUT_MULTI=5;
  52. FS_STATUS_OP_RENMOV_SINGLE=6;
  53. FS_STATUS_OP_RENMOV_MULTI=7;
  54. FS_STATUS_OP_DELETE=8;
  55. FS_STATUS_OP_ATTRIB=9;
  56. FS_STATUS_OP_MKDIR=10;
  57. FS_STATUS_OP_EXEC=11;
  58. FS_STATUS_OP_CALCSIZE=12;
  59. FS_STATUS_OP_SEARCH=13;
  60. FS_STATUS_OP_SEARCH_TEXT=14;
  61. FS_STATUS_OP_SYNC_SEARCH=15;
  62. FS_STATUS_OP_SYNC_GET=16;
  63. FS_STATUS_OP_SYNC_PUT=17;
  64. FS_STATUS_OP_SYNC_DELETE=18;
  65. FS_STATUS_OP_GET_MULTI_THREAD=19;
  66. FS_STATUS_OP_PUT_MULTI_THREAD=20;
  67. {Flags for FsExtractCustomIcon}
  68. const FS_ICONFLAG_SMALL=1;
  69. FS_ICONFLAG_BACKGROUND=2;
  70. FS_ICON_USEDEFAULT=0;
  71. FS_ICON_EXTRACTED=1;
  72. FS_ICON_EXTRACTED_DESTROY=2;
  73. FS_ICON_DELAYED=3;
  74. const FS_BITMAP_NONE=0;
  75. FS_BITMAP_EXTRACTED=1;
  76. FS_BITMAP_EXTRACT_YOURSELF=2;
  77. FS_BITMAP_EXTRACT_YOURSELF_ANDDELETE=3;
  78. FS_BITMAP_CACHE=256;
  79. {Flags for crypto callback function}
  80. FS_CRYPT_SAVE_PASSWORD=1;
  81. FS_CRYPT_LOAD_PASSWORD=2;
  82. FS_CRYPT_LOAD_PASSWORD_NO_UI=3; {Load password only if master password has already been entered!}
  83. FS_CRYPT_COPY_PASSWORD=4;
  84. FS_CRYPT_MOVE_PASSWORD=5;
  85. FS_CRYPT_DELETE_PASSWORD=6;
  86. FS_CRYPTOPT_MASTERPASS_SET=1; {The user already has a master password defined}
  87. {Flags for FsGetBackgroundFlags}
  88. BG_DOWNLOAD=1; { Plugin supports downloads in background }
  89. BG_UPLOAD=2; { Plugin supports uploads in background }
  90. BG_ASK_USER=4; { Plugin requires separate connection for background transfers -> ask user first }
  91. type
  92. { Unsigned integer with pointer size }
  93. THandle = {$IFDEF CPU64}QWord{$ELSE}LongWord{$ENDIF};
  94. const
  95. wfxInvalidHandle: THandle = THandle(-1);
  96. { Some Windows specific stuff }
  97. const
  98. MAXDWORD = DWORD($FFFFFFFF);
  99. FILE_ATTRIBUTE_NORMAL = 128;
  100. FILE_ATTRIBUTE_DIRECTORY = 16;
  101. FILE_ATTRIBUTE_REPARSE_POINT = $0400;
  102. FILE_ATTRIBUTE_UNIX_MODE = $80000000;
  103. type
  104. TInt64Rec = packed record
  105. case Boolean of
  106. True : (Value : Int64);
  107. False : (Low, High : DWORD);
  108. end;
  109. BOOL = LongBool;
  110. HBITMAP = THandle;
  111. HICON = THandle;
  112. HWND = THandle;
  113. type
  114. {$IFDEF MSWINDOWS}
  115. FILETIME = Windows.FILETIME;
  116. {$ELSE}
  117. FILETIME = packed record
  118. dwLowDateTime : DWORD;
  119. dwHighDateTime : DWORD;
  120. end;
  121. {$ENDIF}
  122. TFileTime = FILETIME; // for compatibility with all plugins
  123. PFileTime = ^FILETIME;
  124. TWfxFileTime = FILETIME;
  125. PWfxFileTime = ^FILETIME;
  126. {$IFDEF MSWINDOWS}
  127. WIN32_FIND_DATAA = Windows.WIN32_FIND_DATA;
  128. {$ELSE}
  129. WIN32_FIND_DATAA = packed record
  130. dwFileAttributes : DWORD;
  131. ftCreationTime : TFILETIME;
  132. ftLastAccessTime : TFILETIME;
  133. ftLastWriteTime : TFILETIME;
  134. nFileSizeHigh : DWORD;
  135. nFileSizeLow : DWORD;
  136. dwReserved0 : DWORD;
  137. dwReserved1 : DWORD;
  138. cFileName : array[0..(MAX_PATH)-1] of CHAR;
  139. cAlternateFileName : array[0..13] of CHAR;
  140. end;
  141. {$ENDIF}
  142. TWin32FindData = WIN32_FIND_DATAA;
  143. {$IFDEF MSWINDOWS}
  144. WIN32_FIND_DATAW = Windows.WIN32_FIND_DATAW;
  145. {$ELSE}
  146. WIN32_FIND_DATAW = packed record
  147. dwFileAttributes : DWORD;
  148. ftCreationTime : TFILETIME;
  149. ftLastAccessTime : TFILETIME;
  150. ftLastWriteTime : TFILETIME;
  151. nFileSizeHigh : DWORD;
  152. nFileSizeLow : DWORD;
  153. dwReserved0 : DWORD;
  154. dwReserved1 : DWORD;
  155. cFileName : array[0..(MAX_PATH)-1] of WCHAR;
  156. cAlternateFileName : array[0..13] of WCHAR;
  157. end;
  158. {$ENDIF}
  159. TWin32FindDataW = WIN32_FIND_DATAW;
  160. type
  161. tRemoteInfo=record
  162. SizeLow,SizeHigh:longint;
  163. LastWriteTime:TFileTime;
  164. Attr:longint;
  165. end;
  166. pRemoteInfo=^tRemoteInfo;
  167. type
  168. tFsDefaultParamStruct=record
  169. size,
  170. PluginInterfaceVersionLow,
  171. PluginInterfaceVersionHi:longint;
  172. DefaultIniName:array[0..MAX_PATH-1] of char;
  173. end;
  174. pFsDefaultParamStruct=^tFsDefaultParamStruct;
  175. { For compatibility with Delphi use $IFDEF's to set calling convention }
  176. { callback functions }
  177. type
  178. TProgressProc=function(PluginNr:integer;SourceName,
  179. TargetName:pchar;PercentDone:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  180. TProgressProcW=function(PluginNr:integer;SourceName,
  181. TargetName:pwidechar;PercentDone:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  182. TLogProc=procedure(PluginNr,MsgType:integer;LogString:pchar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  183. TLogProcW=procedure(PluginNr,MsgType:integer;LogString:pwidechar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  184. TRequestProc=function(PluginNr,RequestType:integer;CustomTitle,CustomText,
  185. ReturnedText:pchar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  186. TRequestProcW=function(PluginNr,RequestType:integer;CustomTitle,CustomText,
  187. ReturnedText:pwidechar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  188. TCryptProc=function(PluginNr,CryptoNumber:integer;mode:integer;ConnectionName,
  189. Password:pchar;maxlen:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  190. TCryptProcW=function(PluginNr,CryptoNumber:integer;mode:integer;ConnectionName,
  191. Password:pwidechar;maxlen:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  192. { Function prototypes - the callback functions MUST be implemented exactly like this! }
  193. (*
  194. function FsInit(PluginNr:integer;pProgressProc:tProgressProc;pLogProc:tLogProc;
  195. pRequestProc:tRequestProc):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  196. function FsInitW(PluginNr:integer;pProgressProcW:tProgressProcW;pLogProcW:tLogProcW;
  197. pRequestProcW:tRequestProcW):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  198. procedure FsSetCryptCallback(CryptProc:TCryptProc;CryptoNr,Flags:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  199. procedure FsSetCryptCallbackW(CryptProcW:TCryptProcW;CryptoNr,Flags:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  200. function FsFindFirst(path :pchar;var FindData:tWIN32FINDDATA):thandle; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  201. function FsFindFirstW(path :pwidechar;var FindData:tWIN32FINDDATAW):thandle; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  202. function FsFindNext(Hdl:thandle;var FindData:tWIN32FINDDATA):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  203. function FsFindNextW(Hdl:thandle;var FindDataW:tWIN32FINDDATAW):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  204. function FsFindClose(Hdl:thandle):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  205. function FsMkDir(RemoteDir:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  206. function FsMkDirW(RemoteDir:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  207. function FsExecuteFile(MainWin:HWND;RemoteName,Verb:pchar):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  208. function FsExecuteFileW(MainWin:HWND;RemoteName,Verb:pwidechar):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  209. function FsRenMovFile(OldName,NewName:pchar;Move,OverWrite:bool;
  210. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  211. function FsRenMovFileW(OldName,NewName:pwidechar;Move,OverWrite:bool;
  212. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  213. function FsGetFile(RemoteName,LocalName:pchar;CopyFlags:integer;
  214. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  215. function FsGetFileW(RemoteName,LocalName:pwidechar;CopyFlags:integer;
  216. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  217. function FsPutFile(LocalName,RemoteName:pchar;CopyFlags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  218. function FsPutFileW(LocalName,RemoteName:pwidechar;CopyFlags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  219. function FsDeleteFile(RemoteName:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  220. function FsDeleteFileW(RemoteName:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  221. function FsRemoveDir(RemoteName:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  222. function FsRemoveDirW(RemoteName:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  223. function FsDisconnect(DisconnectRoot:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  224. function FsDisconnectW(DisconnectRoot:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  225. function FsSetAttr(RemoteName:pchar;NewAttr:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  226. function FsSetAttrW(RemoteName:pwidechar;NewAttr:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  227. function FsSetTime(RemoteName:pchar;CreationTime,LastAccessTime,
  228. LastWriteTime:PFileTime):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  229. function FsSetTimeW(RemoteName:pwidechar;CreationTime,LastAccessTime,
  230. LastWriteTime:PFileTime):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  231. procedure FsStatusInfo(RemoteDir:pchar;InfoStartEnd,InfoOperation:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  232. procedure FsStatusInfoW(RemoteDir:pwidechar;InfoStartEnd,InfoOperation:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  233. procedure FsGetDefRootName(DefRootName:pchar;maxlen:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  234. function FsExtractCustomIcon(RemoteName:pchar;ExtractFlags:integer;
  235. var TheIcon:hicon):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  236. function FsExtractCustomIconW(RemoteName:pwidechar;ExtractFlags:integer;
  237. var TheIcon:hicon):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  238. procedure FsSetDefaultParams(dps:pFsDefaultParamStruct); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  239. function FsGetPreviewBitmap(RemoteName:pchar;width,height:integer,
  240. var ReturnedBitmap:hbitmap):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  241. function FsGetPreviewBitmapW(RemoteName:pwidechar;width,height:integer,
  242. var ReturnedBitmap:hbitmap):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  243. function FsLinksToLocalFiles:bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  244. function FsGetLocalName(RemoteName:pchar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  245. function FsGetLocalNameW(RemoteName:pwidechar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  246. *)
  247. {****************************** content plugin part *****************************}
  248. const ft_nomorefields=0;
  249. ft_numeric_32=1;
  250. ft_numeric_64=2;
  251. ft_numeric_floating=3;
  252. ft_date=4;
  253. ft_time=5;
  254. ft_boolean=6;
  255. ft_multiplechoice=7;
  256. ft_string=8;
  257. ft_fulltext=9;
  258. ft_datetime=10;
  259. ft_stringw=11;
  260. // for ContentGetValue
  261. ft_nosuchfield=-1;
  262. ft_fileerror=-2;
  263. ft_fieldempty=-3;
  264. ft_ondemand=-4;
  265. ft_delayed=0;
  266. // for ContentSetValue
  267. ft_setsuccess=0;
  268. setflags_first_attribute=1; {First attribute of this file}
  269. setflags_last_attribute=2;
  270. setflags_only_date=4;
  271. CONTENT_DELAYIFSLOW=1; // ContentGetValue called in foreground
  272. type tContentDefaultParamStruct=record
  273. size,
  274. PluginInterfaceVersionLow,
  275. PluginInterfaceVersionHi:longint;
  276. DefaultIniName:array[0..MAX_PATH-1] of char;
  277. end;
  278. pContentDefaultParamStruct=^tContentDefaultParamStruct;
  279. type tdateformat=record
  280. wYear,wMonth,wDay:word;
  281. end;
  282. pdateformat=^tdateformat;
  283. type ttimeformat=record
  284. wHour,wMinute,wSecond:word;
  285. end;
  286. ptimeformat=^ttimeformat;
  287. { Function prototypes: }
  288. (*
  289. procedure FsContentGetDetectString(DetectString:pchar;maxlen:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  290. function FsContentGetSupportedField(FieldIndex:integer;FieldName:pchar;
  291. Units:pchar;maxlen:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  292. function FsContentGetValue(FileName:pchar;FieldIndex,UnitIndex:integer;FieldValue:pbyte;
  293. maxlen,flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  294. function FsContentGetValueW(FileName:pwidechar;FieldIndex,UnitIndex:integer;FieldValue:pbyte;
  295. maxlen,flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  296. procedure FsContentSetDefaultParams(dps:pContentDefaultParamStruct); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  297. procedure FsContentStopGetValue(FileName:pchar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  298. procedure FsContentStopGetValueW(FileName:pwidechar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  299. function FsContentGetDefaultSortOrder(FieldIndex:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  300. function FsContentGetSupportedFieldFlags(FieldIndex:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  301. function FsContentSetValue(FileName:pchar;FieldIndex,UnitIndex,FieldType:integer;
  302. FieldValue:pbyte;flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  303. function FsContentSetValueW(FileName:pwidechar;FieldIndex,UnitIndex,FieldType:integer;
  304. FieldValue:pbyte;flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  305. function FsContentGetDefaultView(ViewContents,ViewHeaders,ViewWidths,
  306. ViewOptions:pchar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  307. function FsContentGetDefaultViewW(ViewContents,ViewHeaders,ViewWidths,
  308. ViewOptions:pwidechar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  309. function FsGetBackgroundFlags:integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  310. *)
  311. implementation
  312. end.