Extending the i De
Click here to load reader
Transcript of Extending the i De
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:
ToDoHint: Create a new component via the package editor.
-------------------------------------------------------------------------------Writing component editors:
ToDoHint: see componenteditors.pas for examples
-------------------------------------------------------------------------------Writing property editors
ToDoHint: 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 severalevents for designing. Each event calls a list of handlers. The default handlersare added by the IDE. You can add your own handlers with the AddHandlerXXX andRemoveHandlerXXX 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