179 lines
4.3 KiB
C++
179 lines
4.3 KiB
C++
// HTMLEdDoc.cpp : implementation of the CHTMLEdDoc class
|
|
//
|
|
// This is a part of the Microsoft Foundation Classes C++ library.
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// This source code is only intended as a supplement to the
|
|
// Microsoft Foundation Classes Reference and related
|
|
// electronic documentation provided with the library.
|
|
// See these sources for detailed information regarding the
|
|
// Microsoft Foundation Classes product.
|
|
|
|
#include "stdafx.h"
|
|
#include "HTMLEdit.h"
|
|
|
|
#include "HTMLEdDoc.h"
|
|
#include "htmledview.h"
|
|
#include "geturl.h"
|
|
#include "mainfrm.h"
|
|
#include "sourceview.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CHTMLEdDoc
|
|
|
|
IMPLEMENT_DYNCREATE(CHTMLEdDoc, CHtmlEditDoc)
|
|
|
|
BEGIN_MESSAGE_MAP(CHTMLEdDoc, CHtmlEditDoc)
|
|
//{{AFX_MSG_MAP(CHTMLEdDoc)
|
|
ON_COMMAND(ID_FILE_OPENURL, OnFileOpenurl)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CHTMLEdDoc construction/destruction
|
|
|
|
CHTMLEdDoc::CHTMLEdDoc()
|
|
{
|
|
m_bDoSaveOnDocCom = FALSE;
|
|
m_bCallNewDocument = FALSE;
|
|
m_bCallCloseDocument = FALSE;
|
|
}
|
|
|
|
CHTMLEdDoc::~CHTMLEdDoc()
|
|
{
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CHTMLEdDoc diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CHTMLEdDoc::AssertValid() const
|
|
{
|
|
CHtmlEditDoc::AssertValid();
|
|
}
|
|
|
|
void CHTMLEdDoc::Dump(CDumpContext& dc) const
|
|
{
|
|
CHtmlEditDoc::Dump(dc);
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CHTMLEdDoc commands
|
|
|
|
//We want the default functionality of CHtmlEditDoc::OnNewDocument(), but just need to update
|
|
//the view with the new document contents
|
|
BOOL CHTMLEdDoc::OnNewDocument()
|
|
{
|
|
//If the old document needs to be saved, and is waiting for a OnDocumentComplete,
|
|
//OnNewDocument waits for it to gets done
|
|
if(m_bDoSaveOnDocCom)
|
|
{
|
|
m_bCallNewDocument = TRUE;
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL bRet = CHtmlEditDoc::OnNewDocument();
|
|
if (bRet)
|
|
{
|
|
// have to clear the source view too!
|
|
CMainFrame *pFrm = (CMainFrame*)AfxGetMainWnd();
|
|
if (pFrm)
|
|
{
|
|
CSourceView *pView = (CSourceView*)pFrm->GetSourceView();
|
|
if (pView)
|
|
{
|
|
pView->NewDocument();
|
|
pFrm->SwapView(ID_VIEW_WEB);
|
|
}
|
|
}
|
|
}
|
|
return bRet;
|
|
}
|
|
|
|
void CHTMLEdDoc::OnCloseDocument()
|
|
{
|
|
//If the old document needs to be saved, and is waiting for a OnDocumentComplete,
|
|
//OnCloseDocument waits for it to gets done
|
|
if(m_bDoSaveOnDocCom)
|
|
{
|
|
m_bCallCloseDocument = TRUE;
|
|
return;
|
|
}
|
|
|
|
CDocument::OnCloseDocument();
|
|
}
|
|
|
|
//We want the default functionality of CHtmlEditDoc::OnOpenDocument(lpszFileName), but just
|
|
//need to update the view with the opened document contents
|
|
BOOL CHTMLEdDoc::OnOpenDocument(LPCTSTR lpszFileName)
|
|
{
|
|
BOOL bRet = CHtmlEditDoc::OnOpenDocument(lpszFileName);
|
|
if (bRet)
|
|
{
|
|
// have to clear the source view too!
|
|
CMainFrame *pFrm = (CMainFrame*)AfxGetMainWnd();
|
|
if (pFrm)
|
|
{
|
|
CSourceView *pView = (CSourceView*)pFrm->GetSourceView();
|
|
if (pView)
|
|
{
|
|
pView->NewDocument();
|
|
pFrm->SwapView(ID_VIEW_WEB);
|
|
}
|
|
}
|
|
}
|
|
|
|
return bRet;
|
|
}
|
|
|
|
void CHTMLEdDoc::OnFileOpenurl()
|
|
{
|
|
CGetURL dlg;
|
|
if(IDOK==dlg.DoModal())
|
|
OpenURL(dlg.m_URL);
|
|
}
|
|
|
|
BOOL CHTMLEdDoc::IsModified()
|
|
{
|
|
//Whether in Source or Web view, whenever we edit, CDocument::SetModified get's called.
|
|
return CDocument::IsModified();
|
|
}
|
|
|
|
//We want the default functionality of CHtmlEditDoc::OnSaveDocument(), but need to update
|
|
//the web view with the contents of the source view before saving
|
|
BOOL CHTMLEdDoc::OnSaveDocument(LPCTSTR lpszFileName)
|
|
{
|
|
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
|
|
ASSERT_VALID(pFrame);
|
|
|
|
if(pFrame->GetCurrentView()==ID_VIEW_SOURCE)
|
|
{
|
|
//UpdateView is asynchronous, so we wait for the CHTMLEdView::OnDocumentComplete event
|
|
//to occur which indicates that the view has been updated, before saving the document
|
|
CHTMLEdView* pWebView = (CHTMLEdView*)pFrame->GetWebView();
|
|
ASSERT_VALID(pWebView);
|
|
pWebView->UpdateView();
|
|
m_sSaveFileName = lpszFileName;
|
|
m_bDoSaveOnDocCom = TRUE;
|
|
}
|
|
else
|
|
{
|
|
//For web view, the document already contains the changes, so we directly save it
|
|
m_sSaveFileName = lpszFileName;
|
|
return SaveMyDocument();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CHTMLEdDoc::SaveMyDocument()
|
|
{
|
|
return CHtmlEditDoc::OnSaveDocument(m_sSaveFileName);
|
|
} |