⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 browserview.cpp

📁 JDesktop Integration Components (JDIC)
💻 CPP
📖 第 1 页 / 共 2 页
字号:
void CBrowserView::OnPaste(){    if (m_bUrlBarClipOp)    {        mpBrowserFrame->PasteFromClipboardToUrlBar();        m_bUrlBarClipOp = FALSE;    }    else    {        nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(mWebBrowser);        if (clipCmds)            clipCmds->Paste();    }}void CBrowserView::OnUndoUrlBarEditOp(){    if (mpBrowserFrame->CanUndoUrlBarEditOp())        mpBrowserFrame->UndoUrlBarEditOp();}void CBrowserView::OnUpdatePaste(CCmdUI* pCmdUI){    PRBool canPaste = PR_FALSE;    nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(mWebBrowser);    if (clipCmds)        clipCmds->CanPaste(&canPaste);    if (!canPaste)    {        if (mpBrowserFrame->CanPasteToUrlBar())        {            canPaste = TRUE;            m_bUrlBarClipOp = TRUE;        }    }    pCmdUI->Enable(canPaste);}void CBrowserView::OnSelectAll(){    nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(mWebBrowser);    if (clipCmds)        clipCmds->SelectAll();}void CBrowserView::OnSelectNone(){    nsCOMPtr<nsIClipboardCommands> clipCmds = do_GetInterface(mWebBrowser);    if (clipCmds)        clipCmds->SelectNone();}void CBrowserView::OnFileOpen(){    char *lpszFilter =        "HTML Files Only (*.htm;*.html)|*.htm;*.html|"        "All Files (*.*)|*.*||";    CFileDialog cf(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,                    lpszFilter, this);    if (cf.DoModal() == IDOK)    {        CString strFullPath = cf.GetPathName(); // Will be like: c:\tmp\junk.htm        OpenURL(strFullPath);    }}nsresult CBrowserView::SavePageAs(){    nsresult rv;    nsCOMPtr<nsIFilePicker> filePicker = do_CreateInstance("@mozilla.org/filepicker;1", &rv);    NS_ENSURE_SUCCESS(rv, rv);    rv = filePicker->Init(nsnull, NS_LITERAL_STRING("Save Page As").get(), nsIFilePicker::modeSave);    NS_ENSURE_SUCCESS(rv, rv);    filePicker->AppendFilter(NS_LITERAL_STRING("Web Page, HTML Only (*.htm;*.html)").get(),                             NS_LITERAL_STRING("*.htm;*.html").get());    filePicker->AppendFilter(NS_LITERAL_STRING("Text File (*.txt)").get(),                             NS_LITERAL_STRING("*.txtl").get());    NS_ENSURE_TRUE(mBaseWindow, NS_ERROR_ABORT);    nsXPIDLString idlStrTitle;    mBaseWindow->GetTitle(getter_Copies(idlStrTitle));    idlStrTitle.Append(NS_LITERAL_STRING(".html"));    rv = filePicker->SetDefaultString(idlStrTitle);    NS_ENSURE_SUCCESS(rv, rv);    PRInt16 dialogResult;    filePicker->Show(&dialogResult);    if (dialogResult == nsIFilePicker::returnCancel) {        return NS_ERROR_ABORT;    }    nsCOMPtr<nsILocalFile> localFile;    rv = filePicker->GetFile(getter_AddRefs(localFile));    NS_ENSURE_SUCCESS(rv, rv);    if (dialogResult == nsIFilePicker::returnReplace) {        // be extra safe and only delete when the file is really a file        PRBool isFile;        rv = localFile->IsFile(&isFile);        if (NS_SUCCEEDED(rv) && isFile) {            rv = localFile->Remove(PR_FALSE);            NS_ENSURE_SUCCESS(rv, rv);        }    }    nsCOMPtr<nsIWebBrowserPersist> persist(do_QueryInterface(mWebBrowser));    rv = persist->SaveURI(nsnull, nsnull, nsnull, nsnull, nsnull, localFile);    return rv;}void CBrowserView::OnFileSaveAs(){	SavePageAs();}nsresult CBrowserView::GetURL(nsCAutoString &uriString){    nsCOMPtr<nsIURI> currentURI;    nsresult rv = mWebNav->GetCurrentURI(getter_AddRefs(currentURI));    NS_ENSURE_SUCCESS(rv, rv);    if (currentURI == NULL)        return NS_ERROR_FAILURE;    else        return currentURI->GetSpec(uriString);}void CBrowserView::OpenURL(const char* pUrl, const char* pPostData, const char* pHeader){    OpenURL(NS_ConvertASCIItoUCS2(pUrl).get(), pPostData, pHeader);}void CBrowserView::OpenURL(const PRUnichar* pUrl, const char* pPostData, const char* pHeader){    if (! mWebNav)        return;    nsresult rv;    nsCOMPtr<nsIInputStream> postDataStream;    nsCOMPtr<nsIInputStream> headersStream;    if (pPostData)     {        unsigned long nSizeData = strlen(pPostData);        if (nSizeData > 0)         {            char szCL[64];            sprintf(szCL, "Content-Length: %lu\r\n\r\n", nSizeData);            unsigned long nSizeCL = strlen(szCL);            unsigned long nSize = nSizeCL + nSizeData;            // byte stream owns this memory.            char *tmpPostData = (char *) nsMemory::Alloc(nSize + 1);             if (tmpPostData)             {                memcpy(tmpPostData, szCL, nSizeCL);                memcpy(tmpPostData + nSizeCL, pPostData, nSizeData);                tmpPostData[nSize] = '\0';                nsCOMPtr<nsIStringInputStream> stream;                stream = do_CreateInstance(NS_STRINGINPUTSTREAM_CONTRACTID, &rv);                if (NS_FAILED(rv) || !stream)                 {                    NS_ASSERTION(0, "cannot create PostData stream");                    nsMemory::Free(tmpPostData);                    return;                }                stream->AdoptData(tmpPostData, nSize);                postDataStream = do_QueryInterface(stream);            }        }    }        if (pHeader)     {        unsigned long nSize = strlen(pHeader) + 1;        if (nSize > 0)         {            // byteArray stream owns this memory.            char *tmpHeader = (char *) nsMemory::Alloc(nSize);             if (tmpHeader)             {                memcpy(tmpHeader, pHeader, nSize);                nsCOMPtr<nsIStringInputStream> stream;                stream = do_CreateInstance(NS_STRINGINPUTSTREAM_CONTRACTID, &rv);                if (NS_FAILED(rv) || !stream)                 {                    NS_ASSERTION(0, "cannot create Header stream");                    nsMemory::Free(tmpHeader);                    return;                }                stream->AdoptData(tmpHeader, nSize);                headersStream = do_QueryInterface(stream);            }        }    }    mWebNav->LoadURI(pUrl,                              // URI string                     nsIWebNavigation::LOAD_FLAGS_NONE, // Load flags                     nsnull,                            // Refering URI                     postDataStream,                    // Post data                     headersStream);                    // Extra headers}CBrowserFrame* CBrowserView::CreateNewBrowserFrame(                                    PRUint32 chromeMask,                                    PRInt32 x, PRInt32 y,                                    PRInt32 cx, PRInt32 cy,                                    PRBool bShowWindow){    MozEmbedApp *pApp = (MozEmbedApp *)AfxGetApp();    if (!pApp)        return NULL;    return pApp->CreateNewBrowserFrame(        chromeMask, NULL, x, y, cx, cy, bShowWindow);}void CBrowserView::OpenURLInNewWindow(const PRUnichar* pUrl){    if (!pUrl)        return;    CBrowserFrame* pFrm = CreateNewBrowserFrame();    if (!pFrm)        return;    // Load the URL into it...    // Note that OpenURL() is overloaded - one takes a "char *"    // and the other a "PRUniChar *". We're using the "PRUnichar *"    // version here    pFrm->m_wndBrowserView.OpenURL(pUrl);}void CBrowserView::OnCopyLinkLocation(){    if (! mCtxMenuLinkUrl.Length())        return;    if (! OpenClipboard())        return;    HGLOBAL hClipData = ::GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, mCtxMenuLinkUrl.Length() + 1);    if (! hClipData)        return;    char *pszClipData = (char*)::GlobalLock(hClipData);    if (!pszClipData)        return;    mCtxMenuLinkUrl.ToCString(pszClipData, mCtxMenuLinkUrl.Length() + 1);    GlobalUnlock(hClipData);    EmptyClipboard();    SetClipboardData(CF_TEXT, hClipData);    CloseClipboard();}void CBrowserView::OnOpenLinkInNewWindow(){    if (mCtxMenuLinkUrl.Length())        OpenURLInNewWindow(mCtxMenuLinkUrl.get());}void CBrowserView::OnViewImageInNewWindow(){    if (mCtxMenuImgSrc.Length())        OpenURLInNewWindow(mCtxMenuImgSrc.get());}void CBrowserView::OnUpdateViewImage(CCmdUI *pCmdUI){    pCmdUI->Enable(mCtxMenuImgSrc.Length() > 0);}void CBrowserView::OnSaveLinkAs(){    if (! mCtxMenuLinkUrl.Length())        return;    // Try to get the file name part from the URL    // To do that we first construct an obj which supports    // nsIRUI interface. Makes it easy to extract portions    // of a URL like the filename, scheme etc. + We'll also    // use it while saving this link to a file    nsresult rv   = NS_OK;    nsCOMPtr<nsIURI> linkURI;    rv = NS_NewURI(getter_AddRefs(linkURI), mCtxMenuLinkUrl);    if (NS_FAILED(rv))        return;    // Get the "path" portion (see nsIURI.h for more info    // on various parts of a URI)    nsCAutoString fileName;    linkURI->GetPath(fileName);    // The path may have the "/" char in it - strip those    fileName.StripChars("\\/");    // Now, use this file name in a File Save As dlg...    char *lpszFilter =        "HTML Files (*.htm;*.html)|*.htm;*.html|"        "Text Files (*.txt)|*.txt|"        "All Files (*.*)|*.*||";    const char *pFileName = fileName.Length() ? fileName.get() : NULL;    CFileDialog cf(FALSE, "htm", pFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,        lpszFilter, this);    if (cf.DoModal() == IDOK)    {        CString strFullPath = cf.GetPathName();        nsCOMPtr<nsIWebBrowserPersist> persist(do_QueryInterface(mWebBrowser));        if (persist)        {            nsCOMPtr<nsILocalFile> file;            NS_NewNativeLocalFile(nsDependentCString(strFullPath.GetBuffer(0)), TRUE, getter_AddRefs(file));            persist->SaveURI(linkURI, nsnull, nsnull, nsnull, nsnull, file);        }    }}void CBrowserView::OnSaveImageAs(){    if (! mCtxMenuImgSrc.Length())        return;    // Try to get the file name part from the URL    // To do that we first construct an obj which supports    // nsIRUI interface. Makes it easy to extract portions    // of a URL like the filename, scheme etc. + We'll also    // use it while saving this link to a file    nsresult rv   = NS_OK;    nsCOMPtr<nsIURI> linkURI;    rv = NS_NewURI(getter_AddRefs(linkURI), mCtxMenuImgSrc);    if (NS_FAILED(rv))        return;    // Get the "path" portion (see nsIURI.h for more info    // on various parts of a URI)    nsCAutoString path;    linkURI->GetPath(path);    // The path may have the "/" char in it - strip those    nsCAutoString fileName(path);    fileName.StripChars("\\/");    // Now, use this file name in a File Save As dlg...    char *lpszFilter = "All Files (*.*)|*.*||";    const char *pFileName = fileName.Length() ? fileName.get() : NULL;    CFileDialog cf(FALSE, NULL, pFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,        lpszFilter, this);    if (cf.DoModal() == IDOK)    {        CString strFullPath = cf.GetPathName();        nsCOMPtr<nsIWebBrowserPersist> persist(do_QueryInterface(mWebBrowser));        if (persist)        {            nsCOMPtr<nsILocalFile> file;            NS_NewNativeLocalFile(nsDependentCString(strFullPath.GetBuffer(0)), TRUE, getter_AddRefs(file));            persist->SaveURI(linkURI, nsnull, nsnull, nsnull, nsnull, file);        }    }}// Called from the busy state related methods in the// BrowserFrameGlue object//// When aBusy is TRUE it means that browser is busy loading a URL// When aBusy is FALSE, it's done loading// We use this to update our STOP tool bar button//// We basically note this state into a member variable// The actual toolbar state will be updated in response to the// ON_UPDATE_COMMAND_UI method - OnUpdateNavStop() being called//void CBrowserView::UpdateBusyState(PRBool aBusy){  if (mbDocumentLoading && !aBusy && m_InPrintPreview)  {      nsCOMPtr<nsIWebBrowserPrint> print(do_GetInterface(mWebBrowser));        if (print)        {          PRBool isDoingPP;          print->GetDoingPrintPreview(&isDoingPP);          if (!isDoingPP)          {              m_InPrintPreview = FALSE;              CMenu* menu = mpBrowserFrame->GetMenu();              if (menu)              {                  menu->CheckMenuItem( ID_FILE_PRINTPREVIEW, MF_UNCHECKED );              }          }      }  }    mbDocumentLoading = aBusy;}void CBrowserView::SetCtxMenuLinkUrl(nsAutoString& strLinkUrl){    mCtxMenuLinkUrl = strLinkUrl;}void CBrowserView::SetCtxMenuImageSrc(nsAutoString& strImgSrc){    mCtxMenuImgSrc = strImgSrc;}void CBrowserView::SetCurrentFrameURL(nsAutoString& strCurrentFrameURL){    mCtxMenuCurrentFrameURL = strCurrentFrameURL;}void CBrowserView::Activate(UINT nState, CWnd* pWndOther, BOOL bMinimized){    nsCOMPtr<nsIWebBrowserFocus> focus(do_GetInterface(mWebBrowser));    if (!focus)        return;    switch(nState) {        case WA_ACTIVE:        case WA_CLICKACTIVE:            focus->Activate();            break;        case WA_INACTIVE:            focus->Deactivate();            break;        default:            break;    }}void CBrowserView::ShowSecurityInfo(){    HWND hParent = mpBrowserFrame->m_hWnd;    if (m_SecurityState == SECURITY_STATE_INSECURE) {        CString csMsg;        csMsg.LoadString(IDS_NOSECURITY_INFO);        ::MessageBox(hParent, csMsg, "MozEmbed", MB_OK);        return;    }    ::MessageBox(hParent, "To Be Done..........", "MozEmbed", MB_OK);}// Determintes if the currently loaded document// contains frames//BOOL CBrowserView::ViewContentContainsFrames(){    nsresult rv = NS_OK;    // Get nsIDOMDocument from nsIWebNavigation    nsCOMPtr<nsIDOMDocument> domDoc;    rv = mWebNav->GetDocument(getter_AddRefs(domDoc));    if (NS_FAILED(rv))       return FALSE;    // QI nsIDOMDocument for nsIDOMHTMLDocument    nsCOMPtr<nsIDOMHTMLDocument> htmlDoc = do_QueryInterface(domDoc);    if (!htmlDoc)        return FALSE;    // Get the <body> element of the doc    nsCOMPtr<nsIDOMHTMLElement> body;    rv = htmlDoc->GetBody(getter_AddRefs(body));    if (NS_FAILED(rv))       return FALSE;    // Is it of type nsIDOMHTMLFrameSetElement?    nsCOMPtr<nsIDOMHTMLFrameSetElement> frameset = do_QueryInterface(body);    return (frameset != nsnull);}void CBrowserView::OnViewFrameSource(){    USES_CONVERSION;    // Build the view-source: url    //    nsCAutoString viewSrcUrl;    viewSrcUrl.Append("view-source:");    viewSrcUrl.Append(W2T(mCtxMenuCurrentFrameURL.get()));    OpenViewSourceWindow(viewSrcUrl.get());}void CBrowserView::OnOpenFrameInNewWindow(){    if (mCtxMenuCurrentFrameURL.Length())        OpenURLInNewWindow(mCtxMenuCurrentFrameURL.get());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -