
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3123 212acab6-be3b-0410-9dea-997c60f758d6
138 lines
3.2 KiB
C++
138 lines
3.2 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: m_links.cpp
|
|
// Purpose: wxHtml module for links & anchors
|
|
// Author: Vaclav Slavik
|
|
// RCS-ID: $Id: m_links.cpp,v 1.2 2003/09/22 19:28:09 joostverburg Exp $
|
|
// Copyright: (c) 1999 Vaclav Slavik
|
|
// Licence: wxWindows Licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifdef __GNUG__
|
|
#pragma implementation
|
|
#endif
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#include "wx/defs.h"
|
|
#if wxUSE_HTML && wxUSE_STREAMS
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WXPRECOMP
|
|
#endif
|
|
|
|
#include "wx/html/forcelnk.h"
|
|
#include "wx/html/m_templ.h"
|
|
|
|
|
|
FORCE_LINK_ME(m_links)
|
|
|
|
|
|
class wxHtmlAnchorCell : public wxHtmlCell
|
|
{
|
|
private:
|
|
wxString m_AnchorName;
|
|
|
|
public:
|
|
wxHtmlAnchorCell(const wxString& name) : wxHtmlCell() {m_AnchorName = name;}
|
|
virtual const wxHtmlCell* Find(int condition, const void* param) const
|
|
{
|
|
if ((condition == wxHTML_COND_ISANCHOR) && (m_AnchorName == (*((const wxString*)param))))
|
|
return this;
|
|
else
|
|
return wxHtmlCell::Find(condition, param);
|
|
}
|
|
};
|
|
|
|
|
|
|
|
TAG_HANDLER_BEGIN(A, "A")
|
|
|
|
TAG_HANDLER_PROC(tag)
|
|
{
|
|
if (tag.HasParam( wxT("NAME") ))
|
|
{
|
|
m_WParser->GetContainer()->InsertCell(new wxHtmlAnchorCell(tag.GetParam( wxT("NAME") )));
|
|
}
|
|
|
|
if (tag.HasParam( wxT("HREF") ))
|
|
{
|
|
wxHtmlLinkInfo oldlnk = m_WParser->GetLink();
|
|
wxColour oldclr = m_WParser->GetActualColor();
|
|
int oldund = m_WParser->GetFontUnderlined();
|
|
wxString name(tag.GetParam( wxT("HREF") )), target;
|
|
|
|
wxColor LinkColor;
|
|
LinkColor.Set(0x0C, 0x6E, 0x97);
|
|
|
|
char apppath[MAX_PATH],*temp;
|
|
GetModuleFileName(NULL,apppath,sizeof(apppath));
|
|
temp=strrchr(apppath,'\\');
|
|
if(temp!=NULL) *temp=0;
|
|
|
|
char fullpath[MAX_PATH];
|
|
|
|
if (name.Left(3).Cmp("EX:") == 0)
|
|
{
|
|
// External
|
|
|
|
if ((name.Left(10).Cmp("EX:http://") == 0) || (name.Left(9).Cmp("EX:irc://") == 0))
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
_snprintf(fullpath,sizeof(fullpath),"%s\\%s",apppath,name.Mid(3));
|
|
|
|
if (wxFileExists(fullpath) || wxDirExists(fullpath))
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
// Feature not installed
|
|
LinkColor.Set(0x80, 0x80, 0x80);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
if (tag.HasParam( wxT("TARGET") )) target = tag.GetParam( wxT("TARGET") );
|
|
m_WParser->SetActualColor(LinkColor);
|
|
m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(LinkColor));
|
|
m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
|
|
m_WParser->SetLink(wxHtmlLinkInfo(name, target));
|
|
|
|
ParseInner(tag);
|
|
|
|
m_WParser->SetLink(oldlnk);
|
|
m_WParser->SetFontUnderlined(oldund);
|
|
m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
|
|
m_WParser->SetActualColor(oldclr);
|
|
m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
|
|
|
|
return TRUE;
|
|
}
|
|
else return FALSE;
|
|
}
|
|
|
|
TAG_HANDLER_END(A)
|
|
|
|
|
|
|
|
TAGS_MODULE_BEGIN(Links)
|
|
|
|
TAGS_MODULE_ADD(A)
|
|
|
|
TAGS_MODULE_END(Links)
|
|
|
|
|
|
#endif
|