Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / UI / Far / FarPlugin.h
1 // FarPlugin.h\r
2 \r
3 // #include "plugin.hpp"\r
4 \r
5 const int kInfoPanelLineSize = 80;\r
6 \r
7 // #define __FAR_PLUGIN_H\r
8 \r
9 #ifdef UNDER_CE\r
10 typedef struct _CHAR_INFO {\r
11     union {\r
12         WCHAR UnicodeChar;\r
13         CHAR   AsciiChar;\r
14     } Char;\r
15     WORD Attributes;\r
16 } CHAR_INFO, *PCHAR_INFO;\r
17 #endif\r
18 \r
19 #ifndef __FAR_PLUGIN_H\r
20 #define __FAR_PLUGIN_H\r
21 \r
22 #ifndef _WIN64\r
23 #if defined(__BORLANDC__) && (__BORLANDC <= 0x520)\r
24   #pragma option -a1\r
25 #elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100))\r
26   #pragma pack(1)\r
27 #else\r
28   #pragma pack(push,1)\r
29 #endif\r
30 #endif\r
31 \r
32   #if _MSC_VER\r
33     #define _export\r
34   #endif\r
35 \r
36 #define NM 260\r
37 \r
38 struct FarFindData\r
39 {\r
40   DWORD dwFileAttributes;\r
41   FILETIME ftCreationTime;\r
42   FILETIME ftLastAccessTime;\r
43   FILETIME ftLastWriteTime;\r
44   DWORD nFileSizeHigh;\r
45   DWORD nFileSizeLow;\r
46   DWORD dwReserved0;\r
47   DWORD dwReserved1;\r
48   char cFileName[ MAX_PATH ];\r
49   char cAlternateFileName[ 14 ];\r
50 };\r
51 \r
52 struct PluginPanelItem\r
53 {\r
54   FarFindData FindData;\r
55   DWORD PackSizeHigh;\r
56   DWORD PackSize;\r
57   DWORD Flags;\r
58   DWORD NumberOfLinks;\r
59   char *Description;\r
60   char *Owner;\r
61   char **CustomColumnData;\r
62   int CustomColumnNumber;\r
63   DWORD_PTR UserData;\r
64   DWORD CRC32;\r
65   DWORD_PTR Reserved[2];\r
66 };\r
67 \r
68 #define PPIF_PROCESSDESCR 0x80000000\r
69 #define PPIF_SELECTED     0x40000000\r
70 #define PPIF_USERDATA     0x20000000\r
71 \r
72 enum {\r
73   FMENU_SHOWAMPERSAND=1,\r
74   FMENU_WRAPMODE=2,\r
75   FMENU_AUTOHIGHLIGHT=4,\r
76   FMENU_REVERSEAUTOHIGHLIGHT=8\r
77 };\r
78 \r
79 \r
80 typedef int (WINAPI *FARAPIMENU)(\r
81   INT_PTR PluginNumber,\r
82   int X,\r
83   int Y,\r
84   int MaxHeight,\r
85   unsigned int Flags,\r
86   char *Title,\r
87   char *Bottom,\r
88   char *HelpTopic,\r
89   int *BreakKeys,\r
90   int *BreakCode,\r
91   struct FarMenuItem *Item,\r
92   int ItemsNumber\r
93 );\r
94 \r
95 typedef int (WINAPI *FARAPIDIALOG)(\r
96   INT_PTR PluginNumber,\r
97   int X1,\r
98   int Y1,\r
99   int X2,\r
100   int Y2,\r
101   char *HelpTopic,\r
102   struct FarDialogItem *Item,\r
103   int ItemsNumber\r
104 );\r
105 \r
106 enum {\r
107   FMSG_WARNING=1,\r
108   FMSG_ERRORTYPE=2,\r
109   FMSG_KEEPBACKGROUND=4,\r
110   FMSG_DOWN=8,\r
111   FMSG_LEFTALIGN=16\r
112 };\r
113 \r
114 typedef int (WINAPI *FARAPIMESSAGE)(\r
115   INT_PTR PluginNumber,\r
116   unsigned int Flags,\r
117   char *HelpTopic,\r
118   char **Items,\r
119   int ItemsNumber,\r
120   int ButtonsNumber\r
121 );\r
122 \r
123 typedef char* (WINAPI *FARAPIGETMSG)(\r
124   INT_PTR PluginNumber,\r
125   int MsgId\r
126 );\r
127 \r
128 \r
129 enum DialogItemTypes {\r
130   DI_TEXT,\r
131   DI_VTEXT,\r
132   DI_SINGLEBOX,\r
133   DI_DOUBLEBOX,\r
134   DI_EDIT,\r
135   DI_PSWEDIT,\r
136   DI_FIXEDIT,\r
137   DI_BUTTON,\r
138   DI_CHECKBOX,\r
139   DI_RADIOBUTTON\r
140 };\r
141 \r
142 enum FarDialogItemFlags {\r
143   DIF_COLORMASK       =    0xff,\r
144   DIF_SETCOLOR        =   0x100,\r
145   DIF_BOXCOLOR        =   0x200,\r
146   DIF_GROUP           =   0x400,\r
147   DIF_LEFTTEXT        =   0x800,\r
148   DIF_MOVESELECT      =  0x1000,\r
149   DIF_SHOWAMPERSAND   =  0x2000,\r
150   DIF_CENTERGROUP     =  0x4000,\r
151   DIF_NOBRACKETS      =  0x8000,\r
152   DIF_SEPARATOR       = 0x10000,\r
153   DIF_EDITOR          = 0x20000,\r
154   DIF_HISTORY         = 0x40000\r
155 };\r
156 \r
157 struct FarDialogItem\r
158 {\r
159   int Type;\r
160   int X1,Y1,X2,Y2;\r
161   int Focus;\r
162   union\r
163   {\r
164     int Selected;\r
165     const char *History;\r
166     const char *Mask;\r
167     struct FarList *ListItems;\r
168     int  ListPos;\r
169     CHAR_INFO *VBuf;\r
170   };\r
171   unsigned int Flags;\r
172   int DefaultButton;\r
173   char Data[512];\r
174 };\r
175 \r
176 \r
177 struct FarMenuItem\r
178 {\r
179   char Text[128];\r
180   int Selected;\r
181   int Checked;\r
182   int Separator;\r
183 };\r
184 \r
185 \r
186 enum {FCTL_CLOSEPLUGIN,FCTL_GETPANELINFO,FCTL_GETANOTHERPANELINFO,\r
187       FCTL_UPDATEPANEL,FCTL_UPDATEANOTHERPANEL,\r
188       FCTL_REDRAWPANEL,FCTL_REDRAWANOTHERPANEL,\r
189       FCTL_SETANOTHERPANELDIR,FCTL_GETCMDLINE,FCTL_SETCMDLINE,\r
190       FCTL_SETSELECTION,FCTL_SETANOTHERSELECTION,\r
191       FCTL_SETVIEWMODE,FCTL_SETANOTHERVIEWMODE,FCTL_INSERTCMDLINE,\r
192       FCTL_SETUSERSCREEN,FCTL_SETPANELDIR,FCTL_SETCMDLINEPOS,\r
193       FCTL_GETCMDLINEPOS\r
194 };\r
195 \r
196 enum {PTYPE_FILEPANEL,PTYPE_TREEPANEL,PTYPE_QVIEWPANEL,PTYPE_INFOPANEL};\r
197 \r
198 struct PanelInfo\r
199 {\r
200   int PanelType;\r
201   int Plugin;\r
202   RECT PanelRect;\r
203   struct PluginPanelItem *PanelItems;\r
204   int ItemsNumber;\r
205   struct PluginPanelItem *SelectedItems;\r
206   int SelectedItemsNumber;\r
207   int CurrentItem;\r
208   int TopPanelItem;\r
209   int Visible;\r
210   int Focus;\r
211   int ViewMode;\r
212   char ColumnTypes[80];\r
213   char ColumnWidths[80];\r
214   char CurDir[NM];\r
215   int ShortNames;\r
216   int SortMode;\r
217   DWORD Flags;\r
218   DWORD Reserved;\r
219 };\r
220 \r
221 \r
222 struct PanelRedrawInfo\r
223 {\r
224   int CurrentItem;\r
225   int TopPanelItem;\r
226 };\r
227 \r
228 \r
229 typedef int (WINAPI *FARAPICONTROL)(\r
230   HANDLE hPlugin,\r
231   int Command,\r
232   void *Param\r
233 );\r
234 \r
235 typedef HANDLE (WINAPI *FARAPISAVESCREEN)(int X1,int Y1,int X2,int Y2);\r
236 \r
237 typedef void (WINAPI *FARAPIRESTORESCREEN)(HANDLE hScreen);\r
238 \r
239 typedef int (WINAPI *FARAPIGETDIRLIST)(\r
240   char *Dir,\r
241   struct PluginPanelItem **pPanelItem,\r
242   int *pItemsNumber\r
243 );\r
244 \r
245 typedef int (WINAPI *FARAPIGETPLUGINDIRLIST)(\r
246   INT_PTR PluginNumber,\r
247   HANDLE hPlugin,\r
248   char *Dir,\r
249   struct PluginPanelItem **pPanelItem,\r
250   int *pItemsNumber\r
251 );\r
252 \r
253 typedef void (WINAPI *FARAPIFREEDIRLIST)(struct PluginPanelItem *PanelItem);\r
254 \r
255 enum VIEWER_FLAGS {\r
256   VF_NONMODAL=1,VF_DELETEONCLOSE=2\r
257 };\r
258 \r
259 typedef int (WINAPI *FARAPIVIEWER)(\r
260   char *FileName,\r
261   char *Title,\r
262   int X1,\r
263   int Y1,\r
264   int X2,\r
265   int Y2,\r
266   DWORD Flags\r
267 );\r
268 \r
269 typedef int (WINAPI *FARAPIEDITOR)(\r
270   char *FileName,\r
271   char *Title,\r
272   int X1,\r
273   int Y1,\r
274   int X2,\r
275   int Y2,\r
276   DWORD Flags,\r
277   int StartLine,\r
278   int StartChar\r
279 );\r
280 \r
281 typedef int (WINAPI *FARAPICMPNAME)(\r
282   char *Pattern,\r
283   char *String,\r
284   int SkipPath\r
285 );\r
286 \r
287 \r
288 #define FCT_DETECT 0x40000000\r
289 \r
290 struct CharTableSet\r
291 {\r
292   char DecodeTable[256];\r
293   char EncodeTable[256];\r
294   char UpperTable[256];\r
295   char LowerTable[256];\r
296   char TableName[128];\r
297 };\r
298 \r
299 typedef int (WINAPI *FARAPICHARTABLE)(\r
300   int Command,\r
301   char *Buffer,\r
302   int BufferSize\r
303 );\r
304 \r
305 typedef void (WINAPI *FARAPITEXT)(\r
306   int X,\r
307   int Y,\r
308   int Color,\r
309   char *Str\r
310 );\r
311 \r
312 \r
313 typedef int (WINAPI *FARAPIEDITORCONTROL)(\r
314   int Command,\r
315   void *Param\r
316 );\r
317 \r
318 struct PluginStartupInfo\r
319 {\r
320   int StructSize;\r
321   char ModuleName[NM];\r
322   INT_PTR ModuleNumber;\r
323   char *RootKey;\r
324   FARAPIMENU Menu;\r
325   FARAPIDIALOG Dialog;\r
326   FARAPIMESSAGE Message;\r
327   FARAPIGETMSG GetMsg;\r
328   FARAPICONTROL Control;\r
329   FARAPISAVESCREEN SaveScreen;\r
330   FARAPIRESTORESCREEN RestoreScreen;\r
331   FARAPIGETDIRLIST GetDirList;\r
332   FARAPIGETPLUGINDIRLIST GetPluginDirList;\r
333   FARAPIFREEDIRLIST FreeDirList;\r
334   FARAPIVIEWER Viewer;\r
335   FARAPIEDITOR Editor;\r
336   FARAPICMPNAME CmpName;\r
337   FARAPICHARTABLE CharTable;\r
338   FARAPITEXT Text;\r
339   FARAPIEDITORCONTROL EditorControl;\r
340 };\r
341 \r
342 \r
343 enum PLUGIN_FLAGS {\r
344   PF_PRELOAD        = 0x0001,\r
345   PF_DISABLEPANELS  = 0x0002,\r
346   PF_EDITOR         = 0x0004,\r
347   PF_VIEWER         = 0x0008\r
348 };\r
349 \r
350 \r
351 struct PluginInfo\r
352 {\r
353   int StructSize;\r
354   DWORD Flags;\r
355   char **DiskMenuStrings;\r
356   int *DiskMenuNumbers;\r
357   int DiskMenuStringsNumber;\r
358   char **PluginMenuStrings;\r
359   int PluginMenuStringsNumber;\r
360   char **PluginConfigStrings;\r
361   int PluginConfigStringsNumber;\r
362   char *CommandPrefix;\r
363 };\r
364 \r
365 struct InfoPanelLine\r
366 {\r
367   char Text[kInfoPanelLineSize];\r
368   char Data[kInfoPanelLineSize];\r
369   int Separator;\r
370 };\r
371 \r
372 \r
373 struct PanelMode\r
374 {\r
375   char *ColumnTypes;\r
376   char *ColumnWidths;\r
377   char **ColumnTitles;\r
378   int FullScreen;\r
379   int DetailedStatus;\r
380   int AlignExtensions;\r
381   int CaseConversion;\r
382   char *StatusColumnTypes;\r
383   char *StatusColumnWidths;\r
384   DWORD Reserved[2];\r
385 };\r
386 \r
387 \r
388 enum OPENPLUGININFO_FLAGS {\r
389   OPIF_USEFILTER               = 0x0001,\r
390   OPIF_USESORTGROUPS           = 0x0002,\r
391   OPIF_USEHIGHLIGHTING         = 0x0004,\r
392   OPIF_ADDDOTS                 = 0x0008,\r
393   OPIF_RAWSELECTION            = 0x0010,\r
394   OPIF_REALNAMES               = 0x0020,\r
395   OPIF_SHOWNAMESONLY           = 0x0040,\r
396   OPIF_SHOWRIGHTALIGNNAMES     = 0x0080,\r
397   OPIF_SHOWPRESERVECASE        = 0x0100,\r
398   OPIF_FINDFOLDERS             = 0x0200,\r
399   OPIF_COMPAREFATTIME          = 0x0400,\r
400   OPIF_EXTERNALGET             = 0x0800,\r
401   OPIF_EXTERNALPUT             = 0x1000,\r
402   OPIF_EXTERNALDELETE          = 0x2000,\r
403   OPIF_EXTERNALMKDIR           = 0x4000,\r
404   OPIF_USEATTRHIGHLIGHTING     = 0x8000\r
405 };\r
406 \r
407 \r
408 enum OPENPLUGININFO_SORTMODES {\r
409   SM_DEFAULT,SM_UNSORTED,SM_NAME,SM_EXT,SM_MTIME,SM_CTIME,\r
410   SM_ATIME,SM_SIZE,SM_DESCR,SM_OWNER,SM_COMPRESSEDSIZE,SM_NUMLINKS\r
411 };\r
412 \r
413 \r
414 struct KeyBarTitles\r
415 {\r
416   char *Titles[12];\r
417   char *CtrlTitles[12];\r
418   char *AltTitles[12];\r
419   char *ShiftTitles[12];\r
420 };\r
421 \r
422 \r
423 struct OpenPluginInfo\r
424 {\r
425   int StructSize;\r
426   DWORD Flags;\r
427   char *HostFile;\r
428   char *CurDir;\r
429   char *Format;\r
430   char *PanelTitle;\r
431   struct InfoPanelLine *InfoLines;\r
432   int InfoLinesNumber;\r
433   char **DescrFiles;\r
434   int DescrFilesNumber;\r
435   struct PanelMode *PanelModesArray;\r
436   int PanelModesNumber;\r
437   int StartPanelMode;\r
438   int StartSortMode;\r
439   int StartSortOrder;\r
440   struct KeyBarTitles *KeyBar;\r
441   char *ShortcutData;\r
442 };\r
443 \r
444 enum {\r
445   OPEN_DISKMENU,\r
446   OPEN_PLUGINSMENU,\r
447   OPEN_FINDLIST,\r
448   OPEN_SHORTCUT,\r
449   OPEN_COMMANDLINE,\r
450   OPEN_EDITOR,\r
451   OPEN_VIEWER\r
452 };\r
453 \r
454 enum {PKF_CONTROL=1,PKF_ALT=2,PKF_SHIFT=4};\r
455 \r
456 enum FAR_EVENTS {\r
457   FE_CHANGEVIEWMODE,\r
458   FE_REDRAW,\r
459   FE_IDLE,\r
460   FE_CLOSE,\r
461   FE_BREAK,\r
462   FE_COMMAND\r
463 };\r
464 \r
465 enum OPERATION_MODES {\r
466   OPM_SILENT=1,\r
467   OPM_FIND=2,\r
468   OPM_VIEW=4,\r
469   OPM_EDIT=8,\r
470   OPM_TOPLEVEL=16,\r
471   OPM_DESCR=32\r
472 };\r
473 \r
474 #ifndef _WIN64\r
475 #if defined(__BORLANDC__) && (__BORLANDC <= 0x520)\r
476   #pragma option -a.\r
477 #elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100))\r
478   #pragma pack()\r
479 #else\r
480   #pragma pack(pop)\r
481 #endif\r
482 #endif\r
483 \r
484 /*\r
485 EXTERN_C_BEGIN\r
486 \r
487   void   WINAPI _export ClosePluginW(HANDLE hPlugin);\r
488   int    WINAPI _export CompareW(HANDLE hPlugin,const struct PluginPanelItem *Item1,const struct PluginPanelItem *Item2,unsigned int Mode);\r
489   int    WINAPI _export ConfigureW(int ItemNumber);\r
490   int    WINAPI _export DeleteFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int OpMode);\r
491   void   WINAPI _export ExitFARW(void);\r
492   void   WINAPI _export FreeFindDataW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber);\r
493   void   WINAPI _export FreeVirtualFindDataW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber);\r
494   int    WINAPI _export GetFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,const wchar_t **DestPath,int OpMode);\r
495   int    WINAPI _export GetFindDataW(HANDLE hPlugin,struct PluginPanelItem **pPanelItem,int *pItemsNumber,int OpMode);\r
496   int    WINAPI _export GetMinFarVersionW(void);\r
497   void   WINAPI _export GetOpenPluginInfoW(HANDLE hPlugin,struct OpenPluginInfo *Info);\r
498   void   WINAPI _export GetPluginInfoW(struct PluginInfo *Info);\r
499   int    WINAPI _export GetVirtualFindDataW(HANDLE hPlugin,struct PluginPanelItem **pPanelItem,int *pItemsNumber,const wchar_t *Path);\r
500   int    WINAPI _export MakeDirectoryW(HANDLE hPlugin,const wchar_t **Name,int OpMode);\r
501   HANDLE WINAPI _export OpenFilePluginW(const wchar_t *Name,const unsigned char *Data,int DataSize,int OpMode);\r
502   HANDLE WINAPI _export OpenPluginW(int OpenFrom,INT_PTR Item);\r
503   int    WINAPI _export ProcessDialogEventW(int Event,void *Param);\r
504   int    WINAPI _export ProcessEditorEventW(int Event,void *Param);\r
505   int    WINAPI _export ProcessEditorInputW(const INPUT_RECORD *Rec);\r
506   int    WINAPI _export ProcessEventW(HANDLE hPlugin,int Event,void *Param);\r
507   int    WINAPI _export ProcessHostFileW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int OpMode);\r
508   int    WINAPI _export ProcessKeyW(HANDLE hPlugin,int Key,unsigned int ControlState);\r
509   int    WINAPI _export ProcessSynchroEventW(int Event,void *Param);\r
510   int    WINAPI _export ProcessViewerEventW(int Event,void *Param);\r
511   int    WINAPI _export PutFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,const wchar_t *SrcPath,int OpMode);\r
512   int    WINAPI _export SetDirectoryW(HANDLE hPlugin,const wchar_t *Dir,int OpMode);\r
513   int    WINAPI _export SetFindListW(HANDLE hPlugin,const struct PluginPanelItem *PanelItem,int ItemsNumber);\r
514   void   WINAPI _export SetStartupInfoW(const struct PluginStartupInfo *Info);\r
515 \r
516 EXTERN_C_END\r
517 */\r
518 \r
519 #endif\r