#include "wx/spinctrl.h"
// what is considered "small index"?
-#define INDEX_IS_SMALL 100
+#define INDEX_IS_SMALL 1000
+
+// minimum width for content tree and index
+// (we cannot let minimum size be determined from content, else long titles
+// make the help frame unusable)
+const wxCoord CONTENT_TREE_INDEX_MIN_WIDTH = 150;
/* Motif defines this as a macro */
#ifdef Below
SetStandardFonts();
}
- void OnLink(wxHtmlLinkEvent& ev)
+ virtual bool LoadPage(const wxString& location)
{
- const wxMouseEvent *e = ev.GetLinkInfo().GetEvent();
- if (e == NULL || e->LeftUp())
- m_Window->NotifyPageChanged();
+ if ( !wxHtmlWindow::LoadPage(location) )
+ return false;
- // skip the event so that normal processing (i.e. following the link)
- // is done:
- ev.Skip();
+ m_Window->NotifyPageChanged();
+ return true;
}
// Returns full location with anchor (helper)
wxHtmlHelpWindow *m_Window;
wxDECLARE_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_mergedIndex = NULL;
+#if wxUSE_CONFIG
m_Config = NULL;
m_ConfigRoot = wxEmptyString;
+#endif // wxUSE_CONFIG
m_Cfg.x = m_Cfg.y = wxDefaultCoord;
m_Cfg.w = 700;
{
m_hfStyle = helpStyle;
+#if wxUSE_CONFIG
// Do the config in two steps. We read the HtmlWindow customization after we
// create the window.
if (m_Config)
ReadCustomization(m_Config, m_ConfigRoot);
+#endif // wxUSE_CONFIG
wxWindow::Create(parent, id, pos, size, style, wxT("wxHtmlHelp"));
#ifdef __WXMSW__
wxBorder htmlWindowBorder = GetDefaultBorder();
- if (htmlWindowBorder == wxBORDER_SUNKEN)
- htmlWindowBorder = wxBORDER_SIMPLE;
+ htmlWindowBorder = wxBORDER_THEME;
#else
- wxBorder htmlWindowBorder = wxBORDER_SIMPLE;
+ wxBorder htmlWindowBorder = wxBORDER_SUNKEN;
#endif
if (helpStyle & (wxHF_CONTENTS | wxHF_INDEX | wxHF_SEARCH))
topWindowSizer->Add(m_HtmlWin, 1, wxEXPAND);
}
+#if wxUSE_CONFIG
if ( m_Config )
m_HtmlWin->ReadCustomization(m_Config, m_ConfigRoot);
+#endif // wxUSE_CONFIG
// contents tree panel?
if ( helpStyle & wxHF_CONTENTS )
if ( helpStyle & wxHF_BOOKMARKS )
{
+ long comboStyle = wxCB_READONLY;
+#ifndef __WXMAC__
+ // Not supported on OSX/Cocoa presently
+ comboStyle |= wxCB_SORT;
+
+#endif
m_Bookmarks = new wxComboBox(dummy, wxID_HTML_BOOKMARKSLIST,
wxEmptyString,
wxDefaultPosition, wxDefaultSize,
- 0, NULL, wxCB_READONLY | wxCB_SORT);
+ 0, NULL, comboStyle);
m_Bookmarks->Append(_("(bookmarks)"));
for (unsigned i = 0; i < m_BookmarksNames.GetCount(); i++)
m_Bookmarks->Append(m_BookmarksNames[i]);
wxBitmap woptionsBitmap =
wxArtProvider::GetBitmap(wxART_HELP_SETTINGS, wxART_TOOLBAR);
- wxASSERT_MSG( (wpanelBitmap.Ok() && wbackBitmap.Ok() &&
- wforwardBitmap.Ok() && wupnodeBitmap.Ok() &&
- wupBitmap.Ok() && wdownBitmap.Ok() &&
- wopenBitmap.Ok() && wprintBitmap.Ok() &&
- woptionsBitmap.Ok()),
+ wxASSERT_MSG( (wpanelBitmap.IsOk() && wbackBitmap.IsOk() &&
+ wforwardBitmap.IsOk() && wupnodeBitmap.IsOk() &&
+ wupBitmap.IsOk() && wdownBitmap.IsOk() &&
+ wopenBitmap.IsOk() && wprintBitmap.IsOk() &&
+ woptionsBitmap.IsOk()),
wxT("One or more HTML help frame toolbar bitmap could not be loaded.")) ;
if (!url.empty())
{
m_HtmlWin->LoadPage(url);
- NotifyPageChanged();
return true;
}
if (!url.empty())
{
m_HtmlWin->LoadPage(url);
- NotifyPageChanged();
return true;
}
if (!it->items[0]->page.empty())
{
m_HtmlWin->LoadPage(it->items[0]->GetFullPath());
- NotifyPageChanged();
}
}
else
wxSingleChoiceDialog dlg(this,
_("Please choose the page to display:"),
_("Help Topics"),
- arr, NULL, wxCHOICEDLG_STYLE & ~wxCENTRE);
+ arr,
+ (void**)NULL, // No client data
+ wxCHOICEDLG_STYLE & ~wxCENTRE);
if (dlg.ShowModal() == wxID_OK)
{
m_HtmlWin->LoadPage(it->items[dlg.GetSelection()]->GetFullPath());
- NotifyPageChanged();
}
}
}
if (it)
{
m_HtmlWin->LoadPage(it->GetFullPath());
- NotifyPageChanged();
}
break;
}
imaged[it->level] = true;
}
}
+
+ m_ContentsBox->SetMinSize(wxSize(CONTENT_TREE_INDEX_MIN_WIDTH,
+ m_ContentsBox->GetMinHeight()));
}
void wxHtmlHelpWindow::CreateIndex()
m_IndexList->Clear();
- size_t cnt = m_mergedIndex->size();
+ unsigned long cnt = m_mergedIndex->size();
wxString cnttext;
if (cnt > INDEX_IS_SMALL)
- cnttext.Printf(_("%i of %i"), 0, cnt);
+ cnttext.Printf(_("%d of %lu"), 0, cnt);
else
- cnttext.Printf(_("%i of %i"), cnt, cnt);
+ cnttext.Printf(_("%lu of %lu"), cnt, cnt);
m_IndexCountInfo->SetLabel(cnttext);
if (cnt > INDEX_IS_SMALL)
return;
for (size_t i = 0; i < cnt; i++)
m_IndexList->Append((*m_mergedIndex)[i].name,
(char*)(&(*m_mergedIndex)[i]));
+
+ m_IndexList->SetMinSize(wxSize(CONTENT_TREE_INDEX_MIN_WIDTH,
+ m_IndexList->GetMinHeight()));
}
void wxHtmlHelpWindow::CreateSearch()
CreateSearch();
}
+#if wxUSE_CONFIG
void wxHtmlHelpWindow::ReadCustomization(wxConfigBase *cfg, const wxString& path)
{
wxString oldpath;
if (path != wxEmptyString)
cfg->SetPath(oldpath);
}
+#endif // wxUSE_CONFIG
static void SetFontsToHtmlWin(wxHtmlWindow *win, const wxString& scalf, const wxString& fixf, int size)
{
{
case wxID_HTML_BACK :
m_HtmlWin->HistoryBack();
- NotifyPageChanged();
break;
case wxID_HTML_FORWARD :
m_HtmlWin->HistoryForward();
- NotifyPageChanged();
break;
case wxID_HTML_UP :
if (!it.page.empty())
{
m_HtmlWin->LoadPage(it.GetFullPath());
- NotifyPageChanged();
}
}
}
if (ind >= 0)
{
if (!it->page.empty())
- {
m_HtmlWin->LoadPage(it->GetFullPath());
- NotifyPageChanged();
- }
}
}
}
while (contents[idx].GetFullPath() == page) idx++;
if (!contents[idx].page.empty())
- {
m_HtmlWin->LoadPage(contents[idx].GetFullPath());
- NotifyPageChanged();
- }
}
}
break;
#if wxUSE_LIBMSPACK
_("Compressed HTML Help file (*.chm)|*.chm|") +
#endif
- _("All files (*.*)|*");
+ wxALL_FILES;
wxString s = wxFileSelector(_("Open HTML document"),
wxEmptyString,
wxEmptyString,
{
if (!it->page.empty())
m_HtmlWin->LoadPage(it->GetFullPath());
- NotifyPageChanged();
}
}
if (!str.empty() && str != _("(bookmarks)") && idx != wxNOT_FOUND)
{
m_HtmlWin->LoadPage(m_BookmarksPages[(size_t)idx]);
- NotifyPageChanged();
}
}