#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/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/helpdlg.h"
#include "wx/html/helpctrl.h"
-#include "wx/textctrl.h"
#include "wx/notebook.h"
#include "wx/imaglist.h"
#include "wx/treectrl.h"
#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/choicdlg.h"
-#include "wx/settings.h"
// what is considered "small index"?
#define INDEX_IS_SMALL 100
public:
wxHtmlHelpHashData(int index, wxTreeItemId id) : wxObject()
{ m_Index = index; m_Id = id;}
- ~wxHtmlHelpHashData() {}
+ virtual ~wxHtmlHelpHashData() {}
int m_Index;
wxTreeItemId m_Id;
// 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, wxWindowID id = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = wxHW_DEFAULT_STYLE)
+ : wxHtmlWindow(parent, id, pos, sz, style), 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
{
m_hfStyle = helpStyle;
- wxImageList *ContentsImageList = new wxImageList(16, 16);
- ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_BOOK,
- wxART_HELP_BROWSER,
- wxSize(16, 16)));
- ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_FOLDER,
- wxART_HELP_BROWSER,
- wxSize(16, 16)));
- ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_PAGE,
- wxART_HELP_BROWSER,
- wxSize(16, 16)));
-
// Do the config in two steps. We read the HtmlWindow customization after we
// create the window.
if (m_Config)
wxSizer *navigSizer = NULL;
+#ifdef __WXMSW__
+ wxBorder htmlWindowBorder = GetDefaultBorder();
+ if (htmlWindowBorder == wxBORDER_SUNKEN)
+ htmlWindowBorder = wxBORDER_SIMPLE;
+#else
+ wxBorder htmlWindowBorder = wxBORDER_SIMPLE;
+#endif
+
if (helpStyle & (wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH))
{
// traditional help controller; splitter window with html page on the
topWindowSizer->Add(m_Splitter, 1, wxEXPAND);
- m_HtmlWin = new wxHtmlHelpHtmlWindow(this, m_Splitter);
+ m_HtmlWin = new wxHtmlHelpHtmlWindow(this, m_Splitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_DEFAULT_STYLE|htmlWindowBorder);
m_NavigPan = new wxPanel(m_Splitter, wxID_ANY);
m_NavigNotebook = new wxNotebook(m_NavigPan, wxID_HTML_NOTEBOOK,
wxDefaultPosition, wxDefaultSize);
+#ifdef __WXMAC__
+ m_NavigNotebook->SetWindowVariant(wxWINDOW_VARIANT_SMALL);
+#endif
navigSizer = new wxBoxSizer(wxVERTICAL);
navigSizer->Add(m_NavigNotebook, 1, wxEXPAND);
else
{
// only html window, no notebook with index,contents etc
- m_HtmlWin = new wxHtmlWindow(this);
+ m_HtmlWin = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_DEFAULT_STYLE|htmlWindowBorder);
topWindowSizer->Add(m_HtmlWin, 1, wxEXPAND);
}
if ( helpStyle & wxHF_CONTENTS )
{
wxWindow *dummy = new wxPanel(m_NavigNotebook, wxID_HTML_INDEXPAGE);
+#ifdef __WXMAC__
+ dummy->SetWindowVariant(wxWINDOW_VARIANT_NORMAL);
+#endif
wxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
topsizer->Add(0, 10);
#endif
);
+ wxImageList *ContentsImageList = new wxImageList(16, 16);
+ ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_BOOK,
+ wxART_HELP_BROWSER,
+ wxSize(16, 16)));
+ ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_FOLDER,
+ wxART_HELP_BROWSER,
+ wxSize(16, 16)));
+ ContentsImageList->Add(wxArtProvider::GetIcon(wxART_HELP_PAGE,
+ wxART_HELP_BROWSER,
+ wxSize(16, 16)));
+
m_ContentsBox->AssignImageList(ContentsImageList);
topsizer->Add(m_ContentsBox, 1,
if ( helpStyle & wxHF_INDEX )
{
wxWindow *dummy = new wxPanel(m_NavigNotebook, wxID_HTML_INDEXPAGE);
+#ifdef __WXMAC__
+ dummy->SetWindowVariant(wxWINDOW_VARIANT_NORMAL);
+#endif
wxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
dummy->SetSizer(topsizer);
if ( helpStyle & wxHF_SEARCH )
{
wxWindow *dummy = new wxPanel(m_NavigNotebook, wxID_HTML_INDEXPAGE);
+#ifdef __WXMAC__
+ dummy->SetWindowVariant(wxWINDOW_VARIANT_NORMAL);
+#endif
wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
dummy->SetSizer(sizer);
wxHtmlHelpWindow::~wxHtmlHelpWindow()
{
+ if ( m_helpController )
+ m_helpController->SetHelpWindow(NULL);
+
delete m_mergedIndex;
// PopEventHandler(); // wxhtmlhelpcontroller (not any more!)
bool wxHtmlHelpWindow::KeywordSearch(const wxString& keyword,
wxHelpSearchMode mode)
{
+ wxCHECK_MSG( !keyword.empty(), false, "must have a non empty keyword" );
+
if (mode == wxHELP_SEARCH_ALL)
{
if ( !(m_SearchList &&
wxSize(200, wxDefaultCoord),
0, NULL, wxCB_DROPDOWN | wxCB_READONLY));
- sizer->Add(FontSize = new wxSpinCtrl(this, wxID_ANY));
- FontSize->SetRange(2, 100);
+ sizer->Add(FontSize = new wxSpinCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, 2, 100, 2, _T("wxSpinCtrl")));
topsizer->Add(sizer, 0, wxLEFT|wxRIGHT|wxTOP, 10);
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
}
wxEmptyString,
wxEmptyString,
filemask,
- wxOPEN | wxFILE_MUST_EXIST,
+ wxFD_OPEN | wxFD_FILE_MUST_EXIST,
this);
if (!s.empty())
{