1. added abstract interface to wxHtmlWindow for use by wxHtmlWinParser and implemented it for wxHtmlListBox

2. used the above to implement clickable links support in wxHtmlListBox


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2006-04-13 22:08:28 +00:00
parent e0d5d9af8b
commit bc55e31bdc
17 changed files with 881 additions and 219 deletions

View File

@@ -289,21 +289,19 @@ TAG_HANDLER_BEGIN(TITLE, "TITLE")
TAG_HANDLER_PROC(tag)
{
if (m_WParser->GetWindow())
wxHtmlWindowInterface *winIface = m_WParser->GetWindowInterface();
if (winIface)
{
wxHtmlWindow *wfr = (wxHtmlWindow*)(m_WParser->GetWindow());
if (wfr)
{
wxString title = m_WParser->GetSource()->Mid(
tag.GetBeginPos(),
tag.GetEndPos1()-tag.GetBeginPos());
wxString title = m_WParser->GetSource()->Mid(
tag.GetBeginPos(),
tag.GetEndPos1()-tag.GetBeginPos());
#if !wxUSE_UNICODE && wxUSE_WCHAR_T
wxCSConv conv(m_WParser->GetInputEncoding());
title = wxString(title.wc_str(conv), wxConvLocal);
wxCSConv conv(m_WParser->GetInputEncoding());
title = wxString(title.wc_str(conv), wxConvLocal);
#endif
title = m_WParser->GetEntitiesParser()->Parse(title);
wfr->OnSetTitle(title);
}
title = m_WParser->GetEntitiesParser()->Parse(title);
winIface->SetHTMLWindowTitle(title);
}
return true;
}
@@ -329,6 +327,11 @@ TAG_HANDLER_BEGIN(BODY, "BODY")
if (tag.GetParamAsColour(wxT("LINK"), &clr))
m_WParser->SetLinkColor(clr);
wxHtmlWindowInterface *winIface = m_WParser->GetWindowInterface();
// the rest of this function requires a window:
if ( !winIface )
return false;
if (tag.HasParam(wxT("BACKGROUND")))
{
wxFSFile *fileBgImage = m_WParser->OpenURL
@@ -344,8 +347,8 @@ TAG_HANDLER_BEGIN(BODY, "BODY")
#if !defined(__WXMSW__) || wxUSE_WXDIB
wxImage image(*is);
if ( image.Ok() )
m_WParser->GetWindow()->SetBackgroundImage(image);
#endif
winIface->SetHTMLBackgroundImage(image);
#endif
}
}
}
@@ -354,8 +357,7 @@ TAG_HANDLER_BEGIN(BODY, "BODY")
{
m_WParser->GetContainer()->InsertCell(
new wxHtmlColourCell(clr, wxHTML_CLR_BACKGROUND));
if (m_WParser->GetWindow() != NULL)
m_WParser->GetWindow()->SetBackgroundColour(clr);
winIface->SetHTMLBackgroundColour(clr);
}
return false;