- if (data) {
- m_Data = data;
- m_DataCreated = FALSE;
- } else {
- m_Data = new wxHtmlHelpData();
- m_DataCreated = TRUE;
- }
-
- m_ContentsImageList = new wxImageList(16, 16);
- m_ContentsImageList -> Add(wxICON(wbook));
- m_ContentsImageList -> Add(wxICON(wfolder));
- m_ContentsImageList -> Add(wxICON(wpage));
- m_ContentsImageList -> Add(wxICON(whlproot));
-
- m_ContentsBox = NULL;
- m_IndexList = NULL;
- m_IndexButton = NULL;
- m_IndexButtonAll = NULL;
- m_IndexText = NULL;
- m_SearchList = NULL;
- m_SearchButton = NULL;
- m_SearchText = NULL;
- m_SearchChoice = NULL;
- m_IndexCountInfo = NULL;
- m_Splitter = NULL;
- m_NavigPan = NULL;
- m_HtmlWin = NULL;
- m_Bookmarks = NULL;
- m_SearchCaseSensitive = NULL;
- m_SearchWholeWords = NULL;
-
- m_Config = NULL;
- m_ConfigRoot = wxEmptyString;
-
- m_Cfg.x = m_Cfg.y = 0;
- m_Cfg.w = 700;
- m_Cfg.h = 480;
- m_Cfg.sashpos = 240;
- m_Cfg.navig_on = TRUE;
-
- m_NormalFonts = m_FixedFonts = NULL;
- m_NormalFace = m_FixedFace = wxEmptyString;
- m_FontSize = 1;
-
-#if wxUSE_PRINTING_ARCHITECTURE
- m_Printer = NULL;
-#endif
-
- m_PagesHash = NULL;
- m_UpdateContents = TRUE;
-}
-
-// Create: builds the GUI components.
-// with the style flag it's possible to toggle the toolbar, contents, index and search
-// controls.
-// m_HtmlWin will *always* be created, but it's important to realize that
-// m_ContentsBox, m_IndexList, m_SearchList, m_SearchButton, m_SearchText and
-// m_SearchButton may be NULL.
-// moreover, if no contents, index or searchpage is needed, m_Splitter and
-// m_NavigPan will be NULL too (with m_HtmlWin directly connected to the frame)
-
-bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, const wxString& title,
- int style)
-{
- // Do the config in two steps. We read the HtmlWindow customization after we
- // create the window.
- if (m_Config)
- ReadCustomization(m_Config, m_ConfigRoot);
-
- wxFrame::Create(parent, id, _("Help"), wxPoint(m_Cfg.x, m_Cfg.y), wxSize(m_Cfg.w, m_Cfg.h), wxDEFAULT_FRAME_STYLE, "wxHtmlHelp");
-
- GetPosition(&m_Cfg.x, &m_Cfg.y);
-
- SetIcon(wxICON(whelp));
-
- int notebook_page = 0;
-
- CreateStatusBar();
-
- // toolbar?
- if (style & wxHF_TOOLBAR) {
- wxToolBar *toolBar = CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL | wxTB_DOCKABLE);
- toolBar->SetMargins( 2, 2 );
- AddToolbarButtons(toolBar, style);
- toolBar -> Realize();
- }
-
- if (style & (wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH)) {
- // traditional help controller; splitter window with html page on the
- // right and a notebook containing various pages on the left
- m_Splitter = new wxSplitterWindow(this);
-
- m_HtmlWin = new wxHtmlHelpHtmlWindow(this, m_Splitter);
- m_NavigPan = new wxNotebook(m_Splitter, wxID_HTML_NOTEBOOK,
- wxDefaultPosition, wxDefaultSize);
- } else { // only html window, no notebook with index,contents etc
- m_HtmlWin = new wxHtmlWindow(this);
- }
-
- m_HtmlWin -> SetRelatedFrame(this, m_TitleFormat);
- m_HtmlWin -> SetRelatedStatusBar(0);
- if (m_Config)
- m_HtmlWin -> ReadCustomization(m_Config, m_ConfigRoot);
-
- // contents tree panel?
- if (style & wxHF_CONTENTS) {
- wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_INDEXPAGE);
-
- if (style & wxHF_BOOKMARKS) {
- wxLayoutConstraints *b1 = new wxLayoutConstraints;
- wxBitmapButton *bmpbt = new wxBitmapButton(dummy, wxID_HTML_BOOKMARKSREMOVE, wxBITMAP(wbkdel), wxDefaultPosition, wxSize(20,20));
-
- b1 -> top.SameAs (dummy, wxTop, 10);
- b1 -> right.SameAs (dummy, wxRight, 10);
- b1 -> height.AsIs();
- b1 -> width.AsIs();
- bmpbt -> SetConstraints(b1);
-
- wxLayoutConstraints *b2 = new wxLayoutConstraints;
- wxBitmapButton *bmpbt2 = new wxBitmapButton(dummy, wxID_HTML_BOOKMARKSADD, wxBITMAP(wbkadd), wxDefaultPosition, wxSize(20,20));
-
- b2 -> top.SameAs (dummy, wxTop, 10);
- b2 -> right.LeftOf (bmpbt, 2);
- b2 -> height.AsIs();
- b2 -> width.AsIs();
- bmpbt2 -> SetConstraints(b2);
-
-#if wxUSE_TOOLTIPS
- bmpbt -> SetToolTip(_("Remove current page from bookmarks"));
- bmpbt2 -> SetToolTip(_("Add current page to bookmarks"));
-#endif //wxUSE_TOOLTIPS
-
- wxLayoutConstraints *b3 = new wxLayoutConstraints;
- m_Bookmarks = new wxComboBox(dummy, wxID_HTML_BOOKMARKSLIST, wxEmptyString,
- wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY | wxCB_SORT);
- m_Bookmarks -> Append(_("(bookmarks)"));
- for (unsigned i = 0; i < m_BookmarksNames.GetCount(); i++)
- m_Bookmarks -> Append(m_BookmarksNames[i]);
- m_Bookmarks -> SetSelection(0);
-
- b3 -> centreY.SameAs (bmpbt2, wxCentreY);
- b3 -> left.SameAs (dummy, wxLeft, 10);
- b3 -> right.LeftOf (bmpbt2, 5);
- b3 -> height.AsIs();
- m_Bookmarks -> SetConstraints(b3);
-
-
- wxLayoutConstraints *b4 = new wxLayoutConstraints;
- m_ContentsBox = new wxTreeCtrl(dummy, wxID_HTML_TREECTRL,
- wxDefaultPosition, wxDefaultSize,
- wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
- m_ContentsBox -> SetImageList(m_ContentsImageList);
-
- b4 -> top.Below (m_Bookmarks, 10);
- b4 -> left.SameAs (dummy, wxLeft, 0);
- b4 -> right.SameAs (dummy, wxRight, 0);
- b4 -> bottom.SameAs (dummy, wxBottom, 0);
- m_ContentsBox -> SetConstraints(b4);
-
- dummy -> SetAutoLayout(TRUE);
- dummy -> Layout();
-
- m_NavigPan -> AddPage(dummy, _("Contents"));
- }
-
- else
- {
- m_ContentsBox = new wxTreeCtrl(m_NavigPan, wxID_HTML_TREECTRL,
- wxDefaultPosition, wxDefaultSize,
- wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
- m_ContentsBox -> SetImageList(m_ContentsImageList);
- m_NavigPan -> AddPage(m_ContentsBox, _("Contents"));
- }
-
- m_ContentsPage = notebook_page++;
- }
-
- // index listbox panel?
- if (style & wxHF_INDEX) {
- wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_INDEXPAGE);
-
- wxLayoutConstraints *b1 = new wxLayoutConstraints;
- m_IndexText = new wxTextCtrl(dummy, wxID_HTML_INDEXTEXT, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
- b1 -> top.SameAs (dummy, wxTop, 10);
- b1 -> left.SameAs (dummy, wxLeft, 10);
- b1 -> right.SameAs (dummy, wxRight, 10);
- b1 -> height.AsIs();
- m_IndexText -> SetConstraints(b1);
-
- wxLayoutConstraints *b4 = new wxLayoutConstraints;
- m_IndexButtonAll = new wxButton(dummy, wxID_HTML_INDEXBUTTONALL, _("Show all"));
-
- b4 -> top.Below (m_IndexText, 10);
- b4 -> right.SameAs (dummy, wxRight, 10);
- b4 -> width.AsIs();
- b4 -> height.AsIs();
- m_IndexButtonAll -> SetConstraints(b4);
-
- wxLayoutConstraints *b2 = new wxLayoutConstraints;
- m_IndexButton = new wxButton(dummy, wxID_HTML_INDEXBUTTON, _("Find"));
- b2 -> top.Below (m_IndexText, 10);
- b2 -> right.LeftOf (m_IndexButtonAll, 10);
- b2 -> width.AsIs();
- b2 -> height.AsIs();
- m_IndexButton -> SetConstraints(b2);
-
- wxLayoutConstraints *b5 = new wxLayoutConstraints;
- m_IndexCountInfo = new wxStaticText(dummy, wxID_HTML_COUNTINFO, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT | wxST_NO_AUTORESIZE);
-
- b5 -> top.Below (m_IndexButton, 5);
- b5 -> right.SameAs (dummy, wxRight, 10);
- b5 -> left.SameAs (dummy, wxLeft, 10);
- b5 -> height.AsIs();
- m_IndexCountInfo -> SetConstraints(b5);
-
- wxLayoutConstraints *b3 = new wxLayoutConstraints;
- m_IndexList = new wxListBox(dummy, wxID_HTML_INDEXLIST, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_SINGLE | wxLB_ALWAYS_SB);
- b3 -> top.Below (m_IndexCountInfo, 5);
- b3 -> left.SameAs (dummy, wxLeft, 0);
- b3 -> right.SameAs (dummy, wxRight, 0);
- b3 -> bottom.SameAs (dummy, wxBottom, 0);
- m_IndexList -> SetConstraints(b3);
-
-#if wxUSE_TOOLTIPS
- m_IndexButtonAll -> SetToolTip(_("Show all items in index"));
- m_IndexButton -> SetToolTip(_("Display all index items that contain given substring. Search is case insensitive."));
-#endif //wxUSE_TOOLTIPS
-
- dummy -> SetAutoLayout(TRUE);
- dummy -> Layout();
-
- m_NavigPan -> AddPage(dummy, _("Index"));
- m_IndexPage = notebook_page++;
- }
-
- // search list panel?
- if (style & wxHF_SEARCH) {
- wxWindow *dummy = new wxPanel(m_NavigPan, wxID_HTML_SEARCHPAGE);
-
- wxLayoutConstraints *b1 = new wxLayoutConstraints;
- m_SearchText = new wxTextCtrl(dummy, wxID_HTML_SEARCHTEXT, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
- b1 -> top.SameAs (dummy, wxTop, 10);
- b1 -> left.SameAs (dummy, wxLeft, 10);
- b1 -> right.SameAs (dummy, wxRight, 10);
- b1 -> height.AsIs();
- m_SearchText -> SetConstraints(b1);
-
- wxLayoutConstraints *b4 = new wxLayoutConstraints;
- m_SearchChoice = new wxChoice(dummy, wxID_HTML_SEARCHCHOICE, wxDefaultPosition,
- wxDefaultSize);
- b4 -> top.Below (m_SearchText, 10);
- b4 -> left.SameAs (dummy, wxLeft, 10);
- b4 -> right.SameAs (dummy, wxRight, 10);
- b4 -> height.AsIs();
- m_SearchChoice -> SetConstraints(b4);
-
- wxLayoutConstraints *b5 = new wxLayoutConstraints;
- m_SearchCaseSensitive = new wxCheckBox(dummy, -1, _("Case sensitive"));
- b5 -> top.Below (m_SearchChoice, 10);
- b5 -> left.SameAs (dummy, wxLeft, 10);
- b5 -> width.AsIs();
- b5 -> height.AsIs ();
- m_SearchCaseSensitive -> SetConstraints(b5);
-
- wxLayoutConstraints *b6 = new wxLayoutConstraints;
- m_SearchWholeWords = new wxCheckBox(dummy, -1, _("Whole words only"));
- b6 -> top.Below (m_SearchCaseSensitive, 0);
- b6 -> left.SameAs (dummy, wxLeft, 10);
- b6 -> width.AsIs();
- b6 -> height.AsIs ();
- m_SearchWholeWords -> SetConstraints(b6);
-
- wxLayoutConstraints *b2 = new wxLayoutConstraints;
- m_SearchButton = new wxButton(dummy, wxID_HTML_SEARCHBUTTON, _("Search"));
-#if wxUSE_TOOLTIPS
- m_SearchButton -> SetToolTip(_("Search contents of help book(s) for all occurences of the text you typed above"));
-#endif //wxUSE_TOOLTIPS
- b2 -> top.Below (m_SearchWholeWords, 0);
- b2 -> right.SameAs (dummy, wxRight, 10);
- b2 -> width.AsIs();
- b2 -> height.AsIs();
- m_SearchButton -> SetConstraints(b2);
-
- wxLayoutConstraints *b3 = new wxLayoutConstraints;
- m_SearchList = new wxListBox(dummy, wxID_HTML_SEARCHLIST, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_SINGLE | wxLB_ALWAYS_SB);
- b3 -> top.Below (m_SearchButton, 10);
- b3 -> left.SameAs (dummy, wxLeft, 0);
- b3 -> right.SameAs (dummy, wxRight, 0);
- b3 -> bottom.SameAs (dummy, wxBottom, 0);
- m_SearchList -> SetConstraints(b3);
-
- dummy -> SetAutoLayout(TRUE);
- dummy -> Layout();
- m_NavigPan -> AddPage(dummy, _("Search"));
- m_SearchPage = notebook_page++;
- }
- m_HtmlWin -> Show(TRUE);
-
-
- RefreshLists();
-
- // showtime
- if (m_NavigPan && m_Splitter) {
- m_Splitter -> SetMinimumPaneSize(20);
- if (m_Cfg.navig_on)
- m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
- else {
- m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
- m_Splitter -> Unsplit();
- }
- if (m_Cfg.navig_on) {
- m_NavigPan -> Show(TRUE);
- m_Splitter -> SplitVertically(m_NavigPan, m_HtmlWin, m_Cfg.sashpos);
- }
- else {
- m_NavigPan -> Show(FALSE);
- m_Splitter -> Initialize(m_HtmlWin);
- }
- }
- return TRUE;