Send full url to wxHtmlWindow::OnOpeningURL validation (and therefore use wxURL to not duplicate code). Present it in statusbar of samples/html/test application.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31033 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
<wx-lib>gizmos</wx-lib>
|
<wx-lib>gizmos</wx-lib>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
</exe>
|
</exe>
|
||||||
|
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
<wx-lib>adv</wx-lib>
|
<wx-lib>adv</wx-lib>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>studio.rc</win32-res>
|
<win32-res>studio.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
<wx-lib>xml</wx-lib>
|
<wx-lib>xml</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>wxrcedit.rc</win32-res>
|
<win32-res>wxrcedit.rc</win32-res>
|
||||||
<ldlibs>$(EXTRALIBS_XML)</ldlibs>
|
<ldlibs>$(EXTRALIBS_XML)</ldlibs>
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
<wx-lib>odbc</wx-lib>
|
<wx-lib>odbc</wx-lib>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>dbbrowse.rc</win32-res>
|
<win32-res>dbbrowse.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>adv</wx-lib>
|
<wx-lib>adv</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>forty.rc</win32-res>
|
<win32-res>forty.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
<sources>wxpoem.cpp</sources>
|
<sources>wxpoem.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>wxpoem.rc</win32-res>
|
<win32-res>wxpoem.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
<sources>demo.cpp</sources>
|
<sources>demo.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>demo.rc</win32-res>
|
<win32-res>demo.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
<sources>htlbox.cpp</sources>
|
<sources>htlbox.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>htlbox.rc</win32-res>
|
<win32-res>htlbox.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<sources>about.cpp</sources>
|
<sources>about.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>about.rc</win32-res>
|
<win32-res>about.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<sources>help.cpp</sources>
|
<sources>help.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>help.rc</win32-res>
|
<win32-res>help.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<sources>helpview.cpp</sources>
|
<sources>helpview.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>helpview.rc</win32-res>
|
<win32-res>helpview.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<sources>printing.cpp</sources>
|
<sources>printing.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<wx-lib>adv</wx-lib>
|
<wx-lib>adv</wx-lib>
|
||||||
<win32-res>printing.rc</win32-res>
|
<win32-res>printing.rc</win32-res>
|
||||||
|
@@ -44,6 +44,20 @@ public:
|
|||||||
virtual bool OnInit();
|
virtual bool OnInit();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Define a new html window type: this is a wrapper for handling wxHtmlWindow events
|
||||||
|
class MyHtmlWindow : public wxHtmlWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MyHtmlWindow(wxWindow *parent) : wxHtmlWindow( parent ) { }
|
||||||
|
|
||||||
|
virtual wxHtmlOpeningStatus OnOpeningURL(wxHtmlURLType WXUNUSED(type),
|
||||||
|
const wxString& WXUNUSED(url),
|
||||||
|
wxString *WXUNUSED(redirect)) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_NO_COPY_CLASS(MyHtmlWindow)
|
||||||
|
};
|
||||||
|
|
||||||
// Define a new frame type: this is going to be our main frame
|
// Define a new frame type: this is going to be our main frame
|
||||||
class MyFrame : public wxFrame
|
class MyFrame : public wxFrame
|
||||||
{
|
{
|
||||||
@@ -59,7 +73,7 @@ public:
|
|||||||
void OnProcessor(wxCommandEvent& event);
|
void OnProcessor(wxCommandEvent& event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxHtmlWindow *m_Html;
|
MyHtmlWindow *m_Html;
|
||||||
wxHtmlProcessor *m_Processor;
|
wxHtmlProcessor *m_Processor;
|
||||||
|
|
||||||
// Any class wishing to process wxWidgets events must use this macro
|
// Any class wishing to process wxWidgets events must use this macro
|
||||||
@@ -185,12 +199,12 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
|||||||
#endif // wxUSE_ACCEL
|
#endif // wxUSE_ACCEL
|
||||||
|
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
CreateStatusBar(1);
|
CreateStatusBar(2);
|
||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
|
|
||||||
m_Processor = new BoldProcessor;
|
m_Processor = new BoldProcessor;
|
||||||
m_Processor->Enable(false);
|
m_Processor->Enable(false);
|
||||||
m_Html = new wxHtmlWindow(this);
|
m_Html = new MyHtmlWindow(this);
|
||||||
m_Html->SetRelatedFrame(this, _("HTML : %s"));
|
m_Html->SetRelatedFrame(this, _("HTML : %s"));
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
m_Html->SetRelatedStatusBar(0);
|
m_Html->SetRelatedStatusBar(0);
|
||||||
@@ -242,3 +256,11 @@ void MyFrame::OnProcessor(wxCommandEvent& WXUNUSED(event))
|
|||||||
m_Processor->Enable(!m_Processor->IsEnabled());
|
m_Processor->Enable(!m_Processor->IsEnabled());
|
||||||
m_Html->LoadPage(m_Html->GetOpenedPage());
|
m_Html->LoadPage(m_Html->GetOpenedPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxHtmlOpeningStatus MyHtmlWindow::OnOpeningURL(wxHtmlURLType WXUNUSED(type),
|
||||||
|
const wxString& url,
|
||||||
|
wxString *WXUNUSED(redirect)) const
|
||||||
|
{
|
||||||
|
GetRelatedFrame()->SetStatusText(url + _T(" lately opened"),1);
|
||||||
|
return wxHTML_OPEN;
|
||||||
|
}
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<sources>virtual.cpp</sources>
|
<sources>virtual.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>virtual.rc</win32-res>
|
<win32-res>virtual.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<sources>widget.cpp</sources>
|
<sources>widget.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>widget.rc</win32-res>
|
<win32-res>widget.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<sources>zip.cpp</sources>
|
<sources>zip.cpp</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>zip.rc</win32-res>
|
<win32-res>zip.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
<wx-lib>adv</wx-lib>
|
<wx-lib>adv</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
<wx-lib>xml</wx-lib>
|
<wx-lib>xml</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<win32-res>xrcdemo.rc</win32-res>
|
<win32-res>xrcdemo.rc</win32-res>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -32,6 +32,7 @@
|
|||||||
#include "wx/fontmap.h"
|
#include "wx/fontmap.h"
|
||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
#include "wx/settings.h"
|
#include "wx/settings.h"
|
||||||
|
#include "wx/url.h"
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -248,16 +249,47 @@ wxObject* wxHtmlWinParser::GetProduct()
|
|||||||
wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type,
|
wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type,
|
||||||
const wxString& url) const
|
const wxString& url) const
|
||||||
{
|
{
|
||||||
// FIXME - normalize the URL to full path before passing to
|
|
||||||
// OnOpeningURL!!
|
|
||||||
if ( m_Window )
|
if ( m_Window )
|
||||||
{
|
{
|
||||||
wxString myurl(url);
|
wxString myurl(url);
|
||||||
wxHtmlOpeningStatus status;
|
wxHtmlOpeningStatus status;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
wxString myfullurl(myurl);
|
||||||
|
|
||||||
|
#if wxUSE_URL
|
||||||
|
// consider url as absolute path first
|
||||||
|
wxURL current(wxURL::Unescape(myurl));
|
||||||
|
myfullurl = current.GetURL();
|
||||||
|
|
||||||
|
// if not absolute then ...
|
||||||
|
if( current.IsReference() )
|
||||||
|
{
|
||||||
|
wxString basepath = GetFS()->GetPath();
|
||||||
|
wxURI base(wxURL::Unescape(basepath));
|
||||||
|
|
||||||
|
// try to apply base path if valid ...
|
||||||
|
if( !base.IsReference() )
|
||||||
|
{
|
||||||
|
wxURI path(myfullurl);
|
||||||
|
path.Resolve( base );
|
||||||
|
myfullurl = path.BuildURI();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ... or force such addition if not included already
|
||||||
|
if( !current.GetURL().Contains(basepath) )
|
||||||
|
{
|
||||||
|
basepath += myurl;
|
||||||
|
wxURL connected( wxURL::Unescape(basepath) );
|
||||||
|
myfullurl = connected.GetURL();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
wxString redirect;
|
wxString redirect;
|
||||||
status = m_Window->OnOpeningURL(type, myurl, &redirect);
|
status = m_Window->OnOpeningURL(type, myfullurl, &redirect);
|
||||||
if ( status != wxHTML_REDIRECT )
|
if ( status != wxHTML_REDIRECT )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
<wx-lib>xml</wx-lib>
|
<wx-lib>xml</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
</exe>
|
</exe>
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
<win32-res>hhp2cached.rc</win32-res>
|
<win32-res>hhp2cached.rc</win32-res>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<install-to>$(BINDIR)</install-to>
|
<install-to>$(BINDIR)</install-to>
|
||||||
</exe>
|
</exe>
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
<sources>$(TEX2RTF_SRC)</sources>
|
<sources>$(TEX2RTF_SRC)</sources>
|
||||||
<wx-lib>html</wx-lib>
|
<wx-lib>html</wx-lib>
|
||||||
<wx-lib>core</wx-lib>
|
<wx-lib>core</wx-lib>
|
||||||
|
<wx-lib>net</wx-lib>
|
||||||
<wx-lib>base</wx-lib>
|
<wx-lib>base</wx-lib>
|
||||||
<install-to>$(BINDIR)</install-to>
|
<install-to>$(BINDIR)</install-to>
|
||||||
</exe>
|
</exe>
|
||||||
|
Reference in New Issue
Block a user