mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-07 22:06:59 -06:00
578 lines
10 KiB
C
Executable File
578 lines
10 KiB
C
Executable File
// FarPlugin.h
|
|
|
|
#ifndef __FARPLUGIN_H
|
|
#define __FARPLUGIN_H
|
|
|
|
#if defined(__BORLANDC__) && (__BORLANDC <= 0x520)
|
|
#pragma option -a1
|
|
#elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100))
|
|
#pragma pack(1)
|
|
#else
|
|
#pragma pack(push,1)
|
|
#if _MSC_VER
|
|
#define _export
|
|
#endif
|
|
#endif
|
|
|
|
#define NM 260
|
|
|
|
struct FarFindData
|
|
{
|
|
DWORD dwFileAttributes;
|
|
FILETIME ftCreationTime;
|
|
FILETIME ftLastAccessTime;
|
|
FILETIME ftLastWriteTime;
|
|
DWORD nFileSizeHigh;
|
|
DWORD nFileSizeLow;
|
|
DWORD dwReserved0;
|
|
DWORD dwReserved1;
|
|
char cFileName[ MAX_PATH ];
|
|
char cAlternateFileName[ 14 ];
|
|
};
|
|
|
|
struct PluginPanelItem
|
|
{
|
|
FarFindData FindData;
|
|
DWORD PackSizeHigh;
|
|
DWORD PackSize;
|
|
DWORD Flags;
|
|
DWORD NumberOfLinks;
|
|
char *Description;
|
|
char *Owner;
|
|
char **CustomColumnData;
|
|
int CustomColumnNumber;
|
|
DWORD UserData;
|
|
DWORD Reserved[3];
|
|
};
|
|
|
|
#define PPIF_PROCESSDESCR 0x80000000
|
|
#define PPIF_SELECTED 0x40000000
|
|
#define PPIF_USERDATA 0x20000000
|
|
|
|
enum {
|
|
FMENU_SHOWAMPERSAND=1,
|
|
FMENU_WRAPMODE=2,
|
|
FMENU_AUTOHIGHLIGHT=4,
|
|
FMENU_REVERSEAUTOHIGHLIGHT=8
|
|
};
|
|
|
|
|
|
typedef int (WINAPI *FARAPIMENU)(
|
|
int PluginNumber,
|
|
int X,
|
|
int Y,
|
|
int MaxHeight,
|
|
unsigned int Flags,
|
|
char *Title,
|
|
char *Bottom,
|
|
char *HelpTopic,
|
|
int *BreakKeys,
|
|
int *BreakCode,
|
|
struct FarMenuItem *Item,
|
|
int ItemsNumber
|
|
);
|
|
|
|
typedef int (WINAPI *FARAPIDIALOG)(
|
|
int PluginNumber,
|
|
int X1,
|
|
int Y1,
|
|
int X2,
|
|
int Y2,
|
|
char *HelpTopic,
|
|
struct FarDialogItem *Item,
|
|
int ItemsNumber
|
|
);
|
|
|
|
enum {
|
|
FMSG_WARNING=1,
|
|
FMSG_ERRORTYPE=2,
|
|
FMSG_KEEPBACKGROUND=4,
|
|
FMSG_DOWN=8,
|
|
FMSG_LEFTALIGN=16
|
|
};
|
|
|
|
typedef int (WINAPI *FARAPIMESSAGE)(
|
|
int PluginNumber,
|
|
unsigned int Flags,
|
|
char *HelpTopic,
|
|
char **Items,
|
|
int ItemsNumber,
|
|
int ButtonsNumber
|
|
);
|
|
|
|
typedef char* (WINAPI *FARAPIGETMSG)(
|
|
int PluginNumber,
|
|
int MsgId
|
|
);
|
|
|
|
|
|
enum DialogItemTypes {
|
|
DI_TEXT,
|
|
DI_VTEXT,
|
|
DI_SINGLEBOX,
|
|
DI_DOUBLEBOX,
|
|
DI_EDIT,
|
|
DI_PSWEDIT,
|
|
DI_FIXEDIT,
|
|
DI_BUTTON,
|
|
DI_CHECKBOX,
|
|
DI_RADIOBUTTON
|
|
};
|
|
|
|
enum FarDialogItemFlags {
|
|
DIF_COLORMASK = 0xff,
|
|
DIF_SETCOLOR = 0x100,
|
|
DIF_BOXCOLOR = 0x200,
|
|
DIF_GROUP = 0x400,
|
|
DIF_LEFTTEXT = 0x800,
|
|
DIF_MOVESELECT = 0x1000,
|
|
DIF_SHOWAMPERSAND = 0x2000,
|
|
DIF_CENTERGROUP = 0x4000,
|
|
DIF_NOBRACKETS = 0x8000,
|
|
DIF_SEPARATOR = 0x10000,
|
|
DIF_EDITOR = 0x20000,
|
|
DIF_HISTORY = 0x40000
|
|
};
|
|
|
|
struct FarDialogItem
|
|
{
|
|
int Type;
|
|
int X1,Y1,X2,Y2;
|
|
int Focus;
|
|
union
|
|
{
|
|
int Selected;
|
|
const char *History;
|
|
const char *Mask;
|
|
struct FarList *ListItems;
|
|
int ListPos;
|
|
CHAR_INFO *VBuf;
|
|
};
|
|
unsigned int Flags;
|
|
int DefaultButton;
|
|
char Data[512];
|
|
};
|
|
|
|
|
|
struct FarMenuItem
|
|
{
|
|
char Text[128];
|
|
int Selected;
|
|
int Checked;
|
|
int Separator;
|
|
};
|
|
|
|
|
|
enum {FCTL_CLOSEPLUGIN,FCTL_GETPANELINFO,FCTL_GETANOTHERPANELINFO,
|
|
FCTL_UPDATEPANEL,FCTL_UPDATEANOTHERPANEL,
|
|
FCTL_REDRAWPANEL,FCTL_REDRAWANOTHERPANEL,
|
|
FCTL_SETANOTHERPANELDIR,FCTL_GETCMDLINE,FCTL_SETCMDLINE,
|
|
FCTL_SETSELECTION,FCTL_SETANOTHERSELECTION,
|
|
FCTL_SETVIEWMODE,FCTL_SETANOTHERVIEWMODE,FCTL_INSERTCMDLINE,
|
|
FCTL_SETUSERSCREEN,FCTL_SETPANELDIR,FCTL_SETCMDLINEPOS,
|
|
FCTL_GETCMDLINEPOS
|
|
};
|
|
|
|
enum {PTYPE_FILEPANEL,PTYPE_TREEPANEL,PTYPE_QVIEWPANEL,PTYPE_INFOPANEL};
|
|
|
|
struct PanelInfo
|
|
{
|
|
int PanelType;
|
|
int Plugin;
|
|
RECT PanelRect;
|
|
struct PluginPanelItem *PanelItems;
|
|
int ItemsNumber;
|
|
struct PluginPanelItem *SelectedItems;
|
|
int SelectedItemsNumber;
|
|
int CurrentItem;
|
|
int TopPanelItem;
|
|
int Visible;
|
|
int Focus;
|
|
int ViewMode;
|
|
char ColumnTypes[80];
|
|
char ColumnWidths[80];
|
|
char CurDir[NM];
|
|
int ShortNames;
|
|
int SortMode;
|
|
DWORD Reserved[2];
|
|
};
|
|
|
|
|
|
struct PanelRedrawInfo
|
|
{
|
|
int CurrentItem;
|
|
int TopPanelItem;
|
|
};
|
|
|
|
|
|
typedef int (WINAPI *FARAPICONTROL)(
|
|
HANDLE hPlugin,
|
|
int Command,
|
|
void *Param
|
|
);
|
|
|
|
typedef HANDLE (WINAPI *FARAPISAVESCREEN)(int X1,int Y1,int X2,int Y2);
|
|
|
|
typedef void (WINAPI *FARAPIRESTORESCREEN)(HANDLE hScreen);
|
|
|
|
typedef int (WINAPI *FARAPIGETDIRLIST)(
|
|
char *Dir,
|
|
struct PluginPanelItem **pPanelItem,
|
|
int *pItemsNumber
|
|
);
|
|
|
|
typedef int (WINAPI *FARAPIGETPLUGINDIRLIST)(
|
|
int PluginNumber,
|
|
HANDLE hPlugin,
|
|
char *Dir,
|
|
struct PluginPanelItem **pPanelItem,
|
|
int *pItemsNumber
|
|
);
|
|
|
|
typedef void (WINAPI *FARAPIFREEDIRLIST)(struct PluginPanelItem *PanelItem);
|
|
|
|
enum VIEWER_FLAGS {
|
|
VF_NONMODAL=1,VF_DELETEONCLOSE=2
|
|
};
|
|
|
|
typedef int (WINAPI *FARAPIVIEWER)(
|
|
char *FileName,
|
|
char *Title,
|
|
int X1,
|
|
int Y1,
|
|
int X2,
|
|
int Y2,
|
|
DWORD Flags
|
|
);
|
|
|
|
typedef int (WINAPI *FARAPIEDITOR)(
|
|
char *FileName,
|
|
char *Title,
|
|
int X1,
|
|
int Y1,
|
|
int X2,
|
|
int Y2,
|
|
DWORD Flags,
|
|
int StartLine,
|
|
int StartChar
|
|
);
|
|
|
|
typedef int (WINAPI *FARAPICMPNAME)(
|
|
char *Pattern,
|
|
char *String,
|
|
int SkipPath
|
|
);
|
|
|
|
|
|
#define FCT_DETECT 0x40000000
|
|
|
|
struct CharTableSet
|
|
{
|
|
char DecodeTable[256];
|
|
char EncodeTable[256];
|
|
char UpperTable[256];
|
|
char LowerTable[256];
|
|
char TableName[128];
|
|
};
|
|
|
|
typedef int (WINAPI *FARAPICHARTABLE)(
|
|
int Command,
|
|
char *Buffer,
|
|
int BufferSize
|
|
);
|
|
|
|
typedef void (WINAPI *FARAPITEXT)(
|
|
int X,
|
|
int Y,
|
|
int Color,
|
|
char *Str
|
|
);
|
|
|
|
|
|
typedef int (WINAPI *FARAPIEDITORCONTROL)(
|
|
int Command,
|
|
void *Param
|
|
);
|
|
|
|
|
|
enum EDITOR_EVENTS {
|
|
EE_READ,EE_SAVE,EE_REDRAW,EE_CLOSE
|
|
};
|
|
|
|
enum EDITOR_CONTROL_COMMANDS {
|
|
ECTL_GETSTRING,ECTL_SETSTRING,ECTL_INSERTSTRING,ECTL_DELETESTRING,
|
|
ECTL_DELETECHAR,ECTL_INSERTTEXT,ECTL_GETINFO,ECTL_SETPOSITION,
|
|
ECTL_SELECT,ECTL_REDRAW,ECTL_EDITORTOOEM,ECTL_OEMTOEDITOR,
|
|
ECTL_TABTOREAL,ECTL_REALTOTAB,ECTL_EXPANDTABS,ECTL_SETTITLE,
|
|
ECTL_READINPUT,ECTL_PROCESSINPUT,ECTL_ADDCOLOR,ECTL_GETCOLOR
|
|
};
|
|
|
|
|
|
struct EditorGetString
|
|
{
|
|
int StringNumber;
|
|
char *StringText;
|
|
char *StringEOL;
|
|
int StringLength;
|
|
int SelStart;
|
|
int SelEnd;
|
|
};
|
|
|
|
|
|
struct EditorSetString
|
|
{
|
|
int StringNumber;
|
|
char *StringText;
|
|
char *StringEOL;
|
|
int StringLength;
|
|
};
|
|
|
|
|
|
enum EDITOR_OPTIONS {
|
|
EOPT_EXPANDTABS=1,EOPT_PERSISTENTBLOCKS=2,EOPT_DELREMOVESBLOCKS=4,
|
|
EOPT_AUTOINDENT=8,EOPT_SAVEFILEPOSITION=16,EOPT_AUTODETECTTABLE=32,
|
|
EOPT_CURSORBEYONDEOL=64
|
|
};
|
|
|
|
|
|
enum EDITOR_BLOCK_TYPES {
|
|
BTYPE_NONE,BTYPE_STREAM,BTYPE_COLUMN
|
|
};
|
|
|
|
|
|
struct EditorInfo
|
|
{
|
|
int EditorID;
|
|
char *FileName;
|
|
int WindowSizeX;
|
|
int WindowSizeY;
|
|
int TotalLines;
|
|
int CurLine;
|
|
int CurPos;
|
|
int CurTabPos;
|
|
int TopScreenLine;
|
|
int LeftPos;
|
|
int Overtype;
|
|
int BlockType;
|
|
int BlockStartLine;
|
|
int AnsiMode;
|
|
int TableNum;
|
|
DWORD Options;
|
|
int TabSize;
|
|
DWORD Reserved[8];
|
|
};
|
|
|
|
|
|
struct EditorSetPosition
|
|
{
|
|
int CurLine;
|
|
int CurPos;
|
|
int CurTabPos;
|
|
int TopScreenLine;
|
|
int LeftPos;
|
|
int Overtype;
|
|
};
|
|
|
|
|
|
struct EditorSelect
|
|
{
|
|
int BlockType;
|
|
int BlockStartLine;
|
|
int BlockStartPos;
|
|
int BlockWidth;
|
|
int BlockHeight;
|
|
};
|
|
|
|
|
|
struct EditorConvertText
|
|
{
|
|
char *Text;
|
|
int TextLength;
|
|
};
|
|
|
|
|
|
struct EditorConvertPos
|
|
{
|
|
int StringNumber;
|
|
int SrcPos;
|
|
int DestPos;
|
|
};
|
|
|
|
|
|
struct EditorColor
|
|
{
|
|
int StringNumber;
|
|
int ColorItem;
|
|
int StartPos;
|
|
int EndPos;
|
|
int Color;
|
|
};
|
|
|
|
|
|
struct PluginStartupInfo
|
|
{
|
|
int StructSize;
|
|
char ModuleName[NM];
|
|
int ModuleNumber;
|
|
char *RootKey;
|
|
FARAPIMENU Menu;
|
|
FARAPIDIALOG Dialog;
|
|
FARAPIMESSAGE Message;
|
|
FARAPIGETMSG GetMsg;
|
|
FARAPICONTROL Control;
|
|
FARAPISAVESCREEN SaveScreen;
|
|
FARAPIRESTORESCREEN RestoreScreen;
|
|
FARAPIGETDIRLIST GetDirList;
|
|
FARAPIGETPLUGINDIRLIST GetPluginDirList;
|
|
FARAPIFREEDIRLIST FreeDirList;
|
|
FARAPIVIEWER Viewer;
|
|
FARAPIEDITOR Editor;
|
|
FARAPICMPNAME CmpName;
|
|
FARAPICHARTABLE CharTable;
|
|
FARAPITEXT Text;
|
|
FARAPIEDITORCONTROL EditorControl;
|
|
};
|
|
|
|
|
|
enum PLUGIN_FLAGS {
|
|
PF_PRELOAD = 0x0001,
|
|
PF_DISABLEPANELS = 0x0002,
|
|
PF_EDITOR = 0x0004,
|
|
PF_VIEWER = 0x0008
|
|
};
|
|
|
|
|
|
struct PluginInfo
|
|
{
|
|
int StructSize;
|
|
DWORD Flags;
|
|
char **DiskMenuStrings;
|
|
int *DiskMenuNumbers;
|
|
int DiskMenuStringsNumber;
|
|
char **PluginMenuStrings;
|
|
int PluginMenuStringsNumber;
|
|
char **PluginConfigStrings;
|
|
int PluginConfigStringsNumber;
|
|
char *CommandPrefix;
|
|
};
|
|
|
|
|
|
struct InfoPanelLine
|
|
{
|
|
char Text[80];
|
|
char Data[80];
|
|
int Separator;
|
|
};
|
|
|
|
|
|
struct PanelMode
|
|
{
|
|
char *ColumnTypes;
|
|
char *ColumnWidths;
|
|
char **ColumnTitles;
|
|
int FullScreen;
|
|
int DetailedStatus;
|
|
int AlignExtensions;
|
|
int CaseConversion;
|
|
char *StatusColumnTypes;
|
|
char *StatusColumnWidths;
|
|
DWORD Reserved[2];
|
|
};
|
|
|
|
|
|
enum OPENPLUGININFO_FLAGS {
|
|
OPIF_USEFILTER = 0x0001,
|
|
OPIF_USESORTGROUPS = 0x0002,
|
|
OPIF_USEHIGHLIGHTING = 0x0004,
|
|
OPIF_ADDDOTS = 0x0008,
|
|
OPIF_RAWSELECTION = 0x0010,
|
|
OPIF_REALNAMES = 0x0020,
|
|
OPIF_SHOWNAMESONLY = 0x0040,
|
|
OPIF_SHOWRIGHTALIGNNAMES = 0x0080,
|
|
OPIF_SHOWPRESERVECASE = 0x0100,
|
|
OPIF_FINDFOLDERS = 0x0200,
|
|
OPIF_COMPAREFATTIME = 0x0400,
|
|
OPIF_EXTERNALGET = 0x0800,
|
|
OPIF_EXTERNALPUT = 0x1000,
|
|
OPIF_EXTERNALDELETE = 0x2000,
|
|
OPIF_EXTERNALMKDIR = 0x4000,
|
|
OPIF_USEATTRHIGHLIGHTING = 0x8000
|
|
};
|
|
|
|
|
|
enum OPENPLUGININFO_SORTMODES {
|
|
SM_DEFAULT,SM_UNSORTED,SM_NAME,SM_EXT,SM_MTIME,SM_CTIME,
|
|
SM_ATIME,SM_SIZE,SM_DESCR,SM_OWNER,SM_COMPRESSEDSIZE,SM_NUMLINKS
|
|
};
|
|
|
|
|
|
struct KeyBarTitles
|
|
{
|
|
char *Titles[12];
|
|
char *CtrlTitles[12];
|
|
char *AltTitles[12];
|
|
char *ShiftTitles[12];
|
|
};
|
|
|
|
|
|
struct OpenPluginInfo
|
|
{
|
|
int StructSize;
|
|
DWORD Flags;
|
|
char *HostFile;
|
|
char *CurDir;
|
|
char *Format;
|
|
char *PanelTitle;
|
|
struct InfoPanelLine *InfoLines;
|
|
int InfoLinesNumber;
|
|
char **DescrFiles;
|
|
int DescrFilesNumber;
|
|
struct PanelMode *PanelModesArray;
|
|
int PanelModesNumber;
|
|
int StartPanelMode;
|
|
int StartSortMode;
|
|
int StartSortOrder;
|
|
struct KeyBarTitles *KeyBar;
|
|
char *ShortcutData;
|
|
};
|
|
|
|
enum {
|
|
OPEN_DISKMENU,
|
|
OPEN_PLUGINSMENU,
|
|
OPEN_FINDLIST,
|
|
OPEN_SHORTCUT,
|
|
OPEN_COMMANDLINE,
|
|
OPEN_EDITOR,
|
|
OPEN_VIEWER
|
|
};
|
|
|
|
enum {PKF_CONTROL=1,PKF_ALT=2,PKF_SHIFT=4};
|
|
|
|
enum FAR_EVENTS {
|
|
FE_CHANGEVIEWMODE,
|
|
FE_REDRAW,
|
|
FE_IDLE,
|
|
FE_CLOSE,
|
|
FE_BREAK,
|
|
FE_COMMAND
|
|
};
|
|
|
|
enum OPERATION_MODES {
|
|
OPM_SILENT=1,
|
|
OPM_FIND=2,
|
|
OPM_VIEW=4,
|
|
OPM_EDIT=8,
|
|
OPM_TOPLEVEL=16,
|
|
OPM_DESCR=32
|
|
};
|
|
|
|
#if defined(__BORLANDC__) && (__BORLANDC <= 0x520)
|
|
#pragma option -a.
|
|
#elif defined(__GNUC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1100))
|
|
#pragma pack()
|
|
#else
|
|
#pragma pack(pop)
|
|
#endif
|
|
|
|
#endif
|