X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/548b53775242a8be5746a455ac74d6d1f1040146..5d3f234b6b56549bb7e46bfd1286b63cf09ffe65:/src/html/helpwnd.cpp diff --git a/src/html/helpwnd.cpp b/src/html/helpwnd.cpp index 83c06c71c6..9215711601 100644 --- a/src/html/helpwnd.cpp +++ b/src/html/helpwnd.cpp @@ -14,32 +14,37 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #if wxUSE_WXHTML_HELP #ifndef WXPRECOMP + #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 // WXPRECOMP #include "wx/html/helpfrm.h" #include "wx/html/helpdlg.h" #include "wx/html/helpctrl.h" -#include "wx/textctrl.h" #include "wx/notebook.h" #include "wx/imaglist.h" #include "wx/treectrl.h" @@ -48,15 +53,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" // what is considered "small index"? #define INDEX_IS_SMALL 100 @@ -94,7 +93,7 @@ class wxHtmlHelpHashData : public wxObject public: wxHtmlHelpHashData(int index, wxTreeItemId id) : wxObject() { m_Index = index; m_Id = id;} - ~wxHtmlHelpHashData() {} + virtual ~wxHtmlHelpHashData() {} int m_Index; wxTreeItemId m_Id; @@ -105,53 +104,53 @@ class wxHtmlHelpHashData : public wxObject // wxHtmlHelpHtmlWindow (private) //-------------------------------------------------------------------------- -DEFINE_EVENT_TYPE(wxEVT_COMMAND_HTMLWINDOW_URL_CLICKED) -IMPLEMENT_DYNAMIC_CLASS(wxHtmlWindowEvent, wxNotifyEvent) class wxHtmlHelpHtmlWindow : public wxHtmlWindow { - public: - wxHtmlHelpHtmlWindow(wxHtmlHelpWindow *win, wxWindow *parent) - : wxHtmlWindow(parent), m_Window(win) - { - SetStandardFonts(); - } +public: + wxHtmlHelpHtmlWindow(wxHtmlHelpWindow *win, wxWindow *parent) + : wxHtmlWindow(parent), m_Window(win) + { + SetStandardFonts(); + } - virtual void OnLinkClicked(const wxHtmlLinkInfo& link) - { - wxHtmlWindowEvent event(wxEVT_COMMAND_HTMLWINDOW_URL_CLICKED, GetId()); - event.SetURL(link.GetHref()); - if (!ProcessEvent(event)) - { - wxHtmlWindow::OnLinkClicked(link); - } - const wxMouseEvent *e = link.GetEvent(); - if (e == NULL || e->LeftUp()) - m_Window->NotifyPageChanged(); - } + void OnLink(wxHtmlLinkEvent& ev) + { + const wxMouseEvent *e = ev.GetLinkInfo().GetEvent(); + if (e == NULL || e->LeftUp()) + m_Window->NotifyPageChanged(); - // Returns full location with anchor (helper) - static wxString GetOpenedPageWithAnchor(wxHtmlWindow *win) - { - if(!win) - return wxEmptyString; + // skip the event so that normal processing (i.e. following the link) + // is done: + ev.Skip(); + } - wxString an = win->GetOpenedAnchor(); - wxString pg = win->GetOpenedPage(); - if(!an.empty()) - { - pg << wxT("#"); - pg << an; - } - return pg; + // Returns full location with anchor (helper) + static wxString GetOpenedPageWithAnchor(wxHtmlWindow *win) + { + if(!win) + return wxEmptyString; + + wxString an = win->GetOpenedAnchor(); + wxString pg = win->GetOpenedPage(); + if(!an.empty()) + { + pg << wxT("#") << an; } + return pg; + } - private: - wxHtmlHelpWindow *m_Window; +private: + wxHtmlHelpWindow *m_Window; DECLARE_NO_COPY_CLASS(wxHtmlHelpHtmlWindow) + DECLARE_EVENT_TABLE() }; +BEGIN_EVENT_TABLE(wxHtmlHelpHtmlWindow, wxHtmlWindow) + EVT_HTML_LINK_CLICKED(wxID_ANY, wxHtmlHelpHtmlWindow::OnLink) +END_EVENT_TABLE() + //--------------------------------------------------------------------------- // wxHtmlHelpWindow::m_mergedIndex @@ -1282,18 +1281,14 @@ void wxHtmlHelpWindow::OptionsDialog() if (m_NormalFonts == NULL) { - wxFontEnumerator enu; - enu.EnumerateFacenames(); - m_NormalFonts = new wxArrayString; - *m_NormalFonts = *enu.GetFacenames(); + m_NormalFonts = new wxArrayString(wxFontEnumerator::GetFacenames()); m_NormalFonts->Sort(); // ascending sort } if (m_FixedFonts == NULL) { - wxFontEnumerator enu; - enu.EnumerateFacenames(wxFONTENCODING_SYSTEM, true /*enum fixed width only*/); - m_FixedFonts = new wxArrayString; - *m_FixedFonts = *enu.GetFacenames(); + m_FixedFonts = new wxArrayString( + wxFontEnumerator::GetFacenames(wxFONTENCODING_SYSTEM, + true /*enum fixed width only*/)); m_FixedFonts->Sort(); // ascending sort } @@ -1503,7 +1498,9 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event) { m_BookmarksNames.RemoveAt(pos); m_BookmarksPages.RemoveAt(pos); - m_Bookmarks->Delete(m_Bookmarks->GetSelection()); + pos = m_Bookmarks->GetSelection(); + wxASSERT_MSG( pos != wxNOT_FOUND , wxT("Unknown bookmark position") ) ; + m_Bookmarks->Delete((unsigned int)pos); } } break; @@ -1536,7 +1533,7 @@ void wxHtmlHelpWindow::OnToolbar(wxCommandEvent& event) wxEmptyString, wxEmptyString, filemask, - wxOPEN | wxFILE_MUST_EXIST, + wxFD_OPEN | wxFD_FILE_MUST_EXIST, this); if (!s.empty()) { @@ -1718,11 +1715,11 @@ void wxHtmlHelpWindow::OnSearch(wxCommandEvent& WXUNUSED(event)) void wxHtmlHelpWindow::OnBookmarksSel(wxCommandEvent& WXUNUSED(event)) { - wxString sr = m_Bookmarks->GetStringSelection(); - - if (sr != wxEmptyString && sr != _("(bookmarks)")) + wxString str = m_Bookmarks->GetStringSelection(); + int idx = m_BookmarksNames.Index(str); + if (!str.empty() && str != _("(bookmarks)") && idx != wxNOT_FOUND) { - m_HtmlWin->LoadPage(m_BookmarksPages[m_BookmarksNames.Index(sr)]); + m_HtmlWin->LoadPage(m_BookmarksPages[(size_t)idx]); NotifyPageChanged(); } }