-wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_NAVIGATING, wxWebNavigationEvent );
-wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_NAVIGATED, wxWebNavigationEvent );
-wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_LOADED, wxWebNavigationEvent );
-wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_ERROR, wxWebNavigationEvent );
-wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, wxWebNavigationEvent );
-
-//Taken from wx/filesys.cpp
-static wxString EscapeFileNameCharsInURL(const char *in)
-{
- wxString s;
-
- for ( const unsigned char *p = (const unsigned char*)in; *p; ++p )
- {
- const unsigned char c = *p;
-
- if ( c == '/' || c == '-' || c == '.' || c == '_' || c == '~' ||
- (c >= '0' && c <= '9') ||
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') )
- {
- s << c;
- }
- else
- {
- s << wxString::Format("%%%02x", c);
- }
- }
-
- return s;
-}
-
-wxWebFileProtocolHandler::wxWebFileProtocolHandler()
-{
- m_protocol = "test";
- m_fileSystem = new wxFileSystem();
-}
-
-wxFSFile* wxWebFileProtocolHandler::GetFile(const wxString &uri)
-{
- size_t pos = uri.find('?');
- //There is no query string so we can load the file directly
- if(pos == wxString::npos)
- {
- size_t doubleslash = uri.find("//");
- //The path is incorrectly formed without // after the first protocol
- if(doubleslash == wxString::npos)
- return NULL;
-
- wxString fspath = "file:" +
- EscapeFileNameCharsInURL(uri.substr(doubleslash + 2));
- return m_fileSystem->OpenFile(fspath);
- }
- //Otherwise we have a query string of some kind that we need to extract
- else{
- //First we extract the query string, this should have two parameters,
- //protocol=type and path=path
- wxString query = uri.substr(pos + 1), protocol, path;
- //We also trim the query off the end as we handle it alone
- wxString lefturi = uri.substr(0, pos);
- wxStringTokenizer tokenizer(query, ";");
- while(tokenizer.HasMoreTokens() && (protocol == "" || path == ""))
- {
- wxString token = tokenizer.GetNextToken();
- if(token.substr(0, 9) == "protocol=")
- {
- protocol = token.substr(9);
- }
- else if(token.substr(0, 5) == "path=")
- {
- path = token.substr(5);
- }
- }
- if(protocol == "" || path == "")
- return NULL;
-
- //We now have the path and the protocol and so can format a correct uri
- //to pass to wxFileSystem to get a wxFSFile
- size_t doubleslash = uri.find("//");
- //The path is incorrectly formed without // after the first protocol
- if(doubleslash == wxString::npos)
- return NULL;
-
- wxString fspath = "file:" +
- EscapeFileNameCharsInURL(lefturi.substr(doubleslash + 2))
- + "#" + protocol +":" + path;
- return m_fileSystem->OpenFile(fspath);
- }
-}
-
-wxString wxWebFileProtocolHandler::CombineURIs(const wxString &baseuri,
- const wxString &newuri)
-{
- //Still need to be implemented correctly
- return newuri;
-}