зеркало из https://github.com/mozilla/pjs.git
Fix for #193479 - Implement InsertLink functionality in MfcEmbed editor
r=mjudge, sr=kin
This commit is contained in:
Родитель
e5bb3e68d2
Коммит
d61a3333a1
|
@ -121,3 +121,41 @@ BOOL CFindDialog::SearchBackwards()
|
||||||
|
|
||||||
return pChk ? pChk->GetCheck() : FALSE;
|
return pChk ? pChk->GetCheck() : FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// CLinkPropertiesDlg dialog
|
||||||
|
CLinkPropertiesDlg::CLinkPropertiesDlg(CWnd* pParent /*=NULL*/)
|
||||||
|
: CDialog(CLinkPropertiesDlg::IDD, pParent)
|
||||||
|
{
|
||||||
|
m_LinkText = _T("");
|
||||||
|
m_LinkLocation = _T("");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CLinkPropertiesDlg::DoDataExchange(CDataExchange* pDX)
|
||||||
|
{
|
||||||
|
CDialog::DoDataExchange(pDX);
|
||||||
|
DDX_Text(pDX, IDC_EDIT_LINK_TEXT, m_LinkText);
|
||||||
|
DDX_Text(pDX, IDC_EDIT_LINK_LOCATION, m_LinkLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CLinkPropertiesDlg, CDialog)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
void CLinkPropertiesDlg::OnOK()
|
||||||
|
{
|
||||||
|
UpdateData(TRUE);
|
||||||
|
|
||||||
|
if (m_LinkLocation.IsEmpty() || (m_LinkText.IsEmpty() && m_LinkLocation.IsEmpty()))
|
||||||
|
{
|
||||||
|
MessageBox("Please enter a Link Location");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_LinkText.IsEmpty())
|
||||||
|
{
|
||||||
|
m_LinkText = m_LinkLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
EndDialog(IDOK);
|
||||||
|
}
|
||||||
|
|
|
@ -66,4 +66,23 @@ protected:
|
||||||
virtual void PostNcDestroy();
|
virtual void PostNcDestroy();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// CLinkPropertiesDlg dialog
|
||||||
|
|
||||||
|
class CLinkPropertiesDlg : public CDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CLinkPropertiesDlg(CWnd* pParent = NULL);
|
||||||
|
|
||||||
|
enum { IDD = IDD_DIALOG_LINK_PROPERTIES };
|
||||||
|
CString m_LinkText;
|
||||||
|
CString m_LinkLocation;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void DoDataExchange(CDataExchange* pDX);
|
||||||
|
virtual void OnOK();
|
||||||
|
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
|
|
||||||
#endif //_DIALOG_H_
|
#endif //_DIALOG_H_
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "MfcEmbed.h"
|
#include "MfcEmbed.h"
|
||||||
#include "BrowserFrm.h"
|
#include "BrowserFrm.h"
|
||||||
#include "EditorFrm.h"
|
#include "EditorFrm.h"
|
||||||
|
#include "Dialogs.h"
|
||||||
|
|
||||||
//------------------------------------------------------------
|
//------------------------------------------------------------
|
||||||
// Editor Command/Parameter Names
|
// Editor Command/Parameter Names
|
||||||
|
@ -244,17 +245,16 @@ NS_METHOD
|
||||||
CEditorFrame::MakeEditable()
|
CEditorFrame::MakeEditable()
|
||||||
{
|
{
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
nsCOMPtr<nsIDOMWindow> domWindow;
|
|
||||||
m_wndBrowserView.mWebBrowser->GetContentDOMWindow(getter_AddRefs(domWindow));
|
m_wndBrowserView.mWebBrowser->GetContentDOMWindow(getter_AddRefs(mDOMWindow));
|
||||||
if (!domWindow)
|
if (!mDOMWindow)
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
nsCOMPtr<nsIEditingSession> editingSession = do_GetInterface(m_wndBrowserView.mWebBrowser);
|
mEditingSession = do_GetInterface(m_wndBrowserView.mWebBrowser);
|
||||||
if (!editingSession)
|
if (!mEditingSession)
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
rv= editingSession->MakeWindowEditable(domWindow, NULL, PR_TRUE);
|
rv= mEditingSession->MakeWindowEditable(mDOMWindow, NULL, PR_TRUE);
|
||||||
|
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
@ -292,26 +292,22 @@ CEditorFrame::ExecuteNoParam(const char *aCommand)
|
||||||
|
|
||||||
void CEditorFrame::OnIndent()
|
void CEditorFrame::OnIndent()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteNoParam(INDENT_COMMAND);
|
ExecuteNoParam(INDENT_COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateIndent(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateIndent(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
// TODO: Add your command update UI handler code here
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnOutdent()
|
void CEditorFrame::OnOutdent()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteNoParam(OUTDENT_COMMAND);
|
ExecuteNoParam(OUTDENT_COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateOutdent(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateOutdent(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
// TODO: Add your command update UI handler code here
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_METHOD
|
NS_METHOD
|
||||||
|
@ -352,94 +348,77 @@ CEditorFrame::GetAttributeParamValue(const char *aCommand, nsCString &aValue)
|
||||||
|
|
||||||
void CEditorFrame::OnFontred()
|
void CEditorFrame::OnFontred()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(FONTCOLOR_COMMAND,COLOR_RED);
|
ExecuteAttribParam(FONTCOLOR_COMMAND,COLOR_RED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateFontred(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateFontred(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
// TODO: Add your command update UI handler code here
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnFontblack()
|
void CEditorFrame::OnFontblack()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(FONTCOLOR_COMMAND,COLOR_BLACK);
|
ExecuteAttribParam(FONTCOLOR_COMMAND,COLOR_BLACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateFontblack(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateFontblack(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
// TODO: Add your command update UI handler code here
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnBgcolor()
|
void CEditorFrame::OnBgcolor()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(BACKGROUNDCOLOR_COMMAND,COLOR_RED);
|
ExecuteAttribParam(BACKGROUNDCOLOR_COMMAND,COLOR_RED);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateBgcolor(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateBgcolor(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
// TODO: Add your command update UI handler code here
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnNobgcolor()
|
void CEditorFrame::OnNobgcolor()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(BACKGROUNDCOLOR_COMMAND,STATE_EMPTY);
|
ExecuteAttribParam(BACKGROUNDCOLOR_COMMAND,STATE_EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateNobgcolor(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateNobgcolor(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
// TODO: Add your command update UI handler code here
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnFontsizeincrease()
|
void CEditorFrame::OnFontsizeincrease()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteNoParam(INCREASEFONT_COMMAND);
|
ExecuteNoParam(INCREASEFONT_COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnFontsizedecrease()
|
void CEditorFrame::OnFontsizedecrease()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteNoParam(DECREASEFONT_COMMAND);
|
ExecuteNoParam(DECREASEFONT_COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnArial()
|
void CEditorFrame::OnArial()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(FONTFACE_COMMAND,FONT_ARIAL);
|
ExecuteAttribParam(FONTFACE_COMMAND,FONT_ARIAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnTimes()
|
void CEditorFrame::OnTimes()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(FONTFACE_COMMAND,FONT_TIMES);
|
ExecuteAttribParam(FONTFACE_COMMAND,FONT_TIMES);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnCourier()
|
void CEditorFrame::OnCourier()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(FONTFACE_COMMAND,FONT_COURIER);
|
ExecuteAttribParam(FONTFACE_COMMAND,FONT_COURIER);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnAlignleft()
|
void CEditorFrame::OnAlignleft()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(ALIGN_COMMAND,ALIGN_LEFT);
|
ExecuteAttribParam(ALIGN_COMMAND,ALIGN_LEFT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateAlignleft(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateAlignleft(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
|
||||||
nsCAutoString tValue;
|
nsCAutoString tValue;
|
||||||
|
|
||||||
nsresult rv = GetAttributeParamValue(ALIGN_COMMAND,tValue);
|
nsresult rv = GetAttributeParamValue(ALIGN_COMMAND,tValue);
|
||||||
|
@ -454,15 +433,11 @@ void CEditorFrame::OnUpdateAlignleft(CCmdUI* pCmdUI)
|
||||||
|
|
||||||
void CEditorFrame::OnAlignright()
|
void CEditorFrame::OnAlignright()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(ALIGN_COMMAND,ALIGN_RIGHT);
|
ExecuteAttribParam(ALIGN_COMMAND,ALIGN_RIGHT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateAlignright(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateAlignright(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
|
||||||
// TODO: Add your command update UI handler code here
|
|
||||||
nsCAutoString tValue;
|
nsCAutoString tValue;
|
||||||
nsresult rv = GetAttributeParamValue(ALIGN_COMMAND,tValue);
|
nsresult rv = GetAttributeParamValue(ALIGN_COMMAND,tValue);
|
||||||
if (NS_SUCCEEDED(rv))
|
if (NS_SUCCEEDED(rv))
|
||||||
|
@ -476,15 +451,11 @@ void CEditorFrame::OnUpdateAlignright(CCmdUI* pCmdUI)
|
||||||
|
|
||||||
void CEditorFrame::OnAligncenter()
|
void CEditorFrame::OnAligncenter()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteAttribParam(ALIGN_COMMAND,ALIGN_CENTER);
|
ExecuteAttribParam(ALIGN_COMMAND,ALIGN_CENTER);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateAligncenter(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateAligncenter(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
|
||||||
// TODO: Add your command update UI handler code here
|
|
||||||
nsCAutoString tValue;
|
nsCAutoString tValue;
|
||||||
nsresult rv = GetAttributeParamValue(ALIGN_COMMAND,tValue);
|
nsresult rv = GetAttributeParamValue(ALIGN_COMMAND,tValue);
|
||||||
if (NS_SUCCEEDED(rv))
|
if (NS_SUCCEEDED(rv))
|
||||||
|
@ -498,25 +469,118 @@ void CEditorFrame::OnUpdateAligncenter(CCmdUI* pCmdUI)
|
||||||
|
|
||||||
void CEditorFrame::OnInsertlink()
|
void CEditorFrame::OnInsertlink()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
if (InLink())
|
||||||
|
ShowEditLinkDlg();
|
||||||
|
else
|
||||||
|
ShowInsertLinkDlg();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEditorFrame::ShowInsertLinkDlg()
|
||||||
|
{
|
||||||
|
CLinkPropertiesDlg dlg;
|
||||||
|
|
||||||
|
if(dlg.DoModal() == IDOK)
|
||||||
|
{
|
||||||
|
InsertLink(dlg.m_LinkText, dlg.m_LinkLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEditorFrame::InsertLink(CString& linkText, CString& linkLocation)
|
||||||
|
{
|
||||||
|
CString html = " <A HREF=\"" + linkLocation + "\">" + linkText + "</A> ";
|
||||||
|
|
||||||
|
InsertHTML(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEditorFrame::InsertHTML(CString& str)
|
||||||
|
{
|
||||||
|
nsString htmlToInsert;
|
||||||
|
htmlToInsert.AssignWithConversion(str.GetBuffer(0));
|
||||||
|
|
||||||
|
nsCOMPtr<nsIHTMLEditor> htmlEditor;
|
||||||
|
GetHTMLEditor(getter_AddRefs(htmlEditor));
|
||||||
|
if (htmlEditor)
|
||||||
|
htmlEditor->InsertHTML(htmlToInsert);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEditorFrame::ShowEditLinkDlg()
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIDOMHTMLAnchorElement> anchorElement;
|
||||||
|
CLinkPropertiesDlg dlg;
|
||||||
|
|
||||||
|
if (GetCurrentLinkInfo(dlg.m_LinkText, dlg.m_LinkLocation, getter_AddRefs(anchorElement)))
|
||||||
|
{
|
||||||
|
if(dlg.DoModal() == IDOK)
|
||||||
|
{
|
||||||
|
//Select the link being edited and then insert the
|
||||||
|
//new link into it's place i.e. essentially a replace operation
|
||||||
|
nsCOMPtr<nsIHTMLEditor> htmlEditor;
|
||||||
|
GetHTMLEditor(getter_AddRefs(htmlEditor));
|
||||||
|
if (htmlEditor)
|
||||||
|
htmlEditor->SelectElement(anchorElement);
|
||||||
|
|
||||||
|
InsertLink(dlg.m_LinkText, dlg.m_LinkLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CEditorFrame::GetCurrentLinkInfo(CString& strLinkText, CString& strLinkLocation, nsIDOMHTMLAnchorElement** anchorElement)
|
||||||
|
{
|
||||||
|
USES_CONVERSION;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIHTMLEditor> htmlEditor;
|
||||||
|
|
||||||
|
GetHTMLEditor(getter_AddRefs(htmlEditor));
|
||||||
|
if (!htmlEditor)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMElement> domElement;
|
||||||
|
htmlEditor->GetElementOrParentByTagName(NS_LITERAL_STRING("href"),
|
||||||
|
nsnull,
|
||||||
|
getter_AddRefs(domElement));
|
||||||
|
if (!domElement)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
nsAutoString linkLocation, linkText;
|
||||||
|
nsresult rv = NS_ERROR_FAILURE;
|
||||||
|
|
||||||
|
// Determine linkLocation
|
||||||
|
nsCOMPtr<nsIDOMHTMLAnchorElement> linkElement(do_QueryInterface(domElement, &rv));
|
||||||
|
if (NS_SUCCEEDED(rv))
|
||||||
|
rv = linkElement->GetHref(linkLocation);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
// Determine linkText
|
||||||
|
nsCOMPtr<nsIDOMNode> firstChild;
|
||||||
|
rv = linkElement->GetFirstChild(getter_AddRefs(firstChild));
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return FALSE;
|
||||||
|
firstChild->GetNodeValue(linkText);
|
||||||
|
if (NS_FAILED(rv))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
strLinkText = W2T(linkText.get());
|
||||||
|
strLinkLocation = W2T(linkLocation.get());
|
||||||
|
|
||||||
|
*anchorElement = linkElement;
|
||||||
|
NS_ADDREF(*anchorElement);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnEditUndo()
|
void CEditorFrame::OnEditUndo()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteNoParam(UNDO_COMMAND);
|
ExecuteNoParam(UNDO_COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnEditRedo()
|
void CEditorFrame::OnEditRedo()
|
||||||
{
|
{
|
||||||
// TODO: Add your command handler code here
|
|
||||||
ExecuteNoParam(REDO_COMMAND);
|
ExecuteNoParam(REDO_COMMAND);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateEditRedo(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateEditRedo(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
nsCOMPtr<nsICommandParams> params;
|
nsCOMPtr<nsICommandParams> params;
|
||||||
rv = MakeCommandParams(REDO_COMMAND,getter_AddRefs(params));
|
rv = MakeCommandParams(REDO_COMMAND,getter_AddRefs(params));
|
||||||
|
@ -540,7 +604,6 @@ void CEditorFrame::OnUpdateEditRedo(CCmdUI* pCmdUI)
|
||||||
|
|
||||||
void CEditorFrame::OnUpdateEditUndo(CCmdUI* pCmdUI)
|
void CEditorFrame::OnUpdateEditUndo(CCmdUI* pCmdUI)
|
||||||
{
|
{
|
||||||
// TODO: Add your command update UI handler code here
|
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
nsCOMPtr<nsICommandParams> params;
|
nsCOMPtr<nsICommandParams> params;
|
||||||
rv = MakeCommandParams(UNDO_COMMAND,getter_AddRefs(params));
|
rv = MakeCommandParams(UNDO_COMMAND,getter_AddRefs(params));
|
||||||
|
@ -561,3 +624,40 @@ void CEditorFrame::OnUpdateEditUndo(CCmdUI* pCmdUI)
|
||||||
}
|
}
|
||||||
pCmdUI->Enable(FALSE);
|
pCmdUI->Enable(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CEditorFrame::GetEditor(nsIEditor** editor)
|
||||||
|
{
|
||||||
|
mEditingSession->GetEditorForWindow(mDOMWindow, editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEditorFrame::GetHTMLEditor(nsIHTMLEditor** htmlEditor)
|
||||||
|
{
|
||||||
|
*htmlEditor = 0;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIEditor> editor;
|
||||||
|
GetEditor(getter_AddRefs(editor));
|
||||||
|
if (!editor)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
editor->QueryInterface(NS_GET_IID(nsIHTMLEditor), (void**)htmlEditor);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CEditorFrame::InLink()
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIHTMLEditor> htmlEditor;
|
||||||
|
|
||||||
|
GetHTMLEditor(getter_AddRefs(htmlEditor));
|
||||||
|
|
||||||
|
if (htmlEditor)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIDOMElement> domElememt;
|
||||||
|
htmlEditor->GetElementOrParentByTagName(NS_LITERAL_STRING("href"),
|
||||||
|
nsnull,
|
||||||
|
getter_AddRefs(domElememt));
|
||||||
|
return domElememt ? TRUE : FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
#include "nsICommandManager.h"
|
#include "nsICommandManager.h"
|
||||||
#include "nsIScriptGlobalObject.h"
|
#include "nsIScriptGlobalObject.h"
|
||||||
#include "nsISimpleEnumerator.h"
|
#include "nsISimpleEnumerator.h"
|
||||||
|
#include "nsIEditor.h"
|
||||||
|
#include "nsIHTMLEditor.h"
|
||||||
|
|
||||||
class CEditorFrame : public CBrowserFrame
|
class CEditorFrame : public CBrowserFrame
|
||||||
{
|
{
|
||||||
|
@ -55,6 +57,15 @@ public:
|
||||||
NS_METHOD IsCommandEnabled(const char *aCommand, PRBool *retval);
|
NS_METHOD IsCommandEnabled(const char *aCommand, PRBool *retval);
|
||||||
NS_METHOD GetCommandState(const char *aCommand, nsICommandParams *aCommandParams);
|
NS_METHOD GetCommandState(const char *aCommand, nsICommandParams *aCommandParams);
|
||||||
|
|
||||||
|
void GetEditor(nsIEditor** editor);
|
||||||
|
void GetHTMLEditor(nsIHTMLEditor** htmlEditor);
|
||||||
|
BOOL InLink();
|
||||||
|
void ShowInsertLinkDlg();
|
||||||
|
void ShowEditLinkDlg();
|
||||||
|
BOOL GetCurrentLinkInfo(CString& strLinkText, CString& strLinkLocation, nsIDOMHTMLAnchorElement** anchorElement);
|
||||||
|
void InsertLink(CString& linkText, CString& linkLocation);
|
||||||
|
void InsertHTML(CString& str);
|
||||||
|
|
||||||
// Generated message map functions
|
// Generated message map functions
|
||||||
protected:
|
protected:
|
||||||
//{{AFX_MSG(CEditorFrame)
|
//{{AFX_MSG(CEditorFrame)
|
||||||
|
@ -107,6 +118,8 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
nsCOMPtr<nsICommandManager> mCommandManager;
|
nsCOMPtr<nsICommandManager> mCommandManager;
|
||||||
|
nsCOMPtr<nsIDOMWindow> mDOMWindow;
|
||||||
|
nsCOMPtr<nsIEditingSession> mEditingSession;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //_EDITORFRM_H_
|
#endif //_EDITORFRM_H_
|
||||||
|
|
|
@ -61,6 +61,7 @@ REQUIRES = \
|
||||||
commandhandler \
|
commandhandler \
|
||||||
imglib2 \
|
imglib2 \
|
||||||
webbrwsr \
|
webbrwsr \
|
||||||
|
editor \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
ifdef NS_TRACE_MALLOC
|
ifdef NS_TRACE_MALLOC
|
||||||
|
|
|
@ -517,6 +517,21 @@ BEGIN
|
||||||
LTEXT "Custom:",IDC_STATIC,7,8,26,8
|
LTEXT "Custom:",IDC_STATIC,7,8,26,8
|
||||||
END
|
END
|
||||||
|
|
||||||
|
IDD_DIALOG_LINK_PROPERTIES DIALOG DISCARDABLE 0, 0, 262, 162
|
||||||
|
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Link Properties"
|
||||||
|
FONT 8, "MS Sans Serif"
|
||||||
|
BEGIN
|
||||||
|
GROUPBOX " Link Text ",IDC_STATIC,7,7,248,52
|
||||||
|
GROUPBOX " Link Location ",IDC_STATIC,7,73,248,52
|
||||||
|
LTEXT "Enter &text to display for the link:",IDC_STATIC,16,20,
|
||||||
|
223,8
|
||||||
|
EDITTEXT IDC_EDIT_LINK_TEXT,16,34,232,14,ES_AUTOHSCROLL
|
||||||
|
LTEXT "Enter a web page &location:",IDC_STATIC,16,88,223,8
|
||||||
|
EDITTEXT IDC_EDIT_LINK_LOCATION,16,103,232,14,ES_AUTOHSCROLL
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,69,140,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,128,140,50,14
|
||||||
|
END
|
||||||
|
|
||||||
#ifndef _MAC
|
#ifndef _MAC
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#define IDD_HEADERFOOTER_TAB 156
|
#define IDD_HEADERFOOTER_TAB 156
|
||||||
#define IDD_FORMAT_OPTIONS_TAB 157
|
#define IDD_FORMAT_OPTIONS_TAB 157
|
||||||
#define IDD_CUSTOM_PROMPT_DIALOG 159
|
#define IDD_CUSTOM_PROMPT_DIALOG 159
|
||||||
|
#define IDD_DIALOG_LINK_PROPERTIES 160
|
||||||
#define ID_URL_BAR 1001
|
#define ID_URL_BAR 1001
|
||||||
#define ID_PROG_BAR 1002
|
#define ID_PROG_BAR 1002
|
||||||
#define IDC_PROMPT_ANSWER 1003
|
#define IDC_PROMPT_ANSWER 1003
|
||||||
|
@ -92,6 +93,8 @@
|
||||||
#define IDC_EDIT_HOMEPAGE 1055
|
#define IDC_EDIT_HOMEPAGE 1055
|
||||||
#define IDC_PRT_PORTRAIT_RD 1056
|
#define IDC_PRT_PORTRAIT_RD 1056
|
||||||
#define IDC_PRT_LANDSCAPE_RD 1057
|
#define IDC_PRT_LANDSCAPE_RD 1057
|
||||||
|
#define IDC_EDIT_LINK_TEXT 1058
|
||||||
|
#define IDC_EDIT_LINK_LOCATION 1059
|
||||||
#define IDC_FIND_EDIT 0x0480
|
#define IDC_FIND_EDIT 0x0480
|
||||||
#define ID_NAV_BACK 32773
|
#define ID_NAV_BACK 32773
|
||||||
#define ID_NAV_FORWARD 32774
|
#define ID_NAV_FORWARD 32774
|
||||||
|
|
Загрузка…
Ссылка в новой задаче