wxStudio was designed to provide a basic framework for variety of loosely coupled and replaceable components.

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


SourceForge Logo