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