Extending the i De

3

Click here to load reader

Transcript of Extending the i De

Page 1: 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

Page 2: Extending the i De

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

Page 3: Extending the i De

Revert RefreshPropertyValues