]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/module.h
Temporarily disable the email notifications as we're getting false ones from
[wxWidgets.git] / interface / wx / module.h
index c8f1ff78c474218c74a99e07bd5273d89f0df0e2..289530f872f140226188c0597c19ce258519e06f 100644 (file)
     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
+    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 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:
@@ -73,7 +73,7 @@
     @endcode
 
     @library{wxbase}
-    @category{FIXME}
+    @category{misc}
 */
 class wxModule : public wxObject
 {
@@ -86,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 CLASSINFO() 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 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.
+
+        @param classname
+            The class name of the dependent module.
     */
-    virtual bool OnInit();
+    void AddDependency(const char* classname);
 };