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
11 Plugin API for FAR Manager <%VERSION%>
15 Copyright (c) 1996 Eugene Roshal
16 Copyright (c) 2000 Far Group
19 Redistribution and use in source and binary forms, with or without
20 modification, are permitted provided that the following conditions
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.
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
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
62 #if !defined(_INC_WINDOWS) && !defined(_WINDOWS_)
63 #if (defined(__GNUC__) || defined(_MSC_VER)) && !defined(_WIN64)
64 #if !defined(_WINCON_H) && !defined(_WINCON_)
66 #define _WINCON_ // to prevent including wincon.h
98 #endif // END FAR_USE_INTERNALS
101 #if defined(__BORLANDC__)
105 #elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100)) || defined(__LCC__)
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
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
138 typedef struct _INPUT_RECORD INPUT_RECORD
;
139 typedef struct _CHAR_INFO CHAR_INFO
;
142 #include "farcommon.h"
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
,
168 const wchar_t *HelpTopic
,
169 const wchar_t * const *Items
,
189 #ifdef FAR_USE_INTERNALS
191 #endif // END FAR_USE_INTERNALS
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)
203 # define FarIsEdit(Type) ((Type) == DI_EDIT || (Type) == DI_FIXEDIT || (Type) == DI_PSWEDIT || (Type) == DI_COMBOBOX)
206 enum FarDialogItemFlags
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
,
274 DM_SETREDRAW
=DM_REDRAW
,
277 DM_SETTEXTLENGTH
=DM_SETMAXTEXTLENGTH
,
310 DM_GETDROPDOWNOPENED
,
311 DM_SETDROPDOWNOPENED
,
316 DM_SETMOUSEEVENTNOTIFY
,
318 DM_EDITUNCHANGEDFLAG
,
324 DM_LISTSETMOUSEREACTION
,
351 DM_GETTRUECOLOR
, // Param1 - Item ID, Param2 - DialogItemTrueColors *
352 DM_SETTRUECOLOR
, // Param1 - Item ID, Param2 - const DialogItemTrueColors *
378 DN_GETDIALOGINFO
=DM_GETDIALOGINFO
,
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
395 BSTATE_UNCHECKED
= 0,
401 enum FARLISTMOUSEREACTIONTYPE
408 enum FARCOMBOBOXEVENTTYPE
410 CBET_KEY
= 0x00000001,
411 CBET_MOUSE
= 0x00000002,
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
,
435 struct FarListItem Item
;
441 struct FarListItem Item
;
444 struct FarListGetItem
447 struct FarListItem Item
;
456 enum FARLISTFINDFLAGS
458 LIFIND_EXACTMATCH
= 0x00000001,
464 const wchar_t *Pattern
;
475 enum FARLISTINFOFLAGS
477 LINFO_SHOWNOBOX
= 0x00000400,
478 LINFO_AUTOHIGHLIGHT
= 0x00000800,
479 LINFO_REVERSEHIGHLIGHT
= 0x00001000,
480 LINFO_WRAPMODE
= 0x00008000,
481 LINFO_SHOWAMPERSAND
= 0x00010000,
495 struct FarListItemData
506 struct FarListItem
*Items
;
512 const wchar_t *Title
;
514 const wchar_t *Bottom
;
535 const wchar_t *History
;
537 struct FarList
*ListItems
;
541 #ifdef _FAR_NO_NAMELESS_UNIONS
548 const wchar_t *PtrData
;
549 size_t MaxLen
; // terminate 0 not included (if == 0 string size is unlimited)
552 struct FarDialogItemData
558 struct FarDialogEvent
567 struct OpenDlgPluginData
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);}
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
)(
629 typedef LONG_PTR(WINAPI
*FARAPISENDDLGMESSAGE
)(
636 typedef LONG_PTR(WINAPI
*FARAPIDEFDLGPROC
)(
643 typedef HANDLE(WINAPI
*FARAPIDIALOGINIT
)(
644 INT_PTR PluginNumber
,
649 const wchar_t *HelpTopic
,
650 struct FarDialogItem
*Item
,
651 unsigned int ItemsNumber
,
654 FARWINDOWPROC DlgProc
,
658 typedef int (WINAPI
*FARAPIDIALOGRUN
)(
662 typedef void (WINAPI
*FARAPIDIALOGFREE
)(
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
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
,
716 const wchar_t *Title
,
717 const wchar_t *Bottom
,
718 const wchar_t *HelpTopic
,
719 const int *BreakKeys
,
721 const struct FarMenuItem
*Item
,
726 enum PLUGINPANELITEMFLAGS
728 PPIF_PROCESSDESCR
= 0x80000000,
729 PPIF_SELECTED
= 0x40000000,
730 PPIF_USERDATA
= 0x20000000,
735 FILETIME ftCreationTime
;
736 FILETIME ftLastAccessTime
;
737 FILETIME ftLastWriteTime
;
738 uint64_t nPhysicalSize
;
740 DWORD dwFileAttributes
;
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
;
755 const wchar_t *Description
;
756 const wchar_t *Owner
;
757 const wchar_t *Group
;
758 const wchar_t * const *CustomColumnData
;
759 int CustomColumnNumber
;
761 DWORD_PTR Reserved
[2];
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,
793 int SelectedItemsNumber
;
805 struct PanelRedrawInfo
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
825 #define PANEL_NONE ((HANDLE)(-1))
826 #define PANEL_ACTIVE ((HANDLE)(-1))
827 #define PANEL_PASSIVE ((HANDLE)(-2))
829 enum FILE_CONTROL_COMMANDS
846 FCTL_GETCMDLINESELECTEDTEXT
,
847 FCTL_SETCMDLINESELECTION
,
848 FCTL_GETCMDLINESELECTION
,
849 FCTL_CHECKPANELSEXIST
,
854 FCTL_GETSELECTEDPANELITEM
,
855 FCTL_GETCURRENTPANELITEM
,
858 FCTL_GETCOLUMNWIDTHS
,
862 FCTL_SETDIRECTORIESFIRST
,
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
)(
877 typedef void (WINAPI
*FARAPITEXT
)(
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
)(
891 struct FAR_FIND_DATA
**pPanelItem
,
895 typedef int (WINAPI
*FARAPIGETPLUGINDIRLIST
)(
896 INT_PTR PluginNumber
,
899 struct PluginPanelItem
**pPanelItem
,
903 typedef void (WINAPI
*FARAPIFREEDIRLIST
)(struct FAR_FIND_DATA
*PanelItem
, int nItemsNumber
);
904 typedef void (WINAPI
*FARAPIFREEPLUGINDIRLIST
)(struct PluginPanelItem
*PanelItem
, int nItemsNumber
);
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
,
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
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,
961 #endif // END FAR_USE_INTERNALS
964 typedef int (WINAPI
*FARAPIEDITOR
)(
965 const wchar_t *FileName
,
966 const wchar_t *Title
,
977 typedef int (WINAPI
*FARAPICMPNAME
)(
978 const wchar_t *Pattern
,
979 const wchar_t *String
,
984 typedef const wchar_t*(WINAPI
*FARAPIGETMSG
)(
985 INT_PTR PluginNumber
,
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
,
1006 enum ADVANCED_CONTROL_COMMANDS
1008 ACTL_GETFARVERSION
= 0,
1009 #ifdef FAR_USE_INTERNALS
1011 #endif // END FAR_USE_INTERNALS
1012 ACTL_GETSYSWORDDIV
= 2,
1015 ACTL_GETARRAYCOLOR
= 5,
1016 ACTL_EJECTMEDIA
= 6,
1018 ACTL_POSTKEYSEQUENCE
= 8,
1019 ACTL_GETWINDOWINFO
= 9,
1020 ACTL_GETWINDOWCOUNT
= 10,
1021 ACTL_SETCURRENTWINDOW
= 11,
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,
1043 ACTL_SETPROGRESSSTATE
= 29,
1044 ACTL_SETPROGRESSVALUE
= 30,
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
1171 #ifdef FAR_USE_INTERNALS
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
1204 #endif // END FAR_USE_INTERNALS
1206 enum FARKEYSEQUENCEFLAGS
1208 KSFLAGS_DISABLEOUTPUT
= 0x00000001,
1209 KSFLAGS_NOSENDKEYSTOPLUGINS
= 0x00000002,
1210 KSFLAGS_SILENTCHECK
= 0x00000001,
1217 const DWORD
*Sequence
;
1220 enum FARMACROCOMMAND
1224 MCMD_POSTMACROSTRING
= 2,
1225 #ifdef FAR_USE_INTERNALS
1226 MCMD_COMPILEMACRO
= 3,
1227 #endif // END FAR_USE_INTERNALS
1228 MCMD_CHECKMACRO
= 4,
1231 #ifdef FAR_USE_INTERNALS
1232 MCMD_RUNMACROSTRING
= 7,
1233 #endif // END FAR_USE_INTERNALS
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,
1248 MACROAREA_INFOPANEL
=10,
1249 MACROAREA_QVIEWPANEL
=11,
1250 MACROAREA_TREEPANEL
=12,
1251 MACROAREA_FINDFOLDER
=13,
1252 MACROAREA_USERMENU
=14,
1253 MACROAREA_AUTOCOMPLETION
=15,
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
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
1288 const wchar_t *ErrSrc
;
1298 const wchar_t *SequenceText
;
1302 #ifdef FAR_USE_INTERNALS
1303 struct KeySequence Compile
;
1304 #endif // END FAR_USE_INTERNALS
1305 struct MacroParseResult MacroResult
;
1306 DWORD_PTR Reserved
[3];
1310 #ifdef FAR_USE_INTERNALS
1311 #if defined(PROCPLUGINMACROFUNC)
1312 enum FARMACROVARTYPE
1319 struct FarMacroValue
1321 enum FARMACROVARTYPE type
;
1330 struct FarMacroFunction
1333 const wchar_t *Name
;
1336 const wchar_t *Syntax
;
1337 const wchar_t *Description
;
1340 #endif // END FAR_USE_INTERNALS
1344 FCLR_REDRAW
= 0x00000001,
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
1381 // ПРОСЬБА НЕ ЗАБЫВАТЬ СИНХРОНИЗИРОВАТЬ ИЗМЕНЕНИЯ
1382 // WTYPE_* и MODALTYPE_* (frame.hpp)!!!
1383 // (и не надо убирать этот комментарий, пока ситуация не изменится ;)
1384 #endif // END FAR_USE_INTERNALS
1391 #ifdef FAR_USE_INTERNALS
1395 #endif // END FAR_USE_INTERNALS
1412 PGS_NOPROGRESS
=0x0,
1413 PGS_INDETERMINATE
=0x1,
1419 struct PROGRESSVALUE
1425 typedef INT_PTR(WINAPI
*FARAPIADVCONTROL
)(
1426 INT_PTR ModuleNumber
,
1432 enum VIEWER_CONTROL_COMMANDS
1445 VOPT_SAVEFILEPOSITION
=1,
1446 VOPT_AUTODETECTCODEPAGE
=2,
1449 enum VIEWER_SETMODE_TYPES
1456 enum VIEWER_SETMODEFLAGS_TYPES
1458 VSMFL_REDRAW
= 0x00000001,
1461 struct ViewerSetMode
1475 int64_t BlockStartPos
;
1479 enum VIEWER_SETPOS_FLAGS
1481 VSP_NOREDRAW
= 0x0001,
1482 VSP_PERCENT
= 0x0002,
1483 VSP_RELATIVE
= 0x0004,
1484 VSP_NORETNEWPOS
= 0x0008,
1487 struct ViewerSetPosition
1508 const wchar_t *FileName
;
1515 struct ViewerMode CurMode
;
1519 typedef int (WINAPI
*FARAPIVIEWERCONTROL
)(
1548 DE_DEFDLGPROCINIT
=1,
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
1587 ECTL_TURNOFFMARKINGBLOCK
,
1589 ECTL_ADDSTACKBOOKMARK
,
1590 ECTL_PREVSTACKBOOKMARK
,
1591 ECTL_NEXTSTACKBOOKMARK
,
1592 ECTL_CLEARSTACKBOOKMARKS
,
1593 ECTL_DELETESTACKBOOKMARK
,
1594 ECTL_GETSTACKBOOKMARKS
,
1600 //#ifdef FAR_USE_INTERNALS
1601 // ECTL_SERVICEREGION, // WTF
1602 //#endif // END FAR_USE_INTERNALS
1604 enum EDITOR_SETPARAMETER_TYPES
1609 ESPT_CURSORBEYONDEOL
,
1612 ESPT_SAVEFILEPOSITION
,
1616 ESPT_SHOWWHITESPACE
,
1620 #ifdef FAR_USE_INTERNALS
1621 struct EditorServiceRegion
1626 #endif // END FAR_USE_INTERNALS
1629 struct EditorSetParameter
1643 enum EDITOR_UNDOREDO_COMMANDS
1652 struct EditorUndoRedo
1655 DWORD_PTR Reserved
[3];
1658 struct EditorGetString
1661 #ifdef FAR_USE_INTERNALS
1662 wchar_t *StringText
;
1664 #else // ELSE FAR_USE_INTERNALS
1665 const wchar_t *StringText
;
1666 const wchar_t *StringEOL
;
1667 #endif // END FAR_USE_INTERNALS
1674 struct EditorSetString
1677 const wchar_t *StringText
;
1678 const wchar_t *StringEOL
;
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
1712 enum EDITOR_CURRENTSTATE
1714 ECSTATE_MODIFIED
= 0x00000001,
1715 ECSTATE_SAVED
= 0x00000002,
1716 ECSTATE_LOCKED
= 0x00000004,
1742 struct EditorBookMarks
1751 struct EditorSetPosition
1772 struct EditorConvertPos
1780 enum EDITORCOLORFLAGS
1790 int EndPos
; // -1 means edge of visible screen part, otherwise wanted edge position
1794 struct EditorTrueColor
1796 struct EditorColor Base
;
1797 struct FarTrueColorForeAndBack TrueColor
;
1800 struct EditorSaveFile
1802 const wchar_t *FileName
;
1803 const wchar_t *FileEOL
;
1807 typedef int (WINAPI
*FARAPIEDITORCONTROL
)(
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
,
1833 const wchar_t *HelpTopic
,
1837 typedef int (WINAPI
*FARAPIPLUGINSCONTROL
)(
1844 typedef int (WINAPI
*FARAPIFILEFILTERCONTROL
)(
1851 typedef int (WINAPI
*FARAPIREGEXPCONTROL
)(
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
,...);
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
);
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
,
1930 FRS_RETUPDIR
= 0x01,
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
);
1944 FLINK_SYMLINKFILE
= 4,
1945 FLINK_SYMLINKDIR
= 5,
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
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
);
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
2050 typedef struct FarStandardFunctions
2055 FARSTDATOI64 atoi64
;
2057 FARSTDITOA64 itoa64
;
2059 FARSTDSSCANF sscanf
;
2062 FARSTDBSEARCH bsearch
;
2063 FARSTDQSORTEX qsortex
;
2065 FARSTDSNPRINTF snprintf
;
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
;
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
;
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
;
2111 FAREXECUTE_LIBRARY ExecuteLibrary
;
2112 FARDISPLAYNOTIFICATION DisplayNotification
;
2113 FARDISPATCHNTRTHRDCALLS DispatchInterThreadCalls
;
2114 FARBACKGROUNDTASK BackgroundTask
;
2115 FARSTRCELLSCOUNT StrCellsCount
;
2116 FARSTRSIZEOFCELLS StrSizeOfCells
;
2117 } FARSTANDARDFUNCTIONS
;
2119 struct PluginStartupInfo
2122 const wchar_t *ModuleName
;
2123 INT_PTR ModuleNumber
;
2124 const wchar_t *RootKey
;
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
;
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
;
2153 FARAPIVIEWERCONTROL ViewerControl
;
2154 FARAPIPLUGINSCONTROL PluginsControl
;
2155 FARAPIFILEFILTERCONTROL FileFilterControl
;
2156 FARAPIREGEXPCONTROL RegExpControl
;
2162 PF_PRELOAD
= 0x0001, // early dlopen and initialize plugin
2163 PF_DISABLEPANELS
= 0x0002,
2166 PF_FULLCMDLINE
= 0x0010,
2168 PF_PREOPEN
= 0x8000 // early dlopen plugin but initialize it later, when it will be really needed
2175 const wchar_t * const *DiskMenuStrings
;
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
2185 #else // ELSE FAR_USE_INTERNALS
2187 #endif // END FAR_USE_INTERNALS
2188 #ifdef FAR_USE_INTERNALS
2189 #if defined(PROCPLUGINMACROFUNC)
2190 int MacroFunctionNumber
;
2191 const struct FarMacroFunction
*MacroFunctions
;
2193 #endif // END FAR_USE_INTERNALS
2198 struct InfoPanelLine
2200 const wchar_t *Text
;
2201 const wchar_t *Data
;
2207 const wchar_t *ColumnTypes
;
2208 const wchar_t *ColumnWidths
;
2209 const wchar_t * const *ColumnTitles
;
2212 int AlignExtensions
;
2214 const wchar_t *StatusColumnTypes
;
2215 const wchar_t *StatusColumnWidths
;
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
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
2281 OPM_TOPLEVEL
=0x0010,
2283 OPM_QUICKVIEW
=0x0040,
2285 OPM_COMMANDS
=0x0100,
2288 struct OpenPluginInfo
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
;
2305 const struct KeyBarTitles
*KeyBar
;
2306 const wchar_t *ShortcutData
;
2310 enum OPENPLUGIN_OPENFROM
2312 OPEN_FROM_MASK
= 0x000000FF,
2315 OPEN_PLUGINSMENU
= 1,
2318 OPEN_COMMANDLINE
= 4,
2325 OPEN_FROMMACRO_MASK
= 0x000F0000,
2327 OPEN_FROMMACRO
= 0x00010000,
2328 OPEN_FROMMACROSTRING
= 0x00020000,
2333 PKF_CONTROL
= 0x00000001,
2334 PKF_ALT
= 0x00000002,
2335 PKF_SHIFT
= 0x00000004,
2336 PKF_PREPROCESS
= 0x00080000, // for "Key", function ProcessKey()
2341 FE_CHANGEVIEWMODE
=0,
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
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
2384 enum FAR_REGEXP_CONTROL_COMMANDS
2402 const wchar_t* Text
;
2405 struct RegExpMatch
* Match
;
2411 #if defined(__BORLANDC__) || defined(_MSC_VER) || defined(__GNUC__) || defined(__WATCOMC__)
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
);
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
);
2460 #if defined(__BORLANDC__)
2462 #elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100)) || defined(__LCC__)
2469 #endif /* RC_INVOKED */
2471 #define EXP_NAME(p) _export p ## W
2473 #endif /* __FAR2SDK_FARPLUG_WIDE_H__ */