]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/module.h
Resolve ambiguity between GetClientXXX() methods in wxOSX wxComboBox.
[wxWidgets.git] / interface / wx / module.h
index ec801b608e0e3e9cf8e9998c82a191f662db8b7f..66b4140fc8e772fb6f27d9dc7bbdb1e6023fae81 100644 (file)
@@ -3,59 +3,58 @@
 // Purpose:     interface of wxModule
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
     @class wxModule
-    @wxheader{module.h}
 
     The module system is a very simple mechanism to allow applications (and parts
     of wxWidgets itself) to define initialization and cleanup functions that are
     automatically called on wxWidgets startup and exit.
 
     To define a new kind of module, derive a class from wxModule, override the
-    wxModule::OnInit and wxModule::OnExit
-    functions, and add the DECLARE_DYNAMIC_CLASS and IMPLEMENT_DYNAMIC_CLASS to
-    header and implementation files (which can be the same file). On
-    initialization, wxWidgets will find all classes derived from wxModule, create
-    an instance of each, and call each OnInit function. On exit, wxWidgets will
-    call the OnExit function for each module instance.
+    wxModule::OnInit and wxModule::OnExit functions, and add the
+    wxDECLARE_DYNAMIC_CLASS and wxIMPLEMENT_DYNAMIC_CLASS to header and implementation
+    files (which can be the same file).
+    On initialization, wxWidgets will find all classes derived from wxModule, create
+    an instance of each, and call each wxModule::OnInit function. On exit, wxWidgets
+    will call the wxModule::OnExit function for each module instance.
 
     Note that your module class does not have to be in a header file.
 
     For example:
 
     @code
-    // A module to allow DDE initialization/cleanup
+        // A module to allow DDE initialization/cleanup
       // without calling these functions from app.cpp or from
       // the user's application.
       class wxDDEModule: public wxModule
       {
       public:
           wxDDEModule() { }
-          virtual bool OnInit() { wxDDEInitialize(); return @true; };
+          virtual bool OnInit() { wxDDEInitialize(); return true; };
           virtual void OnExit() { wxDDECleanUp(); };
 
       private:
-          DECLARE_DYNAMIC_CLASS(wxDDEModule)
+          wxDECLARE_DYNAMIC_CLASS(wxDDEModule);
       };
 
-      IMPLEMENT_DYNAMIC_CLASS(wxDDEModule, wxModule)
+      wxIMPLEMENT_DYNAMIC_CLASS(wxDDEModule, wxModule);
 
       // Another module which uses DDE in its OnInit()
       class MyModule: public wxModule
       {
       public:
-          MyModule() { AddDependency(CLASSINFO(wxDDEModule)); }
+          MyModule() { AddDependency(wxCLASSINFO(wxDDEModule)); }
           virtual bool OnInit() { ... code using DDE ... }
           virtual void OnExit() { ... }
 
       private:
-          DECLARE_DYNAMIC_CLASS(MyModule)
+          wxDECLARE_DYNAMIC_CLASS(MyModule);
       };
 
-      IMPLEMENT_DYNAMIC_CLASS(MyModule, wxModule)
+      wxIMPLEMENT_DYNAMIC_CLASS(MyModule, wxModule);
 
       // Another module which uses DDE in its OnInit()
       // but uses a named dependency
           virtual void OnExit() { ... }
 
       private:
-          DECLARE_DYNAMIC_CLASS(MyModule2)
+          wxDECLARE_DYNAMIC_CLASS(MyModule2)
       };
 
-      IMPLEMENT_DYNAMIC_CLASS(MyModule2, wxModule)
+      wxIMPLEMENT_DYNAMIC_CLASS(MyModule2, wxModule)
     @endcode
 
     @library{wxbase}
-    @category{FIXME}
+    @category{appmanagement}
 */
 class wxModule : public wxObject
 {
@@ -87,40 +86,46 @@ public:
     /**
         Destructor.
     */
-    ~wxModule();
+    virtual ~wxModule();
 
-    //@{
     /**
-        Call this function from the constructor of the derived class. @a dep must be
-        the CLASSINFO() of a wxModule-derived class and the
-        corresponding module will be loaded before and unloaded after
-        this module.
-        The second version of this function allows a dependency to be added by
-        name without access to the class info.  This is useful when a module is
-        declared entirely in a source file and there is no header for the declaration
-        of the module needed by CLASSINFO(), however errors are
-        not detected until run-time, instead of compile-time, then.
-        Note that circular dependencies are detected and result in a fatal error.
+        Provide this function with appropriate cleanup for your module.
+    */
+    virtual void OnExit() = 0;
+
+    /**
+        Provide this function with appropriate initialization for your module.
+        If the function returns @false, wxWidgets will exit immediately.
+    */
+    virtual bool OnInit() = 0;
+
+protected:
+
+    /**
+        Call this function from the constructor of the derived class.
+
+        @a dep must be the wxCLASSINFO() of a wxModule-derived class and the
+        corresponding module will be loaded before and unloaded after this module.
 
         @param dep
             The class information object for the dependent module.
-        @param classname
-            The class name of the dependent module.
     */
     void AddDependency(wxClassInfo* dep);
-    void AddDependency(const char* classname);
-    //@}
 
     /**
-        Provide this function with appropriate cleanup for your module.
-    */
-    virtual void OnExit();
+        Call this function from the constructor of the derived class.
 
-    /**
-        Provide this function with appropriate initialization for your module. If the
-        function
-        returns @false, wxWidgets will exit immediately.
+        This overload allows a dependency to be added by name without access to
+        the class info.
+
+        This is useful when a module is  declared entirely in a source file and
+        there is no header for the declaration of the module needed by wxCLASSINFO(),
+        however errors are not detected until run-time, instead of compile-time, then.
+        Note that circular dependencies are detected and result in a fatal error.
+
+        @param classname
+            The class name of the dependent module.
     */
-    virtual bool OnInit();
+    void AddDependency(const char* classname);
 };