void IWnd_flash::OnActiveXEvent(wxActiveXEvent& event) { switch ( event.GetDispatchId() ) { case FLASH_DISPID_ONREADYSTATECHANGE: m_pData->SetState(event[0].GetInteger()); break; case FLASH_DISPID_ONPROGRESS: //("Progress: %d%%", event[0].GetInteger()); break; case FLASH_DISPID_FSCOMMAND: //("Flash command %s(%s)", event[0].GetString(), event[1].GetString()); break; case FLASH_DISPID_FLASHCALL: //("Flash request \"%s\"", event[0].GetString()); break; default: //("Unknown event %ld", event.GetDispatchId());rea break; } event.Skip(); }
void AeroQSPFrame::OnFlashEvent( wxActiveXEvent &event ) { wxString str, val; switch (event.GetDispatchId()) { case FLASH_DISPID_ONREADYSTATECHANGE: { const int state = event[0].GetInteger(); if (state != _lastState) { if ( state >= 0 && state < FlashState_Max ) _lastState = static_cast<FlashState>(state); else _lastState = FlashState_Unknown; if (_lastState == FlashState_Complete) { if (_flash->IsLoaded()) Init(); else { wxMessageBox("Error: AeroQSP can't be loaded"); Close(); } } } } break; case FLASH_DISPID_ONPROGRESS: break; case FLASH_DISPID_FSCOMMAND: str = event[0].GetString(); val = event[1].GetString(); if (str == wxT("setTitle")) SetUserTitle(val); else if (str == wxT("setSize")) SetUserSize(val); break; case FLASH_DISPID_FLASHCALL: break; } event.Skip(); }
void FlashFrame::OnActiveXEvent(wxActiveXEvent& event) { switch ( event.GetDispatchId() ) { case FLASH_DISPID_ONREADYSTATECHANGE: { const int state = event[0].GetInteger(); if ( state != m_state ) { wxLogMessage("State changed to %s", GetFlashStateString(state)); if ( state >= 0 && state < FlashState_Max ) m_state = static_cast<FlashState>(state); else m_state = FlashState_Unknown; } } break; case FLASH_DISPID_ONPROGRESS: wxLogMessage("Progress: %d%%", event[0].GetInteger()); break; case FLASH_DISPID_FSCOMMAND: wxLogMessage("Flash command %s(%s)", event[0].GetString(), event[1].GetString()); break; case FLASH_DISPID_FLASHCALL: wxLogMessage("Flash request \"%s\"", event[0].GetString()); break; default: wxLogMessage("Unknown event %ld", event.GetDispatchId()); } event.Skip(); }
void wxWebViewIE::onActiveXEvent(wxActiveXEvent& evt) { if (m_webBrowser == NULL) return; switch (evt.GetDispatchId()) { case DISPID_BEFORENAVIGATE2: { m_isBusy = true; wxString url = evt[1].GetString(); wxString target = evt[3].GetString(); wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NAVIGATING, GetId(), url, target); //skip empty javascript events. if(url == "javascript:\"\"" && target.IsEmpty()) { event.Veto(); } else { event.SetEventObject(this); HandleWindowEvent(event); } if (!event.IsAllowed()) { wxActiveXEventNativeMSW* nativeParams = evt.GetNativeParameters(); *V_BOOLREF(&nativeParams->pDispParams->rgvarg[0]) = VARIANT_TRUE; } // at this point, either the navigation event has been cancelled // and we're not busy, either it was accepted and IWebBrowser2's // Busy property will be true; so we don't need our override // flag anymore. m_isBusy = false; break; } case DISPID_NAVIGATECOMPLETE2: { wxString url = evt[1].GetString(); // TODO: set target parameter if possible wxString target = wxEmptyString; wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NAVIGATED, GetId(), url, target); event.SetEventObject(this); HandleWindowEvent(event); break; } case DISPID_PROGRESSCHANGE: { // download progress break; } case DISPID_DOCUMENTCOMPLETE: { //Only send a complete even if we are actually finished, this brings //the event in to line with webkit READYSTATE rs; m_webBrowser->get_ReadyState( &rs ); if(rs != READYSTATE_COMPLETE) break; wxString url = evt[1].GetString(); //As we are complete we also add to the history list, but not if the //page is not the main page, ie it is a subframe //We also have to check if we are loading a file:// url, if so we //need to change the comparison as ie passes back a different style //of url if(m_historyEnabled && !m_historyLoadingFromList && (url == GetCurrentURL() || (GetCurrentURL().substr(0, 4) == "file" && wxFileSystem::URLToFileName(GetCurrentURL()).GetFullPath() == url))) { //If we are not at the end of the list, then erase everything //between us and the end before adding the new page if(m_historyPosition != static_cast<int>(m_historyList.size()) - 1) { m_historyList.erase(m_historyList.begin() + m_historyPosition + 1, m_historyList.end()); } wxSharedPtr<wxWebViewHistoryItem> item(new wxWebViewHistoryItem(url, GetCurrentTitle())); m_historyList.push_back(item); m_historyPosition++; } //Reset as we are done now m_historyLoadingFromList = false; // TODO: set target parameter if possible wxString target = wxEmptyString; wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_LOADED, GetId(), url, target); event.SetEventObject(this); HandleWindowEvent(event); break; } case DISPID_STATUSTEXTCHANGE: { break; } case DISPID_TITLECHANGE: { wxString title = evt[0].GetString(); wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED, GetId(), GetCurrentURL(), ""); event.SetString(title); event.SetEventObject(this); HandleWindowEvent(event); break; } case DISPID_NAVIGATEERROR: { wxWebViewNavigationError errorType = wxWEB_NAV_ERR_OTHER; wxString errorCode = "?"; switch (evt[3].GetLong()) { case INET_E_INVALID_URL: // (0x800C0002L or -2146697214) errorCode = "INET_E_INVALID_URL"; errorType = wxWEB_NAV_ERR_REQUEST; break; case INET_E_NO_SESSION: // (0x800C0003L or -2146697213) errorCode = "INET_E_NO_SESSION"; errorType = wxWEB_NAV_ERR_CONNECTION; break; case INET_E_CANNOT_CONNECT: // (0x800C0004L or -2146697212) errorCode = "INET_E_CANNOT_CONNECT"; errorType = wxWEB_NAV_ERR_CONNECTION; break; case INET_E_RESOURCE_NOT_FOUND: // (0x800C0005L or -2146697211) errorCode = "INET_E_RESOURCE_NOT_FOUND"; errorType = wxWEB_NAV_ERR_NOT_FOUND; break; case INET_E_OBJECT_NOT_FOUND: // (0x800C0006L or -2146697210) errorCode = "INET_E_OBJECT_NOT_FOUND"; errorType = wxWEB_NAV_ERR_NOT_FOUND; break; case INET_E_DATA_NOT_AVAILABLE: // (0x800C0007L or -2146697209) errorCode = "INET_E_DATA_NOT_AVAILABLE"; errorType = wxWEB_NAV_ERR_NOT_FOUND; break; case INET_E_DOWNLOAD_FAILURE: // (0x800C0008L or -2146697208) errorCode = "INET_E_DOWNLOAD_FAILURE"; errorType = wxWEB_NAV_ERR_CONNECTION; break; case INET_E_AUTHENTICATION_REQUIRED: // (0x800C0009L or -2146697207) errorCode = "INET_E_AUTHENTICATION_REQUIRED"; errorType = wxWEB_NAV_ERR_AUTH; break; case INET_E_NO_VALID_MEDIA: // (0x800C000AL or -2146697206) errorCode = "INET_E_NO_VALID_MEDIA"; errorType = wxWEB_NAV_ERR_REQUEST; break; case INET_E_CONNECTION_TIMEOUT: // (0x800C000BL or -2146697205) errorCode = "INET_E_CONNECTION_TIMEOUT"; errorType = wxWEB_NAV_ERR_CONNECTION; break; case INET_E_INVALID_REQUEST: // (0x800C000CL or -2146697204) errorCode = "INET_E_INVALID_REQUEST"; errorType = wxWEB_NAV_ERR_REQUEST; break; case INET_E_UNKNOWN_PROTOCOL: // (0x800C000DL or -2146697203) errorCode = "INET_E_UNKNOWN_PROTOCOL"; errorType = wxWEB_NAV_ERR_REQUEST; break; case INET_E_SECURITY_PROBLEM: // (0x800C000EL or -2146697202) errorCode = "INET_E_SECURITY_PROBLEM"; errorType = wxWEB_NAV_ERR_SECURITY; break; case INET_E_CANNOT_LOAD_DATA: // (0x800C000FL or -2146697201) errorCode = "INET_E_CANNOT_LOAD_DATA"; errorType = wxWEB_NAV_ERR_OTHER; break; case INET_E_CANNOT_INSTANTIATE_OBJECT: // CoCreateInstance will return an error code if this happens, // we'll handle this above. return; break; case INET_E_REDIRECT_FAILED: // (0x800C0014L or -2146697196) errorCode = "INET_E_REDIRECT_FAILED"; errorType = wxWEB_NAV_ERR_OTHER; break; case INET_E_REDIRECT_TO_DIR: // (0x800C0015L or -2146697195) errorCode = "INET_E_REDIRECT_TO_DIR"; errorType = wxWEB_NAV_ERR_REQUEST; break; case INET_E_CANNOT_LOCK_REQUEST: // (0x800C0016L or -2146697194) errorCode = "INET_E_CANNOT_LOCK_REQUEST"; errorType = wxWEB_NAV_ERR_OTHER; break; case INET_E_USE_EXTEND_BINDING: // (0x800C0017L or -2146697193) errorCode = "INET_E_USE_EXTEND_BINDING"; errorType = wxWEB_NAV_ERR_OTHER; break; case INET_E_TERMINATED_BIND: // (0x800C0018L or -2146697192) errorCode = "INET_E_TERMINATED_BIND"; errorType = wxWEB_NAV_ERR_OTHER; break; case INET_E_INVALID_CERTIFICATE: // (0x800C0019L or -2146697191) errorCode = "INET_E_INVALID_CERTIFICATE"; errorType = wxWEB_NAV_ERR_CERTIFICATE; break; case INET_E_CODE_DOWNLOAD_DECLINED: // (0x800C0100L or -2146696960) errorCode = "INET_E_CODE_DOWNLOAD_DECLINED"; errorType = wxWEB_NAV_ERR_USER_CANCELLED; break; case INET_E_RESULT_DISPATCHED: // (0x800C0200L or -2146696704) // cancel request cancelled... errorCode = "INET_E_RESULT_DISPATCHED"; errorType = wxWEB_NAV_ERR_OTHER; break; case INET_E_CANNOT_REPLACE_SFP_FILE: // (0x800C0300L or -2146696448) errorCode = "INET_E_CANNOT_REPLACE_SFP_FILE"; errorType = wxWEB_NAV_ERR_SECURITY; break; case INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY: errorCode = "INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY"; errorType = wxWEB_NAV_ERR_SECURITY; break; case INET_E_CODE_INSTALL_SUPPRESSED: errorCode = "INET_E_CODE_INSTALL_SUPPRESSED"; errorType = wxWEB_NAV_ERR_SECURITY; break; } wxString url = evt[1].GetString(); wxString target = evt[2].GetString(); wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_ERROR, GetId(), url, target); event.SetEventObject(this); event.SetInt(errorType); event.SetString(errorCode); HandleWindowEvent(event); break; } case DISPID_NEWWINDOW3: { wxString url = evt[4].GetString(); wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, GetId(), url, wxEmptyString); event.SetEventObject(this); HandleWindowEvent(event); //We always cancel this event otherwise an Internet Exporer window //is opened for the url wxActiveXEventNativeMSW* nativeParams = evt.GetNativeParameters(); *V_BOOLREF(&nativeParams->pDispParams->rgvarg[3]) = VARIANT_TRUE; break; } } evt.Skip(); }