new keyboard navigation method now is default
[far2l.git] / far2l / far2sdk / farplug-wide.h
blob827b825b3f5f993e1d79f6f9515f61b468744b1d
1 #pragma once
2 #ifndef __FAR2SDK_FARPLUG_WIDE_H__
3 #define __FAR2SDK_FARPLUG_WIDE_H__
5 #if !defined(FAR_USE_INTERNALS) && !defined(FAR_DONT_USE_INTERNALS)
6 #define FAR_USE_INTERNALS
7 #endif // END FAR_USE_INTERNALS
8 /*
9 plugin.hpp
11 Plugin API for FAR Manager <%VERSION%>
15 Copyright (c) 1996 Eugene Roshal
16 Copyright (c) 2000 Far Group
17 All rights reserved.
19 Redistribution and use in source and binary forms, with or without
20 modification, are permitted provided that the following conditions
21 are met:
22 1. Redistributions of source code must retain the above copyright
23 notice, this list of conditions and the following disclaimer.
24 2. Redistributions in binary form must reproduce the above copyright
25 notice, this list of conditions and the following disclaimer in the
26 documentation and/or other materials provided with the distribution.
27 3. The name of the authors may not be used to endorse or promote products
28 derived from this software without specific prior written permission.
30 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
31 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
32 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
33 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
34 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
35 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
39 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41 EXCEPTION:
42 Far Manager plugins that use this header file can be distributed under any
43 other possible license with no implications from the above license on them.
46 #define FARMANAGERVERSION_MAJOR 2
47 #define FARMANAGERVERSION_MINOR 6
49 #ifndef RC_INVOKED
51 #define MAKEFARVERSION(major,minor) ( ((major)<<16) | (minor))
53 #define FARMANAGERVERSION MAKEFARVERSION(FARMANAGERVERSION_MAJOR,FARMANAGERVERSION_MINOR)
55 #include "../../WinPort/windows.h"
57 #ifdef FAR_USE_INTERNALS
58 #else // ELSE FAR_USE_INTERNALS
60 #if 1
61 #else
62 #if !defined(_INC_WINDOWS) && !defined(_WINDOWS_)
63 #if (defined(__GNUC__) || defined(_MSC_VER)) && !defined(_WIN64)
64 #if !defined(_WINCON_H) && !defined(_WINCON_)
65 #define _WINCON_H
66 #define _WINCON_ // to prevent including wincon.h
67 #if defined(_MSC_VER)
68 #pragma pack(push,2)
69 #else
70 #pragma pack(2)
71 #endif
72 #include<windows.h>
73 #if defined(_MSC_VER)
74 #pragma pack(pop)
75 #else
76 #pragma pack()
77 #endif
78 #undef _WINCON_
79 #undef _WINCON_H
81 #if defined(_MSC_VER)
82 #pragma pack(push,8)
83 #else
84 #pragma pack(8)
85 #endif
86 #include<wincon.h>
87 #if defined(_MSC_VER)
88 #pragma pack(pop)
89 #else
90 #pragma pack()
91 #endif
92 #endif
93 #define _WINCON_
94 #else
95 #include<windows.h>
96 #endif
97 #endif
98 #endif // END FAR_USE_INTERNALS
99 #endif
101 #if defined(__BORLANDC__)
102 #ifndef _WIN64
103 #pragma option -a2
104 #endif
105 #elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100)) || defined(__LCC__)
106 #ifndef _WIN64
107 #pragma pack(2)
108 #endif
109 #else
110 #ifndef _WIN64
111 #pragma pack(push,2)
112 #endif
113 #if _MSC_VER
114 #ifdef _export
115 #undef _export
116 #endif
117 #define _export
118 #endif
119 #endif
121 #undef DefDlgProc
123 #define FARMACRO_KEY_EVENT (KEY_EVENT|0x8000)
125 #ifdef FAR_USE_INTERNALS
126 #ifndef _FAR_HAS_NAMELESS_UNIONS
127 #define _FAR_NO_NAMELESS_UNIONS
128 #endif
129 #else // ELSE FAR_USE_INTERNALS
130 // To ensure compatibility of plugin.hpp with compilers not supporting C++,
131 // you can #define _FAR_NO_NAMELESS_UNIONS. In this case, to access,
132 // for example, the Data field of the FarDialogItem structure
133 // you will need to use Data.Data, and the Selected field - Param.Selected
134 //#define _FAR_NO_NAMELESS_UNIONS
135 #endif // END FAR_USE_INTERNALS
137 #ifndef _WINCON_
138 typedef struct _INPUT_RECORD INPUT_RECORD;
139 typedef struct _CHAR_INFO CHAR_INFO;
140 #endif
142 #include "farcommon.h"
144 enum FARMESSAGEFLAGS
146 FMSG_WARNING = 0x00000001,
147 FMSG_ERRORTYPE = 0x00000002,
148 FMSG_KEEPBACKGROUND = 0x00000004,
149 FMSG_LEFTALIGN = 0x00000010,
151 FMSG_ALLINONE = 0x00000020,
152 #ifdef FAR_USE_INTERNALS
153 FMSG_COLOURS = 0x00000040,
154 #endif // END FAR_USE_INTERNALS
155 FMSG_DISPLAYNOTIFY = 0x00000080,
157 FMSG_MB_OK = 0x00010000,
158 FMSG_MB_OKCANCEL = 0x00020000,
159 FMSG_MB_ABORTRETRYIGNORE = 0x00030000,
160 FMSG_MB_YESNO = 0x00040000,
161 FMSG_MB_YESNOCANCEL = 0x00050000,
162 FMSG_MB_RETRYCANCEL = 0x00060000,
165 typedef int ( *FARAPIMESSAGE)(
166 INT_PTR PluginNumber,
167 DWORD Flags,
168 const wchar_t *HelpTopic,
169 const wchar_t * const *Items,
170 int ItemsNumber,
171 int ButtonsNumber
175 enum DialogItemTypes
177 DI_TEXT,
178 DI_VTEXT,
179 DI_SINGLEBOX,
180 DI_DOUBLEBOX,
181 DI_EDIT,
182 DI_PSWEDIT,
183 DI_FIXEDIT,
184 DI_BUTTON,
185 DI_CHECKBOX,
186 DI_RADIOBUTTON,
187 DI_COMBOBOX,
188 DI_LISTBOX,
189 #ifdef FAR_USE_INTERNALS
190 DI_MEMOEDIT,
191 #endif // END FAR_USE_INTERNALS
193 DI_USERCONTROL=255,
197 Check diagol element type has inputstring?
198 (DI_EDIT, DI_FIXEDIT, DI_PSWEDIT, etc)
200 #ifdef FAR_USE_INTERNALS
201 # define FarIsEdit(Type) ((Type) == DI_EDIT || (Type) == DI_FIXEDIT || (Type) == DI_PSWEDIT || (Type) == DI_COMBOBOX || (Type) == DI_MEMOEDIT)
202 #else
203 # define FarIsEdit(Type) ((Type) == DI_EDIT || (Type) == DI_FIXEDIT || (Type) == DI_PSWEDIT || (Type) == DI_COMBOBOX)
204 #endif
206 enum FarDialogItemFlags
208 DIF_NONE = 0,
209 DIF_COLORMASK = 0x000000ffUL,
210 DIF_SETCOLOR = 0x00000100UL,
211 DIF_BOXCOLOR = 0x00000200UL,
212 #ifdef FAR_USE_INTERNALS
213 DIF_DEFAULT = 0x00000200UL,
214 #endif // END FAR_USE_INTERNALS
215 DIF_GROUP = 0x00000400UL,
216 DIF_LEFTTEXT = 0x00000800UL,
217 #ifdef FAR_USE_INTERNALS
218 DIF_FOCUS = 0x00000800UL,
219 #endif // END FAR_USE_INTERNALS
220 DIF_MOVESELECT = 0x00001000UL,
221 DIF_SHOWAMPERSAND = 0x00002000UL,
222 DIF_CENTERGROUP = 0x00004000UL,
223 DIF_NOBRACKETS = 0x00008000UL,
224 DIF_MANUALADDHISTORY = 0x00008000UL,
225 DIF_SEPARATOR = 0x00010000UL,
226 DIF_SEPARATOR2 = 0x00020000UL,
227 DIF_EDITOR = 0x00020000UL,
228 DIF_LISTNOAMPERSAND = 0x00020000UL,
229 DIF_LISTNOBOX = 0x00040000UL,
230 DIF_HISTORY = 0x00040000UL,
231 DIF_BTNNOCLOSE = 0x00040000UL,
232 DIF_CENTERTEXT = 0x00040000UL,
233 #ifdef FAR_USE_INTERNALS
234 DIF_SEPARATORUSER = 0x00080000UL,
235 #endif // END FAR_USE_INTERNALS
236 DIF_SETSHIELD = 0x00080000UL,
237 DIF_EDITEXPAND = 0x00080000UL,
238 DIF_DROPDOWNLIST = 0x00100000UL,
239 DIF_USELASTHISTORY = 0x00200000UL,
240 DIF_MASKEDIT = 0x00400000UL,
241 DIF_SELECTONENTRY = 0x00800000UL,
242 DIF_3STATE = 0x00800000UL,
243 DIF_EDITPATH = 0x01000000UL,
244 DIF_LISTWRAPMODE = 0x01000000UL,
245 DIF_NOAUTOCOMPLETE = 0x02000000UL,
246 DIF_LISTAUTOHIGHLIGHT = 0x02000000UL,
247 DIF_LISTNOCLOSE = 0x04000000UL,
248 #ifdef FAR_USE_INTERNALS
249 DIF_AUTOMATION = 0x08000000UL,
250 #endif // END FAR_USE_INTERNALS
251 DIF_HIDDEN = 0x10000000UL,
252 DIF_READONLY = 0x20000000UL,
253 DIF_NOFOCUS = 0x40000000UL,
254 DIF_DISABLE = 0x80000000UL,
257 enum FarMessagesProc
259 DM_FIRST=0,
260 DM_CLOSE,
261 DM_ENABLE,
262 DM_ENABLEREDRAW,
263 DM_GETDLGDATA,
264 DM_GETDLGITEM,
265 DM_GETDLGRECT,
266 DM_GETTEXT,
267 DM_GETTEXTLENGTH,
268 DM_KEY,
269 DM_MOVEDIALOG,
270 DM_SETDLGDATA,
271 DM_SETDLGITEM,
272 DM_SETFOCUS,
273 DM_REDRAW,
274 DM_SETREDRAW=DM_REDRAW,
275 DM_SETTEXT,
276 DM_SETMAXTEXTLENGTH,
277 DM_SETTEXTLENGTH=DM_SETMAXTEXTLENGTH,
278 DM_SHOWDIALOG,
279 DM_GETFOCUS,
280 DM_GETCURSORPOS,
281 DM_SETCURSORPOS,
282 DM_GETTEXTPTR,
283 DM_SETTEXTPTR,
284 DM_SHOWITEM,
285 DM_ADDHISTORY,
287 DM_GETCHECK,
288 DM_SETCHECK,
289 DM_SET3STATE,
291 DM_LISTSORT,
292 DM_LISTGETITEM,
293 DM_LISTGETCURPOS,
294 DM_LISTSETCURPOS,
295 DM_LISTDELETE,
296 DM_LISTADD,
297 DM_LISTADDSTR,
298 DM_LISTUPDATE,
299 DM_LISTINSERT,
300 DM_LISTFINDSTRING,
301 DM_LISTINFO,
302 DM_LISTGETDATA,
303 DM_LISTSETDATA,
304 DM_LISTSETTITLES,
305 DM_LISTGETTITLES,
307 DM_RESIZEDIALOG,
308 DM_SETITEMPOSITION,
310 DM_GETDROPDOWNOPENED,
311 DM_SETDROPDOWNOPENED,
313 DM_SETHISTORY,
315 DM_GETITEMPOSITION,
316 DM_SETMOUSEEVENTNOTIFY,
318 DM_EDITUNCHANGEDFLAG,
320 DM_GETITEMDATA,
321 DM_SETITEMDATA,
323 DM_LISTSET,
324 DM_LISTSETMOUSEREACTION,
326 DM_GETCURSORSIZE,
327 DM_SETCURSORSIZE,
329 DM_LISTGETDATASIZE,
331 DM_GETSELECTION,
332 DM_SETSELECTION,
334 DM_GETEDITPOSITION,
335 DM_SETEDITPOSITION,
337 DM_SETCOMBOBOXEVENT,
338 DM_GETCOMBOBOXEVENT,
340 DM_GETCONSTTEXTPTR,
341 DM_GETDLGITEMSHORT,
342 DM_SETDLGITEMSHORT,
344 DM_GETDIALOGINFO,
346 DM_GETCOLOR,
347 DM_SETCOLOR,
349 DM_SETREADONLY,
351 DM_GETTRUECOLOR, // Param1 - Item ID, Param2 - DialogItemTrueColors *
352 DM_SETTRUECOLOR, // Param1 - Item ID, Param2 - const DialogItemTrueColors *
354 DM_SETTEXTPTRSILENT,
356 DN_FIRST=0x1000,
357 DN_BTNCLICK,
358 DN_CTLCOLORDIALOG,
359 DN_CTLCOLORDLGITEM,
360 DN_CTLCOLORDLGLIST,
361 DN_DRAWDIALOG,
362 DN_DRAWDLGITEM,
363 DN_EDITCHANGE,
364 DN_ENTERIDLE,
365 DN_GOTFOCUS,
366 DN_HELP,
367 DN_HOTKEY,
368 DN_INITDIALOG,
369 DN_KILLFOCUS,
370 DN_LISTCHANGE,
371 DN_MOUSECLICK,
372 DN_DRAGGED,
373 DN_RESIZECONSOLE,
374 DN_MOUSEEVENT,
375 DN_DRAWDIALOGDONE,
376 DN_LISTHOTKEY,
378 DN_GETDIALOGINFO=DM_GETDIALOGINFO,
380 DN_CLOSE=DM_CLOSE,
381 DN_KEY=DM_KEY,
384 DM_USER=0x4000,
386 #ifdef FAR_USE_INTERNALS
387 DM_KILLSAVESCREEN=DN_FIRST-1,
388 DM_ALLKEYMODE=DN_FIRST-2,
389 DN_ACTIVATEAPP=DM_USER-1,
390 #endif // END FAR_USE_INTERNALS
393 enum FARCHECKEDSTATE
395 BSTATE_UNCHECKED = 0,
396 BSTATE_CHECKED = 1,
397 BSTATE_3STATE = 2,
398 BSTATE_TOGGLE = 3,
401 enum FARLISTMOUSEREACTIONTYPE
403 LMRT_ONLYFOCUS = 0,
404 LMRT_ALWAYS = 1,
405 LMRT_NEVER = 2,
408 enum FARCOMBOBOXEVENTTYPE
410 CBET_KEY = 0x00000001,
411 CBET_MOUSE = 0x00000002,
414 enum LISTITEMFLAGS
416 LIF_SELECTED = 0x00010000UL,
417 LIF_CHECKED = 0x00020000UL,
418 LIF_SEPARATOR = 0x00040000UL,
419 LIF_DISABLE = 0x00080000UL,
420 LIF_GRAYED = 0x00100000UL,
421 LIF_HIDDEN = 0x00200000UL,
422 LIF_DELETEUSERDATA = 0x80000000UL,
425 struct FarListItem
427 DWORD Flags;
428 const wchar_t *Text;
429 DWORD Reserved[3];
432 struct FarListUpdate
434 int Index;
435 struct FarListItem Item;
438 struct FarListInsert
440 int Index;
441 struct FarListItem Item;
444 struct FarListGetItem
446 int ItemIndex;
447 struct FarListItem Item;
450 struct FarListPos
452 int SelectPos;
453 int TopPos;
456 enum FARLISTFINDFLAGS
458 LIFIND_EXACTMATCH = 0x00000001,
461 struct FarListFind
463 int StartIndex;
464 const wchar_t *Pattern;
465 DWORD Flags;
466 DWORD Reserved;
469 struct FarListDelete
471 int StartIndex;
472 int Count;
475 enum FARLISTINFOFLAGS
477 LINFO_SHOWNOBOX = 0x00000400,
478 LINFO_AUTOHIGHLIGHT = 0x00000800,
479 LINFO_REVERSEHIGHLIGHT = 0x00001000,
480 LINFO_WRAPMODE = 0x00008000,
481 LINFO_SHOWAMPERSAND = 0x00010000,
484 struct FarListInfo
486 DWORD Flags;
487 int ItemsNumber;
488 int SelectPos;
489 int TopPos;
490 int MaxHeight;
491 int MaxLength;
492 DWORD Reserved[6];
495 struct FarListItemData
497 int Index;
498 int DataSize;
499 void *Data;
500 DWORD Reserved;
503 struct FarList
505 int ItemsNumber;
506 struct FarListItem *Items;
509 struct FarListTitles
511 int TitleLen;
512 const wchar_t *Title;
513 int BottomLen;
514 const wchar_t *Bottom;
517 struct FarListColors
519 DWORD Flags;
520 DWORD Reserved;
521 int ColorCount;
522 LPBYTE Colors;
526 struct FarDialogItem
528 int Type;
529 int X1,Y1,X2,Y2;
530 int Focus;
531 union
533 DWORD_PTR Reserved;
534 int Selected;
535 const wchar_t *History;
536 const wchar_t *Mask;
537 struct FarList *ListItems;
538 int ListPos;
539 CHAR_INFO *VBuf;
541 #ifdef _FAR_NO_NAMELESS_UNIONS
542 Param
543 #endif
545 DWORD Flags;
546 int DefaultButton;
548 const wchar_t *PtrData;
549 size_t MaxLen; // terminate 0 not included (if == 0 string size is unlimited)
552 struct FarDialogItemData
554 size_t PtrLength;
555 wchar_t *PtrData;
558 struct FarDialogEvent
560 HANDLE hDlg;
561 int Msg;
562 int Param1;
563 LONG_PTR Param2;
564 LONG_PTR Result;
567 struct OpenDlgPluginData
569 int ItemNumber;
570 HANDLE hDlg;
573 struct DialogInfo
575 int StructSize;
576 GUID Id;
579 #define Dlg_RedrawDialog(Info,hDlg) Info.SendDlgMessage(hDlg,DM_REDRAW,0,0)
581 #define Dlg_GetDlgData(Info,hDlg) Info.SendDlgMessage(hDlg,DM_GETDLGDATA,0,0)
582 #define Dlg_SetDlgData(Info,hDlg,Data) Info.SendDlgMessage(hDlg,DM_SETDLGDATA,0,(LONG_PTR)Data)
584 #define Dlg_GetDlgItemData(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_GETITEMDATA,0,0)
585 #define Dlg_SetDlgItemData(Info,hDlg,ID,Data) Info.SendDlgMessage(hDlg,DM_SETITEMDATA,0,(LONG_PTR)Data)
587 #define DlgItem_GetFocus(Info,hDlg) Info.SendDlgMessage(hDlg,DM_GETFOCUS,0,0)
588 #define DlgItem_SetFocus(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_SETFOCUS,ID,0)
589 #define DlgItem_Enable(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_ENABLE,ID,TRUE)
590 #define DlgItem_Disable(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_ENABLE,ID,FALSE)
591 #define DlgItem_IsEnable(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_ENABLE,ID,-1)
592 #define DlgItem_SetText(Info,hDlg,ID,Str) Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,ID,(LONG_PTR)Str)
594 #define DlgItem_GetCheck(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_GETCHECK,ID,0)
595 #define DlgItem_SetCheck(Info,hDlg,ID,State) Info.SendDlgMessage(hDlg,DM_SETCHECK,ID,State)
597 #define DlgEdit_AddHistory(Info,hDlg,ID,Str) Info.SendDlgMessage(hDlg,DM_ADDHISTORY,ID,(LONG_PTR)Str)
599 #define DlgList_AddString(Info,hDlg,ID,Str) Info.SendDlgMessage(hDlg,DM_LISTADDSTR,ID,(LONG_PTR)Str)
600 #define DlgList_GetCurPos(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTGETCURPOS,ID,0)
601 #define DlgList_SetCurPos(Info,hDlg,ID,NewPos) {struct FarListPos LPos={NewPos,-1};Info.SendDlgMessage(hDlg,DM_LISTSETCURPOS,ID,(LONG_PTR)&LPos);}
602 #define DlgList_ClearList(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTDELETE,ID,0)
603 #define DlgList_DeleteItem(Info,hDlg,ID,Index) {struct FarListDelete FLDItem={Index,1}; Info.SendDlgMessage(hDlg,DM_LISTDELETE,ID,(LONG_PTR)&FLDItem);}
604 #define DlgList_SortUp(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTSORT,ID,0)
605 #define DlgList_SortDown(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTSORT,ID,1)
606 #define DlgList_GetItemData(Info,hDlg,ID,Index) Info.SendDlgMessage(hDlg,DM_LISTGETDATA,ID,Index)
607 #define DlgList_SetItemStrAsData(Info,hDlg,ID,Index,Str) {struct FarListItemData FLID{Index,0,Str,0}; Info.SendDlgMessage(hDlg,DM_LISTSETDATA,ID,(LONG_PTR)&FLID);}
609 enum FARDIALOGFLAGS
611 FDLG_WARNING = 0x00000001,
612 FDLG_SMALLDIALOG = 0x00000002,
613 FDLG_NODRAWSHADOW = 0x00000004,
614 FDLG_NODRAWPANEL = 0x00000008,
615 #ifdef FAR_USE_INTERNALS
616 FDLG_NONMODAL = 0x00000010,
617 #endif // END FAR_USE_INTERNALS
618 FDLG_KEEPCONSOLETITLE = 0x00000020,
619 FDLG_REGULARIDLE = 0x00000040 // causes dialog to receive DN_ENTERIDLE at least once per second
622 typedef LONG_PTR(WINAPI *FARWINDOWPROC)(
623 HANDLE hDlg,
624 int Msg,
625 int Param1,
626 LONG_PTR Param2
629 typedef LONG_PTR(WINAPI *FARAPISENDDLGMESSAGE)(
630 HANDLE hDlg,
631 int Msg,
632 int Param1,
633 LONG_PTR Param2
636 typedef LONG_PTR(WINAPI *FARAPIDEFDLGPROC)(
637 HANDLE hDlg,
638 int Msg,
639 int Param1,
640 LONG_PTR Param2
643 typedef HANDLE(WINAPI *FARAPIDIALOGINIT)(
644 INT_PTR PluginNumber,
645 int X1,
646 int Y1,
647 int X2,
648 int Y2,
649 const wchar_t *HelpTopic,
650 struct FarDialogItem *Item,
651 unsigned int ItemsNumber,
652 DWORD Reserved,
653 DWORD Flags,
654 FARWINDOWPROC DlgProc,
655 LONG_PTR Param
658 typedef int (WINAPI *FARAPIDIALOGRUN)(
659 HANDLE hDlg
662 typedef void (WINAPI *FARAPIDIALOGFREE)(
663 HANDLE hDlg
666 struct FarMenuItem
668 const wchar_t *Text;
669 int Selected;
670 int Checked;
671 int Separator;
674 enum MENUITEMFLAGS
676 MIF_NONE = 0,
677 MIF_SELECTED = 0x00010000UL,
678 MIF_CHECKED = 0x00020000UL,
679 MIF_SEPARATOR = 0x00040000UL,
680 MIF_DISABLE = 0x00080000UL,
681 MIF_GRAYED = 0x00100000UL,
682 MIF_HIDDEN = 0x00200000UL,
683 #ifdef FAR_USE_INTERNALS
684 MIF_SUBMENU = 0x00400000UL,
685 #endif // END FAR_USE_INTERNALS
688 struct FarMenuItemEx
690 DWORD Flags;
691 const wchar_t *Text;
692 DWORD AccelKey;
693 DWORD Reserved;
694 DWORD_PTR UserData;
697 enum FARMENUFLAGS
699 FMENU_SHOWAMPERSAND = 0x00000001,
700 FMENU_WRAPMODE = 0x00000002,
701 FMENU_AUTOHIGHLIGHT = 0x00000004,
702 FMENU_REVERSEAUTOHIGHLIGHT = 0x00000008,
703 #ifdef FAR_USE_INTERNALS
704 FMENU_SHOWNOBOX = 0x00000010,
705 #endif // END FAR_USE_INTERNALS
706 FMENU_USEEXT = 0x00000020,
707 FMENU_CHANGECONSOLETITLE = 0x00000040,
710 typedef int (WINAPI *FARAPIMENU)(
711 INT_PTR PluginNumber,
712 int X,
713 int Y,
714 int MaxHeight,
715 DWORD Flags,
716 const wchar_t *Title,
717 const wchar_t *Bottom,
718 const wchar_t *HelpTopic,
719 const int *BreakKeys,
720 int *BreakCode,
721 const struct FarMenuItem *Item,
722 int ItemsNumber
726 enum PLUGINPANELITEMFLAGS
728 PPIF_PROCESSDESCR = 0x80000000,
729 PPIF_SELECTED = 0x40000000,
730 PPIF_USERDATA = 0x20000000,
733 struct FAR_FIND_DATA
735 FILETIME ftCreationTime;
736 FILETIME ftLastAccessTime;
737 FILETIME ftLastWriteTime;
738 uint64_t nPhysicalSize;
739 uint64_t nFileSize;
740 DWORD dwFileAttributes;
741 DWORD dwUnixMode;
742 #ifdef FAR_USE_INTERNALS
743 wchar_t *lpwszFileName;
744 #else // ELSE FAR_USE_INTERNALS
745 const wchar_t *lpwszFileName;
746 #endif // END FAR_USE_INTERNALS
749 struct PluginPanelItem
751 struct FAR_FIND_DATA FindData;
752 DWORD_PTR UserData;
753 DWORD Flags;
754 DWORD NumberOfLinks;
755 const wchar_t *Description;
756 const wchar_t *Owner;
757 const wchar_t *Group;
758 const wchar_t * const *CustomColumnData;
759 int CustomColumnNumber;
760 DWORD CRC32;
761 DWORD_PTR Reserved[2];
764 enum PANELINFOFLAGS
766 PFLAGS_SHOWHIDDEN = 0x00000001,
767 PFLAGS_HIGHLIGHT = 0x00000002,
768 PFLAGS_REVERSESORTORDER = 0x00000004,
769 PFLAGS_USESORTGROUPS = 0x00000008,
770 PFLAGS_SELECTEDFIRST = 0x00000010,
771 PFLAGS_REALNAMES = 0x00000020,
772 PFLAGS_NUMERICSORT = 0x00000040,
773 PFLAGS_PANELLEFT = 0x00000080,
774 PFLAGS_DIRECTORIESFIRST = 0x00000100,
775 PFLAGS_USECRC32 = 0x00000200,
776 PFLAGS_CASESENSITIVESORT = 0x00000400,
779 enum PANELINFOTYPE
781 PTYPE_FILEPANEL,
782 PTYPE_TREEPANEL,
783 PTYPE_QVIEWPANEL,
784 PTYPE_INFOPANEL
787 struct PanelInfo
789 int PanelType;
790 int Plugin;
791 RECT PanelRect;
792 int ItemsNumber;
793 int SelectedItemsNumber;
794 int CurrentItem;
795 int TopPanelItem;
796 int Visible;
797 int Focus;
798 int ViewMode;
799 int SortMode;
800 DWORD Flags;
801 DWORD Reserved;
805 struct PanelRedrawInfo
807 int CurrentItem;
808 int TopPanelItem;
811 struct CmdLineSelect
813 int SelStart;
814 int SelEnd;
817 struct FarPanelLocation
819 const wchar_t *PluginName; // set to -1 if its plain directory navigation
820 const wchar_t *HostFile; // if set the OpenFilePlugin is used and Item is ignored, otherwise its normal plugin
821 LONG_PTR Item; // ignored if HostFile is not NULL
822 const wchar_t *Path;
825 #define PANEL_NONE ((HANDLE)(-1))
826 #define PANEL_ACTIVE ((HANDLE)(-1))
827 #define PANEL_PASSIVE ((HANDLE)(-2))
829 enum FILE_CONTROL_COMMANDS
831 FCTL_CLOSEPLUGIN,
832 FCTL_GETPANELINFO,
833 FCTL_UPDATEPANEL,
834 FCTL_REDRAWPANEL,
835 FCTL_GETCMDLINE,
836 FCTL_SETCMDLINE,
837 FCTL_SETSELECTION,
838 FCTL_SETVIEWMODE,
839 FCTL_INSERTCMDLINE,
840 FCTL_SETUSERSCREEN,
841 FCTL_SETPANELDIR,
842 FCTL_SETCMDLINEPOS,
843 FCTL_GETCMDLINEPOS,
844 FCTL_SETSORTMODE,
845 FCTL_SETSORTORDER,
846 FCTL_GETCMDLINESELECTEDTEXT,
847 FCTL_SETCMDLINESELECTION,
848 FCTL_GETCMDLINESELECTION,
849 FCTL_CHECKPANELSEXIST,
850 FCTL_SETNUMERICSORT,
851 FCTL_GETUSERSCREEN,
852 FCTL_ISACTIVEPANEL,
853 FCTL_GETPANELITEM,
854 FCTL_GETSELECTEDPANELITEM,
855 FCTL_GETCURRENTPANELITEM,
856 FCTL_GETPANELDIR,
857 FCTL_GETCOLUMNTYPES,
858 FCTL_GETCOLUMNWIDTHS,
859 FCTL_BEGINSELECTION,
860 FCTL_ENDSELECTION,
861 FCTL_CLEARSELECTION,
862 FCTL_SETDIRECTORIESFIRST,
863 FCTL_GETPANELFORMAT,
864 FCTL_GETPANELHOSTFILE,
865 FCTL_SETCASESENSITIVESORT,
866 FCTL_GETPANELPLUGINHANDLE, // Param2 points to value of type HANDLE, sets that value to handle of plugin that renders that panel or INVALID_HANDLE_VALUE
867 FCTL_SETPANELLOCATION, // Param2 points to FarPanelLocation
870 typedef int (WINAPI *FARAPICONTROL)(
871 HANDLE hPlugin,
872 int Command,
873 int Param1,
874 LONG_PTR Param2
877 typedef void (WINAPI *FARAPITEXT)(
878 int X,
879 int Y,
880 int Color,
881 const wchar_t *Str
884 typedef HANDLE(WINAPI *FARAPISAVESCREEN)(int X1, int Y1, int X2, int Y2);
886 typedef void (WINAPI *FARAPIRESTORESCREEN)(HANDLE hScreen);
889 typedef int (WINAPI *FARAPIGETDIRLIST)(
890 const wchar_t *Dir,
891 struct FAR_FIND_DATA **pPanelItem,
892 int *pItemsNumber
895 typedef int (WINAPI *FARAPIGETPLUGINDIRLIST)(
896 INT_PTR PluginNumber,
897 HANDLE hPlugin,
898 const wchar_t *Dir,
899 struct PluginPanelItem **pPanelItem,
900 int *pItemsNumber
903 typedef void (WINAPI *FARAPIFREEDIRLIST)(struct FAR_FIND_DATA *PanelItem, int nItemsNumber);
904 typedef void (WINAPI *FARAPIFREEPLUGINDIRLIST)(struct PluginPanelItem *PanelItem, int nItemsNumber);
906 enum VIEWER_FLAGS
908 VF_NONMODAL = 0x00000001,
909 VF_DELETEONCLOSE = 0x00000002,
910 VF_ENABLE_F6 = 0x00000004,
911 VF_DISABLEHISTORY = 0x00000008,
912 VF_IMMEDIATERETURN = 0x00000100,
913 VF_DELETEONLYFILEONCLOSE = 0x00000200,
916 typedef int (WINAPI *FARAPIVIEWER)(
917 const wchar_t *FileName,
918 const wchar_t *Title,
919 int X1,
920 int Y1,
921 int X2,
922 int Y2,
923 DWORD Flags,
924 UINT CodePage
927 enum EDITOR_FLAGS
929 EF_NONMODAL = 0x00000001,
930 EF_CREATENEW = 0x00000002,
931 EF_ENABLE_F6 = 0x00000004,
932 EF_DISABLEHISTORY = 0x00000008,
933 EF_DELETEONCLOSE = 0x00000010,
934 EF_IMMEDIATERETURN = 0x00000100,
935 EF_DELETEONLYFILEONCLOSE = 0x00000200,
936 #ifdef FAR_USE_INTERNALS
937 EF_LOCKED = 0x00000400,
939 EF_OPENMODE_MASK = 0xF0000000,
940 EF_OPENMODE_NEWIFOPEN = 0x10000000,
941 EF_OPENMODE_USEEXISTING = 0x20000000,
942 EF_OPENMODE_BREAKIFOPEN = 0x30000000,
943 EF_OPENMODE_RELOADIFOPEN = 0x40000000,
944 #endif // END FAR_USE_INTERNALS
945 #ifdef FAR_USE_INTERNALS
946 EF_SERVICEREGION = 0x00001000,
947 #endif // END FAR_USE_INTERNALS
950 enum EDITOR_EXITCODE
952 EEC_OPEN_ERROR = 0,
953 EEC_MODIFIED = 1,
954 EEC_NOT_MODIFIED = 2,
955 EEC_LOADING_INTERRUPTED = 3,
956 #ifdef FAR_USE_INTERNALS
957 EEC_OPENED_EXISTING = 4,
958 EEC_ALREADY_EXISTS = 5,
959 EEC_OPEN_NEWINSTANCE = 6,
960 EEC_RELOAD = 7,
961 #endif // END FAR_USE_INTERNALS
964 typedef int (WINAPI *FARAPIEDITOR)(
965 const wchar_t *FileName,
966 const wchar_t *Title,
967 int X1,
968 int Y1,
969 int X2,
970 int Y2,
971 DWORD Flags,
972 int StartLine,
973 int StartChar,
974 UINT CodePage
977 typedef int (WINAPI *FARAPICMPNAME)(
978 const wchar_t *Pattern,
979 const wchar_t *String,
980 int SkipPath
984 typedef const wchar_t*(WINAPI *FARAPIGETMSG)(
985 INT_PTR PluginNumber,
986 FarLangMsgID MsgId
990 enum FarHelpFlags
992 FHELP_NOSHOWERROR = 0x80000000,
993 FHELP_SELFHELP = 0x00000000,
994 FHELP_FARHELP = 0x00000001,
995 FHELP_CUSTOMFILE = 0x00000002,
996 FHELP_CUSTOMPATH = 0x00000004,
997 FHELP_USECONTENTS = 0x40000000,
1000 typedef BOOL (WINAPI *FARAPISHOWHELP)(
1001 const wchar_t *ModuleName,
1002 const wchar_t *Topic,
1003 DWORD Flags
1006 enum ADVANCED_CONTROL_COMMANDS
1008 ACTL_GETFARVERSION = 0,
1009 #ifdef FAR_USE_INTERNALS
1011 #endif // END FAR_USE_INTERNALS
1012 ACTL_GETSYSWORDDIV = 2,
1013 ACTL_WAITKEY = 3,
1014 ACTL_GETCOLOR = 4,
1015 ACTL_GETARRAYCOLOR = 5,
1016 ACTL_EJECTMEDIA = 6,
1017 ACTL_KEYMACRO = 7,
1018 ACTL_POSTKEYSEQUENCE = 8,
1019 ACTL_GETWINDOWINFO = 9,
1020 ACTL_GETWINDOWCOUNT = 10,
1021 ACTL_SETCURRENTWINDOW = 11,
1022 ACTL_COMMIT = 12,
1023 ACTL_GETFARHWND = 13,
1024 ACTL_GETSYSTEMSETTINGS = 14,
1025 ACTL_GETPANELSETTINGS = 15,
1026 ACTL_GETINTERFACESETTINGS = 16,
1027 ACTL_GETCONFIRMATIONS = 17,
1028 ACTL_GETDESCSETTINGS = 18,
1029 ACTL_SETARRAYCOLOR = 19,
1030 #ifdef FAR_USE_INTERNALS
1032 #endif // END FAR_USE_INTERNALS
1033 ACTL_GETPLUGINMAXREADDATA = 21,
1034 ACTL_GETDIALOGSETTINGS = 22,
1035 ACTL_GETSHORTWINDOWINFO = 23,
1036 #ifdef FAR_USE_INTERNALS
1037 ACTL_REMOVEMEDIA = 24,
1038 ACTL_GETMEDIATYPE = 25,
1039 ACTL_GETPOLICIES = 26,
1040 #endif // END FAR_USE_INTERNALS
1041 ACTL_REDRAWALL = 27,
1042 ACTL_SYNCHRO = 28,
1043 ACTL_SETPROGRESSSTATE = 29,
1044 ACTL_SETPROGRESSVALUE = 30,
1045 ACTL_QUIT = 31,
1046 ACTL_GETFARRECT = 32,
1047 ACTL_GETCURSORPOS = 33,
1048 ACTL_SETCURSORPOS = 34,
1049 ACTL_PROGRESSNOTIFY = 35,
1052 #ifdef FAR_USE_INTERNALS
1053 enum FarPoliciesFlags
1055 FFPOL_MAINMENUSYSTEM = 0x00000001,
1056 FFPOL_MAINMENUPANEL = 0x00000002,
1057 FFPOL_MAINMENUINTERFACE = 0x00000004,
1058 FFPOL_MAINMENULANGUAGE = 0x00000008,
1059 FFPOL_MAINMENUPLUGINS = 0x00000010,
1060 FFPOL_MAINMENUDIALOGS = 0x00000020,
1061 FFPOL_MAINMENUCONFIRMATIONS = 0x00000040,
1062 FFPOL_MAINMENUPANELMODE = 0x00000080,
1063 FFPOL_MAINMENUFILEDESCR = 0x00000100,
1064 FFPOL_MAINMENUFOLDERDESCR = 0x00000200,
1065 FFPOL_MAINMENUVIEWER = 0x00000800,
1066 FFPOL_MAINMENUEDITOR = 0x00001000,
1067 FFPOL_MAINMENUCOLORS = 0x00004000,
1068 FFPOL_MAINMENUHILIGHT = 0x00008000,
1069 FFPOL_MAINMENUSAVEPARAMS = 0x00020000,
1071 FFPOL_CREATEMACRO = 0x00040000,
1072 FFPOL_USEPSWITCH = 0x00080000,
1073 FFPOL_PERSONALPATH = 0x00100000,
1074 FFPOL_KILLTASK = 0x00200000,
1075 FFPOL_SHOWHIDDENDRIVES = 0x80000000,
1078 #endif // END FAR_USE_INTERNALS
1080 enum FarSystemSettings
1082 FSS_DELETETORECYCLEBIN = 0x00000002,
1083 FSS_WRITETHROUGH = 0x00000004,
1084 FSS_RESERVED = 0x00000008,
1085 FSS_SAVECOMMANDSHISTORY = 0x00000020,
1086 FSS_SAVEFOLDERSHISTORY = 0x00000040,
1087 FSS_SAVEVIEWANDEDITHISTORY = 0x00000080,
1088 FSS_USEWINDOWSREGISTEREDTYPES = 0x00000100,
1089 FSS_AUTOSAVESETUP = 0x00000200,
1090 FSS_SCANSYMLINK = 0x00000400,
1093 enum FarPanelSettings
1095 FPS_SHOWHIDDENANDSYSTEMFILES = 0x00000001,
1096 FPS_HIGHLIGHTFILES = 0x00000002,
1097 FPS_AUTOCHANGEFOLDER = 0x00000004,
1098 FPS_SELECTFOLDERS = 0x00000008,
1099 FPS_ALLOWREVERSESORTMODES = 0x00000010,
1100 FPS_SHOWCOLUMNTITLES = 0x00000020,
1101 FPS_SHOWSTATUSLINE = 0x00000040,
1102 FPS_SHOWFILESTOTALINFORMATION = 0x00000080,
1103 FPS_SHOWFREESIZE = 0x00000100,
1104 FPS_SHOWSCROLLBAR = 0x00000200,
1105 FPS_SHOWBACKGROUNDSCREENSNUMBER = 0x00000400,
1106 FPS_SHOWSORTMODELETTER = 0x00000800,
1109 enum FarDialogSettings
1111 FDIS_HISTORYINDIALOGEDITCONTROLS = 0x00000001,
1112 FDIS_PERSISTENTBLOCKSINEDITCONTROLS = 0x00000002,
1113 FDIS_AUTOCOMPLETEININPUTLINES = 0x00000004,
1114 FDIS_BSDELETEUNCHANGEDTEXT = 0x00000008,
1115 FDIS_DELREMOVESBLOCKS = 0x00000010,
1116 FDIS_MOUSECLICKOUTSIDECLOSESDIALOG = 0x00000020,
1119 enum FarInterfaceSettings
1121 FIS_CLOCKINPANELS = 0x00000001,
1122 FIS_CLOCKINVIEWERANDEDITOR = 0x00000002,
1123 FIS_MOUSE = 0x00000004,
1124 FIS_SHOWKEYBAR = 0x00000008,
1125 FIS_ALWAYSSHOWMENUBAR = 0x00000010,
1126 FIS_SHOWTOTALCOPYPROGRESSINDICATOR = 0x00000100,
1127 FIS_SHOWCOPYINGTIMEINFO = 0x00000200,
1128 FIS_USECTRLPGUPTOCHANGEDRIVE = 0x00000800,
1129 FIS_SHOWTOTALDELPROGRESSINDICATOR = 0x00001000,
1132 enum FarConfirmationsSettings
1134 FCS_COPYOVERWRITE = 0x00000001,
1135 FCS_MOVEOVERWRITE = 0x00000002,
1136 FCS_DRAGANDDROP = 0x00000004,
1137 FCS_DELETE = 0x00000008,
1138 FCS_DELETENONEMPTYFOLDERS = 0x00000010,
1139 FCS_INTERRUPTOPERATION = 0x00000020,
1140 FCS_DISCONNECTNETWORKDRIVE = 0x00000040,
1141 FCS_RELOADEDITEDFILE = 0x00000080,
1142 FCS_CLEARHISTORYLIST = 0x00000100,
1143 FCS_EXIT = 0x00000200,
1144 FCS_OVERWRITEDELETEROFILES = 0x00000400,
1147 enum FarDescriptionSettings
1149 FDS_UPDATEALWAYS = 0x00000001,
1150 FDS_UPDATEIFDISPLAYED = 0x00000002,
1151 FDS_SETHIDDEN = 0x00000004,
1152 FDS_UPDATEREADONLY = 0x00000008,
1155 enum FAREJECTMEDIAFLAGS
1157 EJECT_NO_MESSAGE = 0x00000001,
1158 EJECT_LOAD_MEDIA = 0x00000002,
1159 #ifdef FAR_USE_INTERNALS
1160 EJECT_NOTIFY_AFTERREMOVE = 0x00000004,
1161 EJECT_READY = 0x80000000,
1162 #endif // END FAR_USE_INTERNALS
1165 struct ActlEjectMedia
1167 DWORD Letter;
1168 DWORD Flags;
1171 #ifdef FAR_USE_INTERNALS
1172 enum FARMEDIATYPE
1174 FMT_DRIVE_ERROR = -1,
1175 FMT_DRIVE_UNKNOWN = DRIVE_UNKNOWN,
1176 FMT_DRIVE_NO_ROOT_DIR = DRIVE_NO_ROOT_DIR,
1177 FMT_DRIVE_REMOVABLE = DRIVE_REMOVABLE,
1178 FMT_DRIVE_FIXED = DRIVE_FIXED,
1179 FMT_DRIVE_REMOTE = DRIVE_REMOTE,
1180 FMT_DRIVE_CDROM = DRIVE_CDROM,
1181 FMT_DRIVE_RAMDISK = DRIVE_RAMDISK,
1182 FMT_DRIVE_SUBSTITUTE = 15,
1183 FMT_DRIVE_REMOTE_NOT_CONNECTED = 16,
1184 FMT_DRIVE_CD_RW = 18,
1185 FMT_DRIVE_CD_RWDVD = 19,
1186 FMT_DRIVE_DVD_ROM = 20,
1187 FMT_DRIVE_DVD_RW = 21,
1188 FMT_DRIVE_DVD_RAM = 22,
1189 FMT_DRIVE_USBDRIVE = 40,
1190 FMT_DRIVE_NOT_INIT = 255,
1193 enum FARMEDIATYPEFLAGS
1195 MEDIATYPE_NODETECTCDROM = 0x80000000,
1198 struct ActlMediaType
1200 DWORD Letter;
1201 DWORD Flags;
1202 DWORD Reserved[2];
1204 #endif // END FAR_USE_INTERNALS
1206 enum FARKEYSEQUENCEFLAGS
1208 KSFLAGS_DISABLEOUTPUT = 0x00000001,
1209 KSFLAGS_NOSENDKEYSTOPLUGINS = 0x00000002,
1210 KSFLAGS_SILENTCHECK = 0x00000001,
1213 struct KeySequence
1215 DWORD Flags;
1216 int Count;
1217 const DWORD *Sequence;
1220 enum FARMACROCOMMAND
1222 MCMD_LOADALL = 0,
1223 MCMD_SAVEALL = 1,
1224 MCMD_POSTMACROSTRING = 2,
1225 #ifdef FAR_USE_INTERNALS
1226 MCMD_COMPILEMACRO = 3,
1227 #endif // END FAR_USE_INTERNALS
1228 MCMD_CHECKMACRO = 4,
1229 MCMD_GETSTATE = 5,
1230 MCMD_GETAREA = 6,
1231 #ifdef FAR_USE_INTERNALS
1232 MCMD_RUNMACROSTRING = 7,
1233 #endif // END FAR_USE_INTERNALS
1236 enum FARMACROAREA
1238 MACROAREA_OTHER = 0,
1239 MACROAREA_SHELL = 1,
1240 MACROAREA_VIEWER = 2,
1241 MACROAREA_EDITOR = 3,
1242 MACROAREA_DIALOG = 4,
1243 MACROAREA_SEARCH = 5,
1244 MACROAREA_DISKS = 6,
1245 MACROAREA_MAINMENU = 7,
1246 MACROAREA_MENU = 8,
1247 MACROAREA_HELP = 9,
1248 MACROAREA_INFOPANEL =10,
1249 MACROAREA_QVIEWPANEL =11,
1250 MACROAREA_TREEPANEL =12,
1251 MACROAREA_FINDFOLDER =13,
1252 MACROAREA_USERMENU =14,
1253 MACROAREA_AUTOCOMPLETION =15,
1256 enum FARMACROSTATE
1258 MACROSTATE_NOMACRO = 0,
1259 MACROSTATE_EXECUTING = 1,
1260 MACROSTATE_EXECUTING_COMMON = 2,
1261 MACROSTATE_RECORDING = 3,
1262 MACROSTATE_RECORDING_COMMON = 4,
1265 enum FARMACROPARSEERRORCODE
1267 MPEC_SUCCESS = 0,
1268 MPEC_UNRECOGNIZED_KEYWORD = 1,
1269 MPEC_UNRECOGNIZED_FUNCTION = 2,
1270 MPEC_FUNC_PARAM = 3,
1271 MPEC_NOT_EXPECTED_ELSE = 4,
1272 MPEC_NOT_EXPECTED_END = 5,
1273 MPEC_UNEXPECTED_EOS = 6,
1274 MPEC_EXPECTED_TOKEN = 7,
1275 MPEC_BAD_HEX_CONTROL_CHAR = 8,
1276 MPEC_BAD_CONTROL_CHAR = 9,
1277 MPEC_VAR_EXPECTED =10,
1278 MPEC_EXPR_EXPECTED =11,
1279 MPEC_ZEROLENGTHMACRO =12,
1280 MPEC_INTPARSERERROR =13,
1281 MPEC_CONTINUE_OTL =14,
1284 struct MacroParseResult
1286 DWORD ErrCode;
1287 COORD ErrPos;
1288 const wchar_t *ErrSrc;
1291 struct ActlKeyMacro
1293 int Command;
1294 union
1296 struct
1298 const wchar_t *SequenceText;
1299 DWORD Flags;
1300 DWORD AKey;
1301 } PlainText;
1302 #ifdef FAR_USE_INTERNALS
1303 struct KeySequence Compile;
1304 #endif // END FAR_USE_INTERNALS
1305 struct MacroParseResult MacroResult;
1306 DWORD_PTR Reserved[3];
1307 } Param;
1310 #ifdef FAR_USE_INTERNALS
1311 #if defined(PROCPLUGINMACROFUNC)
1312 enum FARMACROVARTYPE
1314 FMVT_INTEGER = 0,
1315 FMVT_STRING = 1,
1316 FMVT_DOUBLE = 2,
1319 struct FarMacroValue
1321 enum FARMACROVARTYPE type;
1322 union
1324 int64_t i;
1325 double d;
1326 const wchar_t *s;
1327 } v;
1330 struct FarMacroFunction
1332 DWORD Flags;
1333 const wchar_t *Name;
1334 int nParam;
1335 int oParam;
1336 const wchar_t *Syntax;
1337 const wchar_t *Description;
1339 #endif
1340 #endif // END FAR_USE_INTERNALS
1342 enum FARCOLORFLAGS
1344 FCLR_REDRAW = 0x00000001,
1347 struct FarSetColors
1349 DWORD Flags;
1350 int StartIndex;
1351 int ColorCount;
1352 LPBYTE Colors;
1355 struct FarTrueColor
1357 unsigned char R;
1358 unsigned char G;
1359 unsigned char B;
1360 unsigned char Flags; // bit one - 'active' flag, others - ignored and must be set to zero
1363 struct FarTrueColorForeAndBack
1365 struct FarTrueColor Fore;
1366 struct FarTrueColor Back;
1369 struct DialogItemTrueColors
1371 struct FarTrueColorForeAndBack Normal;
1372 struct FarTrueColorForeAndBack Hilighted;
1373 struct FarTrueColorForeAndBack Frame;
1374 struct FarTrueColorForeAndBack Reserved;
1377 enum WINDOWINFO_TYPE
1379 #ifdef FAR_USE_INTERNALS
1380 WTYPE_VIRTUAL,
1381 // ПРОСЬБА НЕ ЗАБЫВАТЬ СИНХРОНИЗИРОВАТЬ ИЗМЕНЕНИЯ
1382 // WTYPE_* и MODALTYPE_* (frame.hpp)!!!
1383 // (и не надо убирать этот комментарий, пока ситуация не изменится ;)
1384 #endif // END FAR_USE_INTERNALS
1385 WTYPE_PANELS=1,
1386 WTYPE_VIEWER,
1387 WTYPE_EDITOR,
1388 WTYPE_DIALOG,
1389 WTYPE_VMENU,
1390 WTYPE_HELP,
1391 #ifdef FAR_USE_INTERNALS
1392 WTYPE_COMBOBOX,
1393 WTYPE_FINDFOLDER,
1394 WTYPE_USER,
1395 #endif // END FAR_USE_INTERNALS
1398 struct WindowInfo
1400 int Pos;
1401 int Type;
1402 int Modified;
1403 int Current;
1404 wchar_t *TypeName;
1405 int TypeNameSize;
1406 wchar_t *Name;
1407 int NameSize;
1410 enum PROGRESSTATE
1412 PGS_NOPROGRESS =0x0,
1413 PGS_INDETERMINATE=0x1,
1414 PGS_NORMAL =0x2,
1415 PGS_ERROR =0x4,
1416 PGS_PAUSED =0x8,
1419 struct PROGRESSVALUE
1421 uint64_t Completed;
1422 uint64_t Total;
1425 typedef INT_PTR(WINAPI *FARAPIADVCONTROL)(
1426 INT_PTR ModuleNumber,
1427 int Command,
1428 void *Param
1432 enum VIEWER_CONTROL_COMMANDS
1434 VCTL_GETINFO,
1435 VCTL_QUIT,
1436 VCTL_REDRAW,
1437 VCTL_SETKEYBAR,
1438 VCTL_SETPOSITION,
1439 VCTL_SELECT,
1440 VCTL_SETMODE,
1443 enum VIEWER_OPTIONS
1445 VOPT_SAVEFILEPOSITION=1,
1446 VOPT_AUTODETECTCODEPAGE=2,
1449 enum VIEWER_SETMODE_TYPES
1451 VSMT_HEX,
1452 VSMT_WRAP,
1453 VSMT_WORDWRAP,
1456 enum VIEWER_SETMODEFLAGS_TYPES
1458 VSMFL_REDRAW = 0x00000001,
1461 struct ViewerSetMode
1463 int Type;
1464 union
1466 int iParam;
1467 wchar_t *wszParam;
1468 } Param;
1469 DWORD Flags;
1470 DWORD Reserved;
1473 struct ViewerSelect
1475 int64_t BlockStartPos;
1476 int BlockLen;
1479 enum VIEWER_SETPOS_FLAGS
1481 VSP_NOREDRAW = 0x0001,
1482 VSP_PERCENT = 0x0002,
1483 VSP_RELATIVE = 0x0004,
1484 VSP_NORETNEWPOS = 0x0008,
1487 struct ViewerSetPosition
1489 DWORD Flags;
1490 int64_t StartPos;
1491 int64_t LeftPos;
1494 struct ViewerMode
1496 UINT CodePage;
1497 int Wrap;
1498 int WordWrap;
1499 int Hex;
1500 int Processed;
1501 DWORD Reserved[3];
1504 struct ViewerInfo
1506 int StructSize;
1507 int ViewerID;
1508 const wchar_t *FileName;
1509 int64_t FileSize;
1510 int64_t FilePos;
1511 int WindowSizeX;
1512 int WindowSizeY;
1513 DWORD Options;
1514 int TabSize;
1515 struct ViewerMode CurMode;
1516 int64_t LeftPos;
1519 typedef int (WINAPI *FARAPIVIEWERCONTROL)(
1520 int Command,
1521 void *Param
1524 enum VIEWER_EVENTS
1526 VE_READ =0,
1527 VE_CLOSE =1,
1529 VE_GOTFOCUS =6,
1530 VE_KILLFOCUS =7,
1534 enum EDITOR_EVENTS
1536 EE_READ =0,
1537 EE_SAVE =1,
1538 EE_REDRAW =2,
1539 EE_CLOSE =3,
1541 EE_GOTFOCUS =6,
1542 EE_KILLFOCUS =7,
1545 enum DIALOG_EVENTS
1547 DE_DLGPROCINIT =0,
1548 DE_DEFDLGPROCINIT =1,
1549 DE_DLGPROCEND =2,
1552 enum SYNCHRO_EVENTS
1554 SE_COMMONSYNCHRO =0,
1557 #define EEREDRAW_ALL (void*)0
1558 #define EEREDRAW_CHANGE (void*)1
1559 #define EEREDRAW_LINE (void*)2
1561 enum EDITOR_CONTROL_COMMANDS
1563 ECTL_GETSTRING,
1564 ECTL_SETSTRING,
1565 ECTL_INSERTSTRING,
1566 ECTL_DELETESTRING,
1567 ECTL_DELETECHAR,
1568 ECTL_INSERTTEXT,
1569 ECTL_GETINFO,
1570 ECTL_SETPOSITION,
1571 ECTL_SELECT,
1572 ECTL_REDRAW,
1573 ECTL_TABTOREAL,
1574 ECTL_REALTOTAB,
1575 ECTL_EXPANDTABS,
1576 ECTL_SETTITLE,
1577 ECTL_READINPUT,
1578 ECTL_PROCESSINPUT,
1579 ECTL_ADDCOLOR,
1580 ECTL_GETCOLOR,
1581 ECTL_SAVEFILE,
1582 ECTL_QUIT,
1583 ECTL_SETKEYBAR,
1584 ECTL_PROCESSKEY,
1585 ECTL_SETPARAM,
1586 ECTL_GETBOOKMARKS,
1587 ECTL_TURNOFFMARKINGBLOCK,
1588 ECTL_DELETEBLOCK,
1589 ECTL_ADDSTACKBOOKMARK,
1590 ECTL_PREVSTACKBOOKMARK,
1591 ECTL_NEXTSTACKBOOKMARK,
1592 ECTL_CLEARSTACKBOOKMARKS,
1593 ECTL_DELETESTACKBOOKMARK,
1594 ECTL_GETSTACKBOOKMARKS,
1595 ECTL_UNDOREDO,
1596 ECTL_GETFILENAME,
1597 ECTL_ADDTRUECOLOR,
1598 ECTL_GETTRUECOLOR,
1600 //#ifdef FAR_USE_INTERNALS
1601 // ECTL_SERVICEREGION, // WTF
1602 //#endif // END FAR_USE_INTERNALS
1604 enum EDITOR_SETPARAMETER_TYPES
1606 ESPT_TABSIZE,
1607 ESPT_EXPANDTABS,
1608 ESPT_AUTOINDENT,
1609 ESPT_CURSORBEYONDEOL,
1610 ESPT_CHARCODEBASE,
1611 ESPT_CODEPAGE,
1612 ESPT_SAVEFILEPOSITION,
1613 ESPT_LOCKMODE,
1614 ESPT_SETWORDDIV,
1615 ESPT_GETWORDDIV,
1616 ESPT_SHOWWHITESPACE,
1617 ESPT_SETBOM,
1620 #ifdef FAR_USE_INTERNALS
1621 struct EditorServiceRegion
1623 int Command;
1624 DWORD Flags;
1626 #endif // END FAR_USE_INTERNALS
1629 struct EditorSetParameter
1631 int Type;
1632 union
1634 int iParam;
1635 wchar_t *wszParam;
1636 DWORD Reserved1;
1637 } Param;
1638 DWORD Flags;
1639 DWORD Size;
1643 enum EDITOR_UNDOREDO_COMMANDS
1645 EUR_BEGIN,
1646 EUR_END,
1647 EUR_UNDO,
1648 EUR_REDO
1652 struct EditorUndoRedo
1654 int Command;
1655 DWORD_PTR Reserved[3];
1658 struct EditorGetString
1660 int StringNumber;
1661 #ifdef FAR_USE_INTERNALS
1662 wchar_t *StringText;
1663 wchar_t *StringEOL;
1664 #else // ELSE FAR_USE_INTERNALS
1665 const wchar_t *StringText;
1666 const wchar_t *StringEOL;
1667 #endif // END FAR_USE_INTERNALS
1668 int StringLength;
1669 int SelStart;
1670 int SelEnd;
1674 struct EditorSetString
1676 int StringNumber;
1677 const wchar_t *StringText;
1678 const wchar_t *StringEOL;
1679 int StringLength;
1682 enum EXPAND_TABS
1684 EXPAND_NOTABS,
1685 EXPAND_ALLTABS,
1686 EXPAND_NEWTABS
1690 enum EDITOR_OPTIONS
1692 EOPT_EXPANDALLTABS = 0x00000001,
1693 EOPT_PERSISTENTBLOCKS = 0x00000002,
1694 EOPT_DELREMOVESBLOCKS = 0x00000004,
1695 EOPT_AUTOINDENT = 0x00000008,
1696 EOPT_SAVEFILEPOSITION = 0x00000010,
1697 EOPT_AUTODETECTCODEPAGE= 0x00000020,
1698 EOPT_CURSORBEYONDEOL = 0x00000040,
1699 EOPT_EXPANDONLYNEWTABS = 0x00000080,
1700 EOPT_SHOWWHITESPACE = 0x00000100,
1701 EOPT_BOM = 0x00000200,
1705 enum EDITOR_BLOCK_TYPES
1707 BTYPE_NONE,
1708 BTYPE_STREAM,
1709 BTYPE_COLUMN
1712 enum EDITOR_CURRENTSTATE
1714 ECSTATE_MODIFIED = 0x00000001,
1715 ECSTATE_SAVED = 0x00000002,
1716 ECSTATE_LOCKED = 0x00000004,
1720 struct EditorInfo
1722 int EditorID;
1723 int WindowSizeX;
1724 int WindowSizeY;
1725 int TotalLines;
1726 int CurLine;
1727 int CurPos;
1728 int CurTabPos;
1729 int TopScreenLine;
1730 int LeftPos;
1731 int Overtype;
1732 int BlockType;
1733 int BlockStartLine;
1734 DWORD Options;
1735 int TabSize;
1736 int BookMarkCount;
1737 DWORD CurState;
1738 UINT CodePage;
1739 DWORD Reserved[5];
1742 struct EditorBookMarks
1744 long *Line;
1745 long *Cursor;
1746 long *ScreenLine;
1747 long *LeftPos;
1748 DWORD Reserved[4];
1751 struct EditorSetPosition
1753 int CurLine;
1754 int CurPos;
1755 int CurTabPos;
1756 int TopScreenLine;
1757 int LeftPos;
1758 int Overtype;
1762 struct EditorSelect
1764 int BlockType;
1765 int BlockStartLine;
1766 int BlockStartPos;
1767 int BlockWidth;
1768 int BlockHeight;
1772 struct EditorConvertPos
1774 int StringNumber;
1775 int SrcPos;
1776 int DestPos;
1780 enum EDITORCOLORFLAGS
1782 ECF_TAB1 = 0x10000,
1785 struct EditorColor
1787 int StringNumber;
1788 int ColorItem;
1789 int StartPos;
1790 int EndPos; // -1 means edge of visible screen part, otherwise wanted edge position
1791 int Color;
1794 struct EditorTrueColor
1796 struct EditorColor Base;
1797 struct FarTrueColorForeAndBack TrueColor;
1800 struct EditorSaveFile
1802 const wchar_t *FileName;
1803 const wchar_t *FileEOL;
1804 UINT CodePage;
1807 typedef int (WINAPI *FARAPIEDITORCONTROL)(
1808 int Command,
1809 void *Param
1812 enum INPUTBOXFLAGS
1814 FIB_ENABLEEMPTY = 0x00000001,
1815 FIB_PASSWORD = 0x00000002,
1816 FIB_EXPANDENV = 0x00000004,
1817 FIB_NOUSELASTHISTORY = 0x00000008,
1818 FIB_BUTTONS = 0x00000010,
1819 FIB_NOAMPERSAND = 0x00000020,
1820 #ifdef FAR_USE_INTERNALS
1821 FIB_CHECKBOX = 0x00010000,
1822 #endif // END FAR_USE_INTERNALS
1823 FIB_EDITPATH = 0x01000000,
1826 typedef int (WINAPI *FARAPIINPUTBOX)(
1827 const wchar_t *Title,
1828 const wchar_t *SubTitle,
1829 const wchar_t *HistoryName,
1830 const wchar_t *SrcText,
1831 wchar_t *DestText,
1832 int DestLength,
1833 const wchar_t *HelpTopic,
1834 DWORD Flags
1837 typedef int (WINAPI *FARAPIPLUGINSCONTROL)(
1838 HANDLE hHandle,
1839 int Command,
1840 int Param1,
1841 LONG_PTR Param2
1844 typedef int (WINAPI *FARAPIFILEFILTERCONTROL)(
1845 HANDLE hHandle,
1846 int Command,
1847 int Param1,
1848 LONG_PTR Param2
1851 typedef int (WINAPI *FARAPIREGEXPCONTROL)(
1852 HANDLE hHandle,
1853 int Command,
1854 LONG_PTR Param
1857 // <C&C++>
1858 typedef int (WINAPIV *FARSTDSNPRINTF)(wchar_t *Buffer,size_t Sizebuf,const wchar_t *Format,...);
1859 typedef int (WINAPIV *FARSTDSSCANF)(const wchar_t *Buffer, const wchar_t *Format,...);
1860 // </C&C++>
1861 typedef void (WINAPI *FARSTDQSORT)(void *base, size_t nelem, size_t width, int (__cdecl *fcmp)(const void *, const void *));
1862 typedef void (WINAPI *FARSTDQSORTEX)(void *base, size_t nelem, size_t width, int (__cdecl *fcmp)(const void *, const void *,void *userparam),void *userparam);
1863 typedef void *(WINAPI *FARSTDBSEARCH)(const void *key, const void *base, size_t nelem, size_t width, int (__cdecl *fcmp)(const void *, const void *));
1864 typedef int (WINAPI *FARSTDGETFILEOWNER)(const wchar_t *Computer,const wchar_t *Name,wchar_t *Owner,int Size);
1865 typedef int (WINAPI *FARSTDGETNUMBEROFLINKS)(const wchar_t *Name);
1866 typedef int (WINAPI *FARSTDATOI)(const wchar_t *s);
1867 typedef int64_t (WINAPI *FARSTDATOI64)(const wchar_t *s);
1868 typedef wchar_t *(WINAPI *FARSTDITOA64)(int64_t value, wchar_t *string, int radix);
1869 typedef wchar_t *(WINAPI *FARSTDITOA)(int value, wchar_t *string, int radix);
1870 typedef wchar_t *(WINAPI *FARSTDLTRIM)(wchar_t *Str);
1871 typedef wchar_t *(WINAPI *FARSTDRTRIM)(wchar_t *Str);
1872 typedef wchar_t *(WINAPI *FARSTDTRIM)(wchar_t *Str);
1873 // truncation functions below uses console cells count as limiting unit
1874 typedef wchar_t *(WINAPI *FARSTDTRUNCSTR)(wchar_t *Str,int MaxCells);
1875 typedef wchar_t *(WINAPI *FARSTDTRUNCPATHSTR)(wchar_t *Str,int MaxCells);
1876 typedef wchar_t *(WINAPI *FARSTDQUOTESPACEONLY)(wchar_t *Str);
1877 typedef const wchar_t*(WINAPI *FARSTDPOINTTONAME)(const wchar_t *Path);
1878 typedef int (WINAPI *FARSTDGETPATHROOT)(const wchar_t *Path,wchar_t *Root, int DestSize);
1879 typedef BOOL (WINAPI *FARSTDADDENDSLASH)(wchar_t *Path);
1880 typedef int (WINAPI *FARSTDCOPYTOCLIPBOARD)(const wchar_t *Data);
1881 typedef wchar_t *(WINAPI *FARSTDPASTEFROMCLIPBOARD)(void);
1882 typedef FarKey (WINAPI *FARSTDINPUTRECORDTOKEY)(const INPUT_RECORD *r);
1883 typedef int (WINAPI *FARSTDLOCALISLOWER)(wchar_t Ch);
1884 typedef int (WINAPI *FARSTDLOCALISUPPER)(wchar_t Ch);
1885 typedef int (WINAPI *FARSTDLOCALISALPHA)(wchar_t Ch);
1886 typedef int (WINAPI *FARSTDLOCALISALPHANUM)(wchar_t Ch);
1887 typedef wchar_t (WINAPI *FARSTDLOCALUPPER)(wchar_t LowerChar);
1888 typedef wchar_t (WINAPI *FARSTDLOCALLOWER)(wchar_t UpperChar);
1889 typedef void (WINAPI *FARSTDLOCALUPPERBUF)(wchar_t *Buf,int Length);
1890 typedef void (WINAPI *FARSTDLOCALLOWERBUF)(wchar_t *Buf,int Length);
1891 typedef void (WINAPI *FARSTDLOCALSTRUPR)(wchar_t *s1);
1892 typedef void (WINAPI *FARSTDLOCALSTRLWR)(wchar_t *s1);
1893 typedef int (WINAPI *FARSTDLOCALSTRICMP)(const wchar_t *s1,const wchar_t *s2);
1894 typedef int (WINAPI *FARSTDLOCALSTRNICMP)(const wchar_t *s1,const wchar_t *s2,int n);
1896 enum PROCESSNAME_FLAGS
1898 PN_CMPNAME = 0x00000000UL,
1899 PN_CMPNAMELIST = 0x00010000UL,
1900 PN_GENERATENAME = 0x00020000UL,
1901 PN_SKIPPATH = 0x01000000UL,
1904 typedef int (WINAPI *FARSTDPROCESSNAME)(const wchar_t *param1, wchar_t *param2, DWORD size, DWORD flags);
1906 typedef void (WINAPI *FARSTDUNQUOTE)(wchar_t *Str);
1908 enum XLATMODE
1910 XLAT_SWITCHKEYBLAYOUT = 0x00000001UL, // unsupported
1911 XLAT_SWITCHKEYBBEEP = 0x00000002UL, // unsupported
1912 XLAT_USEKEYBLAYOUTNAME = 0x00000004UL, // unsupported
1913 XLAT_CONVERTALLCMDLINE = 0x00010000UL, // deprecated
1916 typedef size_t (WINAPI *FARSTDKEYTOKEYNAME)(FarKey Key,wchar_t *KeyText,size_t Size);
1918 typedef wchar_t*(WINAPI *FARSTDXLAT)(wchar_t *Line,int StartPos,int EndPos,DWORD Flags);
1920 typedef FarKey (WINAPI *FARSTDKEYNAMETOKEY)(const wchar_t *Name);
1922 typedef int (WINAPI *FRSUSERFUNC)(
1923 const struct FAR_FIND_DATA *FData,
1924 const wchar_t *FullName,
1925 void *Param
1928 enum FRSMODE
1930 FRS_RETUPDIR = 0x01,
1931 FRS_RECUR = 0x02,
1932 FRS_SCANSYMLINK = 0x04,
1935 typedef void (WINAPI *FARSTDRECURSIVESEARCH)(const wchar_t *InitDir,const wchar_t *Mask,FRSUSERFUNC Func,DWORD Flags,void *Param);
1936 typedef int (WINAPI *FARSTDMKTEMP)(wchar_t *Dest, DWORD size, const wchar_t *Prefix);
1937 typedef void (WINAPI *FARSTDDELETEBUFFER)(void *Buffer);
1939 enum MKLINKOP
1941 FLINK_HARDLINK = 1,
1942 FLINK_JUNCTION = 2,
1943 FLINK_VOLMOUNT = 3,
1944 FLINK_SYMLINKFILE = 4,
1945 FLINK_SYMLINKDIR = 5,
1946 FLINK_SYMLINK = 6,
1948 FLINK_SHOWERRMSG = 0x10000,
1949 FLINK_DONOTUPDATEPANEL = 0x20000,
1951 typedef int (WINAPI *FARSTDMKLINK)(const wchar_t *Src,const wchar_t *Dest,DWORD Flags);
1952 typedef int (WINAPI *FARGETREPARSEPOINTINFO)(const wchar_t *Src, wchar_t *Dest,int DestSize);
1954 enum CONVERTPATHMODES
1956 CPM_FULL,
1957 CPM_REAL,
1958 CPM_NATIVE,
1961 typedef int (WINAPI *FARCONVERTPATH)(enum CONVERTPATHMODES Mode, const wchar_t *Src, wchar_t *Dest, int DestSize);
1963 typedef DWORD (WINAPI *FARGETCURRENTDIRECTORY)(DWORD Size,wchar_t* Buffer);
1966 enum EXECUTEFLAGS
1968 EF_HIDEOUT = 0x01, // dont display output of the command
1969 EF_NOWAIT = 0x02, // dont wait for command completion
1970 EF_SUDO = 0x04, // command must be run with root privileges
1971 EF_NOTIFY = 0x08, // notify when command completed (if such notifications enabled in settings)
1972 EF_NOCMDPRINT = 0x10, // dont print command in command line nor include it to history
1973 EF_OPEN = 0x20, // use desktop shell (if present) to open command (e.g. URLs, documents..)
1974 EF_MAYBGND = 0x40 // allow put command to background mode
1977 typedef int (WINAPI *FAREXECUTE)(const wchar_t *CmdStr, unsigned int ExecFlags);
1978 typedef int (WINAPI *FAREXECUTE_LIBRARY)(const wchar_t *Library, const wchar_t *Symbol, const wchar_t *CmdStr, unsigned int ExecFlags);
1979 typedef void (WINAPI *FARDISPLAYNOTIFICATION)(const wchar_t *action, const wchar_t *object);
1980 typedef int (WINAPI *FARDISPATCHNTRTHRDCALLS)();
1981 // If plugin implements tasks running in background it may invoke this function to indicate about
1982 // pending task in left-top corner. Info is a short description of task or just its owner and must
1983 // be same string when invoked with Started TRUE or FALSE.
1984 typedef void (WINAPI *FARBACKGROUNDTASK)(const wchar_t *Info, BOOL Started);
1985 // Returns count of console cells which will be used to display given string of CharsCount characters.
1986 typedef size_t (WINAPI *FARSTRCELLSCOUNT)(const wchar_t *Str, size_t CharsCount);
1987 // Returns count of characters which will be used for fill up to *CellsCount cells from given string
1988 // of CharsCount characters.
1989 // RoundUp argument tells what to do with full-width characters that crossed by *CellsCount.
1990 // On return *CellsCount contains cells count that will be filled by returned characters count, that:
1991 // Can be smaller than initial value if string has too few characters to fill all *CellsCount cells
1992 // or if RoundUp was set to FALSE and last character would then overflow wanted amount.
1993 // Can be larger by one than initial value if RoundUp was set to TRUE and last full-width character
1994 // crossed initial value specified in *CellsCount.
1995 typedef size_t (WINAPI *FARSTRSIZEOFCELLS)(const wchar_t *Str, size_t CharsCount, size_t *CellsCount, BOOL RoundUp);
1997 enum BOX_DEF_SYMBOLS
1999 BS_X_B0, // 0xB0
2000 BS_X_B1, // 0xB1
2001 BS_X_B2, // 0xB2
2002 BS_V1, // 0xB3
2003 BS_R_H1V1, // 0xB4
2004 BS_R_H2V1, // 0xB5
2005 BS_R_H1V2, // 0xB6
2006 BS_RT_H1V2, // 0xB7
2007 BS_RT_H2V1, // 0xB8
2008 BS_R_H2V2, // 0xB9
2009 BS_V2, // 0xBA
2010 BS_RT_H2V2, // 0xBB
2011 BS_RB_H2V2, // 0xBC
2012 BS_RB_H1V2, // 0xBD
2013 BS_RB_H2V1, // 0xBE
2014 BS_RT_H1V1, // 0xBF
2015 BS_LB_H1V1, // 0xC0
2016 BS_B_H1V1, // 0xC1
2017 BS_T_H1V1, // 0xC2
2018 BS_L_H1V1, // 0xC3
2019 BS_H1, // 0xC4
2020 BS_C_H1V1, // 0xC5
2021 BS_L_H2V1, // 0xC6
2022 BS_L_H1V2, // 0xC7
2023 BS_LB_H2V2, // 0xC8
2024 BS_LT_H2V2, // 0xC9
2025 BS_B_H2V2, // 0xCA
2026 BS_T_H2V2, // 0xCB
2027 BS_L_H2V2, // 0xCC
2028 BS_H2, // 0xCD
2029 BS_C_H2V2, // 0xCE
2030 BS_B_H2V1, // 0xCF
2031 BS_B_H1V2, // 0xD0
2032 BS_T_H2V1, // 0xD1
2033 BS_T_H1V2, // 0xD2
2034 BS_LB_H1V2, // 0xD3
2035 BS_LB_H2V1, // 0xD4
2036 BS_LT_H2V1, // 0xD5
2037 BS_LT_H1V2, // 0xD6
2038 BS_C_H1V2, // 0xD7
2039 BS_C_H2V1, // 0xD8
2040 BS_RB_H1V1, // 0xD9
2041 BS_LT_H1V1, // 0xDA
2042 BS_X_DB, // 0xDB
2043 BS_X_DC, // 0xDC
2044 BS_X_DD, // 0xDD
2045 BS_X_DE, // 0xDE
2046 BS_X_DF, // 0xDF
2050 typedef struct FarStandardFunctions
2052 int StructSize;
2054 FARSTDATOI atoi;
2055 FARSTDATOI64 atoi64;
2056 FARSTDITOA itoa;
2057 FARSTDITOA64 itoa64;
2058 // <C&C++>
2059 FARSTDSSCANF sscanf;
2060 // </C&C++>
2061 FARSTDQSORT qsort;
2062 FARSTDBSEARCH bsearch;
2063 FARSTDQSORTEX qsortex;
2064 // <C&C++>
2065 FARSTDSNPRINTF snprintf;
2066 // </C&C++>
2068 DWORD_PTR Reserved[7];
2069 const WCHAR * BoxSymbols; // indexed via BOX_DEF_SYMBOLS
2071 FARSTDLOCALISLOWER LIsLower;
2072 FARSTDLOCALISUPPER LIsUpper;
2073 FARSTDLOCALISALPHA LIsAlpha;
2074 FARSTDLOCALISALPHANUM LIsAlphanum;
2075 FARSTDLOCALUPPER LUpper;
2076 FARSTDLOCALLOWER LLower;
2077 FARSTDLOCALUPPERBUF LUpperBuf;
2078 FARSTDLOCALLOWERBUF LLowerBuf;
2079 FARSTDLOCALSTRUPR LStrupr;
2080 FARSTDLOCALSTRLWR LStrlwr;
2081 FARSTDLOCALSTRICMP LStricmp;
2082 FARSTDLOCALSTRNICMP LStrnicmp;
2084 FARSTDUNQUOTE Unquote;
2085 FARSTDLTRIM LTrim;
2086 FARSTDRTRIM RTrim;
2087 FARSTDTRIM Trim;
2088 FARSTDTRUNCSTR TruncStr;
2089 FARSTDTRUNCPATHSTR TruncPathStr;
2090 FARSTDQUOTESPACEONLY QuoteSpaceOnly;
2091 FARSTDPOINTTONAME PointToName;
2092 FARSTDGETPATHROOT GetPathRoot;
2093 FARSTDADDENDSLASH AddEndSlash;
2094 FARSTDCOPYTOCLIPBOARD CopyToClipboard;
2095 FARSTDPASTEFROMCLIPBOARD PasteFromClipboard;
2096 FARSTDKEYTOKEYNAME FarKeyToName;
2097 FARSTDKEYNAMETOKEY FarNameToKey;
2098 FARSTDINPUTRECORDTOKEY FarInputRecordToKey;
2099 FARSTDXLAT XLat;
2100 FARSTDGETFILEOWNER GetFileOwner;
2101 FARSTDGETNUMBEROFLINKS GetNumberOfLinks;
2102 FARSTDRECURSIVESEARCH FarRecursiveSearch;
2103 FARSTDMKTEMP MkTemp;
2104 FARSTDDELETEBUFFER DeleteBuffer;
2105 FARSTDPROCESSNAME ProcessName;
2106 FARSTDMKLINK MkLink;
2107 FARCONVERTPATH ConvertPath;
2108 FARGETREPARSEPOINTINFO GetReparsePointInfo;
2109 FARGETCURRENTDIRECTORY GetCurrentDirectory;
2110 FAREXECUTE Execute;
2111 FAREXECUTE_LIBRARY ExecuteLibrary;
2112 FARDISPLAYNOTIFICATION DisplayNotification;
2113 FARDISPATCHNTRTHRDCALLS DispatchInterThreadCalls;
2114 FARBACKGROUNDTASK BackgroundTask;
2115 FARSTRCELLSCOUNT StrCellsCount;
2116 FARSTRSIZEOFCELLS StrSizeOfCells;
2117 } FARSTANDARDFUNCTIONS;
2119 struct PluginStartupInfo
2121 int StructSize;
2122 const wchar_t *ModuleName;
2123 INT_PTR ModuleNumber;
2124 const wchar_t *RootKey;
2125 FARAPIMENU Menu;
2126 FARAPIMESSAGE Message;
2127 FARAPIGETMSG GetMsg;
2128 FARAPICONTROL Control;
2129 FARAPISAVESCREEN SaveScreen;
2130 FARAPIRESTORESCREEN RestoreScreen;
2131 FARAPIGETDIRLIST GetDirList;
2132 FARAPIGETPLUGINDIRLIST GetPluginDirList;
2133 FARAPIFREEDIRLIST FreeDirList;
2134 FARAPIFREEPLUGINDIRLIST FreePluginDirList;
2135 FARAPIVIEWER Viewer;
2136 FARAPIEDITOR Editor;
2137 FARAPICMPNAME CmpName;
2138 FARAPITEXT Text;
2139 FARAPIEDITORCONTROL EditorControl;
2141 FARSTANDARDFUNCTIONS *FSF;
2143 FARAPISHOWHELP ShowHelp;
2144 FARAPIADVCONTROL AdvControl;
2145 FARAPIINPUTBOX InputBox;
2146 FARAPIDIALOGINIT DialogInit;
2147 FARAPIDIALOGRUN DialogRun;
2148 FARAPIDIALOGFREE DialogFree;
2150 FARAPISENDDLGMESSAGE SendDlgMessage;
2151 FARAPIDEFDLGPROC DefDlgProc;
2152 DWORD_PTR Reserved;
2153 FARAPIVIEWERCONTROL ViewerControl;
2154 FARAPIPLUGINSCONTROL PluginsControl;
2155 FARAPIFILEFILTERCONTROL FileFilterControl;
2156 FARAPIREGEXPCONTROL RegExpControl;
2160 enum PLUGIN_FLAGS
2162 PF_PRELOAD = 0x0001, // early dlopen and initialize plugin
2163 PF_DISABLEPANELS = 0x0002,
2164 PF_EDITOR = 0x0004,
2165 PF_VIEWER = 0x0008,
2166 PF_FULLCMDLINE = 0x0010,
2167 PF_DIALOG = 0x0020,
2168 PF_PREOPEN = 0x8000 // early dlopen plugin but initialize it later, when it will be really needed
2171 struct PluginInfo
2173 int StructSize;
2174 DWORD Flags;
2175 const wchar_t * const *DiskMenuStrings;
2176 int *Reserved0;
2177 int DiskMenuStringsNumber;
2178 const wchar_t * const *PluginMenuStrings;
2179 int PluginMenuStringsNumber;
2180 const wchar_t * const *PluginConfigStrings;
2181 int PluginConfigStringsNumber;
2182 const wchar_t *CommandPrefix;
2183 #ifdef FAR_USE_INTERNALS
2184 DWORD SysID;
2185 #else // ELSE FAR_USE_INTERNALS
2186 DWORD Reserved;
2187 #endif // END FAR_USE_INTERNALS
2188 #ifdef FAR_USE_INTERNALS
2189 #if defined(PROCPLUGINMACROFUNC)
2190 int MacroFunctionNumber;
2191 const struct FarMacroFunction *MacroFunctions;
2192 #endif
2193 #endif // END FAR_USE_INTERNALS
2198 struct InfoPanelLine
2200 const wchar_t *Text;
2201 const wchar_t *Data;
2202 int Separator;
2205 struct PanelMode
2207 const wchar_t *ColumnTypes;
2208 const wchar_t *ColumnWidths;
2209 const wchar_t * const *ColumnTitles;
2210 int FullScreen;
2211 int DetailedStatus;
2212 int AlignExtensions;
2213 int CaseConversion;
2214 const wchar_t *StatusColumnTypes;
2215 const wchar_t *StatusColumnWidths;
2216 DWORD Reserved[2];
2220 enum OPENPLUGININFO_FLAGS
2222 OPIF_USEFILTER = 0x00000001,
2223 OPIF_USESORTGROUPS = 0x00000002,
2224 OPIF_USEHIGHLIGHTING = 0x00000004,
2225 OPIF_ADDDOTS = 0x00000008,
2226 OPIF_RAWSELECTION = 0x00000010,
2227 OPIF_REALNAMES = 0x00000020,
2228 OPIF_SHOWNAMESONLY = 0x00000040,
2229 OPIF_SHOWRIGHTALIGNNAMES = 0x00000080,
2230 OPIF_SHOWPRESERVECASE = 0x00000100,
2231 #ifdef FAR_USE_INTERNALS
2232 #endif // END FAR_USE_INTERNALS
2233 OPIF_COMPAREFATTIME = 0x00000400,
2234 OPIF_EXTERNALGET = 0x00000800,
2235 OPIF_EXTERNALPUT = 0x00001000,
2236 OPIF_EXTERNALDELETE = 0x00002000,
2237 OPIF_EXTERNALMKDIR = 0x00004000,
2238 OPIF_USEATTRHIGHLIGHTING = 0x00008000,
2239 OPIF_USECRC32 = 0x00010000,
2243 enum OPENPLUGININFO_SORTMODES
2245 SM_DEFAULT,
2246 SM_UNSORTED,
2247 SM_NAME,
2248 SM_EXT,
2249 SM_MTIME,
2250 SM_CTIME,
2251 SM_ATIME,
2252 SM_SIZE,
2253 SM_DESCR,
2254 SM_OWNER,
2255 SM_COMPRESSEDSIZE,
2256 SM_NUMLINKS,
2257 SM_FULLNAME,
2258 SM_CHTIME,
2262 struct KeyBarTitles
2264 wchar_t *Titles[12];
2265 wchar_t *CtrlTitles[12];
2266 wchar_t *AltTitles[12];
2267 wchar_t *ShiftTitles[12];
2269 wchar_t *CtrlShiftTitles[12];
2270 wchar_t *AltShiftTitles[12];
2271 wchar_t *CtrlAltTitles[12];
2275 enum OPERATION_MODES
2277 OPM_SILENT =0x0001,
2278 OPM_FIND =0x0002,
2279 OPM_VIEW =0x0004,
2280 OPM_EDIT =0x0008,
2281 OPM_TOPLEVEL =0x0010,
2282 OPM_DESCR =0x0020,
2283 OPM_QUICKVIEW =0x0040,
2284 OPM_PGDN =0x0080,
2285 OPM_COMMANDS =0x0100,
2288 struct OpenPluginInfo
2290 int StructSize;
2291 DWORD Flags;
2292 const wchar_t *HostFile;
2293 const wchar_t *CurDir;
2294 const wchar_t *Format;
2295 const wchar_t *PanelTitle;
2296 const struct InfoPanelLine *InfoLines;
2297 int InfoLinesNumber;
2298 const wchar_t * const *DescrFiles;
2299 int DescrFilesNumber;
2300 const struct PanelMode *PanelModesArray;
2301 int PanelModesNumber;
2302 int StartPanelMode;
2303 int StartSortMode;
2304 int StartSortOrder;
2305 const struct KeyBarTitles *KeyBar;
2306 const wchar_t *ShortcutData;
2307 long Reserved;
2310 enum OPENPLUGIN_OPENFROM
2312 OPEN_FROM_MASK = 0x000000FF,
2314 OPEN_DISKMENU = 0,
2315 OPEN_PLUGINSMENU = 1,
2316 OPEN_FINDLIST = 2,
2317 OPEN_SHORTCUT = 3,
2318 OPEN_COMMANDLINE = 4,
2319 OPEN_EDITOR = 5,
2320 OPEN_VIEWER = 6,
2321 OPEN_FILEPANEL = 7,
2322 OPEN_DIALOG = 8,
2323 OPEN_ANALYSE = 9,
2325 OPEN_FROMMACRO_MASK = 0x000F0000,
2327 OPEN_FROMMACRO = 0x00010000,
2328 OPEN_FROMMACROSTRING = 0x00020000,
2331 enum FAR_PKF_FLAGS
2333 PKF_CONTROL = 0x00000001,
2334 PKF_ALT = 0x00000002,
2335 PKF_SHIFT = 0x00000004,
2336 PKF_PREPROCESS = 0x00080000, // for "Key", function ProcessKey()
2339 enum FAR_EVENTS
2341 FE_CHANGEVIEWMODE =0,
2342 FE_REDRAW =1,
2343 FE_IDLE =2,
2344 FE_CLOSE =3,
2345 FE_BREAK =4,
2346 FE_COMMAND =5,
2348 FE_GOTFOCUS =6,
2349 FE_KILLFOCUS =7,
2352 enum FAR_PLUGINS_CONTROL_COMMANDS
2354 PCTL_LOADPLUGIN = 0,
2355 PCTL_UNLOADPLUGIN = 1,
2356 PCTL_FORCEDLOADPLUGIN = 2,
2358 PCTL_CACHEFORGET = 3 // forgets cached information for specified plugin
2361 enum FAR_PLUGIN_LOAD_TYPE
2363 PLT_PATH = 0,
2366 enum FAR_FILE_FILTER_CONTROL_COMMANDS
2368 FFCTL_CREATEFILEFILTER = 0,
2369 FFCTL_FREEFILEFILTER,
2370 FFCTL_OPENFILTERSMENU,
2371 FFCTL_STARTINGTOFILTER,
2372 FFCTL_ISFILEINFILTER,
2375 enum FAR_FILE_FILTER_TYPE
2377 FFT_PANEL = 0,
2378 FFT_FINDFILE,
2379 FFT_COPY,
2380 FFT_SELECT,
2381 FFT_CUSTOM,
2384 enum FAR_REGEXP_CONTROL_COMMANDS
2386 RECTL_CREATE=0,
2387 RECTL_FREE,
2388 RECTL_COMPILE,
2389 RECTL_OPTIMIZE,
2390 RECTL_MATCHEX,
2391 RECTL_SEARCHEX,
2392 RECTL_BRACKETSCOUNT
2395 struct RegExpMatch
2397 int start,end;
2400 struct RegExpSearch
2402 const wchar_t* Text;
2403 int Position;
2404 int Length;
2405 struct RegExpMatch* Match;
2406 int Count;
2407 void* Reserved;
2411 #if defined(__BORLANDC__) || defined(_MSC_VER) || defined(__GNUC__) || defined(__WATCOMC__)
2412 #ifdef __cplusplus
2413 extern "C"
2415 #endif
2416 // Exported Functions
2417 void WINAPI _export PluginModuleOpen(const char *path);
2418 void WINAPI _export ClosePluginW(HANDLE hPlugin);
2419 int WINAPI _export CompareW(HANDLE hPlugin,const struct PluginPanelItem *Item1,const struct PluginPanelItem *Item2,unsigned int Mode);
2420 int WINAPI _export ConfigureW(int ItemNumber);
2421 int WINAPI _export DeleteFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int OpMode);
2422 void WINAPI _export ExitFARW(void);
2423 int WINAPI _export MayExitFARW(void);
2424 void WINAPI _export FreeFindDataW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber);
2425 void WINAPI _export FreeVirtualFindDataW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber);
2426 int WINAPI _export GetFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,const wchar_t **DestPath,int OpMode);
2427 int WINAPI _export GetFindDataW(HANDLE hPlugin,struct PluginPanelItem **pPanelItem,int *pItemsNumber,int OpMode);
2428 int WINAPI _export GetLinkTargetW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,wchar_t *Target,size_t TargetSize,int OpMode);
2429 int WINAPI _export GetMinFarVersionW(void);
2430 void WINAPI _export GetOpenPluginInfoW(HANDLE hPlugin,struct OpenPluginInfo *Info);
2431 void WINAPI _export GetPluginInfoW(struct PluginInfo *Info);
2432 int WINAPI _export GetVirtualFindDataW(HANDLE hPlugin,struct PluginPanelItem **pPanelItem,int *pItemsNumber,const wchar_t *Path);
2433 int WINAPI _export MakeDirectoryW(HANDLE hPlugin,const wchar_t **Name,int OpMode);
2434 HANDLE WINAPI _export OpenFilePluginW(const wchar_t *Name,const unsigned char *Data,int DataSize,int OpMode);
2435 HANDLE WINAPI _export OpenPluginW(int OpenFrom,INT_PTR Item);
2436 int WINAPI _export ProcessDialogEventW(int Event,void *Param);
2437 int WINAPI _export ProcessEditorEventW(int Event,void *Param);
2438 int WINAPI _export ProcessEditorInputW(const INPUT_RECORD *Rec);
2439 int WINAPI _export ProcessEventW(HANDLE hPlugin,int Event,void *Param);
2440 int WINAPI _export ProcessHostFileW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int OpMode);
2441 int WINAPI _export ProcessKeyW(HANDLE hPlugin,int Key,unsigned int ControlState);
2442 #ifdef FAR_USE_INTERNALS
2443 #if defined(PROCPLUGINMACROFUNC)
2444 int WINAPI _export ProcessMacroFuncW(const wchar_t *Name, const struct FarMacroValue *Params, int nParams, struct FarMacroValue **Results, int *nResults);
2445 #endif
2446 #endif // END FAR_USE_INTERNALS
2447 int WINAPI _export ProcessSynchroEventW(int Event,void *Param);
2448 int WINAPI _export ProcessViewerEventW(int Event,void *Param);
2449 int WINAPI _export PutFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,const wchar_t *SrcPath,int OpMode);
2450 int WINAPI _export SetDirectoryW(HANDLE hPlugin,const wchar_t *Dir,int OpMode);
2451 int WINAPI _export SetFindListW(HANDLE hPlugin,const struct PluginPanelItem *PanelItem,int ItemsNumber);
2452 void WINAPI _export SetStartupInfoW(const struct PluginStartupInfo *Info);
2454 #ifdef __cplusplus
2456 #endif
2457 #endif
2459 #ifndef _WIN64
2460 #if defined(__BORLANDC__)
2461 #pragma option -a.
2462 #elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100)) || defined(__LCC__)
2463 #pragma pack()
2464 #else
2465 #pragma pack(pop)
2466 #endif
2467 #endif
2469 #endif /* RC_INVOKED */
2471 #define EXP_NAME(p) _export p ## W
2473 #endif /* __FAR2SDK_FARPLUG_WIDE_H__ */