home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibylft1.zip / DOC.DAT / DOC / SPCC / TOOLSAPI.PAS < prev   
Pascal/Delphi Source File  |  1997-04-07  |  19KB  |  390 lines

  1.  
  2. {╔══════════════════════════════════════════════════════════════════════════╗
  3.  ║                                                                          ║
  4.  ║     Sibyl Portable Component Classes                                     ║
  5.  ║                                                                          ║
  6.  ║     Copyright (c) 1995,97 SpeedSoft Germany,   All rights reserved.      ║
  7.  ║                                                                          ║
  8.  ╚══════════════════════════════════════════════════════════════════════════╝}
  9.  
  10. UNIT ToolsApi;
  11.  
  12. INTERFACE
  13.  
  14. USES Classes,Forms,Graphics,Editors;
  15.  
  16. TYPE
  17.   //Tools service API. The reference for this class is ToolServices and is created by the SP/2
  18.   //IDE on library initialization
  19.   TCreateModuleFlag = (cmfAddToProject,cmfShowSource,cmfShowForm,
  20.                        cmfUnNamed,cmfNewUnit,cmfNewForm,cmfMainForm,cmfMarkModified,
  21.                        cmfNewFile,cmfExisting);
  22.  
  23.   TCreateModuleFlags = SET OF TCreateModuleFlag;
  24.  
  25.   TProjectEnumProc = FUNCTION(Param: Pointer;CONST FileName, UnitName,
  26.                               FormName:STRING):Boolean;
  27.  
  28.   TFileNotification = (fnFileOpening, fnFileOpened, fnFileClosing,
  29.                        fnProjectOpening, fnProjectOpened, fnProjectClosing, fnAddedToProject,
  30.                        fnRemovedFromProject, fnDefaultDesktopLoad, fnDefaultDesktopSave,
  31.                        fnProjectDesktopLoad, fnProjectDesktopSave, fnProjectSaved, fnFileSaved);
  32.  
  33.   TIMainMenuIntf = CLASS;
  34.  
  35.   TIAddInNotifier = CLASS
  36.         PROCEDURE FileNotification(NotifyCode: TFileNotification;
  37.                                    CONST FileName:STRING;VAR Cancel:Boolean); VIRTUAL;ABSTRACT;
  38.   END;
  39.  
  40.   TIModuleInterface=CLASS;
  41.  
  42.   TIToolServices = CLASS
  43.     //Opens a new Project. If PrjName is empty, create a new, empty project.
  44.     FUNCTION OpenProject(CONST PrjName:STRING):Boolean; VIRTUAL;ABSTRACT;
  45.     {Rene}
  46.     {}
  47.     //Extended version of OpenProject
  48.     FUNCTION OpenProjectEx(CONST PrjName:STRING;VisualProject,CreateNew:BOOLEAN):Boolean;VIRTUAL;ABSTRACT;
  49.     {}
  50.     //Close Project and return TRUE on success
  51.     FUNCTION CloseProject:Boolean; VIRTUAL;ABSTRACT;
  52.     //Determines if a named project can be opened, no load
  53.     FUNCTION OpenProjectInfo(CONST PrjName:STRING):Boolean; VIRTUAL;ABSTRACT;
  54.     //Save current project and return TRUE on success
  55.     FUNCTION SaveProject:Boolean; VIRTUAL;ABSTRACT;
  56.     //returns TRUE if specified file is open or can be loaded
  57.     FUNCTION OpenFile(CONST FileName:STRING):Boolean; VIRTUAL;ABSTRACT;
  58.     //Closes open editor file, if it is not open return also TRUE
  59.     FUNCTION CloseFile(CONST FileName:STRING):Boolean; VIRTUAL;ABSTRACT;
  60.     //Saves the specified files, if it is not open return also TRUE
  61.     FUNCTION SaveFile(CONST FileName:STRING):Boolean; VIRTUAL;ABSTRACT;
  62.     //Creates a new module
  63.     FUNCTION CreateModule(CONST ModuleName:STRING;
  64.                           Source, Form: TMemoryStream;
  65.                           CreateFlags: TCreateModuleFlags):Boolean; VIRTUAL;ABSTRACT;
  66.     //Extended version of CreateModule
  67.     FUNCTION CreateModuleEx(CONST ModuleName, FormName, AncestorClass:STRING;
  68.                             Source, Form: TMemoryStream;
  69.                             CreateFlags: TCreateModuleFlags):TIModuleInterface; VIRTUAL;ABSTRACT;
  70.     //returns IDE application form
  71.     FUNCTION GetParentForm:TForm; VIRTUAL;ABSTRACT;
  72.     //returns current project name
  73.     FUNCTION GetProjectName:STRING; VIRTUAL;ABSTRACT;
  74.     {Rene}
  75.     //returns primary file of project
  76.     FUNCTION GetPrimaryFile:STRING;VIRTUAL;ABSTRACT;
  77.     //returns count of units belonging to the current project
  78.     FUNCTION GetUnitCount:LONGINT; VIRTUAL;ABSTRACT;
  79.     //returns full name of project unit with specified index
  80.     FUNCTION GetUnitName(Index:LONGINT):STRING; VIRTUAL;ABSTRACT;
  81.     //Calls EnumProc for each unit in the project
  82.     FUNCTION EnumProjectUnits(EnumProc: TProjectEnumProc;Param: Pointer):Boolean; VIRTUAL;ABSTRACT;
  83.     {Rene}
  84.     //Return all files that belong to the current project
  85.     PROCEDURE GetProjectFiles(AStrings:TStrings);VIRTUAL;ABSTRACT;
  86.     //Return number of available forms in current project
  87.     FUNCTION GetFormCount:LONGINT; VIRTUAL;ABSTRACT;
  88.     //Get name of form with specified index
  89.     FUNCTION GetFormName(Index:LONGINT):STRING; VIRTUAL;ABSTRACT;
  90.     //Get full name of current file or form-unit-file, empty string if no file is active
  91.     FUNCTION GetCurrentFile:STRING; VIRTUAL;ABSTRACT;
  92.     //returns TRUE if specified file is open
  93.     FUNCTION IsFileOpen(CONST FileName:STRING):Boolean; VIRTUAL;ABSTRACT;
  94.     //Generate new unit name and file name
  95.     FUNCTION GetNewModuleName(VAR UnitIdent,FileName:STRING):Boolean; VIRTUAL;ABSTRACT;
  96.     //Get Count of currently installed component modules (units)
  97.     FUNCTION GetModuleCount:LONGINT; VIRTUAL;ABSTRACT;
  98.     //Get component unit name with specified index
  99.     FUNCTION GetModuleName(Index:LONGINT):STRING; VIRTUAL;ABSTRACT;
  100.     //Get component count of component unit with specified index
  101.     FUNCTION GetComponentCount(Index:LONGINT):LONGINT; VIRTUAL;ABSTRACT;
  102.     //Get component name from component unit with specified index
  103.     FUNCTION GetComponentName(ModIndex,CompIndex:LONGINT):STRING; VIRTUAL;ABSTRACT;
  104.     //Get Interface for a file loaded into the editor
  105.     FUNCTION GetModuleInterface(CONST FileName:STRING):TIModuleInterface; VIRTUAL;ABSTRACT;
  106.     //Get Interface for a form and its associated editor file
  107.     FUNCTION GetFormModuleInterface(CONST FormName:STRING):TIModuleInterface; VIRTUAL;ABSTRACT;
  108.     //Gets IDE main menu
  109.     FUNCTION GetMainMenu:TIMainMenuIntf; VIRTUAL;ABSTRACT;
  110.     //Adds a notification proc
  111.     {Rene}
  112.     {}
  113.     //Gets main menu handle - use with care
  114.     FUNCTION GetMainMenuHandle:TMenu;VIRTUAL;ABSTRACT;
  115.     {}
  116.     FUNCTION AddNotifier(AddInNotifier:TIAddInNotifier):Boolean; VIRTUAL;ABSTRACT;
  117.     //Remove notification proc
  118.     FUNCTION RemoveNotifier(AddInNotifier:TIAddInNotifier):Boolean; VIRTUAL;ABSTRACT;
  119.     //Get version of the IDE
  120.     FUNCTION GetVersion:LONGINT; VIRTUAL;ABSTRACT;
  121.   END;
  122.  
  123.   TIMenuItemIntf=CLASS;
  124.  
  125.   TIMenuFlag = (mfInvalid, mfEnabled, mfVisible, mfChecked, mfBreak, mfBarBreak,mfRadioItem);
  126.   TIMenuFlags = SET OF TIMenuFlag;
  127.  
  128.   TIMenuClickEvent = PROCEDURE(Sender:TIMenuItemIntf) OF OBJECT;
  129.  
  130.   //Note: all TIMainMenuIntf queried must be freed by the client !!
  131.   TIMainMenuIntf = CLASS
  132.     //Returns Interface for IDE main menu (top level)
  133.     FUNCTION GetMenuItems: TIMenuItemIntf; VIRTUAL;ABSTRACT;
  134.     //Returns Interface for menu item or submenu with specified name
  135.     FUNCTION FindMenuItem(CONST MenuName:STRING):TIMenuItemIntf; VIRTUAL;ABSTRACT;
  136.   END;
  137.  
  138.   //Note: all TIMenuItemIntf queried must be freed by the client !!
  139.   TIMenuItemIntf = CLASS
  140.     //Destroys menu item associated with the interface, returns FALSE if the item was created by IDE
  141.     FUNCTION DestroyMenuItem:Boolean; VIRTUAL;ABSTRACT;
  142.     //Get Index of this item within the menu tree
  143.     FUNCTION GetIndex:LONGINT; VIRTUAL;ABSTRACT;
  144.     //Get count of submenus for this interface
  145.     FUNCTION GetItemCount:LONGINT; VIRTUAL;ABSTRACT;
  146.     //Get SubMenu item with specified index
  147.     FUNCTION GetItem(Index:LONGINT):TIMenuItemIntf; VIRTUAL;ABSTRACT;
  148.     //Get (internal !) Name of menu associated with interface, see also GetCaption
  149.     FUNCTION GetName:STRING; VIRTUAL;ABSTRACT;
  150.     //Get Parent interface of item or NIL
  151.     FUNCTION GetParent: TIMenuItemIntf; VIRTUAL;ABSTRACT;
  152.     //Get Caption of menu associated with the interface
  153.     FUNCTION GetCaption:STRING; VIRTUAL;ABSTRACT;
  154.     //Set Caption of menu associated with the interface
  155.     FUNCTION SetCaption(CONST Caption:STRING):Boolean; VIRTUAL;ABSTRACT;
  156.     //get ShortCut of menu
  157.     FUNCTION GetShortCut:TKeyCode; VIRTUAL;ABSTRACT;
  158.     //set ShortCut of menu
  159.     FUNCTION SetShortCut(ShortCut:TKeyCode):Boolean; VIRTUAL;ABSTRACT;
  160.     //Get Flags of menu
  161.     FUNCTION GetFlags:TIMenuFlags; VIRTUAL;ABSTRACT;
  162.     //Set Flags of menu
  163.     FUNCTION SetFlags(Mask,Flags: TIMenuFlags):Boolean; VIRTUAL;ABSTRACT;
  164.     //Get Hint of menu
  165.     FUNCTION GetHint:STRING; VIRTUAL;ABSTRACT;
  166.     //Set Hint of menu
  167.     FUNCTION SetHint(Hint:STRING):Boolean; VIRTUAL;ABSTRACT;
  168.     //Get Help context of Menu
  169.     FUNCTION GetContext:THelpContext; VIRTUAL;ABSTRACT;
  170.     //Set Help context for Menu
  171.     FUNCTION SetContext(Context:THelpContext):Boolean; VIRTUAL;ABSTRACT;
  172.     //Get OnClick event for the menu
  173.     FUNCTION GetOnClick:TIMenuClickEvent; VIRTUAL;ABSTRACT;
  174.     //Set OnClick event for the menu
  175.     FUNCTION SetOnClick(Click:TIMenuClickEvent):Boolean; VIRTUAL;ABSTRACT;
  176.     //Inserts an item
  177.     FUNCTION InsertItem(Index:LONGINT;Caption,Name,Hint:STRING;
  178.                         ShortCut:TKeyCode;Context:THelpContext;Flags:TIMenuFlags;
  179.                         EventHandler:TIMenuClickEvent):TIMenuItemIntf; VIRTUAL;ABSTRACT;
  180.     //Get Menu item associates with the interface - use with care !
  181.     FUNCTION GetMenuEntry:TMenuItem; VIRTUAL;ABSTRACT;
  182.   END;
  183.  
  184.   TNotifyCode = (ncModuleDeleted, ncModuleRenamed, ncEditorModified,
  185.                  ncFormModified, ncEditorSelected, ncFormSelected, ncBeforeSave,
  186.                  ncAfterSave, ncFormSaving, ncProjResModified);
  187.  
  188.   TIModuleNotifier=CLASS
  189.     PROCEDURE Notify(NotifyCode:TNotifyCode); VIRTUAL;ABSTRACT;
  190.     PROCEDURE ComponentRenamed(ComponentHandle:Pointer;
  191.                                CONST OldName,NewName:STRING); VIRTUAL;ABSTRACT;
  192.   END;
  193.  
  194.   TIEditorInterface=CLASS;
  195.   TIFormInterface=CLASS;
  196.  
  197.   //represents file and forms open in a project
  198.   //Note: all TIModuleInterface queried must be freed by the client !!
  199.   TIModuleInterface=CLASS
  200.     //Get editor interface for the module or NIL
  201.     FUNCTION GetEditorInterface:TIEditorInterface; VIRTUAL;ABSTRACT;
  202.     //Get Form interface for the module or NIL
  203.     FUNCTION GetFormInterface:TIFormInterface; VIRTUAL;ABSTRACT;
  204.     //Close the module without Saving (see Save)
  205.     FUNCTION Close:Boolean; VIRTUAL;ABSTRACT;
  206.     //Saves the module, if forcesave is TRUE, the user will not be asked
  207.     FUNCTION Save(ForceSave: Boolean):Boolean; VIRTUAL;ABSTRACT;
  208.     //Rename module
  209.     FUNCTION Rename(CONST NewName:STRING):Boolean; VIRTUAL;ABSTRACT;
  210.     //Show source file of editor in topmost editor window
  211.     FUNCTION ShowSource:Boolean; VIRTUAL;ABSTRACT;
  212.     //Show Form of module if present
  213.     FUNCTION ShowForm:Boolean; VIRTUAL;ABSTRACT;
  214.     //Add notification proc
  215.     FUNCTION AddNotifier(AModuleNotifier:TIModuleNotifier):Boolean; VIRTUAL;ABSTRACT;
  216.     //Remove notification proc
  217.     FUNCTION RemoveNotifier(AModuleNotifier:TIModuleNotifier):Boolean; VIRTUAL;ABSTRACT;
  218.   END;
  219.  
  220.   TEditPos = record
  221.     Col: SmallInt;
  222.     Line: Longint;
  223.   end;
  224.  
  225.   TSyntaxHighlighter = (shNone, shPascal, shSQL, shQuery);
  226.  
  227.   //represents editor file opened
  228.   //Note: all TIEditorInterface queried must be freed by the client !!
  229.   TIEditorInterface=CLASS
  230.     //Gets text at specified position
  231.     FUNCTION GetText(Position:Longint;VAR Buffer;BufSize:Longint):Longint;VIRTUAL;ABSTRACT;
  232.     //Copies text from actual position to Pos into the clipboard
  233.     FUNCTION CopyTo(Pos:Longint):Boolean; VIRTUAL;ABSTRACT;
  234.     //Deletes text from actual positon to Pos into the clipboard
  235.     FUNCTION DeleteTo(Pos:Longint):Boolean; VIRTUAL;ABSTRACT;
  236.     //Insert specified text at current position
  237.     FUNCTION Insert(VAR Buffer;BufSize:LONGINT):Boolean; VIRTUAL;ABSTRACT;
  238.     //Get editor position
  239.     FUNCTION Position: Longint; VIRTUAL;ABSTRACT;
  240.     //Get File Name of editor
  241.     FUNCTION FileName:STRING; VIRTUAL;ABSTRACT;
  242.     //Get total lines of edit buffer
  243.     FUNCTION LinesInBuffer:LONGINT; VIRTUAL;ABSTRACT;
  244.     //returns TRUE if edit buffer was modified
  245.     FUNCTION BufferModified:Boolean; VIRTUAL;ABSTRACT;
  246.     //Forces the editor to be modified
  247.     FUNCTION MarkModified:Boolean; VIRTUAL;ABSTRACT;
  248.     //Sets color table
  249.     FUNCTION SetSyntaxHighlighter(SyntaxHighlighter:TSyntaxHighlighter):TSyntaxHighlighter;VIRTUAL;ABSTRACT;
  250.     //Get editor position
  251.     FUNCTION GetPos:TEditPos; VIRTUAL;ABSTRACT;
  252.     //Set editor positon
  253.     PROCEDURE SetPos(Value: TEditPos); VIRTUAL;ABSTRACT;
  254.     //Get editor form instance - use with care !
  255.     FUNCTION GetEditorForm:TEditor; VIRTUAL;ABSTRACT;
  256.  
  257.     PROPERTY CursorPos: TEditPos read GetPos write SetPos;
  258.   END;
  259.  
  260.   TIComponentInterface=CLASS;
  261.  
  262.   //represents form inside designer
  263.   //Note: all TIFormInterface queried must be freed by the client !!
  264.   TIFormInterface=CLASS
  265.     //returns unit file name for the form
  266.     FUNCTION FileName:STRING; VIRTUAL;ABSTRACT;
  267.     //returns TRUE if the form is modified
  268.     FUNCTION FormModified:Boolean; VIRTUAL;ABSTRACT;
  269.     //Forces the form to be marked as modified
  270.     FUNCTION MarkModified:Boolean; VIRTUAL;ABSTRACT;
  271.     //Get component interface for the form
  272.     FUNCTION GetFormComponent:TIComponentInterface; VIRTUAL;ABSTRACT;
  273.     //Get Form instance for the form - use with care !
  274.     FUNCTION GetFormInstance:TForm; VIRTUAL;ABSTRACT;
  275.     //Find component by name and return interface
  276.     FUNCTION FindComponent(CONST Name:STRING):TIComponentInterface; VIRTUAL;ABSTRACT;
  277.     //Get component interface from instance
  278.     FUNCTION GetComponentFromHandle(ComponentHandle:TObject):TIComponentInterface; VIRTUAL;ABSTRACT;
  279.     //Get Selection Count in form editor
  280.     FUNCTION GetSelCount:LONGINT; VIRTUAL;ABSTRACT;
  281.     //Get selected component interface from index
  282.     FUNCTION GetSelComponent(Index:LONGINT):TIComponentInterface; VIRTUAL;ABSTRACT;
  283.     //Gets parent interface that created the form
  284.     FUNCTION GetCreateParent: TIComponentInterface; VIRTUAL;ABSTRACT;
  285.     //Create new component, if containter is not nil, it is the parent, if name is empty, it is auto-created
  286.     FUNCTION CreateComponent(Container: TIComponentInterface;CONST TypeName,Name:STRING;
  287.                              X,Y,W,H:LONGINT):TIComponentInterface; VIRTUAL;ABSTRACT;
  288.   END;
  289.  
  290.   TPropertyType = (ptUnknown, ptInteger, ptChar, ptEnumeration, ptFloat,
  291.                    ptString, ptSet, ptClass, ptMethod, ptWChar, ptLString, ptLWString,
  292.                    ptVariant,{Rene}ptBoolean,ptCString,ptClassRef,ptRecord);
  293.  
  294.   TGetChildCallback = FUNCTION(Param:Pointer;ComponentInterface:TIComponentInterface):Boolean;
  295.  
  296.   //represents components inside a form
  297.   //Note: all TIComponentInterface queried must be freed by the client !!
  298.   TIComponentInterface=CLASS
  299.     //Returns component type as string
  300.     FUNCTION GetComponentType:STRING; VIRTUAL;ABSTRACT;
  301.     //Returns Component Instance - use with care !
  302.     {Rene}
  303.     FUNCTION GetComponentHandle:TComponent; VIRTUAL;ABSTRACT;
  304.     //Returns Parent interface
  305.     FUNCTION GetParent:TIComponentInterface; VIRTUAL;ABSTRACT;
  306.     //Returns TRUE if interface is a descendant of TControl
  307.     FUNCTION IsTControl:Boolean; VIRTUAL;ABSTRACT;
  308.     //Returns property count for the interface instance
  309.     FUNCTION GetPropCount:LONGINT; VIRTUAL;ABSTRACT;
  310.     //Get property name from Index
  311.     FUNCTION GetPropName(Index:LONGINT):STRING; VIRTUAL;ABSTRACT;
  312.     //Get property type from Index
  313.     FUNCTION GetPropType(Index:LONGINT;VAR TypeLen:LONGINT):TPropertyType; VIRTUAL;ABSTRACT;
  314.     //Get property type from Name
  315.     FUNCTION GetPropTypeByName(CONST Name:STRING;VAR TypeLen:LONGINT):TPropertyType; VIRTUAL;ABSTRACT;
  316.     //Gets Property value from index
  317.     FUNCTION GetPropValue(Index:LONGINT;VAR Value):Boolean; VIRTUAL;ABSTRACT;
  318.     //Gets Property value from name
  319.     FUNCTION GetPropValueByName(CONST Name:STRING;VAR Value):Boolean; VIRTUAL;ABSTRACT;
  320.     //Sets property from index
  321.     FUNCTION SetProp(Index:LONGINT;CONST Value):Boolean; VIRTUAL;ABSTRACT;
  322.     //Sets property from name
  323.     FUNCTION SetPropByName(CONST Name:STRING;CONST Value):Boolean; VIRTUAL;ABSTRACT;
  324.     //Enums component's children
  325.     FUNCTION GetChildren(Param:Pointer;Proc:TGetChildCallback): Boolean; VIRTUAL;ABSTRACT;
  326.     //Get count of child controls
  327.     FUNCTION GetControlCount:LONGINT; VIRTUAL;ABSTRACT;
  328.     //Get control from index
  329.     FUNCTION GetControl(Index:LONGINT):TIComponentInterface; VIRTUAL;ABSTRACT;
  330.     //Get count of child components
  331.     FUNCTION GetComponentCount:LONGINT; VIRTUAL;ABSTRACT;
  332.     //Get child component from index
  333.     FUNCTION GetComponent(Index:LONGINT):TIComponentInterface; VIRTUAL;ABSTRACT;
  334.     //Select component
  335.     FUNCTION Select: Boolean; VIRTUAL;ABSTRACT;
  336.     //Focus component
  337.     FUNCTION Focus: Boolean; VIRTUAL;ABSTRACT;
  338.     //Delete component
  339.     FUNCTION Delete: Boolean; VIRTUAL;ABSTRACT;
  340.     {Rene}
  341.     {}
  342.     //Set Event Property and add some code to it (optional)
  343.     FUNCTION SetEventProperty(CONST PropertyName,MethodName:STRING;Code:TStream):BOOLEAN;VIRTUAL;ABSTRACT;
  344.     //Get Method Name of a event property
  345.     FUNCTION GetEventProperty(CONST PropertyName:STRING):STRING;VIRTUAL;ABSTRACT;
  346.     {}
  347.   END;
  348.  
  349.   //Expert interfaces - provided by client, created and destroyed by IDE
  350.   TExpertStyle = (esStandard, esForm, esProject, esAddIn);
  351.   TExpertState = set of (esEnabled, esChecked);
  352.  
  353.   TIExpert=CLASS(TComponent)
  354.     //Required: returns name of expert
  355.     FUNCTION GetName:STRING; VIRTUAL;ABSTRACT;
  356.     //Required for styles esForm and esProject: returns author of expert
  357.     FUNCTION GetAuthor:STRING; VIRTUAL;ABSTRACT;
  358.     //Required for styles esForm and esProject: returns Comment of expert
  359.     FUNCTION GetComment:STRING; VIRTUAL;ABSTRACT;
  360.     //Required for styles esForm and esProject: returns page for repository, empty string for default
  361.     FUNCTION GetPage:STRING; VIRTUAL;ABSTRACT;
  362.     //Required for styles esForm and esProject: returns Bitmap for expert, NIL for default
  363.     FUNCTION GetGlyph: TBitmap; VIRTUAL;ABSTRACT;
  364.     //Required: returns Style of expert
  365.     FUNCTION GetStyle: TExpertStyle; VIRTUAL;ABSTRACT;
  366.     //Required if style is esStandard: returns menu State of expert
  367.     FUNCTION GetState: TExpertState; VIRTUAL;ABSTRACT;
  368.     //Required: returns UNIQUE IDString of expert. Supposed format is: CompanyName.ExpertFunction, ex. SpeedSoft.AppExpert
  369.     FUNCTION GetIDString:STRING; VIRTUAL;ABSTRACT;
  370.     //Required if style is esStandard:returns Menu text for expert
  371.     FUNCTION GetMenuText:STRING; VIRTUAL;ABSTRACT;
  372.     //Required if Style is esForm,esStandard or esProject: called whenever project is invoked
  373.     PROCEDURE Execute; VIRTUAL;ABSTRACT;
  374.     //Required: Is called whenever the IDE registeres this expert
  375.     PROCEDURE Register; VIRTUAL;ABSTRACT;
  376.     //Required: Is called whenever the IDE unloads this expert. The expert is destroyed after this call
  377.     PROCEDURE Unload; VIRTUAL;ABSTRACT;
  378.   END;
  379.  
  380.   TIExpertClass=CLASS OF TIExpert;
  381.  
  382. CONST
  383.    ToolServices:TIToolServices=NIL;
  384.  
  385. PROCEDURE RegisterLibraryExperts(Experts:ARRAY OF TIExpertClass);
  386. PROCEDURE FreeAllLibraryExperts;
  387.  
  388. IMPLEMENTATION
  389.  
  390.