home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / src / html / m_links.cpp < prev    next >
C/C++ Source or Header  |  2002-11-09  |  3KB  |  99 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        m_links.cpp
  3. // Purpose:     wxHtml module for links & anchors
  4. // Author:      Vaclav Slavik
  5. // RCS-ID:      $Id: m_links.cpp,v 1.8.2.3 2002/11/09 00:07:34 VS Exp $
  6. // Copyright:   (c) 1999 Vaclav Slavik
  7. // Licence:     wxWindows Licence
  8. /////////////////////////////////////////////////////////////////////////////
  9.  
  10. #ifdef __GNUG__
  11. #pragma implementation
  12. #endif
  13.  
  14. #include "wx/wxprec.h"
  15.  
  16. #include "wx/defs.h"
  17. #if wxUSE_HTML && wxUSE_STREAMS
  18.  
  19. #ifdef __BORLANDC__
  20. #pragma hdrstop
  21. #endif
  22.  
  23. #ifndef WXPRECOMP
  24. #endif
  25.  
  26. #include "wx/html/forcelnk.h"
  27. #include "wx/html/m_templ.h"
  28.  
  29.  
  30. FORCE_LINK_ME(m_links)
  31.  
  32.  
  33. class wxHtmlAnchorCell : public wxHtmlCell
  34. {
  35.     private:
  36.         wxString m_AnchorName;
  37.  
  38.     public:
  39.         wxHtmlAnchorCell(const wxString& name) : wxHtmlCell() {m_AnchorName = name;}
  40.         virtual const wxHtmlCell* Find(int condition, const void* param) const
  41.         {
  42.             if ((condition == wxHTML_COND_ISANCHOR) && (m_AnchorName == (*((const wxString*)param))))
  43.                 return this;
  44.             else
  45.                 return wxHtmlCell::Find(condition, param);
  46.         }
  47. };
  48.  
  49.  
  50.  
  51. TAG_HANDLER_BEGIN(A, "A")
  52.  
  53.     TAG_HANDLER_PROC(tag)
  54.     {
  55.         if (tag.HasParam( wxT("NAME") ))
  56.         {
  57.             m_WParser->GetContainer()->InsertCell(new wxHtmlAnchorCell(tag.GetParam( wxT("NAME") )));
  58.         }
  59.  
  60.         if (tag.HasParam( wxT("HREF") ))
  61.         {
  62.             wxHtmlLinkInfo oldlnk = m_WParser->GetLink();
  63.             wxColour oldclr = m_WParser->GetActualColor();
  64.             int oldund = m_WParser->GetFontUnderlined();
  65.             wxString name(tag.GetParam( wxT("HREF") )), target;
  66.  
  67.             if (tag.HasParam( wxT("TARGET") )) target = tag.GetParam( wxT("TARGET") );
  68.             m_WParser->SetActualColor(m_WParser->GetLinkColor());
  69.             m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(m_WParser->GetLinkColor()));
  70.             m_WParser->SetFontUnderlined(TRUE);
  71.             m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
  72.             m_WParser->SetLink(wxHtmlLinkInfo(name, target));
  73.  
  74.             ParseInner(tag);
  75.  
  76.             m_WParser->SetLink(oldlnk);
  77.             m_WParser->SetFontUnderlined(oldund);
  78.             m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
  79.             m_WParser->SetActualColor(oldclr);
  80.             m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
  81.  
  82.             return TRUE;
  83.         }
  84.         else return FALSE;
  85.     }
  86.  
  87. TAG_HANDLER_END(A)
  88.  
  89.  
  90.  
  91. TAGS_MODULE_BEGIN(Links)
  92.  
  93.     TAGS_MODULE_ADD(A)
  94.  
  95. TAGS_MODULE_END(Links)
  96.  
  97.  
  98. #endif
  99.