X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a0b1b91fe6ea9ee743ca658cb427d64052a8f57b..1b9a0df6794997ac17e866eeb9ea6ea91b6a803b:/src/html/helpctrl.cpp diff --git a/src/html/helpctrl.cpp b/src/html/helpctrl.cpp index 13b00c1490..1a7b41339b 100644 --- a/src/html/helpctrl.cpp +++ b/src/html/helpctrl.cpp @@ -9,8 +9,8 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#pragma implementation "helpctrl.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -20,16 +20,23 @@ #pragma hdrstop #endif -#include "wx/defs.h" +#if wxUSE_WXHTML_HELP -#if wxUSE_HTML && wxUSE_STREAMS +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/intl.h" +#endif // WX_PRECOMP #include "wx/html/helpctrl.h" -#include "wx/wx.h" #include "wx/busyinfo.h" +#ifdef __WXGTK__ + // for the hack in AddGrabIfNeeded() + #include "wx/dialog.h" +#endif // __WXGTK__ + #if wxUSE_HELP -#include "wx/tipwin.h" + #include "wx/tipwin.h" #endif IMPLEMENT_DYNAMIC_CLASS(wxHtmlHelpController, wxHelpControllerBase) @@ -77,13 +84,18 @@ void wxHtmlHelpController::SetTitleFormat(const wxString& title) } +bool wxHtmlHelpController::AddBook(const wxFileName& book_file, bool show_wait_msg) +{ + return AddBook(wxFileSystem::FileNameToURL(book_file), show_wait_msg); +} + bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg) { wxBusyCursor cur; #if wxUSE_BUSYINFO wxBusyInfo* busy = NULL; wxString info; - if (show_wait_msg) + if (show_wait_msg) { info.Printf(_("Adding book %s"), book.c_str()); busy = new wxBusyInfo(info); @@ -93,7 +105,9 @@ bool wxHtmlHelpController::AddBook(const wxString& book, bool show_wait_msg) #if wxUSE_BUSYINFO if (show_wait_msg) delete busy; -#endif +#endif + if (m_helpFrame) + m_helpFrame->RefreshLists(); return retval; } @@ -113,7 +127,7 @@ void wxHtmlHelpController::CreateHelpWindow() return ; } - if (m_Config == NULL) + if (m_Config == NULL) { m_Config = wxConfigBase::Get(FALSE); if (m_Config != NULL) @@ -162,7 +176,7 @@ bool wxHtmlHelpController::Initialize(const wxString& file) wxSplitPath(file, & dir, & filename, & ext); if (!dir.IsEmpty()) - dir = dir + wxString(wxT("/")); + dir = dir + wxFILE_SEP_PATH; // Try to find a suitable file wxString actualFilename = dir + filename + wxString(wxT(".zip")); @@ -177,7 +191,7 @@ bool wxHtmlHelpController::Initialize(const wxString& file) } } - return AddBook(actualFilename); + return AddBook(wxFileName(actualFilename)); } bool wxHtmlHelpController::LoadFile(const wxString& WXUNUSED(file)) @@ -193,7 +207,7 @@ bool wxHtmlHelpController::DisplaySection(int sectionNo) bool wxHtmlHelpController::DisplayTextPopup(const wxString& text, const wxPoint& WXUNUSED(pos)) { -#if wxUSE_HELP +#if wxUSE_TIPWINDOW static wxTipWindow* s_tipWindow = NULL; if (s_tipWindow) @@ -211,8 +225,8 @@ bool wxHtmlHelpController::DisplayTextPopup(const wxString& text, const wxPoint& return TRUE; } +#endif // wxUSE_TIPWINDOW -#endif return FALSE; } @@ -247,20 +261,71 @@ bool wxHtmlHelpController::Quit() return TRUE; } -// Sets the specified book or all books to have the given base path -void wxHtmlHelpController::SetBookBasePath(const wxString& basePath, int which) +// Make the help controller's frame 'modal' if +// needed +void wxHtmlHelpController::AddGrabIfNeeded() { - size_t i; - for (i = 0; i < m_helpData.GetBookRecArray().Count(); i++ ) + // So far, wxGTK only +#ifdef __WXGTK__ + bool needGrab = FALSE; + + // Check if there are any modal windows present, + // in which case we need to add a grab. + for ( wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst(); + node; + node = node->GetNext() ) { - if (i == (size_t) which || which == -1) - { - wxHtmlBookRecord& book = m_helpData.GetBookRecArray()[i]; - book.SetBasePath(basePath); - } - if (i == (size_t) which) - return; + wxWindow *win = node->GetData(); + wxDialog *dialog = wxDynamicCast(win, wxDialog); + + if (dialog && dialog->IsModal()) + needGrab = TRUE; } + + if (needGrab && m_helpFrame) + m_helpFrame->AddGrab(); +#endif // __WXGTK__ } -#endif +bool wxHtmlHelpController::Display(const wxString& x) +{ + CreateHelpWindow(); + bool success = m_helpFrame->Display(x); + AddGrabIfNeeded(); + return success; +} + +bool wxHtmlHelpController::Display(int id) +{ + CreateHelpWindow(); + bool success = m_helpFrame->Display(id); + AddGrabIfNeeded(); + return success; +} + +bool wxHtmlHelpController::DisplayContents() +{ + CreateHelpWindow(); + bool success = m_helpFrame->DisplayContents(); + AddGrabIfNeeded(); + return success; +} + +bool wxHtmlHelpController::DisplayIndex() +{ + CreateHelpWindow(); + bool success = m_helpFrame->DisplayIndex(); + AddGrabIfNeeded(); + return success; +} + +bool wxHtmlHelpController::KeywordSearch(const wxString& keyword) +{ + CreateHelpWindow(); + bool success = m_helpFrame->KeywordSearch(keyword); + AddGrabIfNeeded(); + return success; +} + +#endif // wxUSE_WXHTML_HELP +