- 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_IndexBox = NULL;
- m_SearchList = NULL;
- m_SearchButton = NULL;
- m_SearchText = NULL;
- m_SearchChoice = NULL;
- m_Splitter = NULL;
- m_NavigPan = NULL;
- m_HtmlWin = 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_FontSize = 1;
- m_NormalFace = m_FixedFace = wxEmptyString;
- m_NormalItalic = m_FixedItalic = wxSLANT;
-}
-
-// 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_IndexBox, 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));
-
- 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);
-
- toolBar -> AddTool(wxID_HTML_PANEL, wxBITMAP(wpanel), wxNullBitmap,
- FALSE, -1, -1, (wxObject *) NULL,
- _("Show/hide navigation panel"));
- toolBar -> AddSeparator();
- toolBar -> AddTool(wxID_HTML_BACK, wxBITMAP(wback), wxNullBitmap,
- FALSE, -1, -1, (wxObject *) NULL,
- _("Go back to the previous HTML page"));
- toolBar -> AddTool(wxID_HTML_FORWARD, wxBITMAP(wforward), wxNullBitmap,
- FALSE, -1, -1, (wxObject *) NULL,
- _("Go forward to the next HTML page"));
-
- toolBar -> AddSeparator();
- toolBar -> AddTool(wxID_HTML_OPTIONS, wxBITMAP(woptions), wxNullBitmap,
- FALSE, -1, -1, (wxObject *) NULL,
- _("Display options dialog"));
-
- 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 wxHtmlWindow(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) {
- 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;
- b1 -> top.SameAs (dummy, wxTop, 0);
- b1 -> left.SameAs (dummy, wxLeft, 0);
- b1 -> width.PercentOf (dummy, wxWidth, 100);
- b1 -> bottom.SameAs (dummy, wxBottom, 0);
- m_IndexBox = new wxListBox(dummy, wxID_HTML_INDEXLIST, wxDefaultPosition,
- wxDefaultSize, 0, NULL, wxLB_SINGLE | wxLB_ALWAYS_SB);
- m_IndexBox -> SetConstraints(b1);
- dummy -> SetAutoLayout(TRUE);
- 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);
- 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 *b2 = new wxLayoutConstraints;
- m_SearchButton = new wxButton(dummy, wxID_HTML_SEARCHBUTTON, _("Search"));
- b2 -> top.Below (m_SearchText, 10);
- b2 -> left.SameAs (dummy, wxLeft, 10);
- b2 -> width.AsIs();
- b2 -> height.AsIs();
- m_SearchButton -> SetConstraints(b2);
-
- wxLayoutConstraints *b4 = new wxLayoutConstraints;
- m_SearchChoice = new wxChoice(dummy, wxID_HTML_SEARCHCHOICE, wxDefaultPosition,
- wxDefaultSize);
- b4 -> top.Below (m_SearchText, 10);
- b4 -> left.SameAs (m_SearchButton, wxRight, 10);
- b4 -> right.SameAs (dummy, wxRight, 10);
- b4 -> height.AsIs();
- m_SearchChoice -> SetConstraints(b4);
-
- wxLayoutConstraints *b3 = new wxLayoutConstraints;
- m_SearchList = new wxListBox(dummy, wxID_HTML_SEARCHLIST, wxDefaultPosition, wxDefaultSize, 0);
- 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;