/////////////////////////////////////////////////////////////////////////////
-// Name: mod_layout.cpp
+// Name: m_layout.cpp
// Purpose: wxHtml module for basic paragraphs/layout handling
// Author: Vaclav Slavik
// RCS-ID: $Id$
#pragma implementation
#endif
-#include <wx/wxprec.h>
+#include "wx/wxprec.h"
-#if wxUSE_HTML
-#ifdef __BORDLANDC__
+
+#include "wx/defs.h"
+#if wxUSE_HTML && wxUSE_STREAMS
+#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WXPRECOMP
-#include <wx/wx.h>
#endif
#include "wx/html/htmlwin.h"
-FORCE_LINK_ME(mod_layout)
+FORCE_LINK_ME(m_layout)
TAG_HANDLER_BEGIN(P, "P")
TAG_HANDLER_PROC(tag)
{
- if (m_WParser -> GetContainer() -> GetFirstCell() != NULL) {
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
- }
- m_WParser -> GetContainer() -> SetIndent(m_WParser -> GetCharHeight(), HTML_INDENT_TOP);
- m_WParser -> GetContainer() -> SetAlign(tag);
+ if (m_WParser->GetContainer()->GetFirstCell() != NULL)
+ {
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
+ }
+ m_WParser->GetContainer()->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
+ m_WParser->GetContainer()->SetAlign(tag);
return FALSE;
}
TAG_HANDLER_PROC(tag)
{
- int al = m_WParser -> GetContainer() -> GetAlignHor();
+ int al = m_WParser->GetContainer()->GetAlignHor();
wxHtmlContainerCell *c;
-
- m_WParser -> CloseContainer();
- c = m_WParser -> OpenContainer();
- c -> SetAlignHor(al);
- c -> SetAlign(tag);
+
+ m_WParser->CloseContainer();
+ c = m_WParser->OpenContainer();
+ c->SetAlignHor(al);
+ c->SetAlign(tag);
+ c->SetMinHeight(m_WParser->GetCharHeight());
return FALSE;
}
TAG_HANDLER_PROC(tag)
{
- int old = m_WParser -> GetAlign();
- wxHtmlContainerCell *c = m_WParser -> GetContainer();
-
- m_WParser -> SetAlign(HTML_ALIGN_CENTER);
- if (c -> GetFirstCell() != NULL) {
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
+ int old = m_WParser->GetAlign();
+ wxHtmlContainerCell *c = m_WParser->GetContainer();
+
+ m_WParser->SetAlign(wxHTML_ALIGN_CENTER);
+ if (c->GetFirstCell() != NULL)
+ {
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
}
else
- c -> SetAlignHor(HTML_ALIGN_CENTER);
+ c->SetAlignHor(wxHTML_ALIGN_CENTER);
- if (tag.HasEnding()) {
+ if (tag.HasEnding())
+ {
ParseInner(tag);
- m_WParser -> SetAlign(old);
- if (c -> GetFirstCell() != NULL) {
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
+ m_WParser->SetAlign(old);
+ if (c->GetFirstCell() != NULL)
+ {
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
}
else
- c -> SetAlignHor(old);
+ c->SetAlignHor(old);
return TRUE;
}
TAG_HANDLER_PROC(tag)
{
- int old = m_WParser -> GetAlign();
- wxHtmlContainerCell *c = m_WParser -> GetContainer();
- if (c -> GetFirstCell() != NULL) {
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
- c = m_WParser -> GetContainer();
- c -> SetAlign(tag);
- m_WParser -> SetAlign(c -> GetAlignHor());
+ int old = m_WParser->GetAlign();
+ wxHtmlContainerCell *c = m_WParser->GetContainer();
+ if (c->GetFirstCell() != NULL)
+ {
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
+ c = m_WParser->GetContainer();
+ c->SetAlign(tag);
+ m_WParser->SetAlign(c->GetAlignHor());
}
- else {
- c -> SetAlign(tag);
- m_WParser -> SetAlign(c -> GetAlignHor());
+ else
+ {
+ c->SetAlign(tag);
+ m_WParser->SetAlign(c->GetAlignHor());
}
ParseInner(tag);
- m_WParser -> SetAlign(old);
- if (c -> GetFirstCell() != NULL) {
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
+ m_WParser->SetAlign(old);
+ if (c->GetFirstCell() != NULL)
+ {
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
}
else
- c -> SetAlignHor(old);
+ c->SetAlignHor(old);
return TRUE;
}
TAG_HANDLER_PROC(tag)
{
- if (m_WParser -> GetWindow()) {
- wxHtmlWindow *wfr = (wxHtmlWindow*)(m_WParser -> GetWindow());
- if (wfr) {
- wxString title = "";
- wxString *src = m_WParser -> GetSource();
-
- for (int i = tag.GetBeginPos(); i < tag.GetEndPos1(); i++) title += (*src)[i];
- wfr -> SetTitle(title);
+ if (m_WParser->GetWindow())
+ {
+ wxHtmlWindow *wfr = (wxHtmlWindow*)(m_WParser->GetWindow());
+ if (wfr)
+ {
+ const wxString& src = *m_WParser->GetSource();
+ wfr->OnSetTitle(src.Mid(tag.GetBeginPos(),
+ tag.GetEndPos1()-tag.GetBeginPos()));
}
}
return TRUE;
TAG_HANDLER_PROC(tag)
{
- unsigned long tmp;
wxColour clr;
- if (tag.HasParam("TEXT(")) {
- if (tag.ScanParam("TEXT(", "#%lX", &tmp) == 1) {
- clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
- m_WParser -> SetActualColor(clr);
- m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr));
- }
- }
-
- if (tag.HasParam("LINK")) {
- if (tag.ScanParam("LINK", "#%lX", &tmp) == 1) {
- clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
- m_WParser -> SetLinkColor(clr);
- }
+ if (tag.GetParamAsColour(wxT("TEXT"), &clr))
+ {
+ m_WParser->SetActualColor(clr);
+ m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
}
- if (tag.HasParam("BGCOLOR")) {
- if (tag.ScanParam("BGCOLOR", "#%lX", &tmp) == 1) {
- clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
- m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr, HTML_CLR_BACKGROUND));
- if (m_WParser -> GetWindow() != NULL)
- m_WParser -> GetWindow() -> SetBackgroundColour(clr);
- }
+ if (tag.GetParamAsColour(wxT("LINK"), &clr))
+ m_WParser->SetLinkColor(clr);
+
+ if (tag.GetParamAsColour(wxT("BGCOLOR"), &clr))
+ {
+ m_WParser->GetContainer()->InsertCell(
+ new wxHtmlColourCell(clr, wxHTML_CLR_BACKGROUND));
+ if (m_WParser->GetWindow() != NULL)
+ m_WParser->GetWindow()->SetBackgroundColour(clr);
}
return FALSE;
}
TAG_HANDLER_PROC(tag)
{
wxHtmlContainerCell *c;
-
- m_WParser -> CloseContainer();
- c = m_WParser -> OpenContainer();
- if (c -> GetAlignHor() == HTML_ALIGN_RIGHT)
- c -> SetIndent(5 * m_WParser -> GetCharWidth(), HTML_INDENT_RIGHT);
+
+ m_WParser->CloseContainer();
+ c = m_WParser->OpenContainer();
+
+ if (c->GetAlignHor() == wxHTML_ALIGN_RIGHT)
+ c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_RIGHT);
else
- c -> SetIndent(5 * m_WParser -> GetCharWidth(), HTML_INDENT_LEFT);
- c -> SetIndent(m_WParser -> GetCharHeight(), HTML_INDENT_TOP);
- m_WParser -> OpenContainer();
+ c->SetIndent(5 * m_WParser->GetCharWidth(), wxHTML_INDENT_LEFT);
+
+ c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
+ m_WParser->OpenContainer();
ParseInner(tag);
- c = m_WParser -> CloseContainer();
- c -> SetIndent(m_WParser -> GetCharHeight(), HTML_INDENT_BOTTOM);
- m_WParser -> CloseContainer();
- m_WParser -> OpenContainer();
+ c = m_WParser->CloseContainer();
+ c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_BOTTOM);
+ m_WParser->CloseContainer();
+ m_WParser->OpenContainer();
return TRUE;
}
+// Tag handler for tags that we have to ignore, otherwise non-text data
+// would show up as text:
+TAG_HANDLER_BEGIN(DoNothing, "SCRIPT")
+ TAG_HANDLER_PROC(tag)
+ {
+ return true;
+ }
+TAG_HANDLER_END(DoNothing)
TAGS_MODULE_ADD(TITLE)
TAGS_MODULE_ADD(BODY)
TAGS_MODULE_ADD(BLOCKQUOTE)
+ TAGS_MODULE_ADD(DoNothing)
TAGS_MODULE_END(Layout)