The framework defines
abstract interfaces for most general entities of wxStudio, such
as workplace, project, opened file, plugin, etc. Entities which are
always present at run-time, are referred as "modules", whereas
others are optional and usually represent "plugins" of various
types. Instances of modules always can be obtained by calling static
GetInstance()" method of the interface class. Both modules and
plugins have their interface and implementing classes, this separation
is introduced in order to maintain binary compatibility among plugins
which as opposed to modules, will be linked dynamicly.
Besides regular
interfaces, components may define "listener" interfaces for
broadcasting related notifications. Components which are willing
to receive these notifications, usually implemented listener interfaces
by inheriting them as a second or third base class. Listeners then
subscribe for notifications by calling "AddListener(..)"
method of the event provider. Other event-dispatching method relies on wxWindows
messaging mechanism, where events of a particular component can be
intercepted by pushing event-handler onto the top of event
receivers-chain. The latter case applies only for components which have
a window object associated with them, such as editor or browser plugins.
Note: the latter
method does not guarantee the order of which events are intercepted by
multiple event-handling plugins, thus it's likely that we will introduce
more explicit means for setting up and maintaining this order.
Document prepared by
Aleksandras Gluchovas