# TPluginStartupInfo

The PluginStartupInfo stucture for Delphi:

    TPluginStartupInfo = packed record
      StructSize: Integer;
      ModuleName: array[0..Pred(NM)] of char;
      ModuleNumber: integer;
      RootKey: PChar;
      Menu: TFarApiMenu;
      Dialog: TFarApiDialog;
      Message: TFarApiMessage;
      GetMsg: TFarApiGetMsg;
      Control: TFarApiControl;
      SaveScreen: TFarApiSaveScreen;
      RestoreScreen: TFarApiRestoreScreen;
      GetDirList: TFarApiGetDirList;
      GetPluginDirList: TFarApiGetPluginDirList;
      FreeDirList: TFarApiFreeDirList;
      Viewer: TFarApiViewer;
      Editor: TFarApiEditor;
      CmpName: TFarApiCmpName;
      CharTable: TFarApiCharTable;
      Text: TFarApiText;
      EditorControl: TFarApiEditorControl;
      FSF: PFarStandardFunctions;
      ShowHelp: TFarApiShowHelp;
      AdvControl: TFarApiAdvControl;
      InputBox: TFarApiInputBox;
      DialogEx: TFarApiDialogEx;
      SendDlgMessage: TFarApiSendDlgMessage;
      DefDlgProc: TFarApiDefDlgProc;
      Reserved1: DWORD;
      Reserved2: DWORD;
    end;
    PPluginStartupInfo = ^TPluginStartupInfo;

Where:

    TFarApiMenu = function(
      PluginNumber: integer;
      X, Y: integer;
      MaxHeight: integer;
      Flags: DWORD;
      Title: PChar;
      Bottom: PChar;
      HelpTopic: PChar;
      BreakKeys: PIntArr;
      BreakCode: PIntArr;
      Items: PFarMenuItemArr;
      ItemsNumber: integer): integer; stdcall;

    TFarApiDialog = function(
      PluginNumber: integer;
      X1, Y1: integer;
      X2, Y2: integer;
      HelpTopic: PChar;
      Items: PFarDialogItemArr;
      ItemsNumber: integer): integer; stdcall;

    TFarApiMessage = function(
      PluginNumber: integer;
      Flags: DWORD;
      HelpTopic: PChar;
      Items: PPCharArr;
      ItemsNumber: integer;
      ButtonsNumber: integer): integer; stdcall;

    TFarApiGetMsg = function(
      PluginNumber: integer;
      MsgId: integer): PChar; stdcall;

    TFarApiControl = function(
      hPlugin: THandle;
      Command: integer;
      Param: pointer): integer; stdcall;

    TFarApiSaveScreen = function(
      X1, Y1: integer;
      X2, Y2: integer): THandle; stdcall;

    TFarApiRestoreScreen = procedure(
      hScreen: THandle); stdcall;

    TFarApiGetDirList = function(
      Dir: PChar;
      var PanelItems: PPluginPanelItemArr;
      var ItemsNumber: integer): integer; stdcall;

    TFarApiGetPluginDirList = function(
      PluginNumber: integer;
      hPlugin: THandle;
      Dir: PChar;
      var PanelItems: PPluginPanelItemArr;
      var ItemsNumber: integer): integer; stdcall;

    TFarApiFreeDirList = procedure(
      PanelItems: PPluginPanelItemArr); stdcall;

    TFarApiViewer = function(
      FileName: PChar;
      Title: PChar;
      X1, Y1: integer;
      X2, Y2: integer;
      Flags: DWORD): integer; stdcall;

    TFarApiEditor = function(
      FileName: PChar;
      Title: PChar;
      X1, Y1: integer;
      X2, Y2: integer;
      Flags: DWORD;
      StartLine: integer;
      StartChar: integer): integer; stdcall;

    TFarApiCmpName = function(
      Pattern: PChar;
      FileName: PChar;
      SkipPath: integer): integer; stdcall;

    TFarApiCharTable = function(
      Command: integer;
      Buffer: PChar;
      BufferSize: integer): integer; stdcall;

    TFarApiText = procedure(
      X, Y: integer;
      Color: integer;
      Str: PChar); stdcall;

    TFarApiEditorControl = function(
      Command: integer;
      Param: pointer): integer; stdcall;

    TFarApiAdvControl = function(
      ModuleNumber: integer;
      Command: integer;
      Param: pointer): integer; stdcall;

    TFarApiDialogEx = function(
      PluginNumber: integer;
      X1, Y1: integer;
      X2, Y2: integer;
      HelpTopic: PChar;
      Items: PFarDialogItemArr;
      ItemsNumber: integer;
      Reserved: DWORD;
      Flags: DWORD;
      DlgProc: TFarApiWndProc;
      Param: integer): integer; stdcall;

    TFarApiSendDlgMessage = function(
      hDlg: THandle;
      Msg: integer;
      Param1: integer;
      Param2: integer): integer; stdcall;

    TFarApiDefDlgProc = function(
      hDlg: THandle;
      Msg: integer;
      Param1: integer;
      Param2: integer): integer; stdcall;

    TFarApiInputBox = function(
      Title: PChar;
      SubTitle: PChar;
      HistoryName: PChar;
      SrcText: PChar;
      DstText: PChar;
      DstLength: integer;
      HelpTopic: PChar;
      Flags: DWORD): integer; stdcall;

    TFarApiShowHelp = function(
      ModuleName: PChar;
      HelpTopic: PChar;
      Flags: DWORD): BOOL; stdcall;