X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3755cfa64d2f5182ec88d9d0bf934769e0269d10..062dfc9a96dc9e796c53544f41ff92dc47f26e82:/src/html/helpfrm.cpp diff --git a/src/html/helpfrm.cpp b/src/html/helpfrm.cpp index d01182f17f..c726a936eb 100644 --- a/src/html/helpfrm.cpp +++ b/src/html/helpfrm.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: helpfrm.cpp +// Name: src/html/helpfrm.cpp // Purpose: wxHtmlHelpFrame // Notes: Based on htmlhelp.cpp, implementing a monolithic // HTML Help controller class, by Vaclav Slavik @@ -14,31 +14,36 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #if wxUSE_WXHTML_HELP -#ifndef WXPRECOMP +#ifndef WX_PRECOMP + #include "wx/object.h" + #include "wx/dynarray.h" #include "wx/intl.h" #include "wx/log.h" + #if wxUSE_STREAMS + #include "wx/stream.h" + #endif - #include "wx/object.h" #include "wx/sizer.h" #include "wx/bmpbuttn.h" #include "wx/statbox.h" #include "wx/radiobox.h" -#endif // WXPRECOMP - -#ifdef __WXMAC__ #include "wx/menu.h" + #include "wx/settings.h" #include "wx/msgdlg.h" -#endif + #include "wx/textctrl.h" + #include "wx/toolbar.h" + #include "wx/choicdlg.h" + #include "wx/filedlg.h" +#endif // WX_PRECOMP #include "wx/html/helpfrm.h" #include "wx/html/helpctrl.h" -#include "wx/textctrl.h" #include "wx/notebook.h" #include "wx/imaglist.h" #include "wx/treectrl.h" @@ -47,15 +52,9 @@ #include "wx/html/htmlwin.h" #include "wx/busyinfo.h" #include "wx/progdlg.h" -#include "wx/toolbar.h" #include "wx/fontenum.h" -#include "wx/stream.h" -#include "wx/filedlg.h" #include "wx/artprov.h" #include "wx/spinctrl.h" -#include "wx/dynarray.h" -#include "wx/choicdlg.h" -#include "wx/settings.h" IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpFrame, wxFrame) @@ -70,10 +69,18 @@ BEGIN_EVENT_TABLE(wxHtmlHelpFrame, wxFrame) END_EVENT_TABLE() wxHtmlHelpFrame::wxHtmlHelpFrame(wxWindow* parent, wxWindowID id, const wxString& title, - int style, wxHtmlHelpData* data) + int style, wxHtmlHelpData* data +#if wxUSE_CONFIG + , wxConfigBase *config, const wxString& rootpath +#endif // wxUSE_CONFIG + ) { Init(data); - Create(parent, id, title, style); + Create(parent, id, title, style +#if wxUSE_CONFIG + , config, rootpath +#endif // wxUSE_CONFIG + ); } void wxHtmlHelpFrame::Init(wxHtmlHelpData* data) @@ -81,28 +88,45 @@ void wxHtmlHelpFrame::Init(wxHtmlHelpData* data) // Simply pass the pointer on to the help window m_Data = data; m_HtmlHelpWin = NULL; - m_helpController = (wxHtmlHelpController*) NULL; + m_helpController = NULL; + m_shouldPreventAppExit = false; +} + +void wxHtmlHelpFrame::SetController(wxHtmlHelpController* controller) +{ + m_helpController = controller; + if ( m_HtmlHelpWin ) + m_HtmlHelpWin->SetController(controller); } // Create: builds the GUI components. bool wxHtmlHelpFrame::Create(wxWindow* parent, wxWindowID id, - const wxString& WXUNUSED(title), int style) + const wxString& WXUNUSED(title), int style +#if wxUSE_CONFIG + , wxConfigBase *config, const wxString& rootpath +#endif // wxUSE_CONFIG + ) { m_HtmlHelpWin = new wxHtmlHelpWindow(m_Data); + m_HtmlHelpWin->SetController(m_helpController); +#if wxUSE_CONFIG + if ( config ) + m_HtmlHelpWin->UseConfig(config, rootpath); +#endif // wxUSE_CONFIG - wxFrame::Create(parent, id, _("Help"), + wxFrame::Create(parent, id, _("Help"), wxPoint(m_HtmlHelpWin->GetCfgData().x, m_HtmlHelpWin->GetCfgData().y), - wxSize(m_HtmlHelpWin->GetCfgData().w, m_HtmlHelpWin->GetCfgData().h), + wxSize(m_HtmlHelpWin->GetCfgData().w, m_HtmlHelpWin->GetCfgData().h), wxDEFAULT_FRAME_STYLE, wxT("wxHtmlHelp")); #if wxUSE_STATUSBAR CreateStatusBar(); #endif - m_HtmlHelpWin->Create(this, -1, wxDefaultPosition, wxDefaultSize, + m_HtmlHelpWin->Create(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL|wxNO_BORDER, style); GetPosition(& (m_HtmlHelpWin->GetCfgData().x), & (m_HtmlHelpWin->GetCfgData()).y); - SetIcon(wxArtProvider::GetIcon(wxART_HELP, wxART_HELP_BROWSER)); + SetIcons(wxArtProvider::GetIconBundle(wxART_HELP, wxART_FRAME_ICON)); // On the Mac, each modeless frame must have a menubar. // TODO: add more menu items, and perhaps add a style to show @@ -194,19 +218,19 @@ void wxHtmlHelpFrame::AddGrabIfNeeded() { // So far, wxGTK only #ifdef __WXGTK__ - bool needGrab = FALSE; - + bool needGrab = false; + // Check if there are any modal windows present, // in which case we need to add a grab. - for ( wxWindowList::Node * node = wxTopLevelWindows.GetFirst(); - node; - node = node->GetNext() ) + for ( wxWindowList::iterator it = wxTopLevelWindows.begin(); + it != wxTopLevelWindows.end(); + ++it ) { - wxWindow *win = node->GetData(); + wxWindow *win = *it; wxDialog *dialog = wxDynamicCast(win, wxDialog); if (dialog && dialog->IsModal()) - needGrab = TRUE; + needGrab = true; } if (needGrab) @@ -214,20 +238,27 @@ void wxHtmlHelpFrame::AddGrabIfNeeded() #endif // __WXGTK__ } +#if wxUSE_CONFIG // For compatibility void wxHtmlHelpFrame::UseConfig(wxConfigBase *config, const wxString& rootPath) { if (m_HtmlHelpWin) m_HtmlHelpWin->UseConfig(config, rootPath); } +#endif // wxUSE_CONFIG + +void wxHtmlHelpFrame::SetShouldPreventAppExit(bool enable) +{ + m_shouldPreventAppExit = enable; +} #ifdef __WXMAC__ -void wxHtmlHelpFrame::OnClose(wxCommandEvent& event) +void wxHtmlHelpFrame::OnClose(wxCommandEvent& WXUNUSED(event)) { Close(true); } -void wxHtmlHelpFrame::OnAbout(wxCommandEvent& event) +void wxHtmlHelpFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxMessageBox(wxT("wxWidgets HTML Help Viewer (c) 1998-2006, Vaclav Slavik et al"), wxT("HelpView"), wxICON_INFORMATION|wxOK, this);