mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-25 04:19:23 +02:00
126 lines
3.2 KiB
Plaintext
126 lines
3.2 KiB
Plaintext
Extending the IDE (Overview)
|
|
============================
|
|
|
|
The online pages are more uptodate and have more examples:
|
|
http://wiki.lazarus.freepascal.org/Extending_the_IDE
|
|
|
|
|
|
|
|
The IDE supports several types of plugins:
|
|
|
|
Components
|
|
These are the items in the component palette. For a example TButton can be
|
|
used to create Buttons.
|
|
|
|
Component Editors
|
|
Component editors are used when you double click on a component in the
|
|
designer or to add some extra items to the popup menu of the designer, when
|
|
you right click on a component.
|
|
|
|
Property Editors
|
|
These are used by the rows in the object inspector.
|
|
|
|
Experts
|
|
These are all other types.
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
There are two possibilities to add your own plugins to Lazarus:
|
|
|
|
1. Write a package, install it and register your plugins in the 'Register'
|
|
procedure of a unit.
|
|
2. Extend the lazarus code, and send your cvs diff to the lazarus mailing list.
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
Writing components:
|
|
|
|
ToDo
|
|
Hint: Create a new component via the package editor.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
Writing component editors:
|
|
|
|
ToDo
|
|
Hint: see componenteditors.pas for examples
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
Writing property editors
|
|
|
|
ToDo
|
|
Hint: see propedits.pp for examples
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
Register event handlers
|
|
|
|
There are several events in the IDE, for which plugins can add their own
|
|
handlers.
|
|
In propedits.pp there is a GlobalDesignHook object, which maintains several
|
|
events for designing. Each event calls a list of handlers. The default handlers
|
|
are added by the IDE. You can add your own handlers with the AddHandlerXXX and
|
|
RemoveHandlerXXX methods. They will be called before the default handlers.
|
|
Examples:
|
|
|
|
Adding your handler (this is normally done in the constructor of your object):
|
|
GlobalDesignHook.AddHandlerComponentAdded(@YourOnComponentAdded);
|
|
|
|
Removing your handler:
|
|
GlobalDesignHook.RemoveHandlerComponentAdded(@YourOnComponentAdded);
|
|
|
|
You can remove all handlers at once. For example, it is a good idea to add
|
|
this line in the destructor of object:
|
|
GlobalDesignHook.RemoveAllHandlersForObject(Self);
|
|
|
|
|
|
The handlers of GlobalDesignHook:
|
|
|
|
// lookup root
|
|
ChangeLookupRoot
|
|
Called when the LookupRoot changed.
|
|
The LookupRoot is the owner object of the currently selected components.
|
|
Normally this is a TForm.
|
|
|
|
// methods
|
|
CreateMethod
|
|
GetMethodName
|
|
GetMethods
|
|
MethodExists
|
|
RenameMethod
|
|
ShowMethod
|
|
Called
|
|
MethodFromAncestor
|
|
ChainCall
|
|
|
|
// components
|
|
GetComponent
|
|
GetComponentName
|
|
GetComponentNames
|
|
GetRootClassName
|
|
ComponentRenamed
|
|
Called when a component was renamed
|
|
ComponentAdded
|
|
Called when a new component was added to the LookupRoot
|
|
ComponentDeleting
|
|
Called before a component is freed.
|
|
DeleteComponent
|
|
Called by the IDE to delete a component.
|
|
GetSelectedComponents
|
|
Get the current selection of components.
|
|
|
|
// persistent objects
|
|
GetObject
|
|
GetObjectName
|
|
GetObjectNames
|
|
|
|
// modifing
|
|
Modified
|
|
Revert
|
|
RefreshPropertyValues
|
|
|
|
|
|
|