home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1997 April
/
Chip_1997-04_cd.bin
/
prezent
/
cb
/
data.z
/
TOOLINTF.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1997-01-16
|
23KB
|
467 lines
{*******************************************************}
{ }
{ Delphi Visual Component Library }
{ }
{ Copyright (c) 1995,1996 Borland International }
{ }
{*******************************************************}
unit ToolIntf;
interface
uses Windows, Classes, VirtIntf, EditIntf, FileIntf;
type
TIMenuItemIntf = class;
TIMenuFlag = (mfInvalid, mfEnabled, mfVisible, mfChecked, mfBreak, mfBarBreak,
mfRadioItem);
TIMenuFlags = set of TIMenuFlag;
TIMenuClickEvent = procedure (Sender: TIMenuItemIntf) of object;
{ The TIMenuItemIntf class is created by Delphi. This is simply a virtual
interface to an actual menu item found in the IDE. It is the responsibility
of the client to destroy *all* menu items which it created. Failure to
properly clean-up will result in unpredictable behaviour.
NOTE: Using functions that returns a TIMenuItemIntf should be done with
care. Unless created by a particular add-in tool, do not hold these
interfaces for long as the underlying actual VCL TMenuItem may be
destroyed without any notification. In practice, this only pertains
to Delphi created menus or menus created by other add-in tools.
It is also the responsibility of the user to free these interfaces
when finished. Any attempt to modify a menu item that was created
by Delphi will fail.
DestroyMenuItem - If this menu was created by through the interface, use
this function to destroy the associated menu item. This
function will *not* allow any Delphi created menus to
be destroyed.
GetItemCount
GetItem - Use these functions to iterate through the menu tree.
All TIMenuItemIntfs must be freed by the caller.
GetName - Returns the menu item name associated with the VCL menu
object. (Including internal Delphi menu names).
GetParent - Returns an interface to the parent menu item.
GetCaption
SetCaption - Methods to get/set the caption of the menu item.
GetShortCut
SetShortCut - Methods to get/set the short cut of the menu item.
GetFlags
SetFlags - Use GetFlags and SetFlags to query and set the state of
the menu item. For SetFlags, a mask indicating which
items to affect must be passed along with the actual
value of the flag.
GetGroupIndex
SetGroupIndex - Methods to get/set the GroupIndex property of a
TMenuItem. This is useful for specifying values for
grouped radio menus.
GetHint
SetHint - Methods to get/set the Hint proeprty of a TMenuItem.
NOTE: The IDE currently ignores this property.
GetContext
SetContext - Methods to get/set the help context ID of a TMenuItem.
GetOnClick
SetOnClick - Methods to get/set the OnClick property if the TMenuItem.
InsertItem - Creates and inserts a new sub menu item into the menu.
If (Index < 0) or (Index >= ItemCount) then the
operation is an append.
}
TIMenuItemIntf = class(TInterface)
public
function DestroyMenuItem: Boolean; virtual; stdcall; abstract;
function GetIndex: Integer; virtual; stdcall; abstract;
function GetItemCount: Integer; virtual; stdcall; abstract;
function GetItem(Index: Integer): TIMenuItemIntf; virtual; stdcall; abstract;
function GetName: string; virtual; stdcall; abstract;
function GetParent: TIMenuItemIntf; virtual; stdcall; abstract;
function GetCaption: string; virtual; stdcall; abstract;
function SetCaption(const Caption: string): Boolean; virtual; stdcall; abstract;
function GetShortCut: Integer; virtual; stdcall; abstract;
function SetShortCut(ShortCut: Integer): Boolean; virtual; stdcall; abstract;
function GetFlags: TIMenuFlags; virtual; stdcall; abstract;
function SetFlags(Mask, Flags: TIMenuFlags): Boolean; virtual; stdcall; abstract;
function GetGroupIndex: Integer; virtual; stdcall; abstract;
function SetGroupIndex(GroupIndex: Integer): Boolean; virtual; stdcall; abstract;
function GetHint: string; virtual; stdcall; abstract;
function SetHint(Hint: string): Boolean; virtual; stdcall; abstract;
function GetContext: Integer; virtual; stdcall; abstract;
function SetContext(Context: Integer): Boolean; virtual; stdcall; abstract;
function GetOnClick: TIMenuClickEvent; virtual; stdcall; abstract;
function SetOnClick(Click: TIMenuClickEvent): Boolean; virtual; stdcall; abstract;
function InsertItem(Index: Integer; Caption, Name, Hint: string;
ShortCut, Context, GroupIndex: Integer; Flags: TIMenuFlags;
EventHandler: TIMenuClickEvent): TIMenuItemIntf; virtual; stdcall; abstract;
end;
{ The TIMainMenuIntf class represents the Delphi main menu.
GetMenuItems - Returns the menu representing the top level menus.
FinMenuItem - Given the VCL component name, returns the corresponding
TIMenuItemIntf.
}
TIMainMenuIntf = class(TInterface)
public
function GetMenuItems: TIMenuItemIntf; virtual; stdcall; abstract;
function FindMenuItem(const Name: string): TIMenuItemIntf; virtual; stdcall; abstract;
end;
{ The TIAddInNotifier allows an add-in tool to register a descendant of this
type with Delphi in order to receive notifications about certian events
within Delphi. It is the resposibility of the add-in tool to unregister
and free this class when shutting down.
FileNotification - Called whenever an operation is performed from the
FileMenu (or through the TIToolInterface).
fnFileOpening - The given filename is about to be opened. Set
Cancel to True to prevent the operation.
fnFileOpened - The given file has been successfully opened.
Modifications to Cancel have no effect.
fnFileClosing - The given file is about to be closed. Set Cancel
to True to prevent the file from closing.
fnProjectOpening - The given project is about to be opened. Set
Cancel to True to prevent the operation.
fnProjectOpened - The given project has been successfully opened.
Modifications to Cancel have no effect.
fnProjectClosing - The given project is about to be closed. Set
Cancel to True to prevent the project from closing.
fnAddedToProject - The given file was added to the project.
fnRemovedFromProject - The given file was removed from the project.
fnDefaultDesktopSave
fnDefaultDekstopLoad
fnProjectDesktopSave
fnProjectDesktopLoad - The given filename represents a desktop is
being loaded or saved. The desktop file is
in standard .INI file format. Add in written
using Delphi can use the TIniFile component
to add and retrieve information from this file.
Modifying Cancel has no effect;
NOTE: Modifying Cancel should be done with care. Multiple notifiers
could interact, yielding unpredictable results. Notifiers are
called in the reverse order in which they are registered. There
is also no way to guarantee the registration order of the
notifiers.
}
TFileNotification = (fnFileOpening, fnFileOpened, fnFileClosing,
fnProjectOpening, fnProjectOpened, fnProjectClosing, fnAddedToProject,
fnRemovedFromProject, fnDefaultDesktopLoad, fnDefaultDesktopSave,
fnProjectDesktopLoad, fnprojectDesktopSave);
TIAddInNotifier = class(TInterface)
public
procedure FileNotification(NotifyCode: TFileNotification;
const FileName: string; var Cancel: Boolean); virtual; stdcall; abstract;
end;
{ The Tool services object is created on the application side, and is
passed to the VCS/Expert Manager DLL during initialization. Note that
the application is responsible for creating and freeing the interface
object, and the client should never free the interface.
The following functions are available to the client:
( Actions )
CloseProject - returns True if no project open, or if the currently
open project can be closed.
OpenProject - returns True if the named project can be opened. Pass an
empty string to create a new project and main form.
OpenProjectInfo - returns True if the named project file can be opened.
This routine bypasses all the normal project load
features (such as loading a desktop file, showing
the source code, etc), and simply opens the .DPR and
.DOF files.
SaveProject - returns True if the project is unmodified, if there
is no project open, or if the open project can be saved.
CloseFile - returns True if the specified file is not currently
open, or if it can be closed.
OpenFile - returns True if the specified file is already open
or can be opened.
ReloadFile - returns True if the file is already open and was
reloaded from disk. (NOTE: This will not perform any
checking of the current editor state).
ModalDialogBox - used by non-VCL DLL's to present a dialog box which is
modal. Note that DLLs written using VCL can simply call
a form's ShowModal function.
CreateModule - Will create new module from memory images of the source
and, optionally, the form file. The TCreateModuleFlags are:
cmAddToProject - Add the new module to the currently open project.
cmShowSource - Show the source file in the top-most editor window.
cmShowForm - If a form is created, show it above the source.
cmUnNamed - Will mark the module as unnamed which will cause the
SaveAs dialog to show the first time the user attempts to
save the file.
cmNewUnit - Creates a new unit and adds it to the current project.
NOTE: all other parameters are ignored.
cmNewForm - Creates a new form and adds it to the current project.
NOTE: all other parameters are ignored.
cmNewModel - Creates a new Data Model and adds it to the current
project. NOTE: all other parameters are ignored.
cmMainForm - If the module includes a form, make it the main form of
the currently open project. Only valid with the
cmAddToProject option.
cmMarkModified - Will insure that the new module is marked as modified.
cmExisting - Will Create a module from an existing file on disk
CreateModuleEx - New extended form of CreateModule. This will return a
TIModuleInterface. All CreateModes from CreateModule are
supported with only the following differences:
cmExisting - Will create an existing module from the given file
system.
AncestorClass - This must specify an existing base class in the project.
(use the cmAddToProject flag to add a module to the
project first).
CreateCppModule - same as CreateModuleEx but uses an additional
HdrSource module for the .pas or .h hdr file
NOTES: Pass an empty string for the file system parameter in
order to use the default file system. The file system
parameter *must* be a valid file system previously
registered through the RegisiterFilesystem API.
( Informational )
GetParentHandle - returns a HWND, which should be used as the parent for
any windows created by the client.
GetProjectName - returns a fully qualified path name of the currently
open project file, or an empty string if no project is
open.
GetUnitCount - returns the current number of units belonging to the
project.
GetUnitName - returns a fully qualified name of the specified unit.
GetVcsCount - returns the current number of files in project that
should be added to a vcs system
GetVcsList - returns a full list of files in project that should
be added to vcs
GetVcsName - returns a fully qualified name of the specified unit.
EnumProjectUnits - Calls EnumProc once for each unit in the project.
GetFormCount - returns the current number of forms belonging to the
project.
GetFormName - returns a fully qualified name of the specified form
file.
GetCurrentFile - returns a fully qualified name of the current file,
which could either be a form or unit (.PAS).
Returns a blank string if no file is currently selected.
IsFileOpen - returns True if the named file is currently open.
GetNewModuleName - Automatically generates a valid Filename and Unit
identifier. Uses the same mechanism as used by the IDE.
( Component library interface )
GetModuleCount - Returns the number of currently installed modules in the
component library.
GetModuleName - Returns then name of the module given its index.
GetComponentCount- Returns the number of components installed in a particular
module.
GetComponentName - Returns the name of the component given its module index
and index in that mnodule.
( Virtual file system interface )
RegisterFileSystem - Registers an externally defined file system.
UnRegisterFileSystem - UnRegisters an externally defined file system.
( Module Interfaces )
GetModuleInterface - Return an module interface associated with the given
file. NOTE: This function returns the same interface
instance for a given module, only the reference count
is adjusted. The user of this interface owns it and
must call release when finished.
GetFormModuleInterface - Return an module interface associated with the
given form. NOTE: See GetModuleInterface.
( Menu Interface )
GetMainMenu - Returns an interface to the IDE's main menu.
See TIMainMenuIntf for details.
( Notification registration )
AddNotifier - Registers an instance of a descendant to TIAddIn-
Notifier.
RemoveNotifier - Removes a registered instance of a TIAddInNotifier.
( Pascal string handling functions )
NOTE: These functions are provided for IDE add-in writers to use a language
other than Pascal. (C++, for example). Add-in writers using Delphi
will never need to use these functions (see doc about the ShareMem
unit and DELPHIMM.DLL)
NewPascalString - Allocates and returns a pascal long string from the
provided PChar (char *, in C parlance). Passing an
empty string or nil for the PChar will return nil for
the string (Pascal's equivilant of an empty string).
FreePascalString - Attempts to free the given Pascal string by
decrementing the internal reference count and
releasing the memory if the count returns to zero.
ReferencePascalString - Increments the reference count of the given Pascal
string. This allows the calling function to
manually extend the lifetime of the string. NOTE:
a corresponding call to FreePascalString must be
made in order to actually release the string's
memory.
AssignPascalString - Assigns one Pascal string to another. NOTE: NEVER
directly assign Pascal strings to each other. Doing
so will orphan memory and cause a memory leak. The
destination may be referencing another string, so
the reference count of that string must be decremented.
Likewise, the reference count of the source string
must be incremented.
( Error handling )
RaiseException - This will cause an Exception to be raised with the IDE
with the string passed to this function. ***NOTE: This
will cause the stack to unwind and control will **NOT**
return to this point. It is the resposibility of the
Library to be sure it has correctly handled the error
condition before calling this procedure.
( Configuration Access )
GetBaseRegistryKey - returns a string representing the full path to
Delphi's base registry key. This key is relative
to HKEY_CURRENT_USER.
}
TCreateModuleFlag = (cmAddToProject, cmShowSource, cmShowForm,
cmUnNamed, cmNewUnit, cmNewForm, cmMainForm, cmMarkModified,
cmNewFile, cmExisting);
TCreateModuleFlags = set of TCreateModuleFlag;
TProjectEnumProc = function (Param: Pointer; const FileName, UnitName,
FormName: string): Boolean stdcall;
TIToolServices = class(TInterface)
public
{ Action interfaces }
function CloseProject: Boolean; virtual; stdcall; abstract;
function OpenProject(const ProjName: string): Boolean; virtual; stdcall; abstract;
function OpenProjectInfo(const ProjName: string): Boolean; virtual; stdcall; abstract;
function SaveProject: Boolean; virtual; stdcall; abstract;
function CloseFile(const FileName: string): Boolean; virtual; stdcall; abstract;
function SaveFile(const FileName: string): Boolean; virtual; stdcall; abstract;
function OpenFile(const FileName: string): Boolean; virtual; stdcall; abstract;
function ReloadFile(const FileName: string): Boolean; virtual; stdcall; abstract;
function ModalDialogBox(Instance: THandle; TemplateName: PChar; WndParent: HWnd;
DialogFunc: TFarProc; InitParam: LongInt): Integer; virtual; stdcall; abstract;
function CreateModule(const ModuleName: string;
Source, Form: TIStream; CreateFlags: TCreateModuleFlags): Boolean;
virtual; stdcall; abstract;
function CreateModuleEx(const ModuleName, FormName, AncestorClass,
FileSystem: string; Source, Form: TIStream;
CreateFlags: TCreateModuleFlags): TIModuleInterface; virtual; stdcall; abstract;
{ Project/UI information }
function GetParentHandle: HWND; virtual; stdcall; abstract;
function GetProjectName: string; virtual; stdcall; abstract;
function GetUnitCount: Integer; virtual; stdcall; abstract;
function GetUnitName(Index: Integer): string; virtual; stdcall; abstract;
function EnumProjectUnits(EnumProc: TProjectEnumProc; Param: Pointer): Boolean;
virtual; stdcall; abstract;
function GetFormCount: Integer; virtual; stdcall; abstract;
function GetFormName(Index: Integer): string; virtual; stdcall; abstract;
function GetCurrentFile: string; virtual; stdcall; abstract;
function IsFileOpen(const FileName: string): Boolean; virtual; stdcall; abstract;
function GetNewModuleName(var UnitIdent, FileName: string): Boolean; virtual; stdcall; abstract;
{ Component Library interface }
function GetModuleCount: Integer; virtual; stdcall; abstract;
function GetModuleName(Index: Integer): string; virtual; stdcall; abstract;
function GetComponentCount(ModIndex: Integer): Integer; virtual; stdcall; abstract;
function GetComponentName(ModIndex, CompIndex: Integer): string; virtual; stdcall; abstract;
{function InstallModule(const ModuleName: string): Boolean; virtual; stdcall; abstract;
function CompileLibrary: Boolean; virtual; stdcall; abstract;}
{ Virtual File system interfaces }
function RegisterFileSystem(AVirtualFileSystem: TIVirtualFileSystem): Boolean; virtual; stdcall; abstract;
function UnRegisterFileSystem(const Ident: string): Boolean; virtual; stdcall; abstract;
function GetFileSystem(const Ident: string): TIVirtualFileSystem; virtual; stdcall; abstract;
{ Editor Interfaces }
function GetModuleInterface(const FileName: string): TIModuleInterface;
virtual; stdcall; abstract;
function GetFormModuleInterface(const FormName: string): TIModuleInterface;
virtual; stdcall; abstract;
{ Menu Interfaces }
function GetMainMenu: TIMainMenuIntf; virtual; stdcall; abstract;
{ Notification registration }
function AddNotifier(AddInNotifier: TIAddInNotifier): Boolean;
virtual; stdcall; abstract;
function RemoveNotifier(AddInNotifier: TIAddInNotifier): Boolean;
virtual; stdcall; abstract;
{ Pascal string handling functions }
function NewPascalString(Str: PChar): Pointer; virtual; stdcall; abstract;
procedure FreePascalString(var Str: Pointer); virtual; stdcall; abstract;
procedure ReferencePascalString(var Str: Pointer); virtual; stdcall; abstract;
procedure AssignPascalString(var Dest, Src: Pointer); virtual; stdcall; abstract;
{ Error handling }
procedure RaiseException(const Message: string); virtual; stdcall; abstract;
{ Configuration Access }
function GetBaseRegistryKey: string; virtual; stdcall; abstract;
{$IFDEF PRONTO}
function CreateCppModule(const ModuleName, FormName, AncestorClass,
FileSystem: string; HdrSource, Source, Form: TIStream;
CreateFlags: TCreateModuleFlags): TIModuleInterface; virtual; stdcall; abstract;
function GetVcsCount: Integer; virtual; stdcall; abstract;
procedure GetVcsList(List: TStringList); virtual; stdcall; abstract;
function GetVcsName(Index: Integer): string; virtual; stdcall; abstract;
{$ENDIF}
end;
implementation
end.