{
PluginW.pas
Plugin API for Far Manager <%VERSION%>
}
{
Copyright © 1996 Eugene Roshal
Copyright © 2000 Far Group
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the authors may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
EXCEPTION:
Far Manager plugins that use this header file can be distributed under any
other possible license with no implications from the above license on them.
}
{$Align Off}
{$RangeChecks Off}
{$ifdef CPUX86_64}
{$PACKRECORDS C}
{$endif CPUX86_64}
Unit PluginW;
interface
uses Windows;
const
FARMANAGERVERSION_MAJOR = 2;
FARMANAGERVERSION_MINOR = 0;
FARMANAGERVERSION_BUILD = 1658;
type
//TFarChar = AnsiChar;
//PFarChar = PAnsiChar;
TFarChar = WideChar;
PFarChar = PWideChar;
{$ifdef CPUX86_64}
INT_PTR = PtrInt;
INT_PTR = PtrInt;
DWORD_PTR = PtrUInt;
SIZE_T = PtrUInt;
{$else}
INT_PTR = Integer;
INT_PTR = Integer;
DWORD_PTR = Cardinal;
SIZE_T = Cardinal;
{$endif CPUX86_64}
PPCharArray = ^TPCharArray;
TPCharArray = packed array[0..MaxInt div SizeOf(PFarChar) - 1] of PFarChar;
PIntegerArray = ^TIntegerArray;
TIntegerArray = packed array[0..Pred(MaxLongint div SizeOf(Integer))] of Integer;
const
FARMACRO_KEY_EVENT = KEY_EVENT or $8000;
CP_UNICODE = 1200;
CP_REVERSEBOM = 1201;
CP_DEFAULT = UINT(-1);
CP_REDETECT = UINT(-2);
{ FARMESSAGEFLAGS }
const
FMSG_WARNING = $00000001;
FMSG_ERRORTYPE = $00000002;
FMSG_KEEPBACKGROUND = $00000004;
FMSG_LEFTALIGN = $00000010;
FMSG_ALLINONE = $00000020;
FMSG_MB_OK = $00010000;
FMSG_MB_OKCANCEL = $00020000;
FMSG_MB_ABORTRETRYIGNORE = $00030000;
FMSG_MB_YESNO = $00040000;
FMSG_MB_YESNOCANCEL = $00050000;
FMSG_MB_RETRYCANCEL = $00060000;
(*
typedef int (WINAPI *FARAPIMESSAGE)(
INT_PTR PluginNumber,
DWORD Flags,
const wchar_t *HelpTopic,
const wchar_t * const *Items,
int ItemsNumber,
int ButtonsNumber
);
*)
type
TFarApiMessage = function (
PluginNumber :INT_PTR;
Flags :DWORD;
HelpTopic :PFarChar;
Items :PPCharArray;
ItemsNumber :Integer;
ButtonsNumber :Integer
) :Integer; stdcall;
{ DialogItemTypes }
const
DI_TEXT = 0;
DI_VTEXT = 1;
DI_SINGLEBOX = 2;
DI_DOUBLEBOX = 3;
DI_EDIT = 4;
DI_PSWEDIT = 5;
DI_FIXEDIT = 6;
DI_BUTTON = 7;
DI_CHECKBOX = 8;
DI_RADIOBUTTON = 9;
DI_COMBOBOX = 10;
DI_LISTBOX = 11;
DI_USERCONTROL = 255;
{ FarDialogItemFlags }
const
DIF_NONE = 0;
DIF_COLORMASK = $000000ff;
DIF_SETCOLOR = $00000100;
DIF_BOXCOLOR = $00000200;
DIF_GROUP = $00000400;
DIF_LEFTTEXT = $00000800;
DIF_MOVESELECT = $00001000;
DIF_SHOWAMPERSAND = $00002000;
DIF_CENTERGROUP = $00004000;
DIF_NOBRACKETS = $00008000;
DIF_MANUALADDHISTORY = $00008000;
DIF_SEPARATOR = $00010000;
DIF_SEPARATOR2 = $00020000;
DIF_EDITOR = $00020000;
DIF_LISTNOAMPERSAND = $00020000;
DIF_LISTNOBOX = $00040000;
DIF_HISTORY = $00040000;
DIF_BTNNOCLOSE = $00040000;
DIF_CENTERTEXT = $00040000;
DIF_SETSHIELD = $00080000;
DIF_EDITEXPAND = $00080000;
DIF_DROPDOWNLIST = $00100000;
DIF_USELASTHISTORY = $00200000;
DIF_MASKEDIT = $00400000;
DIF_SELECTONENTRY = $00800000;
DIF_3STATE = $00800000;
DIF_EDITPATH = $01000000;
DIF_LISTWRAPMODE = $01000000;
DIF_NOAUTOCOMPLETE = $02000000;
DIF_LISTAUTOHIGHLIGHT = $02000000;
DIF_LISTNOCLOSE = $04000000;
DIF_HIDDEN = $10000000;
DIF_READONLY = $20000000;
DIF_NOFOCUS = $40000000;
DIF_DISABLE = $80000000;
{ FarMessagesProc }
const
DM_FIRST = 0;
DM_CLOSE = DM_FIRST+1;
DM_ENABLE = DM_FIRST+2;
DM_ENABLEREDRAW = DM_FIRST+3;
DM_GETDLGDATA = DM_FIRST+4;
DM_GETDLGITEM = DM_FIRST+5;
DM_GETDLGRECT = DM_FIRST+6;
DM_GETTEXT = DM_FIRST+7;
DM_GETTEXTLENGTH = DM_FIRST+8;
DM_KEY = DM_FIRST+9;
DM_MOVEDIALOG = DM_FIRST+10;
DM_SETDLGDATA = DM_FIRST+11;
DM_SETDLGITEM = DM_FIRST+12;
DM_SETFOCUS = DM_FIRST+13;
DM_REDRAW = DM_FIRST+14;
DM_SETREDRAW = DM_REDRAW;
DM_SETTEXT = DM_FIRST+15;
DM_SETMAXTEXTLENGTH = DM_FIRST+16;
DM_SETTEXTLENGTH = DM_SETMAXTEXTLENGTH;
DM_SHOWDIALOG = DM_FIRST+17;
DM_GETFOCUS = DM_FIRST+18;
DM_GETCURSORPOS = DM_FIRST+19;
DM_SETCURSORPOS = DM_FIRST+20;
DM_GETTEXTPTR = DM_FIRST+21;
DM_SETTEXTPTR = DM_FIRST+22;
DM_SHOWITEM = DM_FIRST+23;
DM_ADDHISTORY = DM_FIRST+24;
DM_GETCHECK = DM_FIRST+25;
DM_SETCHECK = DM_FIRST+26;
DM_SET3STATE = DM_FIRST+27;
DM_LISTSORT = DM_FIRST+28;
DM_LISTGETITEM = DM_FIRST+29;
DM_LISTGETCURPOS = DM_FIRST+30;
DM_LISTSETCURPOS = DM_FIRST+31;
DM_LISTDELETE = DM_FIRST+32;
DM_LISTADD = DM_FIRST+33;
DM_LISTADDSTR = DM_FIRST+34;
DM_LISTUPDATE = DM_FIRST+35;
DM_LISTINSERT = DM_FIRST+36;
DM_LISTFINDSTRING = DM_FIRST+37;
DM_LISTINFO = DM_FIRST+38;
DM_LISTGETDATA = DM_FIRST+39;
DM_LISTSETDATA = DM_FIRST+40;
DM_LISTSETTITLES = DM_FIRST+41;
DM_LISTGETTITLES = DM_FIRST+42;
DM_RESIZEDIALOG = DM_FIRST+43;
DM_SETITEMPOSITION = DM_FIRST+44;
DM_GETDROPDOWNOPENED = DM_FIRST+45;
DM_SETDROPDOWNOPENED = DM_FIRST+46;
DM_SETHISTORY = DM_FIRST+47;
DM_GETITEMPOSITION = DM_FIRST+48;
DM_SETMOUSEEVENTNOTIFY = DM_FIRST+49;
DM_EDITUNCHANGEDFLAG = DM_FIRST+50;
DM_GETITEMDATA = DM_FIRST+51;
DM_SETITEMDATA = DM_FIRST+52;
DM_LISTSET = DM_FIRST+53;
DM_LISTSETMOUSEREACTION = DM_FIRST+54;
DM_GETCURSORSIZE = DM_FIRST+55;
DM_SETCURSORSIZE = DM_FIRST+56;
DM_LISTGETDATASIZE = DM_FIRST+57;
DM_GETSELECTION = DM_FIRST+58;
DM_SETSELECTION = DM_FIRST+59;
DM_GETEDITPOSITION = DM_FIRST+60;
DM_SETEDITPOSITION = DM_FIRST+61;
DM_SETCOMBOBOXEVENT = DM_FIRST+62;
DM_GETCOMBOBOXEVENT = DM_FIRST+63;
DM_GETCONSTTEXTPTR = DM_FIRST+64;
DM_GETDLGITEMSHORT = DM_FIRST+65;
DM_SETDLGITEMSHORT = DM_FIRST+66;
DM_GETDIALOGINFO = DM_FIRST+67;
DN_FIRST = $1000;
DN_BTNCLICK = DN_FIRST+1;
DN_CTLCOLORDIALOG = DN_FIRST+2;
DN_CTLCOLORDLGITEM = DN_FIRST+3;
DN_CTLCOLORDLGLIST = DN_FIRST+4;
DN_DRAWDIALOG = DN_FIRST+5;
DN_DRAWDLGITEM = DN_FIRST+6;
DN_EDITCHANGE = DN_FIRST+7;
DN_ENTERIDLE = DN_FIRST+8;
DN_GOTFOCUS = DN_FIRST+9;
DN_HELP = DN_FIRST+10;
DN_HOTKEY = DN_FIRST+11;
DN_INITDIALOG = DN_FIRST+12;
DN_KILLFOCUS = DN_FIRST+13;
DN_LISTCHANGE = DN_FIRST+14;
DN_MOUSECLICK = DN_FIRST+15;
DN_DRAGGED = DN_FIRST+16;
DN_RESIZECONSOLE = DN_FIRST+17;
DN_MOUSEEVENT = DN_FIRST+18;
DN_DRAWDIALOGDONE = DN_FIRST+19;
DN_LISTHOTKEY = DM_FIRST+20;
DN_GETDIALOGINFO = DM_GETDIALOGINFO;
DN_CLOSE = DM_CLOSE;
DN_KEY = DM_KEY;
DM_USER = $4000;
{ FARCHECKEDSTATE }
const
BSTATE_UNCHECKED = 0;
BSTATE_CHECKED = 1;
BSTATE_3STATE = 2;
BSTATE_TOGGLE = 3;
{ FARLISTMOUSEREACTIONTYPE }
const
LMRT_ONLYFOCUS = 0;
LMRT_ALWAYS = 1;
LMRT_NEVER = 2;
{FARCOMBOBOXEVENTTYPE}
const
CBET_KEY = 1;
CBET_MOUSE = 2;
{------------------------------------------------------------------------------}
{ List }
{------------------------------------------------------------------------------}
{ LISTITEMFLAGS }
const
LIF_SELECTED = $00010000;
LIF_CHECKED = $00020000;
LIF_SEPARATOR = $00040000;
LIF_DISABLE = $00080000;
LIF_GRAYED = $00100000;
LIF_HIDDEN = $00200000;
LIF_DELETEUSERDATA = $80000000;
(*
struct FarListItem
{
DWORD Flags;
const wchar_t *Text;
DWORD Reserved[3];
};
*)
type
PFarListItem = ^TFarListItem;
TFarListItem = record
Flags :DWORD;
TextPtr :PFarChar;
Reserved :array [0..2] of DWORD;
end;
type
PFarListItemArray = ^TFarListItemArray;
TFarListItemArray = packed array[0..MaxInt div SizeOf(TFarListItem) - 1] of TFarListItem;
(*
struct FarListUpdate
{
int Index;
struct FarListItem Item;
};
*)
type
PFarListUpdate = ^TFarListUpdate;
TFarListUpdate = record
Index :Integer;
Item :TFarListItem;
end;
(*
struct FarListInsert
{
int Index;
struct FarListItem Item;
};
*)
type
PFarListInsert = ^TFarListInsert;
TFarListInsert = record
Index :Integer;
Item :TFarListItem;
end;
(*
struct FarListGetItem
{
int ItemIndex;
struct FarListItem Item;
};
*)
type
PFarListGetItem = ^TFarListGetItem;
TFarListGetItem = record
ItemIndex :Integer;
Item :TFarListItem;
end;
(*
struct FarListPos
{
int SelectPos;
int TopPos;
};
*)
type
PFarListPos = ^TFarListPos;
TFarListPos = record
SelectPos : Integer;
TopPos : Integer;
end;
{ FARLISTFINDFLAGS }
const
LIFIND_EXACTMATCH = $00000001;
(*
struct FarListFind
{
int StartIndex;
const wchar_t *Pattern;
DWORD Flags;
DWORD Reserved;
};
*)
type
PFarListFind = ^TFarListFind;
TFarListFind = record
StartIndex : Integer;
Pattern : PFarChar;
Flags : DWORD;
Reserved : DWORD;
end;
(*
struct FarListDelete
{
int StartIndex;
int Count;
};
*)
type
PFarListDelete = ^TFarListDelete;
TFarListDelete = record
StartIndex : Integer;
Count : Integer;
end;
{ FARLISTINFOFLAGS }
const
LINFO_SHOWNOBOX = $00000400;
LINFO_AUTOHIGHLIGHT = $00000800;
LINFO_REVERSEHIGHLIGHT = $00001000;
LINFO_WRAPMODE = $00008000;
LINFO_SHOWAMPERSAND = $00010000;
(*
struct FarListInfo
{
DWORD Flags;
int ItemsNumber;
int SelectPos;
int TopPos;
int MaxHeight;
int MaxLength;
DWORD Reserved[6];
};
*)
type
PFarListInfo = ^TFarListInfo;
TFarListInfo = record
Flags :DWORD;
ItemsNumber :Integer;
SelectPos :Integer;
TopPos :Integer;
MaxHeight :Integer;
MaxLength :Integer;
Reserved :array [0..5] of DWORD;
end;
(*
struct FarListItemData
{
int Index;
int DataSize;
void *Data;
DWORD Reserved;
};
*)
type
PFarListItemData = ^TFarListItemData;
TFarListItemData = record
Index :Integer;
DataSize :Integer;
Data :Pointer;
Reserved :DWORD;
end;
(*
struct FarList
{
int ItemsNumber;
struct FarListItem *Items;
};
*)
type
PFarList = ^TFarList;
TFarList = record
ItemsNumber : Integer;
Items :PFarListItemArray;
end;
(*
struct FarListTitles
{
int TitleLen;
const wchar_t *Title;
int BottomLen;
const wchar_t *Bottom;
};
*)
type
PFarListTitles = ^TFarListTitles;
TFarListTitles = record
TitleLen :Integer;
Title :PFarChar;
BottomLen :Integer;
Bottom :PFarChar;
end;
(*
struct FarListColors{
DWORD Flags;
DWORD Reserved;
int ColorCount;
LPBYTE Colors;
};
*)
type
PFarListColors = ^TFarListColors;
TFarListColors = record
Flags :DWORD;
Reserved :DWORD;
ColorCount :Integer;
Colors :PAnsiChar;
end;
{------------------------------------------------------------------------------}
{ Dialogs }
{------------------------------------------------------------------------------}
(*
struct FarDialogItem
{
int Type;
int X1,Y1,X2,Y2;
int Focus;
union
{
DWORD_PTR Reserved;
int Selected;
const wchar_t *History;
const wchar_t *Mask;
struct FarList *ListItems;
int ListPos;
CHAR_INFO *VBuf;
}
#ifdef _FAR_NO_NAMELESS_UNIONS
Param
#endif
;
DWORD Flags;
int DefaultButton;
const wchar_t *PtrData;
size_t MaxLen; // terminate 0 not included (if == 0 string size is unlimited)
};
*)
type
PFarDialogItem = ^TFarDialogItem;
TFarDialogItem = record
ItemType : Integer;
X1, Y1, X2, Y2 : Integer;
Focus : Integer;
Param : record case Integer of
0 : (Selected : Integer);
1 : (History : PFarChar);
2 : (Mask : PFarChar);
3 : (ListItems : PFarList);
4 : (ListPos : Integer);
5 : (VBuf : PCharInfo);
end;
Flags : DWORD;
DefaultButton : Integer;
PtrData :PFarChar;
MaxLen :SIZE_T; // terminate 0 not included (if == 0 string size is unlimited)
end;
type
PFarDialogItemArray = ^TFarDialogItemArray;
TFarDialogItemArray = packed array[0..MaxInt div SizeOf(TFarDialogItem) - 1] of TFarDialogItem;
(*
struct FarDialogItemData
{
size_t PtrLength;
wchar_t *PtrData;
};
*)
type
PFarDialogItemData = ^TFarDialogItemData;
TFarDialogItemData = record
PtrLength : SIZE_T;
PtrData : PFarChar;
end;
(*
struct FarDialogEvent
{
HANDLE hDlg;
int Msg;
int Param1;
INT_PTR Param2;
INT_PTR Result;
};
*)
type
PFarDialogEvent = ^TFarDialogEvent;
TFarDialogEvent = record
hDlg :THandle;
Msg :Integer;
Param1 :Integer;
Param2 :INT_PTR;
Result :INT_PTR;
end;
(*
struct OpenDlgPluginData
{
int ItemNumber;
HANDLE hDlg;
};
*)
type
POpenDlgPluginData = ^TOpenDlgPluginData;
TOpenDlgPluginData = record
ItemNumber :Integer;
hDlg :THandle;
end;
(*
struct DialogInfo
{
int StructSize;
GUID Id;
};
*)
type
PDialogInfo = ^TDialogInfo;
TDialogInfo = record
StructSize :Integer;
Id :TGUID;
end;
{ FARDIALOGFLAGS }
const
FDLG_WARNING = $00000001;
FDLG_SMALLDIALOG = $00000002;
FDLG_NODRAWSHADOW = $00000004;
FDLG_NODRAWPANEL = $00000008;
type
(*
typedef INT_PTR (WINAPI *FARWINDOWPROC)(
HANDLE hDlg,
int Msg,
int Param1,
INT_PTR Param2
);
*)
TFarApiWindowProc = function (
hDlg :THandle;
Msg :Integer;
Param1 :Integer;
Param2 :INT_PTR
) :INT_PTR; stdcall;
(*
typedef INT_PTR (WINAPI *FARAPISENDDLGMESSAGE)(
HANDLE hDlg,
int Msg,
int Param1,
INT_PTR Param2
);
*)
TFarApiSendDlgMessage = function (
hDlg : THandle;
Msg : Integer;
Param1 : Integer;
Param2 : INT_PTR
) :INT_PTR; stdcall;
(*
typedef INT_PTR (WINAPI *FARAPIDEFDLGPROC)(
HANDLE hDlg,
int Msg,
int Param1,
INT_PTR Param2
);
*)
TFarApiDefDlgProc = function (
hDlg :THandle;
Msg :Integer;
Param1 :Integer;
Param2 :INT_PTR
) :INT_PTR; stdcall;
(*
typedef HANDLE (WINAPI *FARAPIDIALOGINIT)(
INT_PTR PluginNumber,
int X1,
int Y1,
int X2,
int Y2,
const wchar_t *HelpTopic,
struct FarDialogItem *Item,
unsigned int ItemsNumber,
DWORD Reserved,
DWORD Flags,
FARWINDOWPROC DlgProc,
INT_PTR Param
);
*)
TFarApiDialogInit = function (
PluginNumber :INT_PTR;
X1, Y1, X2, Y2 :Integer;
HelpTopic :PFarChar;
Item :PFarDialogItemArray;
ItemsNumber :Integer;
Reserved :DWORD;
Flags :DWORD;
DlgProc :TFarApiWindowProc;
Param :INT_PTR
) :THandle; stdcall;
(*
typedef int (WINAPI *FARAPIDIALOGRUN)(
HANDLE hDlg
);
*)
TFarApiDialogRun = function(
hDlg :THandle
) :Integer; stdcall;
(*
typedef void (WINAPI *FARAPIDIALOGFREE)(
HANDLE hDlg
);
*)
TFarApiDialogFree = procedure(
hDlg :THandle
); stdcall;
{------------------------------------------------------------------------------}
{ Menu }
{------------------------------------------------------------------------------}
(*
struct FarMenuItem
{
const wchar_t *Text;
int Selected;
int Checked;
int Separator;
};
*)
type
PFarMenuItem = ^TFarMenuItem;
TFarMenuItem = record
TextPtr :PFarChar;
Selected :Integer;
Checked :Integer;
Separator :Integer;
end;
type
PFarMenuItemArray = ^TFarMenuItemArray;
TFarMenuItemArray = packed array[0..MaxInt div SizeOf(TFarMenuItem) - 1] of TFarMenuItem;
{ MENUITEMFLAGS }
const
MIF_SELECTED = $00010000;
MIF_CHECKED = $00020000;
MIF_SEPARATOR = $00040000;
MIF_DISABLE = $00080000;
MIF_GRAYED = $00100000;
MIF_HIDDEN = $00200000;
(*
struct FarMenuItemEx
{
DWORD Flags;
const wchar_t *Text;
DWORD AccelKey;
DWORD Reserved;
DWORD_PTR UserData;
};
*)
type
PFarMenuItemEx = ^TFarMenuItemEx;
TFarMenuItemEx = record
Flags : DWORD;
TextPtr : PFarChar;
AccelKey : DWORD;
Reserved : DWORD;
UserData : DWORD_PTR;
end;
{ FARMENUFLAGS }
const
FMENU_SHOWAMPERSAND = $00000001;
FMENU_WRAPMODE = $00000002;
FMENU_AUTOHIGHLIGHT = $00000004;
FMENU_REVERSEAUTOHIGHLIGHT = $00000008;
FMENU_USEEXT = $00000020;
FMENU_CHANGECONSOLETITLE = $00000040;
{Obsolete}
//FMENU_TRUNCPATH = $10000000;
//FMENU_TRUNCSTR = $20000000;
//FMENU_TRUNCSTREND = $30000000;
(*
typedef int (WINAPI *FARAPIMENU)(
INT_PTR PluginNumber,
int X,
int Y,
int MaxHeight,
DWORD Flags,
const wchar_t *Title,
const wchar_t *Bottom,
const wchar_t *HelpTopic,
const int *BreakKeys,
int *BreakCode,
const struct FarMenuItem *Item,
int ItemsNumber
);
*)
type
TFarApiMenu = function (
PluginNumber : INT_PTR;
X, Y : Integer;
MaxHeight : Integer;
Flags : DWORD;
Title :PFarChar;
Bottom :PFarChar;
HelpTopic :PFarChar;
BreakKeys :PIntegerArray;
BreakCode :PIntegerArray;
Item :PFarMenuItemArray;
ItemsNumber :Integer
) : Integer; stdcall;
{------------------------------------------------------------------------------}
{ Panel }
{------------------------------------------------------------------------------}
{ PLUGINPANELITEMFLAGS }
const
PPIF_PROCESSDESCR = $80000000;
PPIF_SELECTED = $40000000;
PPIF_USERDATA = $20000000;
(*
struct FAR_FIND_DATA
{
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
unsigned __int64 nFileSize;
unsigned __int64 nPackSize;
wchar_t *lpwszFileName;
wchar_t *lpwszAlternateFileName;
};
*)
type
PFarFindData = ^TFarFindData;
TFarFindData = record
dwFileAttributes : DWORD;
ftCreationTime : TFileTime;
ftLastAccessTime : TFileTime;
ftLastWriteTime : TFileTime;
nFileSize :Int64; // nFileSizeLow, nFileSizeHigh : DWORD;
nPackSize :Int64; // nPackSizeLow, nPackSizeHigh : DWORD;
cFileName :PFarChar;
cAlternateFileName :PFarChar;
end;
TFarFindDataArray = packed array [0..MaxInt div sizeof(TFarFindData) - 1] of TFarFindData;
PFarFindDataArray = ^TFarFindDataArray;
(*
struct PluginPanelItem
{
struct FAR_FIND_DATA FindData;
DWORD Flags;
DWORD NumberOfLinks;
wchar_t *Description;
wchar_t *Owner;
wchar_t **CustomColumnData;
int CustomColumnNumber;
DWORD_PTR UserData;
DWORD CRC32;
DWORD_PTR Reserved[2];
};
*)
type
PPluginPanelItem = ^TPluginPanelItem;
TPluginPanelItem = record
FindData : TFarFindData;
Flags : DWORD;
NumberOfLinks : DWORD;
Description : PFarChar;
Owner : PFarChar;
CustomColumnData : PPCharArray;
CustomColumnNumber : Integer;
UserData : DWORD_PTR;
CRC32 : DWORD;
Reserved : array [0..1] of DWORD_PTR;
end;
TPluginPanelItemArray = packed array[0..MaxInt div sizeof(TPluginPanelItem) - 1] of TPluginPanelItem;
PPluginPanelItemArray = ^TPluginPanelItemArray;
{ PANELINFOFLAGS }
const
PFLAGS_SHOWHIDDEN = $00000001;
PFLAGS_HIGHLIGHT = $00000002;
PFLAGS_REVERSESORTORDER = $00000004;
PFLAGS_USESORTGROUPS = $00000008;
PFLAGS_SELECTEDFIRST = $00000010;
PFLAGS_REALNAMES = $00000020;
PFLAGS_NUMERICSORT = $00000040;
PFLAGS_PANELLEFT = $00000080;
PFLAGS_DIRECTORIESFIRST = $00000100;
{ PANELINFOTYPE }
const
PTYPE_FILEPANEL = 0;
PTYPE_TREEPANEL = 1;
PTYPE_QVIEWPANEL = 2;
PTYPE_INFOPANEL = 3;
(*
struct PanelInfo
{
int PanelType;
int Plugin;
RECT PanelRect;
int ItemsNumber;
int SelectedItemsNumber;
int CurrentItem;
int TopPanelItem;
int Visible;
int Focus;
int ViewMode;
int ShortNames;
int SortMode;
DWORD Flags;
DWORD Reserved;
};
*)
type
PPanelInfo = ^TPanelInfo;
TPanelInfo = record
PanelType : Integer;
Plugin : Integer;
PanelRect : TRect;
ItemsNumber : Integer;
SelectedItemsNumber : Integer;
CurrentItem : Integer;
TopPanelItem : Integer;
Visible : Integer;
Focus : Integer;
ViewMode : Integer;
ShortNames : Integer;
SortMode : Integer;
Flags : DWORD;
Reserved : DWORD;
end;
(*
struct PanelRedrawInfo
{
int CurrentItem;
int TopPanelItem;
};
*)
type
PPanelRedrawInfo = ^TPanelRedrawInfo;
TPanelRedrawInfo = record
CurrentItem : Integer;
TopPanelItem : Integer;
end;
{------------------------------------------------------------------------------}
{ }
{------------------------------------------------------------------------------}
(*
struct CmdLineSelect
{
int SelStart;
int SelEnd;
};
*)
type
PCmdLineSelect = ^TCmdLineSelect;
TCmdLineSelect = record
SelStart : Integer;
SelEnd : Integer;
end;
{ FILE_CONTROL_COMMANDS }
const
PANEL_NONE = THandle(-1);
PANEL_ACTIVE = THandle(-1);
PANEL_PASSIVE = THandle(-2);
const
FCTL_CLOSEPLUGIN = 0;
FCTL_GETPANELINFO = 1;
FCTL_UPDATEPANEL = 2;
FCTL_REDRAWPANEL = 3;
FCTL_GETCMDLINE = 4;
FCTL_SETCMDLINE = 5;
FCTL_SETSELECTION = 6;
FCTL_SETVIEWMODE = 7;
FCTL_INSERTCMDLINE = 8;
FCTL_SETUSERSCREEN = 9;
FCTL_SETPANELDIR = 10;
FCTL_SETCMDLINEPOS = 11;
FCTL_GETCMDLINEPOS = 12;
FCTL_SETSORTMODE = 13;
FCTL_SETSORTORDER = 14;
FCTL_GETCMDLINESELECTEDTEXT = 15;
FCTL_SETCMDLINESELECTION = 16;
FCTL_GETCMDLINESELECTION = 17;
FCTL_CHECKPANELSEXIST = 18;
FCTL_SETNUMERICSORT = 19;
FCTL_GETUSERSCREEN = 20;
FCTL_ISACTIVEPANEL = 21;
FCTL_GETPANELITEM = 22;
FCTL_GETSELECTEDPANELITEM = 23;
FCTL_GETCURRENTPANELITEM = 24;
FCTL_GETPANELDIR = 25;
FCTL_GETCOLUMNTYPES = 26;
FCTL_GETCOLUMNWIDTHS = 27;
FCTL_BEGINSELECTION = 28;
FCTL_ENDSELECTION = 29;
FCTL_CLEARSELECTION = 30;
FCTL_SETDIRECTORIESFIRST = 31;
FCTL_GETPANELFORMAT = 32;
FCTL_GETPANELHOSTFILE = 33;
type
(*
typedef int (WINAPI *FARAPICONTROL)(
HANDLE hPlugin,
int Command,
int Param1,
INT_PTR Param2
);
*)
TFarApiControl = function (
hPlugin :THandle;
Command :Integer;
Param1 :Integer;
Param2 :Pointer // INT_PTR
) :Integer; stdcall;
(*
typedef void (WINAPI *FARAPITEXT)(
int X,
int Y,
int Color,
const wchar_t *Str
);
*)
TFarApiText = procedure (
X, Y : Integer;
Color : Integer;
Str : PFarChar
); stdcall;
(*
typedef HANDLE (WINAPI *FARAPISAVESCREEN)(int X1, int Y1, int X2, int Y2);
*)
TFarApiSaveScreen = function (
X1, Y1, X2, Y2 : Integer
) :THandle; stdcall;
(*
typedef void (WINAPI *FARAPIRESTORESCREEN)(HANDLE hScreen);
*)
TFarApiRestoreScreen = procedure (
hScreen : THandle
); stdcall;
(*
typedef int (WINAPI *FARAPIGETDIRLIST)(
const wchar_t *Dir,
struct FAR_FIND_DATA **pPanelItem,
int *pItemsNumber
);
*)
TFarApiGetDirList = function (
Dir : PFarChar;
var Items : PFarFindDataArray;
var ItemsNumber : Integer
) : Integer; stdcall;
(*
typedef void (WINAPI *FARAPIFREEDIRLIST)(
struct FAR_FIND_DATA *PanelItem,
int nItemsNumber
);
*)
TFarApiFreeDirList = procedure (
Items : PFarFindDataArray;
ItemsNumber :Integer
); stdcall;
(*
typedef int (WINAPI *FARAPIGETPLUGINDIRLIST)(
INT_PTR PluginNumber,
HANDLE hPlugin,
const wchar_t *Dir,
struct PluginPanelItem **pPanelItem,
int *pItemsNumber
);
*)
TFarApiGetPluginDirList = function (
PluginNumber : INT_PTR;
hPlugin : THandle;
Dir : PFarChar;
var PanelItem :PPluginPanelItemArray;
var ItemsNumber :Integer
) : Integer; stdcall;
(*
typedef void (WINAPI *FARAPIFREEPLUGINDIRLIST)(struct PluginPanelItem *PanelItem, int nItemsNumber);
*)
TFarApiFreePluginDirList = procedure (
PanelItem : PPluginPanelItemArray;
ItemsNumber :Integer
); stdcall;
{------------------------------------------------------------------------------}
{ Viewer / Editor }
{------------------------------------------------------------------------------}
{ VIEWER_FLAGS }
const
VF_NONMODAL = $00000001;
VF_DELETEONCLOSE = $00000002;
VF_ENABLE_F6 = $00000004;
VF_DISABLEHISTORY = $00000008;
VF_IMMEDIATERETURN = $00000100;
VF_DELETEONLYFILEONCLOSE = $00000200;
(*
typedef int (WINAPI *FARAPIVIEWER)(
const wchar_t *FileName,
const wchar_t *Title,
int X1,
int Y1,
int X2,
int Y2,
DWORD Flags,
UINT CodePage
);
*)
type
TFarApiViewer = function (
FileName : PFarChar;
Title : PFarChar;
X1, Y1, X2, Y2 : Integer;
Flags : DWORD;
CodePage : UINT
) : Integer; stdcall;
{ EDITOR_FLAGS }
const
EF_NONMODAL = $00000001;
EF_CREATENEW = $00000002;
EF_ENABLE_F6 = $00000004;
EF_DISABLEHISTORY = $00000008;
EF_DELETEONCLOSE = $00000010;
EF_IMMEDIATERETURN = $00000100;
EF_DELETEONLYFILEONCLOSE = $00000200;
{ EDITOR_EXITCODE }
const
EEC_OPEN_ERROR = 0;
EEC_MODIFIED = 1;
EEC_NOT_MODIFIED = 2;
EEC_LOADING_INTERRUPTED = 3;
type
(*
typedef int (WINAPI *FARAPIEDITOR)(
const wchar_t *FileName,
const wchar_t *Title,
int X1,
int Y1,
int X2,
int Y2,
DWORD Flags,
int StartLine,
int StartChar,
UINT CodePage
);
*)
TFarApiEditor = function (
FileName : PFarChar;
Title : PFarChar;
X1, Y1, X2, Y2 : Integer;
Flags : DWORD;
StartLine : Integer;
StartChar : Integer;
CodePage : UINT
) : Integer; stdcall;
(*
typedef int (WINAPI *FARAPICMPNAME)(
const wchar_t *Pattern,
const wchar_t *String,
int SkipPath
);
*)
TFarApiCmpName = function (
Pattern : PFarChar;
aString : PFarChar;
SkipPath : Integer
) : Integer; stdcall;
type
(*
typedef const wchar_t* (WINAPI *FARAPIGETMSG)(
INT_PTR PluginNumber,
int MsgId
);
*)
TFarApiGetMsg = function (
PluginNumber :INT_PTR;
MsgId :Integer
) :PFarChar; stdcall;
{ FarHelpFlags }
const
FHELP_NOSHOWERROR = $80000000;
FHELP_SELFHELP = $00000000;
FHELP_FARHELP = $00000001;
FHELP_CUSTOMFILE = $00000002;
FHELP_CUSTOMPATH = $00000004;
FHELP_USECONTENTS = $40000000;
(*
typedef BOOL (WINAPI *FARAPISHOWHELP)(
const wchar_t *ModuleName,
const wchar_t *Topic,
DWORD Flags
);
*)
type
TFarApiShowHelp = function (
ModuleName : PFarChar;
Topic : PFarChar;
Flags : DWORD
) :LongBool; stdcall;
{ ADVANCED_CONTROL_COMMANDS }
const
ACTL_GETFARVERSION = 0;
//ACTL_CONSOLEMODE = 1;
ACTL_GETSYSWORDDIV = 2;
ACTL_WAITKEY = 3;
ACTL_GETCOLOR = 4;
ACTL_GETARRAYCOLOR = 5;
ACTL_EJECTMEDIA = 6;
ACTL_KEYMACRO = 7;
ACTL_POSTKEYSEQUENCE = 8;
ACTL_GETWINDOWINFO = 9;
ACTL_GETWINDOWCOUNT = 10;
ACTL_SETCURRENTWINDOW = 11;
ACTL_COMMIT = 12;
ACTL_GETFARHWND = 13;
ACTL_GETSYSTEMSETTINGS = 14;
ACTL_GETPANELSETTINGS = 15;
ACTL_GETINTERFACESETTINGS = 16;
ACTL_GETCONFIRMATIONS = 17;
ACTL_GETDESCSETTINGS = 18;
ACTL_SETARRAYCOLOR = 19;
//ACTL_GETWCHARMODE = 20;
ACTL_GETPLUGINMAXREADDATA = 21;
ACTL_GETDIALOGSETTINGS = 22;
ACTL_GETSHORTWINDOWINFO = 23;
ACTL_REDRAWALL = 27;
ACTL_SYNCHRO = 28;
ACTL_SETPROGRESSSTATE = 29;
ACTL_SETPROGRESSVALUE = 30;
ACTL_QUIT = 31;
ACTL_GETFARRECT = 32;
ACTL_GETCURSORPOS = 33;
ACTL_SETCURSORPOS = 34;
{ FarSystemSettings }
const
FSS_CLEARROATTRIBUTE = $00000001;
FSS_DELETETORECYCLEBIN = $00000002;
FSS_USESYSTEMCOPYROUTINE = $00000004;
FSS_COPYFILESOPENEDFORWRITING = $00000008;
FSS_CREATEFOLDERSINUPPERCASE = $00000010;
FSS_SAVECOMMANDSHISTORY = $00000020;
FSS_SAVEFOLDERSHISTORY = $00000040;
FSS_SAVEVIEWANDEDITHISTORY = $00000080;
FSS_USEWINDOWSREGISTEREDTYPES = $00000100;
FSS_AUTOSAVESETUP = $00000200;
FSS_SCANSYMLINK = $00000400;
{ FarPanelSettings }
const
FPS_SHOWHIDDENANDSYSTEMFILES = $00000001;
FPS_HIGHLIGHTFILES = $00000002;
FPS_AUTOCHANGEFOLDER = $00000004;
FPS_SELECTFOLDERS = $00000008;
FPS_ALLOWREVERSESORTMODES = $00000010;
FPS_SHOWCOLUMNTITLES = $00000020;
FPS_SHOWSTATUSLINE = $00000040;
FPS_SHOWFILESTOTALINFORMATION = $00000080;
FPS_SHOWFREESIZE = $00000100;
FPS_SHOWSCROLLBAR = $00000200;
FPS_SHOWBACKGROUNDSCREENSNUMBER = $00000400;
FPS_SHOWSORTMODELETTER = $00000800;
{ FarDialogSettings }
const
FDIS_HISTORYINDIALOGEDITCONTROLS = $00000001;
FDIS_PERSISTENTBLOCKSINEDITCONTROLS = $00000002;
FDIS_AUTOCOMPLETEININPUTLINES = $00000004;
FDIS_BSDELETEUNCHANGEDTEXT = $00000008;
FDIS_DELREMOVESBLOCKS = $00000010;
FDIS_MOUSECLICKOUTSIDECLOSESDIALOG = $00000020;
{ FarInterfaceSettings }
const
FIS_CLOCKINPANELS = $00000001;
FIS_CLOCKINVIEWERANDEDITOR = $00000002;
FIS_MOUSE = $00000004;
FIS_SHOWKEYBAR = $00000008;
FIS_ALWAYSSHOWMENUBAR = $00000010;
FIS_USERIGHTALTASALTGR = $00000080;
FIS_SHOWTOTALCOPYPROGRESSINDICATOR = $00000100;
FIS_SHOWCOPYINGTIMEINFO = $00000200;
FIS_USECTRLPGUPTOCHANGEDRIVE = $00000800;
FIS_SHOWTOTALDELPROGRESSINDICATOR = $00001000;
{ FarConfirmationsSettings }
const
FCS_COPYOVERWRITE = $00000001;
FCS_MOVEOVERWRITE = $00000002;
FCS_DRAGANDDROP = $00000004;
FCS_DELETE = $00000008;
FCS_DELETENONEMPTYFOLDERS = $00000010;
FCS_INTERRUPTOPERATION = $00000020;
FCS_DISCONNECTNETWORKDRIVE = $00000040;
FCS_RELOADEDITEDFILE = $00000080;
FCS_CLEARHISTORYLIST = $00000100;
FCS_EXIT = $00000200;
FCS_OVERWRITEDELETEROFILES = $00000400;
{ FarDescriptionSettings }
const
FDS_UPDATEALWAYS = $00000001;
FDS_UPDATEIFDISPLAYED = $00000002;
FDS_SETHIDDEN = $00000004;
FDS_UPDATEREADONLY = $00000008;
//const
// FAR_CONSOLE_GET_MODE = -2;
// FAR_CONSOLE_TRIGGER = -1;
// FAR_CONSOLE_SET_WINDOWED = 0;
// FAR_CONSOLE_SET_FULLSCREEN = 1;
// FAR_CONSOLE_WINDOWED = 0;
// FAR_CONSOLE_FULLSCREEN = 1;
{ FAREJECTMEDIAFLAGS }
const
EJECT_NO_MESSAGE = $00000001;
EJECT_LOAD_MEDIA = $00000002;
(*
struct ActlEjectMedia {
DWORD Letter;
DWORD Flags;
};
*)
type
PActlEjectMedia = ^TActlEjectMedia;
TActlEjectMedia = record
Letter :DWORD;
Flags :DWORD;
end;
{ FARKEYSEQUENCEFLAGS }
const
KSFLAGS_DISABLEOUTPUT = $00000001;
KSFLAGS_NOSENDKEYSTOPLUGINS = $00000002;
KSFLAGS_REG_MULTI_SZ = $00100000;
KSFLAGS_SILENTCHECK = $00000001;
(*
struct KeySequence{
DWORD Flags;
int Count;
DWORD *Sequence;
};
*)
type
PKeySequence = ^TKeySequence;
TKeySequence = record
Flags :DWORD;
Count :Integer;
Sequence :^DWORD;
end;
{ FARMACROCOMMAND }
const
MCMD_LOADALL = 0;
MCMD_SAVEALL = 1;
MCMD_POSTMACROSTRING = 2;
MCMD_CHECKMACRO = 4;
MCMD_GETSTATE = 5;
{ FARMACROSTATE }
const
MACROSTATE_NOMACRO = 0;
MACROSTATE_EXECUTING = 1;
MACROSTATE_EXECUTING_COMMON = 2;
MACROSTATE_RECORDING = 3;
MACROSTATE_RECORDING_COMMON = 4;
{FARMACROPARSEERRORCODE}
const
MPEC_SUCCESS = 0;
MPEC_UNRECOGNIZED_KEYWORD = 1;
MPEC_UNRECOGNIZED_FUNCTION = 2;
MPEC_FUNC_PARAM = 3;
MPEC_NOT_EXPECTED_ELSE = 4;
MPEC_NOT_EXPECTED_END = 5;
MPEC_UNEXPECTED_EOS = 6;
MPEC_EXPECTED_TOKEN = 7;
MPEC_BAD_HEX_CONTROL_CHAR = 8;
MPEC_BAD_CONTROL_CHAR = 9;
MPEC_VAR_EXPECTED = 10;
MPEC_EXPR_EXPECTED = 11;
MPEC_ZEROLENGTHMACRO = 12;
MPEC_INTPARSERERROR = 13;
MPEC_CONTINUE_OTL = 14;
(*
struct MacroParseResult
{
DWORD ErrCode;
COORD ErrPos;
const wchar_t *ErrSrc;
};
*)
type
PMacroParseResult = ^TMacroParseResult;
TMacroParseResult = record
ErrCode :DWORD;
ErrPos :COORD;
ErrSrc :PFarChar;
end;
(*
struct ActlKeyMacro
{
int Command;
union
{
struct
{
const wchar_t *SequenceText;
DWORD Flags;
} PlainText;
struct MacroParseResult MacroResult;
DWORD_PTR Reserved[3];
} Param;
};
*)
type
PPlainText = ^TPlainText;
TPlainText = record
SequenceText : PFarChar;
Flags : DWORD;
end;
PActlKeyMacro = ^TActlKeyMacro;
TActlKeyMacro = record
Command : Integer;
Param : record case Integer of
0 : (PlainText :TPlainText);
1 : (MacroResult :TMacroParseResult);
2 : (Reserved :array [0..2] of DWORD_PTR);
end;
end;
{ FARCOLORFLAGS }
const
FCLR_REDRAW = $00000001;
(*
struct FarSetColors{
DWORD Flags;
int StartIndex;
int ColorCount;
LPBYTE Colors;
};
*)
type
PFarSetColors = ^TFarSetColors;
TFarSetColors = record
Flags : DWORD;
StartIndex : Integer;
ColorCount : Integer;
Colors : PAnsiChar;
end;
{ WINDOWINFO_TYPE }
const
WTYPE_PANELS = 1;
WTYPE_VIEWER = 2;
WTYPE_EDITOR = 3;
WTYPE_DIALOG = 4;
WTYPE_VMENU = 5;
WTYPE_HELP = 6;
(*
struct WindowInfo
{
int Pos;
int Type;
int Modified;
int Current;
wchar_t *TypeName;
int TypeNameSize;
wchar_t *Name;
int NameSize;
};
*)
type
PWindowInfo = ^TWindowInfo;
TWindowInfo = record
Pos :Integer;
WindowType :Integer;
Modified :Integer;
Current :Integer;
TypeName :PFarChar;
TypeNameSize :Integer;
Name :PFarChar;
NameSize :Integer;
end;
{ PROGRESSTATE }
const
PS_NOPROGRESS = 0;
PS_INDETERMINATE = 1;
PS_NORMAL = 2;
PS_ERROR = 4;
PS_PAUSED = 8;
(*
struct PROGRESSVALUE
{
unsigned __int64 Completed;
unsigned __int64 Total;
};
*)
type
PProgressValue = ^TProgressValue;
TProgressValue = record
Completed :Int64;
Total :Int64;
end;
(*
typedef INT_PTR (WINAPI *FARAPIADVCONTROL)(
INT_PTR ModuleNumber,
int Command,
void *Param
);
*)
type
TFarApiAdvControl = function (
ModuleNumber :INT_PTR;
Command :Integer;
Param :Pointer
) :INT_PTR; stdcall;
{ VIEWER_CONTROL_COMMANDS }
const
VCTL_GETINFO = 0;
VCTL_QUIT = 1;
VCTL_REDRAW = 2;
VCTL_SETKEYBAR = 3;
VCTL_SETPOSITION = 4;
VCTL_SELECT = 5;
VCTL_SETMODE = 6;
{ VIEWER_OPTIONS }
const
VOPT_SAVEFILEPOSITION = 1;
VOPT_AUTODETECTTABLE = 2;
{VIEWER_SETMODE_TYPES}
const
VSMT_HEX = 0;
VSMT_WRAP = 1;
VSMT_WORDWRAP = 2;
{VIEWER_SETMODEFLAGS_TYPES}
const
VSMFL_REDRAW = $00000001;
(*
struct ViewerSetMode {
int Type;
union {
int iParam;
wchar_t *wszParam;
} Param;
DWORD Flags;
DWORD Reserved;
};
*)
type
PViewerSetMode = ^TViewerSetMode;
TViewerSetMode = record
ParamType : Integer;
Param : record case Integer of
0 : (iParam : Integer);
1 : (wszParam : PFarChar);
end;
Flags : DWORD;
Reserved : DWORD;
end;
(*
struct ViewerSelect
{
__int64 BlockStartPos;
int BlockLen;
};
*)
type
TFarInt64Part = record
LowPart :DWORD;
HighPart :DWORD;
end;
TFarInt64 = record
case Integer of
0 : (i64 : Int64);
1 : (Part : TFarInt64Part);
end;
PViewerSelect = ^TViewerSelect;
TViewerSelect = record
BlockStartPos :TFarInt64;
BlockLen :Integer;
end;
{ VIEWER_SETPOS_FLAGS }
const
VSP_NOREDRAW = $0001;
VSP_PERCENT = $0002;
VSP_RELATIVE = $0004;
VSP_NORETNEWPOS = $0008;
(*
struct ViewerSetPosition
{
DWORD Flags;
__int64 StartPos;
__int64 LeftPos;
};
*)
type
PViewerSetPosition = ^TViewerSetPosition;
TViewerSetPosition = record
Flags : DWORD;
StartPos : TFarInt64;
LeftPos : TFarInt64;
end;
(*
struct ViewerMode{
UINT CodePage;
int Wrap;
int WordWrap;
int Hex;
DWORD Reserved[4];
};
*)
type
PViewerMode = ^TViewerMode;
TViewerMode = record
CodePage :UINT;
Wrap : Integer;
WordWrap : Integer;
Hex : Integer;
Reserved : array [0..3] of DWORD;
end;
(*
struct ViewerInfo
{
int StructSize;
int ViewerID;
const wchar_t *FileName;
__int64 FileSize;
__int64 FilePos;
int WindowSizeX;
int WindowSizeY;
DWORD Options;
int TabSize;
struct ViewerMode CurMode;
__int64 LeftPos;
};
*)
type
PViewerInfo = ^TViewerInfo;
TViewerInfo = record
StructSize : Integer;
ViewerID : Integer;
FileName : PFarChar;
FileSize : TFarInt64;
FilePos : TFarInt64;
WindowSizeX : Integer;
WindowSizeY : Integer;
Options : DWORD;
TabSize : Integer;
CurMode : TViewerMode;
LeftPos : TFarInt64;
end;
(*
typedef int (WINAPI *FARAPIVIEWERCONTROL)(
int Command,
void *Param
);
*)
type
TFarApiViewerControl = function (
Command : Integer;
Param : Pointer
) : Integer; stdcall;
{ VIEWER_EVENTS }
const
VE_READ = 0;
VE_CLOSE = 1;
VE_GOTFOCUS = 6;
VE_KILLFOCUS = 7;
{ EDITOR_EVENTS }
const
EE_READ = 0;
EE_SAVE = 1;
EE_REDRAW = 2;
EE_CLOSE = 3;
EE_GOTFOCUS = 6;
EE_KILLFOCUS = 7;
{ DIALOG_EVENTS }
const
DE_DLGPROCINIT = 0;
DE_DEFDLGPROCINIT = 1;
DE_DLGPROCEND = 2;
{ SYNCHRO_EVENTS }
const
SE_COMMONSYNCHRO = 0;
const
EEREDRAW_ALL = Pointer(0);
{ EDITOR_CONTROL_COMMANDS }
const
ECTL_GETSTRING = 0;
ECTL_SETSTRING = 1;
ECTL_INSERTSTRING = 2;
ECTL_DELETESTRING = 3;
ECTL_DELETECHAR = 4;
ECTL_INSERTTEXT = 5;
ECTL_GETINFO = 6;
ECTL_SETPOSITION = 7;
ECTL_SELECT = 8;
ECTL_REDRAW = 9;
ECTL_TABTOREAL = 10;
ECTL_REALTOTAB = 11;
ECTL_EXPANDTABS = 12;
ECTL_SETTITLE = 13;
ECTL_READINPUT = 14;
ECTL_PROCESSINPUT = 15;
ECTL_ADDCOLOR = 16;
ECTL_GETCOLOR = 17;
ECTL_SAVEFILE = 18;
ECTL_QUIT = 19;
ECTL_SETKEYBAR = 20;
ECTL_PROCESSKEY = 21;
ECTL_SETPARAM = 22;
ECTL_GETBOOKMARKS = 23;
ECTL_TURNOFFMARKINGBLOCK = 24;
ECTL_DELETEBLOCK = 25;
ECTL_ADDSESSIONBOOKMARK = 26;
ECTL_PREVSESSIONBOOKMARK = 27;
ECTL_NEXTSESSIONBOOKMARK = 28;
ECTL_CLEARSESSIONBOOKMARKS = 29;
ECTL_DELETESESSIONBOOKMARK = 30;
ECTL_GETSESSIONBOOKMARKS = 31;
ECTL_UNDOREDO = 32;
ECTL_GETFILENAME = 33;
{ EDITOR_SETPARAMETER_TYPES }
const
ESPT_TABSIZE = 0;
ESPT_EXPANDTABS = 1;
ESPT_AUTOINDENT = 2;
ESPT_CURSORBEYONDEOL = 3;
ESPT_CHARCODEBASE = 4;
ESPT_CODEPAGE = 5;
ESPT_SAVEFILEPOSITION = 6;
ESPT_LOCKMODE = 7;
ESPT_SETWORDDIV = 8;
ESPT_GETWORDDIV = 9;
ESPT_SHOWWHITESPACE = 10;
ESPT_SETBOM = 11;
(*
struct EditorSetParameter
{
int Type;
union {
int iParam;
wchar_t *wszParam;
DWORD Reserved1;
} Param;
DWORD Flags;
DWORD Size;
};
*)
type
PEditorSetParameter = ^TEditorSetParameter;
TEditorSetParameter = record
ParamType : Integer;
Param : record case Integer of
0 : (iParam : Integer);
1 : (wszParam : PFarChar);
2 : (Reserved : DWORD);
end;
Flags : DWORD;
Size : DWORD;
end;
{EDITOR_UNDOREDO_COMMANDS}
const
EUR_BEGIN = 0;
EUR_END = 1;
EUR_UNDO = 2;
EUR_REDO = 3;
(*
struct EditorUndoRedo
{
int Command;
DWORD_PTR Reserved[3];
};
*)
type
PEditorUndoRedo = ^TEditorUndoRedo;
TEditorUndoRedo = record
Command :Integer;
Reserved :array[0..2] of DWORD_PTR;
end;
(*
struct EditorGetString
{
int StringNumber;
const wchar_t *StringText;
const wchar_t *StringEOL;
int StringLength;
int SelStart;
int SelEnd;
};
*)
type
PEditorGetString = ^TEditorGetString;
TEditorGetString = record
StringNumber : Integer;
StringText : PFarChar;
StringEOL : PFarChar;
StringLength : Integer;
SelStart : Integer;
SelEnd : Integer;
end;
(*
struct EditorSetString
{
int StringNumber;
const wchar_t *StringText;
const wchar_t *StringEOL;
int StringLength;
};
*)
type
PEditorSetString = ^TEditorSetString;
TEditorSetString = record
StringNumber : Integer;
StringText : PFarChar;
StringEOL : PFarChar;
StringLength : Integer;
end;
{ EXPAND_TABS }
const
EXPAND_NOTABS = 0;
EXPAND_ALLTABS = 1;
EXPAND_NEWTABS = 2;
{ EDITOR_OPTIONS }
const
EOPT_EXPANDALLTABS = $00000001;
EOPT_PERSISTENTBLOCKS = $00000002;
EOPT_DELREMOVESBLOCKS = $00000004;
EOPT_AUTOINDENT = $00000008;
EOPT_SAVEFILEPOSITION = $00000010;
EOPT_AUTODETECTCODEPAGE = $00000020;
EOPT_CURSORBEYONDEOL = $00000040;
EOPT_EXPANDONLYNEWTABS = $00000080;
EOPT_SHOWWHITESPACE = $00000100;
EOPT_BOM = $00000200;
{ EDITOR_BLOCK_TYPES }
const
BTYPE_NONE = 0;
BTYPE_STREAM = 1;
BTYPE_COLUMN = 2;
{ EDITOR_CURRENTSTATE }
const
ECSTATE_MODIFIED = $00000001;
ECSTATE_SAVED = $00000002;
ECSTATE_LOCKED = $00000004;
(*
struct EditorInfo
{
int EditorID;
int WindowSizeX;
int WindowSizeY;
int TotalLines;
int CurLine;
int CurPos;
int CurTabPos;
int TopScreenLine;
int LeftPos;
int Overtype;
int BlockType;
int BlockStartLine;
DWORD Options;
int TabSize;
int BookMarkCount;
DWORD CurState;
UINT CodePage;
DWORD Reserved[5];
};
*)
type
PEditorInfo = ^TEditorInfo;
TEditorInfo = record
EditorID : Integer;
WindowSizeX : Integer;
WindowSizeY : Integer;
TotalLines : Integer;
CurLine : Integer;
CurPos : Integer;
CurTabPos : Integer;
TopScreenLine : Integer;
LeftPos : Integer;
Overtype : Integer;
BlockType : Integer;
BlockStartLine : Integer;
Options : DWORD;
TabSize : Integer;
BookMarkCount : Integer;
CurState : DWORD;
CodePage : UINT;
Reserved : array [0..4] of DWORD;
end;
(*
struct EditorBookMarks
{
long *Line;
long *Cursor;
long *ScreenLine;
long *LeftPos;
DWORD Reserved[4];
};
*)
type
PEditorBookMarks = ^TEditorBookMarks;
TEditorBookMarks = record
Line : PIntegerArray;
Cursor : PIntegerArray;
ScreenLine : PIntegerArray;
LeftPos : PIntegerArray;
Reserved : array [0..3] of DWORD;
end;
(*
struct EditorSetPosition
{
int CurLine;
int CurPos;
int CurTabPos;
int TopScreenLine;
int LeftPos;
int Overtype;
};
*)
type
PEditorSetPosition = ^TEditorSetPosition;
TEditorSetPosition = record
CurLine : Integer;
CurPos : Integer;
CurTabPos : Integer;
TopScreenLine : Integer;
LeftPos : Integer;
Overtype : Integer;
end;
(*
struct EditorSelect
{
int BlockType;
int BlockStartLine;
int BlockStartPos;
int BlockWidth;
int BlockHeight;
};
*)
type
PEditorSelect = ^TEditorSelect;
TEditorSelect = record
BlockType : Integer;
BlockStartLine : Integer;
BlockStartPos : Integer;
BlockWidth : Integer;
BlockHeight : Integer;
end;
(*
struct EditorConvertPos
{
int StringNumber;
int SrcPos;
int DestPos;
};
*)
type
PEditorConvertPos = ^TEditorConvertPos;
TEditorConvertPos = record
StringNumber : Integer;
SrcPos : Integer;
DestPos : Integer;
end;
{ EDITORCOLORFLAGS }
const
ECF_TAB1 = $10000;
(*
struct EditorColor
{
int StringNumber;
int ColorItem;
int StartPos;
int EndPos;
int Color;
};
*)
type
PEditorColor = ^TEditorColor;
TEditorColor = record
StringNumber :Integer;
ColorItem :Integer;
StartPos :Integer;
EndPos :Integer;
Color :Integer;
end;
(*
struct EditorSaveFile
{
const wchar_t *FileName;
const wchar_t *FileEOL;
UINT CodePage;
};
*)
type
PEditorSaveFile = ^TEditorSaveFile;
TEditorSaveFile = record
FileName :PFarChar;
FileEOL :PFarChar;
CodePage :UINT;
end;
(*
typedef int (WINAPI *FARAPIEDITORCONTROL)(
int Command,
void *Param
);
*)
type
TFarApiEditorControl = function (
Command : Integer;
Param : Pointer
) : Integer; stdcall;
{ INPUTBOXFLAGS }
const
FIB_ENABLEEMPTY = $00000001;
FIB_PASSWORD = $00000002;
FIB_EXPANDENV = $00000004;
FIB_NOUSELASTHISTORY = $00000008;
FIB_BUTTONS = $00000010;
FIB_NOAMPERSAND = $00000020;
FIB_EDITPATH = $01000000;
(*
typedef int (WINAPI *FARAPIINPUTBOX)(
const wchar_t *Title,
const wchar_t *SubTitle,
const wchar_t *HistoryName,
const wchar_t *SrcText,
wchar_t *DestText,
int DestLength,
const wchar_t *HelpTopic,
DWORD Flags
);
*)
type
TFarApiInputBox = function (
Title : PFarChar;
SubTitle : PFarChar;
HistoryName : PFarChar;
SrcText : PFarChar;
DestText : PFarChar;
DestLength : Integer;
HelpTopic : PFarChar;
Flags : DWORD
) : Integer; stdcall;
(*
typedef int (WINAPI *FARAPIPLUGINSCONTROL)(
HANDLE hHandle,
int Command,
int Param1,
INT_PTR Param2
);
*)
type
TFarApiPluginsControl = function(
hHandle :THandle;
Command :Integer;
Param1 :Integer;
Param2 :Pointer //INT_PTR
) : Integer; stdcall;
(*
typedef int (WINAPI *FARAPIFILEFILTERCONTROL)(
HANDLE hHandle,
int Command,
int Param1,
INT_PTR Param2
);
*)
type
TFarApiFilterControl = function(
hHandle :THandle;
Command :Integer;
Param1 :Integer;
Param2 :Pointer //INT_PTR
) : Integer; stdcall;
(*
typedef int (WINAPI *FARAPIREGEXPCONTROL)(
HANDLE hHandle,
int Command,
INT_PTR Param
);
*)
type
TFarApiRegexpControl = function(
hHandle :THandle;
Command :Integer;
Param :Pointer //INT_PTR
) :Integer; stdcall;
(*
//
typedef int (WINAPIV *FARSTDSPRINTF)(wchar_t *Buffer,const wchar_t *Format,...);
typedef int (WINAPIV *FARSTDSNPRINTF)(wchar_t *Buffer,size_t Sizebuf,const wchar_t *Format,...);
typedef int (WINAPIV *FARSTDSSCANF)(const wchar_t *Buffer, const wchar_t *Format,...);
//
typedef void (WINAPI *FARSTDQSORT)(void *base, size_t nelem, size_t width, int (__cdecl *fcmp)(const void *, const void * ));
typedef void (WINAPI *FARSTDQSORTEX)(void *base, size_t nelem, size_t width, int (__cdecl *fcmp)(const void *, const void *,void *userparam),void *userparam);
typedef void *(WINAPI *FARSTDBSEARCH)(const void *key, const void *base, size_t nelem, size_t width, int (__cdecl *fcmp)(const void *, const void * ));
typedef int (WINAPI *FARSTDGETFILEOWNER)(const wchar_t *Computer,const wchar_t *Name,wchar_t *Owner,int Size);
typedef int (WINAPI *FARSTDGETNUMBEROFLINKS)(const wchar_t *Name);
typedef int (WINAPI *FARSTDATOI)(const wchar_t *s);
typedef __int64 (WINAPI *FARSTDATOI64)(const wchar_t *s);
typedef wchar_t *(WINAPI *FARSTDITOA64)(__int64 value, wchar_t *string, int radix);
typedef wchar_t *(WINAPI *FARSTDITOA)(int value, wchar_t *string, int radix);
typedef wchar_t *(WINAPI *FARSTDLTRIM)(wchar_t *Str);
typedef wchar_t *(WINAPI *FARSTDRTRIM)(wchar_t *Str);
typedef wchar_t *(WINAPI *FARSTDTRIM)(wchar_t *Str);
typedef wchar_t *(WINAPI *FARSTDTRUNCSTR)(wchar_t *Str,int MaxLength);
typedef wchar_t *(WINAPI *FARSTDTRUNCPATHSTR)(wchar_t *Str,int MaxLength);
typedef wchar_t *(WINAPI *FARSTDQUOTESPACEONLY)(wchar_t *Str);
typedef const wchar_t* (WINAPI *FARSTDPOINTTONAME)(const wchar_t *Path);
typedef int (WINAPI *FARSTDGETPATHROOT)(const wchar_t *Path,wchar_t *Root, int DestSize);
typedef BOOL (WINAPI *FARSTDADDENDSLASH)(wchar_t *Path);
typedef int (WINAPI *FARSTDCOPYTOCLIPBOARD)(const wchar_t *Data);
typedef wchar_t *(WINAPI *FARSTDPASTEFROMCLIPBOARD)(void);
typedef int (WINAPI *FARSTDINPUTRECORDTOKEY)(const INPUT_RECORD *r);
typedef int (WINAPI *FARSTDLOCALISLOWER)(wchar_t Ch);
typedef int (WINAPI *FARSTDLOCALISUPPER)(wchar_t Ch);
typedef int (WINAPI *FARSTDLOCALISALPHA)(wchar_t Ch);
typedef int (WINAPI *FARSTDLOCALISALPHANUM)(wchar_t Ch);
typedef wchar_t (WINAPI *FARSTDLOCALUPPER)(wchar_t LowerChar);
typedef wchar_t (WINAPI *FARSTDLOCALLOWER)(wchar_t UpperChar);
typedef void (WINAPI *FARSTDLOCALUPPERBUF)(wchar_t *Buf,int Length);
typedef void (WINAPI *FARSTDLOCALLOWERBUF)(wchar_t *Buf,int Length);
typedef void (WINAPI *FARSTDLOCALSTRUPR)(wchar_t *s1);
typedef void (WINAPI *FARSTDLOCALSTRLWR)(wchar_t *s1);
typedef int (WINAPI *FARSTDLOCALSTRICMP)(const wchar_t *s1,const wchar_t *s2);
typedef int (WINAPI *FARSTDLOCALSTRNICMP)(const wchar_t *s1,const wchar_t *s2,int n);
*)
type
{&Cdecl+}
TFarStdQSortFunc = function (Param1 : Pointer; Param2 : Pointer) :Integer; cdecl;
TFarStdQSortExFunc = function (Param1 : Pointer; Param2 : Pointer; UserParam : Pointer) : Integer; cdecl;
{&StdCall+}
TFarStdQSort = procedure (Base : Pointer; NElem : SIZE_T; Width : SIZE_T; FCmp : TFarStdQSortFunc); stdcall;
TFarStdQSortEx = procedure (Base : Pointer; NElem : SIZE_T; Width : SIZE_T; FCmp : TFarStdQSortExFunc; UserParam : Pointer); stdcall;
TFarStdBSearch = procedure (Key : Pointer; Base : Pointer; NElem : SIZE_T; Width : SIZE_T; FCmp : TFarStdQSortFunc); stdcall;
TFarStdGetFileOwner = function (Computer : PFarChar; Name : PFarChar; Owner : PFarChar ) : Integer; stdcall;
TFarStdGetNumberOfLinks = function (Name : PFarChar) : Integer; stdcall;
TFarStdAtoi = function (S : PFarChar) : Integer; stdcall;
TFarStdAtoi64 = function (S : PFarChar) : Int64; stdcall;
TFarStdItoa64 = function (Value : Int64; Str : PFarChar; Radix : Integer) :PFarChar; stdcall;
TFarStdItoa = function (Value : Integer; Str : PFarChar; Radix : Integer ) : PFarChar; stdcall;
TFarStdLTrim = function (Str : PFarChar) : PFarChar; stdcall;
TFarStdRTrim = function (Str : PFarChar) : PFarChar; stdcall;
TFarStdTrim = function (Str : PFarChar) : PFarChar; stdcall;
TFarStdTruncStr = function (Str : PFarChar; MaxLength : Integer) : PFarChar; stdcall;
TFarStdTruncPathStr = function (Str : PFarChar; MaxLength : Integer) : PFarChar; stdcall;
TFarStdQuoteSpaceOnly = function (Str : PFarChar) : PFarChar; stdcall;
TFarStdPointToName = function (Path : PFarChar) : PFarChar; stdcall;
TFarStdGetPathRoot = function (Path : PFarChar; Root : PFarChar; DestSize :Integer) :Integer; stdcall;
TFarStdAddEndSlash = function (Path : PFarChar) : LongBool; stdcall;
TFarStdCopyToClipBoard = function (Data : PFarChar) : Integer; stdcall;
TFarStdPasteFromClipboard = function : PFarChar; stdcall;
TFarStdInputRecordToKey = function (const R : TInputRecord) : Integer; stdcall;
TFarStdLocalIsLower = function (Ch : Integer) : Integer; stdcall;
TFarStdLocalIsUpper = function (Ch : Integer) : Integer; stdcall;
TFarStdLocalIsAlpha = function (Ch : Integer) : Integer; stdcall;
TFarStdLocalIsAlphaNum = function (Ch : Integer) : Integer; stdcall;
TFarStdLocalUpper = function (LowerChar : Integer) : Integer; stdcall;
TFarStdLocalLower = function (UpperChar : Integer) : Integer; stdcall;
TFarStdLocalUpperBuf = function (Buf : PFarChar; Length : Integer) : Integer; stdcall;
TFarStdLocalLowerBuf = function (Buf : PFarChar; Length : Integer) : Integer; stdcall;
TFarStdLocalStrUpr = function (S1 : PFarChar) : Integer; stdcall;
TFarStdLocalStrLwr = function (S1 : PFarChar) : Integer; stdcall;
TFarStdLocalStrICmp = function (S1 : PFarChar; S2 : PFarChar) : Integer; stdcall;
TFarStdLocalStrNICmp = function (S1 : PFarChar; S2 : PFarChar; N : Integer) : Integer; stdcall;
{ PROCESSNAME_FLAGS }
const
PN_CMPNAME = $00000000;
PN_CMPNAMELIST = $00001000;
PN_GENERATENAME = $00002000;
PN_SKIPPATH = $00100000;
(*
typedef int (WINAPI *FARSTDPROCESSNAME)(const wchar_t *param1, wchar_t *param2, DWORD size, DWORD flags);
typedef void (WINAPI *FARSTDUNQUOTE)(wchar_t *Str);
*)
type
TFarStdProcessName = function (Param1, Param2 :PFarChar; Size, Flags :DWORD) : Integer; stdcall;
TFarStdUnquote = procedure (Str : PFarChar); stdcall;
{ XLATMODE }
const
XLAT_SWITCHKEYBLAYOUT = $00000001;
XLAT_SWITCHKEYBBEEP = $00000002;
(*
typedef wchar_t* (WINAPI *FARSTDXLAT)(wchar_t *Line,int StartPos,int EndPos,DWORD Flags);
typedef size_t (WINAPI *FARSTDKEYTOKEYNAME)(int Key,wchar_t *KeyText,size_t Size);
typedef int (WINAPI *FARSTDKEYNAMETOKEY)(const wchar_t *Name);
*)
type
TFarStdXLat = function(Line :PFarChar; StartPos, EndPos :Integer; Flags :DWORD) :PFarChar; stdcall;
TFarStdKeyToKeyName = function(Key :Integer; KeyText :PFarChar; Size :SIZE_T) :SIZE_T; stdcall;
TFarStdKeyNameToKey = function(Name :PFarChar) :Integer; stdcall;
{ FRSMODE }
const
FRS_RETUPDIR = $01;
FRS_RECUR = $02;
FRS_SCANSYMLINK = $04;
(*
typedef int (WINAPI *FRSUSERFUNC)(
const struct FAR_FIND_DATA *FData,
const wchar_t *FullName,
void *Param
);
typedef void (WINAPI *FARSTDRECURSIVESEARCH)(const wchar_t *InitDir,const wchar_t *Mask,FRSUSERFUNC Func,DWORD Flags,void *Param);
typedef wchar_t* (WINAPI *FARSTDMKTEMP)(wchar_t *Dest, DWORD size, const wchar_t *Prefix);
->
typedef int (WINAPI *FARSTDMKTEMP)(wchar_t *Dest, DWORD size, const wchar_t *Prefix);
typedef void (WINAPI *FARSTDDELETEBUFFER)(void *Buffer);
*)
type
TFRSUserFunc = function (const FData :PFarFindData; const FullName :PFarChar; Param :Pointer) :Integer; stdcall;
TFarStdRecursiveSearch = procedure (InitDir, Mask :PFarChar; Func :TFRSUserFunc; Flags :DWORD; Param :Pointer); stdcall;
TFarStdMkTemp = function (Dest :PFarChar; Size :DWORD; Prefix :PFarChar) :Integer; stdcall;
TFarStdDeleteBuffer = procedure(Buffer :Pointer); stdcall;
{ MKLINKOP }
const
FLINK_HARDLINK = 1;
FLINK_JUNCTION = 2;
FLINK_VOLMOUNT = 3;
FLINK_SYMLINKFILE = 4;
FLINK_SYMLINKDIR = 5;
FLINK_SYMLINK = 6;
FLINK_SHOWERRMSG = $10000;
FLINK_DONOTUPDATEPANEL = $20000;
(*
typedef int (WINAPI *FARSTDMKLINK)(const wchar_t *Src,const wchar_t *Dest,DWORD Flags);
typedef int (WINAPI *FARGETREPARSEPOINTINFO)(const wchar_t *Src, wchar_t *Dest,int DestSize);
*)
type
TFarStdMkLink = function (Src, Dest :PFarChar; Flags :DWORD) :Integer; stdcall;
TFarGetReparsePointInfo = function (Src, Dest :PFarChar; DestSize :Integer) : Integer; stdcall;
(*
enum CONVERTPATHMODES
{
CPM_FULL,
CPM_REAL,
CPM_NATIVE,
};
typedef int (WINAPI *FARCONVERTPATH)(CONVERTPATHMODES Mode, const wchar_t *Src, wchar_t *Dest, int DestSize);
*)
const
CPM_FULL = 0;
CPM_REAL = 1;
CPM_NATIVE = 2;
type
TFarConvertPath = function(Mode :Integer {TConvertPathModes}; Src :PFarChar; Dest :PFarChar; DestSize :Integer) :Integer; stdcall;
(*
typedef DWORD (WINAPI *FARGETCURRENTDIRECTORY)(DWORD Size,wchar_t* Buffer);
*)
type
TFarGetCurrentDirectory = function(Size :DWORD; Buffer :PFarChar) :DWORD; stdcall;
(*
typedef struct FarStandardFunctions
{
int StructSize;
FARSTDATOI atoi;
FARSTDATOI64 atoi64;
FARSTDITOA itoa;
FARSTDITOA64 itoa64;
//
FARSTDSPRINTF sprintf;
FARSTDSSCANF sscanf;
//
FARSTDQSORT qsort;
FARSTDBSEARCH bsearch;
FARSTDQSORTEX qsortex;
//
FARSTDSNPRINTF snprintf;
//
DWORD_PTR Reserved[8];
FARSTDLOCALISLOWER LIsLower;
FARSTDLOCALISUPPER LIsUpper;
FARSTDLOCALISALPHA LIsAlpha;
FARSTDLOCALISALPHANUM LIsAlphanum;
FARSTDLOCALUPPER LUpper;
FARSTDLOCALLOWER LLower;
FARSTDLOCALUPPERBUF LUpperBuf;
FARSTDLOCALLOWERBUF LLowerBuf;
FARSTDLOCALSTRUPR LStrupr;
FARSTDLOCALSTRLWR LStrlwr;
FARSTDLOCALSTRICMP LStricmp;
FARSTDLOCALSTRNICMP LStrnicmp;
FARSTDUNQUOTE Unquote;
FARSTDLTRIM LTrim;
FARSTDRTRIM RTrim;
FARSTDTRIM Trim;
FARSTDTRUNCSTR TruncStr;
FARSTDTRUNCPATHSTR TruncPathStr;
FARSTDQUOTESPACEONLY QuoteSpaceOnly;
FARSTDPOINTTONAME PointToName;
FARSTDGETPATHROOT GetPathRoot;
FARSTDADDENDSLASH AddEndSlash;
FARSTDCOPYTOCLIPBOARD CopyToClipboard;
FARSTDPASTEFROMCLIPBOARD PasteFromClipboard;
FARSTDKEYTOKEYNAME FarKeyToName;
FARSTDKEYNAMETOKEY FarNameToKey;
FARSTDINPUTRECORDTOKEY FarInputRecordToKey;
FARSTDXLAT XLat;
FARSTDGETFILEOWNER GetFileOwner;
FARSTDGETNUMBEROFLINKS GetNumberOfLinks;
FARSTDRECURSIVESEARCH FarRecursiveSearch;
FARSTDMKTEMP MkTemp;
FARSTDDELETEBUFFER DeleteBuffer;
FARSTDPROCESSNAME ProcessName;
FARSTDMKLINK MkLink;
FARCONVERTPATH ConvertPath;
FARGETREPARSEPOINTINFO GetReparsePointInfo;
FARGETCURRENTDIRECTORY GetCurrentDirectory;
} FARSTANDARDFUNCTIONS;
*)
type
PFarStandardFunctions = ^TFarStandardFunctions;
TFarStandardFunctions = record
StructSize : Integer;
atoi : TFarStdAtoi;
atoi64 : TFarStdAtoi64;
itoa : TFarStdItoa;
itoa64 : TFarStdItoa64;
sprintf : Pointer;
sscanf : Pointer;
qsort : TFarStdQSort;
bsearch : TFarStdBSearch;
qsortex : TFarStdQSortEx;
snprintf : Pointer {TFarStdSNPRINTF};
Reserved : array [0..7] of DWORD_PTR;
LIsLower : TFarStdLocalIsLower;
LIsUpper : TFarStdLocalIsUpper;
LIsAlpha : TFarStdLocalIsAlpha;
LIsAlphaNum : TFarStdLocalIsAlphaNum;
LUpper : TFarStdLocalUpper;
LLower : TFarStdLocalLower;
LUpperBuf : TFarStdLocalUpperBuf;
LLowerBuf : TFarStdLocalLowerBuf;
LStrupr : TFarStdLocalStrUpr;
LStrlwr : TFarStdLocalStrLwr;
LStricmp : TFarStdLocalStrICmp;
LStrnicmp : TFarStdLocalStrNICmp;
Unquote : TFarStdUnquote;
LTrim : TFarStdLTrim;
RTrim : TFarStdRTrim;
Trim : TFarStdTrim;
TruncStr : TFarStdTruncStr;
TruncPathStr : TFarStdTruncPathStr;
QuoteSpaceOnly : TFarStdQuoteSpaceOnly;
PointToName : TFarStdPointToName;
GetPathRoot : TFarStdGetPathRoot;
AddEndSlash : TFarStdAddEndSlash;
CopyToClipboard : TFarStdCopyToClipboard;
PasteFromClipboard : TFarStdPasteFromClipboard;
FarKeyToName : TFarStdKeyToKeyName;
FarNameToKey : TFarStdKeyNameToKey;
FarInputRecordToKey : TFarStdInputRecordToKey;
XLat : TFarStdXLat;
GetFileOwner : TFarStdGetFileOwner;
GetNumberOfLinks : TFarStdGetNumberOfLinks;
FarRecursiveSearch : TFarStdRecursiveSearch;
MkTemp : TFarStdMkTemp;
DeleteBuffer : TFarStdDeleteBuffer;
ProcessName : TFarStdProcessName;
MkLink : TFarStdMkLink;
ConvertPath : TFarConvertPath;
GetReparsePointInfo : TFarGetReparsePointInfo;
GetCurrentDirectory : TFarGetCurrentDirectory;
end; {TFarStandardFunctions}
(*
struct PluginStartupInfo
{
int StructSize;
const wchar_t *ModuleName;
INT_PTR ModuleNumber;
const wchar_t *RootKey;
FARAPIMENU Menu;
FARAPIMESSAGE Message;
FARAPIGETMSG GetMsg;
FARAPICONTROL Control;
FARAPISAVESCREEN SaveScreen;
FARAPIRESTORESCREEN RestoreScreen;
FARAPIGETDIRLIST GetDirList;
FARAPIGETPLUGINDIRLIST GetPluginDirList;
FARAPIFREEDIRLIST FreeDirList;
FARAPIFREEPLUGINDIRLIST FreePluginDirList;
FARAPIVIEWER Viewer;
FARAPIEDITOR Editor;
FARAPICMPNAME CmpName;
FARAPITEXT Text;
FARAPIEDITORCONTROL EditorControl;
FARSTANDARDFUNCTIONS *FSF;
FARAPISHOWHELP ShowHelp;
FARAPIADVCONTROL AdvControl;
FARAPIINPUTBOX InputBox;
FARAPIDIALOGINIT DialogInit;
FARAPIDIALOGRUN DialogRun;
FARAPIDIALOGFREE DialogFree;
FARAPISENDDLGMESSAGE SendDlgMessage;
FARAPIDEFDLGPROC DefDlgProc;
DWORD_PTR Reserved;
FARAPIVIEWERCONTROL ViewerControl;
FARAPIPLUGINSCONTROL PluginsControl;
FARAPIFILEFILTERCONTROL FileFilterControl;
FARAPIREGEXPCONTROL RegExpControl;
};
*)
type
PPluginStartupInfo = ^TPluginStartupInfo;
TPluginStartupInfo = record
StructSize : Integer;
ModuleName : PFarChar;
ModuleNumber : INT_PTR;
RootKey : PFarChar;
Menu : TFarApiMenu;
Message : TFarApiMessage;
GetMsg : TFarApiGetMsg;
Control : TFarApiControl;
SaveScreen : TFarApiSaveScreen;
RestoreScreen : TFarApiRestoreScreen;
GetDirList : TFarApiGetDirList;
GetPluginDirList : TFarApiGetPluginDirList;
FreeDirList : TFarApiFreeDirList;
FreePluginDirList : TFarApiFreePluginDirList;
Viewer : TFarApiViewer;
Editor : TFarApiEditor;
CmpName : TFarApiCmpName;
Text : TFarApiText;
EditorControl : TFarApiEditorControl;
FSF : PFarStandardFunctions;
ShowHelp : TFarApiShowHelp;
AdvControl : TFarApiAdvControl;
InputBox : TFarApiInputBox;
DialogInit : TFarApiDialogInit;
DialogRun : TFarApiDialogRun;
DialogFree : TFarApiDialogFree;
SendDlgMessage : TFarApiSendDlgMessage;
DefDlgProc : TFarApiDefDlgProc;
Reserved : DWORD_PTR;
ViewerControl : TFarApiViewerControl;
PluginsControl : TFarApiPluginsControl;
FileFilterControl : TFarApiFilterControl;
RegExpControl : TFarApiRegexpControl;
end; {TPluginStartupInfo}
{ PLUGIN_FLAGS }
const
PF_PRELOAD = $0001;
PF_DISABLEPANELS = $0002;
PF_EDITOR = $0004;
PF_VIEWER = $0008;
PF_FULLCMDLINE = $0010;
PF_DIALOG = $0020;
(*
struct PluginInfo
{
int StructSize;
DWORD Flags;
const wchar_t * const *DiskMenuStrings;
int *DiskMenuNumbers;
int DiskMenuStringsNumber;
const wchar_t * const *PluginMenuStrings;
int PluginMenuStringsNumber;
const wchar_t * const *PluginConfigStrings;
int PluginConfigStringsNumber;
const wchar_t *CommandPrefix;
DWORD Reserved;
};
*)
type
PPluginInfo = ^TPluginInfo;
TPluginInfo = record
StructSize : Integer;
Flags : DWORD;
DiskMenuStrings : PPCharArray;
DiskMenuNumbers : PIntegerArray;
DiskMenuStringsNumber : Integer;
PluginMenuStrings : PPCharArray;
PluginMenuStringsNumber : Integer;
PluginConfigStrings : PPCharArray;
PluginConfigStringsNumber : Integer;
CommandPrefix : PFarChar;
Reserved : DWORD;
end;
(*
struct InfoPanelLine
{
const wchar_t *Text;
const wchar_t *Data;
int Separator;
};
*)
type
PInfoPanelLine = ^TInfoPanelLine;
TInfoPanelLine = record
Text :PFarChar;
Data :PFarChar;
Separator :Integer;
end;
PInfoPanelLineArray = ^TInfoPanelLineArray;
TInfoPanelLineArray = packed array [0..MaxInt div SizeOf(TInfoPanelLine) - 1] of TInfoPanelLine;
(*
struct PanelMode
{
wchar_t *ColumnTypes;
wchar_t *ColumnWidths;
wchar_t **ColumnTitles;
int FullScreen;
int DetailedStatus;
int AlignExtensions;
int CaseConversion;
wchar_t *StatusColumnTypes;
wchar_t *StatusColumnWidths;
DWORD Reserved[2];
};
*)
type
PPanelMode = ^TPanelMode;
TPanelMode = record
ColumnTypes : PFarChar;
ColumnWidths : PFarChar;
ColumnTitles : PPCharArray;
FullScreen : Integer;
DetailedStatus : Integer;
AlignExtensions : Integer;
CaseConversion : Integer;
StatusColumnTypes : PFarChar;
StatusColumnWidths : PFarChar;
Reserved : array [0..1] of DWORD;
end;
PPanelModeArray = ^TPanelModeArray;
TPanelModeArray = packed array [0..MaxInt div SizeOf(TPanelMode) - 1] of TPanelMode;
{ OPENPLUGININFO_FLAGS }
const
OPIF_USEFILTER = $00000001;
OPIF_USESORTGROUPS = $00000002;
OPIF_USEHIGHLIGHTING = $00000004;
OPIF_ADDDOTS = $00000008;
OPIF_RAWSELECTION = $00000010;
OPIF_REALNAMES = $00000020;
OPIF_SHOWNAMESONLY = $00000040;
OPIF_SHOWRIGHTALIGNNAMES = $00000080;
OPIF_SHOWPRESERVECASE = $00000100;
//OPIF_FINDFOLDERS = $00000200;
OPIF_COMPAREFATTIME = $00000400;
OPIF_EXTERNALGET = $00000800;
OPIF_EXTERNALPUT = $00001000;
OPIF_EXTERNALDELETE = $00002000;
OPIF_EXTERNALMKDIR = $00004000;
OPIF_USEATTRHIGHLIGHTING = $00008000;
{ OPENPLUGININFO_SORTMODES }
const
SM_DEFAULT = 0;
SM_UNSORTED = 1;
SM_NAME = 2;
SM_EXT = 3;
SM_MTIME = 4;
SM_CTIME = 5;
SM_ATIME = 6;
SM_SIZE = 7;
SM_DESCR = 8;
SM_OWNER = 9;
SM_COMPRESSEDSIZE = 10;
SM_NUMLINKS = 11;
SM_NUMSTREAMS = 12;
SM_STREAMSSIZE = 13;
SM_FULLNAME = 14;
(*
struct KeyBarTitles
{
wchar_t *Titles[12];
wchar_t *CtrlTitles[12];
wchar_t *AltTitles[12];
wchar_t *ShiftTitles[12];
wchar_t *CtrlShiftTitles[12];
wchar_t *AltShiftTitles[12];
wchar_t *CtrlAltTitles[12];
};
*)
type
PKeyBarTitles = ^TKeyBarTitles;
TKeyBarTitles = record
Titles : array [0..11] of PFarChar;
CtrlTitles : array [0..11] of PFarChar;
AltTitles : array [0..11] of PFarChar;
ShiftTitles : array [0..11] of PFarChar;
CtrlShiftTitles : array [0..11] of PFarChar;
AltShiftTitles : array [0..11] of PFarChar;
CtrlAltTitles : array [0..11] of PFarChar;
end;
PKeyBarTitlesArray = ^TKeyBarTitlesArray;
TKeyBarTitlesArray = packed array [0..MaxInt div SizeOf(TKeyBarTitles) - 1] of TKeyBarTitles;
{ OPERATION_MODES }
const
OPM_SILENT = $0001;
OPM_FIND = $0002;
OPM_VIEW = $0004;
OPM_EDIT = $0008;
OPM_TOPLEVEL = $0010;
OPM_DESCR = $0020;
OPM_QUICKVIEW = $0040;
(*
struct OpenPluginInfo
{
int StructSize;
DWORD Flags;
const wchar_t *HostFile;
const wchar_t *CurDir;
const wchar_t *Format;
const wchar_t *PanelTitle;
const struct InfoPanelLine *InfoLines;
int InfoLinesNumber;
const wchar_t * const *DescrFiles;
int DescrFilesNumber;
const struct PanelMode *PanelModesArray;
int PanelModesNumber;
int StartPanelMode;
int StartSortMode;
int StartSortOrder;
const struct KeyBarTitles *KeyBar;
const wchar_t *ShortcutData;
long Reserved;
};
*)
type
POpenPluginInfo = ^TOpenPluginInfo;
TOpenPluginInfo = record
StructSize : Integer;
Flags : DWORD;
HostFile : PFarChar;
CurDir : PFarChar;
Format : PFarChar;
PanelTitle : PFarChar;
InfoLines : PInfoPanelLineArray;
InfoLinesNumber : Integer;
DescrFiles : PPCharArray;
DescrFilesNumber : Integer;
PanelModesArray : PPanelModeArray;
PanelModesNumber : Integer;
StartPanelMode : Integer;
StartSortMode : Integer;
StartSortOrder : Integer;
KeyBar : PKeyBarTitlesArray;
ShortcutData : PFarChar;
Reserved : Integer;
end;
{ OPENPLUGIN_OPENFROM }
const
OPEN_DISKMENU = 0;
OPEN_PLUGINSMENU = 1;
OPEN_FINDLIST = 2;
OPEN_SHORTCUT = 3;
OPEN_COMMANDLINE = 4;
OPEN_EDITOR = 5;
OPEN_VIEWER = 6;
OPEN_FILEPANEL = 7;
OPEN_DIALOG = 8;
OPEN_ANALYSE = 9;
OPEN_FROMMACRO = $10000;
{ FAR_PKF_FLAGS }
const
PKF_CONTROL = $00000001;
PKF_ALT = $00000002;
PKF_SHIFT = $00000004;
PKF_PREPROCESS = $00080000; // for "Key", function ProcessKey()
{ FAR_EVENTS }
const
FE_CHANGEVIEWMODE = 0;
FE_REDRAW = 1;
FE_IDLE = 2;
FE_CLOSE = 3;
FE_BREAK = 4;
FE_COMMAND = 5;
FE_GOTFOCUS = 6;
FE_KILLFOCUS = 7;
{ FAR_PLUGINS_CONTROL_COMMANDS }
const
PCTL_LOADPLUGIN = 0;
PCTL_UNLOADPLUGIN = 1;
{ FAR_PLUGIN_LOAD_TYPE }
const
PLT_PATH = 0;
{FAR_FILE_FILTER_CONTROL_COMMANDS}
const
FFCTL_CREATEFILEFILTER = 0;
FFCTL_FREEFILEFILTER = 1;
FFCTL_OPENFILTERSMENU = 2;
FFCTL_STARTINGTOFILTER = 3;
FFCTL_ISFILEINFILTER = 4;
{FAR_FILE_FILTER_TYPE}
const
FFT_PANEL = 0;
FFT_FINDFILE = 1;
FFT_COPY = 2;
FFT_SELECT = 3;
{FAR_REGEXP_CONTROL_COMMANDS}
const
RECTL_CREATE = 0;
RECTL_FREE = 1;
RECTL_COMPILE = 2;
RECTL_OPTIMIZE = 3;
RECTL_MATCHEX = 4;
RECTL_SEARCHEX = 5;
RECTL_BRACKETSCOUNT = 6;
(*
struct RegExpMatch
{
int start,end;
};
*)
type
PRegExpMatch = ^TRegExpMatch;
TRegExpMatch = record
Start :Integer;
EndPos :Integer;
end;
(*
struct RegExpSearch
{
const wchar_t* Text;
int Position;
int Length;
struct RegExpMatch* Match;
int Count;
void* Reserved;
};
*)
type
PRegExpSearch = ^TRegExpSearch;
TRegExpSearch = record
Text :PFarChar;
Position :Integer;
Length :Integer;
Match :PRegExpMatch;
Count :Integer;
Reserved :Pointer;
end;
(*
// Exported Functions
void WINAPI _export ClosePluginW(HANDLE hPlugin);
int WINAPI _export CompareW(HANDLE hPlugin,const struct PluginPanelItem *Item1,const struct PluginPanelItem *Item2,unsigned int Mode);
int WINAPI _export ConfigureW(int ItemNumber);
int WINAPI _export DeleteFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int OpMode);
void WINAPI _export ExitFARW(void);
void WINAPI _export FreeFindDataW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber);
void WINAPI _export FreeVirtualFindDataW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber);
int WINAPI _export GetFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,const wchar_t **DestPath,int OpMode);
int WINAPI _export GetFindDataW(HANDLE hPlugin,struct PluginPanelItem **pPanelItem,int *pItemsNumber,int OpMode);
int WINAPI _export GetMinFarVersionW(void);
void WINAPI _export GetOpenPluginInfoW(HANDLE hPlugin,struct OpenPluginInfo *Info);
void WINAPI _export GetPluginInfoW(struct PluginInfo *Info);
int WINAPI _export GetVirtualFindDataW(HANDLE hPlugin,struct PluginPanelItem **pPanelItem,int *pItemsNumber,const wchar_t *Path);
int WINAPI _export MakeDirectoryW(HANDLE hPlugin,const wchar_t **Name,int OpMode);
HANDLE WINAPI _export OpenFilePluginW(const wchar_t *Name,const unsigned char *Data,int DataSize,int OpMode);
HANDLE WINAPI _export OpenPluginW(int OpenFrom,INT_PTR Item);
int WINAPI _export ProcessDialogEventW(int Event,void *Param);
int WINAPI _export ProcessEditorEventW(int Event,void *Param);
int WINAPI _export ProcessEditorInputW(const INPUT_RECORD *Rec);
int WINAPI _export ProcessEventW(HANDLE hPlugin,int Event,void *Param);
int WINAPI _export ProcessHostFileW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int OpMode);
int WINAPI _export ProcessKeyW(HANDLE hPlugin,int Key,unsigned int ControlState);
int WINAPI _export ProcessSynchroEventW(int Event,void *Param);
int WINAPI _export ProcessViewerEventW(int Event,void *Param);
int WINAPI _export PutFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,int OpMode);
->
int WINAPI _export PutFilesW(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,const wchar_t *SrcPath,int OpMode);
int WINAPI _export SetDirectoryW(HANDLE hPlugin,const wchar_t *Dir,int OpMode);
int WINAPI _export SetFindListW(HANDLE hPlugin,const struct PluginPanelItem *PanelItem,int ItemsNumber);
void WINAPI _export SetStartupInfoW(const struct PluginStartupInfo *Info);
*)
(*
#define MAKEFARVERSION(major,minor,build) ( ((major)<<8) | (minor) | ((build)<<16))
#define FARMANAGERVERSION MAKEFARVERSION(FARMANAGERVERSION_MAJOR,FARMANAGERVERSION_MINOR,FARMANAGERVERSION_BUILD)
*)
function MakeFarVersion (Major : DWORD; Minor : DWORD; Build : DWORD) : DWORD;
(*
#define Dlg_RedrawDialog(Info,hDlg) Info.SendDlgMessage(hDlg,DM_REDRAW,0,0)
#define Dlg_GetDlgData(Info,hDlg) Info.SendDlgMessage(hDlg,DM_GETDLGDATA,0,0)
#define Dlg_SetDlgData(Info,hDlg,Data) Info.SendDlgMessage(hDlg,DM_SETDLGDATA,0,(INT_PTR)Data)
#define Dlg_GetDlgItemData(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_GETITEMDATA,0,0)
#define Dlg_SetDlgItemData(Info,hDlg,ID,Data) Info.SendDlgMessage(hDlg,DM_SETITEMDATA,0,(INT_PTR)Data)
#define DlgItem_GetFocus(Info,hDlg) Info.SendDlgMessage(hDlg,DM_GETFOCUS,0,0)
#define DlgItem_SetFocus(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_SETFOCUS,ID,0)
#define DlgItem_Enable(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_ENABLE,ID,TRUE)
#define DlgItem_Disable(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_ENABLE,ID,FALSE)
#define DlgItem_IsEnable(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_ENABLE,ID,-1)
#define DlgItem_SetText(Info,hDlg,ID,Str) Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,ID,(INT_PTR)Str)
#define DlgItem_GetCheck(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_GETCHECK,ID,0)
#define DlgItem_SetCheck(Info,hDlg,ID,State) Info.SendDlgMessage(hDlg,DM_SETCHECK,ID,State)
#define DlgEdit_AddHistory(Info,hDlg,ID,Str) Info.SendDlgMessage(hDlg,DM_ADDHISTORY,ID,(INT_PTR)Str)
#define DlgList_AddString(Info,hDlg,ID,Str) Info.SendDlgMessage(hDlg,DM_LISTADDSTR,ID,(INT_PTR)Str)
#define DlgList_GetCurPos(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTGETCURPOS,ID,0)
#define DlgList_SetCurPos(Info,hDlg,ID,NewPos) {struct FarListPos LPos={NewPos,-1};Info.SendDlgMessage(hDlg,DM_LISTSETCURPOS,ID,(INT_PTR)&LPos);}
#define DlgList_ClearList(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTDELETE,ID,0)
#define DlgList_DeleteItem(Info,hDlg,ID,Index) {struct FarListDelete FLDItem={Index,1}; Info.SendDlgMessage(hDlg,DM_LISTDELETE,ID,(INT_PTR)&FLDItem);}
#define DlgList_SortUp(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTSORT,ID,0)
#define DlgList_SortDown(Info,hDlg,ID) Info.SendDlgMessage(hDlg,DM_LISTSORT,ID,1)
#define DlgList_GetItemData(Info,hDlg,ID,Index) Info.SendDlgMessage(hDlg,DM_LISTGETDATA,ID,Index)
#define DlgList_SetItemStrAsData(Info,hDlg,ID,Index,Str) {struct FarListItemData FLID{Index,0,Str,0}; Info.SendDlgMessage(hDlg,DM_LISTSETDATA,ID,(INT_PTR)&FLID);}
*)
function Dlg_RedrawDialog(const Info :TPluginStartupInfo; hDlg :THandle) :Integer;
function Dlg_GetDlgData(const Info :TPluginStartupInfo; hDlg :THandle) :Integer;
function Dlg_SetDlgData(const Info :TPluginStartupInfo; hDlg :THandle; Data :Pointer) :Integer;
function Dlg_GetDlgItemData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function Dlg_SetDlgItemData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Data :Pointer) :Integer;
function DlgItem_GetFocus(const Info :TPluginStartupInfo; hDlg :THandle) :Integer;
function DlgItem_SetFocus(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgItem_Enable(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgItem_Disable(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgItem_IsEnable(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgItem_SetText(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Str :PFarChar) :Integer;
function DlgItem_GetCheck(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgItem_SetCheck(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; State :Integer) :Integer;
function DlgEdit_AddHistory(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Str :PFarChar) :Integer;
function DlgList_AddString(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Str :PFarChar) :Integer;
function DlgList_GetCurPos(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgList_SetCurPos(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; NewPos :Integer) :Integer;
function DlgList_ClearList(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgList_DeleteItem(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Index :Integer) :Integer;
function DlgList_SortUp(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgList_SortDown(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
function DlgList_GetItemData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Index :Integer) :Integer;
function DlgList_SetItemStrAsData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Index :Integer; Str :PFarChar) :Integer;
const
FindFileId :TGUID = '{8C9EAD29-910F-4b24-A669-EDAFBA6ED964}';
CopyOverwriteId :TGUID = '{9FBCB7E1-ACA2-475d-B40D-0F7365B632FF}';
FileOpenCreateId :TGUID = '{1D07CEE2-8F4F-480a-BE93-069B4FF59A2B}';
FileSaveAsId :TGUID = '{9162F965-78B8-4476-98AC-D699E5B6AFE7}';
MakeFolderId :TGUID = '{FAD00DBE-3FFF-4095-9232-E1CC70C67737}';
FileAttrDlgId :TGUID = '{80695D20-1085-44d6-8061-F3C41AB5569C}';
CopyReadOnlyId :TGUID = '{879A8DE6-3108-4beb-80DE-6F264991CE98}';
CopyFilesId :TGUID = '{FCEF11C4-5490-451d-8B4A-62FA03F52759}';
HardSymLinkId :TGUID = '{5EB266F4-980D-46af-B3D2-2C50E64BCA81}';
{******************************************************************************}
{******************************} implementation {******************************}
{******************************************************************************}
function MakeFarVersion (Major :DWORD; Minor :DWORD; Build :DWORD) :DWORD;
begin
Result := (Major shl 8) or (Minor) or (Build shl 16);
end;
function Dlg_RedrawDialog(const Info :TPluginStartupInfo; hDlg :THandle) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_REDRAW, 0, 0);
end;
function Dlg_GetDlgData(const Info :TPluginStartupInfo; hDlg :THandle) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_GETDLGDATA, 0, 0);
end;
function Dlg_SetDlgData(const Info :TPluginStartupInfo; hDlg :THandle; Data :Pointer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_SETDLGDATA, 0, INT_PTR(Data));
end;
function Dlg_GetDlgItemData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_GETITEMDATA, 0, 0);
end;
function Dlg_SetDlgItemData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Data :Pointer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_SETITEMDATA, 0, INT_PTR(Data));
end;
function DlgItem_GetFocus(const Info :TPluginStartupInfo; hDlg :THandle) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_GETFOCUS,0,0)
end;
function DlgItem_SetFocus(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg,DM_SETFOCUS,ID,0)
end;
function DlgItem_Enable(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_ENABLE, ID, 1);
end;
function DlgItem_Disable(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_ENABLE, ID, 0);
end;
function DlgItem_IsEnable(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_ENABLE, ID, -1);
end;
function DlgItem_SetText(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Str :PFarChar) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_SETTEXTPTR, ID, INT_PTR(Str));
end;
function DlgItem_GetCheck(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_GETCHECK, ID, 0);
end;
function DlgItem_SetCheck(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; State :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_SETCHECK, ID, State);
end;
function DlgEdit_AddHistory(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Str :PFarChar) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_ADDHISTORY, ID, INT_PTR(Str));
end;
function DlgList_AddString(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Str :PFarChar) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_LISTADDSTR, ID, INT_PTR(Str));
end;
function DlgList_GetCurPos(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_LISTGETCURPOS, ID, 0);
end;
function DlgList_SetCurPos(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; NewPos :Integer) :Integer;
var
LPos :TFarListPos;
begin
LPos.SelectPos := NewPos;
LPos.TopPos := -1;
Result := Info.SendDlgMessage(hDlg, DM_LISTSETCURPOS, ID, INT_PTR(@LPos));
end;
function DlgList_ClearList(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg,DM_LISTDELETE,ID,0)
end;
function DlgList_DeleteItem(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Index :Integer) :Integer;
var
FLDItem :TFarListDelete;
begin
FLDItem.StartIndex := Index;
FLDItem.Count := 1;
Result := Info.SendDlgMessage(hDlg, DM_LISTDELETE, ID, INT_PTR(@FLDItem));
end;
function DlgList_SortUp(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_LISTSORT, ID, 0);
end;
function DlgList_SortDown(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_LISTSORT, ID, 1);
end;
function DlgList_GetItemData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Index :Integer) :Integer;
begin
Result := Info.SendDlgMessage(hDlg, DM_LISTGETDATA, ID, Index);
end;
function DlgList_SetItemStrAsData(const Info :TPluginStartupInfo; hDlg :THandle; ID :Integer; Index :Integer; Str :PFarChar) :Integer;
var
FLID :TFarListItemData;
begin
FLID.Index := Index;
FLID.DataSize := 0;
FLID.Data := Str;
FLID.Reserved := 0;
Result := Info.SendDlgMessage (hDlg, DM_LISTSETDATA, ID, INT_PTR(@FLID));
end;
end.