home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / include / wx / html / helpfrm.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  8KB  |  232 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        helpfrm.h
  3. // Purpose:     wxHtmlHelpFrame
  4. // Notes:       Based on htmlhelp.cpp, implementing a monolithic
  5. //              HTML Help controller class,  by Vaclav Slavik
  6. // Author:      Harm van der Heijden and Vaclav Slavik
  7. // RCS-ID:      $Id: helpfrm.h,v 1.31 2002/08/31 11:29:12 GD Exp $
  8. // Copyright:   (c) Harm van der Heijden and Vaclav Slavik
  9. // Licence:     wxWindows licence
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef _WX_HELPFRM_H_
  13. #define _WX_HELPFRM_H_
  14.  
  15. #if defined(__GNUG__) && !defined(__APPLE__)
  16. #pragma interface "helpfrm.h"
  17. #endif
  18.  
  19. #include "wx/defs.h"
  20.  
  21. #if wxUSE_WXHTML_HELP
  22.  
  23. #include "wx/html/helpdata.h"
  24. #include "wx/window.h"
  25. #include "wx/frame.h"
  26. #include "wx/config.h"
  27. #include "wx/splitter.h"
  28. #include "wx/notebook.h"
  29. #include "wx/listbox.h"
  30. #include "wx/choice.h"
  31. #include "wx/combobox.h"
  32. #include "wx/checkbox.h"
  33. #include "wx/stattext.h"
  34. #include "wx/html/htmlwin.h"
  35. #include "wx/html/htmprint.h"
  36. class WXDLLEXPORT wxButton;
  37.  
  38.  
  39. // style flags for the Help Frame
  40. #define wxHF_TOOLBAR                0x0001
  41. #define wxHF_CONTENTS               0x0002
  42. #define wxHF_INDEX                  0x0004
  43. #define wxHF_SEARCH                 0x0008
  44. #define wxHF_BOOKMARKS              0x0010
  45. #define wxHF_OPEN_FILES             0x0020
  46. #define wxHF_PRINT                  0x0040
  47. #define wxHF_FLAT_TOOLBAR           0x0080
  48. #define wxHF_MERGE_BOOKS            0x0100
  49. #define wxHF_ICONS_BOOK             0x0200
  50. #define wxHF_ICONS_BOOK_CHAPTER     0x0400
  51. #define wxHF_ICONS_FOLDER           0x0000 // this is 0 since it is default
  52. #define wxHF_DEFAULT_STYLE          (wxHF_TOOLBAR | wxHF_CONTENTS | \
  53.                                      wxHF_INDEX | wxHF_SEARCH | \
  54.                                      wxHF_BOOKMARKS | wxHF_PRINT)
  55. //compatibility:
  56. #define wxHF_OPENFILES               wxHF_OPEN_FILES
  57. #define wxHF_FLATTOOLBAR             wxHF_FLAT_TOOLBAR
  58. #define wxHF_DEFAULTSTYLE            wxHF_DEFAULT_STYLE
  59.  
  60.  
  61. struct wxHtmlHelpFrameCfg
  62. {
  63.     int x, y, w, h;
  64.     long sashpos;
  65.     bool navig_on;
  66. };
  67.  
  68.  
  69. class WXDLLEXPORT wxHelpControllerBase;
  70.  
  71. class WXDLLEXPORT wxHtmlHelpFrame : public wxFrame
  72. {
  73.     DECLARE_DYNAMIC_CLASS(wxHtmlHelpFrame)
  74.  
  75. public:
  76.     wxHtmlHelpFrame(wxHtmlHelpData* data = NULL) { Init(data); }
  77.     wxHtmlHelpFrame(wxWindow* parent, wxWindowID wxWindowID,
  78.                     const wxString& title = wxEmptyString,
  79.                     int style = wxHF_DEFAULT_STYLE, wxHtmlHelpData* data = NULL);
  80.     bool Create(wxWindow* parent, wxWindowID id, const wxString& title = wxEmptyString,
  81.                 int style = wxHF_DEFAULT_STYLE);
  82.     ~wxHtmlHelpFrame();
  83.  
  84.     wxHtmlHelpData* GetData() { return m_Data; }
  85.     wxHelpControllerBase* GetController() const { return m_helpController; }
  86.     void SetController(wxHelpControllerBase* controller) { m_helpController = controller; }
  87.  
  88.     // Sets format of title of the frame. Must contain exactly one "%s"
  89.     // (for title of displayed HTML page)
  90.     void SetTitleFormat(const wxString& format);
  91.  
  92.     // Displays page x. If not found it will offect the user a choice of
  93.     // searching books.
  94.     // Looking for the page runs in these steps:
  95.     // 1. try to locate file named x (if x is for example "doc/howto.htm")
  96.     // 2. try to open starting page of book x
  97.     // 3. try to find x in contents (if x is for example "How To ...")
  98.     // 4. try to find x in index (if x is for example "How To ...")
  99.     bool Display(const wxString& x);
  100.  
  101.     // Alternative version that works with numeric ID.
  102.     // (uses extension to MS format, <param name="ID" value=id>, see docs)
  103.     bool Display(const int id);
  104.  
  105.     // Displays help window and focuses contents.
  106.     bool DisplayContents();
  107.  
  108.     // Displays help window and focuses index.
  109.     bool DisplayIndex();
  110.  
  111.     // Searches for keyword. Returns TRUE and display page if found, return
  112.     // FALSE otherwise
  113.     // Syntax of keyword is Altavista-like:
  114.     // * words are separated by spaces
  115.     //   (but "\"hello world\"" is only one world "hello world")
  116.     // * word may be pretended by + or -
  117.     //   (+ : page must contain the word ; - : page can't contain the word)
  118.     // * if there is no + or - before the word, + is default
  119.     bool KeywordSearch(const wxString& keyword);
  120.  
  121.     void UseConfig(wxConfigBase *config, const wxString& rootpath = wxEmptyString)
  122.         {
  123.             m_Config = config;
  124.             m_ConfigRoot = rootpath;
  125.             ReadCustomization(config, rootpath);
  126.         }
  127.  
  128.     // Saves custom settings into cfg config. it will use the path 'path'
  129.     // if given, otherwise it will save info into currently selected path.
  130.     // saved values : things set by SetFonts, SetBorders.
  131.     void ReadCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
  132.     void WriteCustomization(wxConfigBase *cfg, const wxString& path = wxEmptyString);
  133.  
  134.     // call this to let wxHtmlHelpFrame know page changed
  135.     void NotifyPageChanged();
  136.     
  137.     // Refreshes Contents and Index tabs
  138.     void RefreshLists();
  139.     
  140. protected:
  141.     void Init(wxHtmlHelpData* data = NULL);
  142.  
  143.     // Adds items to m_Contents tree control
  144.     void CreateContents();
  145.  
  146.     // Adds items to m_IndexList
  147.     void CreateIndex();
  148.  
  149.     // Add books to search choice panel
  150.     void CreateSearch();
  151.  
  152.     // Add custom buttons to toolbar
  153.     virtual void AddToolbarButtons(wxToolBar *toolBar, int style);
  154.  
  155.     // Displays options dialog (fonts etc.)
  156.     virtual void OptionsDialog();
  157.  
  158.     void OnToolbar(wxCommandEvent& event);
  159.     void OnContentsSel(wxTreeEvent& event);
  160.     void OnIndexSel(wxCommandEvent& event);
  161.     void OnIndexFind(wxCommandEvent& event);
  162.     void OnIndexAll(wxCommandEvent& event);
  163.     void OnSearchSel(wxCommandEvent& event);
  164.     void OnSearch(wxCommandEvent& event);
  165.     void OnBookmarksSel(wxCommandEvent& event);
  166.     void OnCloseWindow(wxCloseEvent& event);
  167.     void OnActivate(wxActivateEvent& event);
  168.  
  169.     // Images:
  170.     enum {
  171.         IMG_Book = 0,
  172.         IMG_Folder,
  173.         IMG_Page
  174.     };
  175.  
  176. protected:
  177.     wxHtmlHelpData* m_Data;
  178.     bool m_DataCreated;  // m_Data created by frame, or supplied?
  179.     wxString m_TitleFormat;  // title of the help frame
  180.     // below are various pointers to GUI components
  181.     wxHtmlWindow *m_HtmlWin;
  182.     wxSplitterWindow *m_Splitter;
  183.     wxPanel *m_NavigPan;
  184.     wxNotebook *m_NavigNotebook;
  185.     wxTreeCtrl *m_ContentsBox;
  186.     wxTextCtrl *m_IndexText;
  187.     wxButton *m_IndexButton;
  188.     wxButton *m_IndexButtonAll;
  189.     wxListBox *m_IndexList;
  190.     wxTextCtrl *m_SearchText;
  191.     wxButton *m_SearchButton;
  192.     wxListBox *m_SearchList;
  193.     wxChoice *m_SearchChoice;
  194.     wxStaticText *m_IndexCountInfo;
  195.     wxCheckBox *m_SearchCaseSensitive;
  196.     wxCheckBox *m_SearchWholeWords;
  197.  
  198.     wxComboBox *m_Bookmarks;
  199.     wxArrayString m_BookmarksNames, m_BookmarksPages;
  200.  
  201.     wxHtmlHelpFrameCfg m_Cfg;
  202.  
  203.     wxConfigBase *m_Config;
  204.     wxString m_ConfigRoot;
  205.  
  206.     // pagenumbers of controls in notebook (usually 0,1,2)
  207.     int m_ContentsPage;
  208.     int m_IndexPage;
  209.     int m_SearchPage;
  210.  
  211.     // lists of available fonts (used in options dialog)
  212.     wxArrayString *m_NormalFonts, *m_FixedFonts;
  213.     int m_FontSize; // 0,1,2 = small,medium,big
  214.     wxString m_NormalFace, m_FixedFace;
  215.  
  216.     bool m_UpdateContents;
  217.  
  218. #if wxUSE_PRINTING_ARCHITECTURE
  219.     wxHtmlEasyPrinting *m_Printer;
  220. #endif
  221.     wxHashTable *m_PagesHash;
  222.     wxHelpControllerBase* m_helpController;
  223.  
  224.     int m_hfStyle;
  225.  
  226.     DECLARE_EVENT_TABLE()
  227. };
  228.  
  229. #endif // wxUSE_WXHTML_HELP
  230.  
  231. #endif
  232.