]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/help.h
added interface headers with latest discussed changes
[wxWidgets.git] / interface / help.h
diff --git a/interface/help.h b/interface/help.h
new file mode 100644 (file)
index 0000000..23b83bf
--- /dev/null
@@ -0,0 +1,267 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        help.h
+// Purpose:     documentation for wxHelpController class
+// Author:      wxWidgets team
+// RCS-ID:      $Id$
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+    @class wxHelpController
+    @wxheader{help.h}
+    
+    This is a family of classes by which
+    applications may invoke a help viewer to provide on-line help.
+    
+    A help controller allows an application to display help, at the contents
+    or at a particular topic, and shut the help program down on termination.
+    This avoids proliferation of many instances of the help viewer whenever the
+    user requests a different topic via the application's menus or buttons.
+    
+    Typically, an application will create a help controller instance
+    when it starts, and immediately call @b Initialize
+    to associate a filename with it. The help viewer will only get run, however,
+    just before the first call to display something.
+    
+    Most help controller classes actually derive from wxHelpControllerBase and have
+    names of the form wxXXXHelpController or wxHelpControllerXXX. An
+    appropriate class is aliased to the name wxHelpController for each platform, as
+    follows:
+    
+     On desktop Windows, wxCHMHelpController is used (MS HTML Help).
+     On Windows CE, wxWinceHelpController is used.
+     On all other platforms, wxHtmlHelpController is used if wxHTML is
+    compiled into wxWidgets; otherwise wxExtHelpController is used (for invoking an
+    external
+    browser).
+    
+    The remaining help controller classes need to be named
+    explicitly by an application that wishes to make use of them.
+    
+    There are currently the following help controller classes defined:
+    
+     wxWinHelpController, for controlling Windows Help.
+     wxCHMHelpController, for controlling MS HTML Help. To use this, you need to
+    set wxUSE_MS_HTML_HELP
+    to 1 in setup.h and have htmlhelp.h header from Microsoft's HTML Help kit (you
+    don't need
+    VC++ specific htmlhelp.lib because wxWidgets loads necessary DLL at runtime and
+    so it
+    works with all compilers).
+     wxBestHelpController, for controlling MS HTML Help or, if Microsoft's runtime
+    is
+    not available, wxHtmlHelpController. You need to provide
+    @b both CHM and HTB versions of the help file. For 32bit Windows only.
+     wxExtHelpController, for controlling external browsers under Unix.
+    The default browser is Netscape Navigator. The 'help' sample shows its use.
+     wxWinceHelpController, for controlling a simple @c .htm help controller for
+    Windows CE applications.
+     wxHtmlHelpController, a sophisticated help controller using wxHTML, in
+    a similar style to the Microsoft HTML Help viewer and using some of the same
+    files.
+    Although it has an API compatible with other help controllers, it has more
+    advanced features, so it is
+    recommended that you use the specific API for this class instead. Note that if
+    you
+    use .zip or .htb formats for your books, you
+    must add this line to your application initialization: @c
+    wxFileSystem::AddHandler(new wxArchiveFSHandler);
+    or nothing will be shown in your help window.
+    
+    
+    @library{wxbase}
+    @category{help}
+    
+    @seealso
+    wxHtmlHelpController, wxHTML
+*/
+class wxHelpController : public wxObject
+{
+public:
+    /**
+        Constructs a help instance object, but does not invoke the help viewer.
+        
+        If you provide a window, it will be used by some help controller classes, such
+        as
+        wxCHMHelpController, wxWinHelpController and wxHtmlHelpController, as the
+        parent for the help window instead of the value of wxApp::GetTopWindow. You can
+        also change the parent window later with 
+        SetParentWindow().
+    */
+    wxHelpController(wxWindow* parentWindow = @NULL);
+
+    /**
+        Destroys the help instance, closing down the viewer if it is running.
+    */
+    ~wxHelpController();
+
+    /**
+        If the help viewer is not running, runs it and displays the file at the given
+        block number.
+        
+        @e WinHelp: Refers to the context number.
+        
+        @e MS HTML Help: Refers to the context number.
+        
+        @e External HTML help: the same as for DisplaySection().
+        
+        @e wxHtmlHelpController: @e sectionNo is an identifier as specified in the @c
+        .hhc file. See @ref overview_helpformat "Help files format".
+        
+        This function is for backward compatibility only, and applications should use
+        @ref displaysection() wxHelpController instead.
+    */
+    virtual bool DisplayBlock(long blockNo);
+
+    /**
+        If the help viewer is not running, runs it and displays the
+        contents.
+    */
+    virtual bool DisplayContents();
+
+    /**
+        Displays the section as a popup window using a context id.
+        
+        Returns @false if unsuccessful or not implemented.
+    */
+    virtual bool DisplayContextPopup(int contextId);
+
+    //@{
+    /**
+        If the help viewer is not running, runs it and displays the given section.
+        
+        @e WinHelp, MS HTML Help @e sectionNo is a context id.
+        
+        @e External HTML help: wxExtHelpController implements @e sectionNo as an id in
+        a map file, which is of the form:
+        @e wxHtmlHelpController: @e sectionNo is an identifier as specified in the @c
+        .hhc file. See @ref overview_helpformat "Help files format".
+        
+        See also the help sample for notes on how to specify section numbers for
+        various help file formats.
+    */
+    virtual bool DisplaySection(const wxString& section);
+        virtual bool DisplaySection(int sectionNo);
+    //@}
+
+    /**
+        Displays the text in a popup window, if possible.
+        
+        Returns @false if unsuccessful or not implemented.
+    */
+    virtual bool DisplayTextPopup(const wxString& text,
+                                  const wxPoint& pos);
+
+    /**
+        wxHtmlHelpController returns the frame, size and position.
+        
+        For all other help controllers, this function does nothing
+        and just returns @NULL.
+        
+        @param viewer 
+        This defaults to "netscape" for wxExtHelpController.
+        
+        @param flags 
+        This defaults to wxHELP_NETSCAPE for wxExtHelpController, indicating
+        that the viewer is a variant of Netscape Navigator.
+    */
+    virtual wxFrame * GetFrameParameters(const wxSize * size = @NULL,
+                                         const wxPoint * pos = @NULL,
+                                         bool * newFrameEachTime = @NULL);
+
+    /**
+        Returns the window to be used as the parent for the help window. This window is
+        used
+        by wxCHMHelpController, wxWinHelpController and wxHtmlHelpController.
+    */
+    virtual wxWindow* GetParentWindow();
+
+    //@{
+    /**
+        Initializes the help instance with a help filename, and optionally a server
+        socket
+        number if using wxHelp (now obsolete). Does not invoke the help viewer.
+        This must be called directly after the help instance object is created and
+        before
+        any attempts to communicate with the viewer.
+        
+        You may omit the file extension and a suitable one will be chosen. For
+        wxHtmlHelpController, the extensions zip, htb and hhp will be appended while
+        searching for
+        a suitable file. For WinHelp, the hlp extension is appended.
+    */
+    virtual bool Initialize(const wxString& file);
+        virtual bool Initialize(const wxString& file, int server);
+    //@}
+
+    /**
+        If the help viewer is not running, runs it, and searches for sections matching
+        the given keyword. If one match is found, the file is displayed at this
+        section. The optional parameter allows the search the index
+        (wxHELP_SEARCH_INDEX) but this currently only supported by the
+        wxHtmlHelpController.
+        
+        @e WinHelp, MS HTML Help: If more than one match is found, 
+        the first topic is displayed.
+        
+        @e External HTML help, simple wxHTML help: If more than one match is found, 
+        a choice of topics is displayed.
+        
+        @e wxHtmlHelpController: see wxHtmlHelpController::KeywordSearch.
+    */
+    virtual bool KeywordSearch(const wxString& keyWord,
+                               wxHelpSearchMode mode = wxHELP_SEARCH_ALL);
+
+    /**
+        If the help viewer is not running, runs it and loads the given file.
+        If the filename is not supplied or is
+        empty, the file specified in @b Initialize is used. If the viewer is
+        already displaying the specified file, it will not be reloaded. This
+        member function may be used before each display call in case the user
+        has opened another file.
+        
+        wxHtmlHelpController ignores this call.
+    */
+    virtual bool LoadFile(const wxString& file = "");
+
+    /**
+        Overridable member called when this application's viewer is quit by the user.
+        
+        This does not work for all help controllers.
+    */
+    virtual bool OnQuit();
+
+    /**
+        If the viewer is running, quits it by disconnecting.
+        
+        For Windows Help, the viewer will only close if no other application is using
+        it.
+    */
+    virtual bool Quit();
+
+    /**
+        For wxHtmlHelpController, the title is set (again with %s indicating the
+        page title) and also the size and position of the frame if the frame is already
+        open. @e newFrameEachTime is ignored.
+        
+        For all other help controllers this function has no effect.
+    */
+    virtual void SetFrameParameters(const wxString & title,
+                                    const wxSize & size,
+                                    const wxPoint & pos = wxDefaultPosition,
+                                    bool newFrameEachTime = @false);
+
+    /**
+        Sets the window to be used as the parent for the help window. This is used
+        by wxCHMHelpController, wxWinHelpController and wxHtmlHelpController.
+    */
+    virtual void SetParentWindow(wxWindow* parentWindow);
+
+    /**
+        Sets detailed viewer information. So far this is only relevant to
+        wxExtHelpController.
+        
+        Some examples of usage:
+    */
+    virtual void SetViewer(const wxString& viewer, long flags);
+};