OpenDoc provides users the ability to customize their OpenDoc run-time by installing OpenDoc Shell Plug-Ins. An OpenDoc Shell Plug-In is simply a shared library located in the OpenDoc Shell Plug-Ins folder or directory that exports a symbol called ODShellPlugInInstall. This document provides sample code for implementing a Shell Plug-In.
On the OS/2 platform, once you have successfully built the DLL, place it in the OpenDoc Shell Plug-Ins folder. The ID string of the folder is <OD_SHELLPLUGINS>.
For Windows and AIX, once you have successfully built the DLL, or shared object, place it in the directory defined by the ODSHELLPLUGINS environment variable.
#define INCL_DOSERRORS #define INCL_ODAPI #define INCL_ODDRAFT #include <ODos2.h> #include <ShPlugIn.h> #ifdef __cplusplus extern "C" { #endif APIRET APIENTRY ODShellPluginInstall(Environment* ev, ODDraft* draft, ODShellPluginActionCodes* action); #ifdef __cplusplus } #endif APIRET APIENTRY ODShellPluginInstall(Environment* ev, ODDraft* draft, ODShellPluginActionCodes* action) { somPrintf("\pPlugin got called"); // Now tell the Shell to free our library // as soon as we return. // This is not what most plugins will want to do, but it is the right // thing to do if you are just displaying a debug string. // If you wanted to leave the library open, say because you would // registered an object in an object name space, you would clear the // kODShellPluginCloseConnection bit. *action |= kODShellPluginCloseConnection; // Return NO_ERROR if there are no problems. // Any other error causes the Shell to unload the plug-in. // Note that the Shell ignores errors returned via the Environment* // parameter. // Pass ev to OpenDoc routines that you call from here if they require it, // but if any of them returns an error that way you will have to deal // with it yourself (if it needs dealing with at all). // If the Shell gets NO_ERROR back from your plugin it assumes all is // well and continues. return NO_ERROR; } |
Note:
When you link the shell plug-in, you must export the ODShellPluginInstall function in the module definition file.