Added 'Cancel' to editor save file Confirm dialog and changed to accomodate common dialog interface changes

This commit is contained in:
cmanske%netscape.com 1999-09-03 01:23:19 +00:00
Родитель cb72d8345b
Коммит 599b54720b
6 изменённых файлов: 158 добавлений и 132 удалений

Просмотреть файл

@ -85,12 +85,10 @@
#include "nsEditorCID.h"
#include "nsIComponentManager.h"
#include "nsIServiceManager.h"
#include "nsTextServicesCID.h"
#include "nsITextServicesDocument.h"
#include "nsISpellChecker.h"
#include "nsInterfaceState.h"
#include "nsINetSupportDialogService.h"
///////////////////////////////////////
@ -107,7 +105,6 @@ static NS_DEFINE_CID(kCTextServicesDocumentCID, NS_TEXTSERVICESDOCUMENT_CID);
static NS_DEFINE_CID(kCSpellCheckerCID, NS_SPELLCHECKER_CID);
static NS_DEFINE_IID(kCFileWidgetCID, NS_FILEWIDGET_CID);
static NS_DEFINE_CID(kCStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
static NS_DEFINE_CID(kCNetSupportDialogCID, NS_NETSUPPORTDIALOG_CID);
static NS_DEFINE_CID(kCommonDialogsCID, NS_CommonDialog_CID );
static NS_DEFINE_CID(kDialogParamBlockCID, NS_DialogParamBlock_CID);
/* Define Interface IDs */
@ -973,10 +970,9 @@ nsEditorShell::Open()
case eHTMLTextEditorType:
{
// This was written for all local file getting
// TODO: NEED TO GET PROPER PARENT WINDOW
PRUnichar *fileURLString = nsnull;
nsAutoString filterType("html");
result = GetLocalFileURL(nsnull, filterType.GetUnicode(), &fileURLString);
result = GetLocalFileURL(mContentWindow, filterType.GetUnicode(), &fileURLString);
if (NS_FAILED(result) || !fileURLString || !*fileURLString)
return result;
@ -1027,11 +1023,15 @@ nsEditorShell::CheckAndSaveDocument(PRBool *_retval)
if (modCount > 0)
{
// Ask user if they want to save current changes
//nsString saveFileQuestion = GetString("SaveFilePrompt");
// TODO: THIS DIALOG SHOULD HAVE A CANCEL BUTTON AS WELL
if (Confirm(GetString("SaveFilePrompt"),GetString("SaveDocument")))
EConfirmResult result = ConfirmWithCancel(GetString("SaveDocument"), GetString("SaveFilePrompt"),
&GetString("Save"), &GetString("DontSave"));
if (result == eCancel)
{
*_retval = PR_FALSE;
} else if (result == eYes)
{
// Either save to existing file or prompt for name (as for SaveAs)
// We don't continue if we failed to save file (_retval is set to FALSE)
rv = SaveDocument(PR_FALSE, PR_FALSE, _retval);
}
}
@ -1080,7 +1080,7 @@ nsEditorShell::SaveDocument(PRBool saveAs, PRBool saveCopy, PRBool *_retval)
{
if (title->Length() == 0)
{
Alert(GetString("NeedDocTitle"),GetString("DocumentTitle"));
Alert(GetString("DocumentTitle"), GetString("NeedDocTitle"));
// TODO: Popup a simple dialog and set the title
// Note that this involves inserting a <title> tag
// with a text nodechild in the <head> area of the document.
@ -1129,7 +1129,8 @@ nsEditorShell::SaveDocument(PRBool saveAs, PRBool saveCopy, PRBool *_retval)
fileWidget->SetFilterList(2, titles, filters);
SkipFilters:
nsFileDlgResults dialogResult;
dialogResult = fileWidget->PutFile(nsnull, promptString, docFileSpec);
// 1ST PARAM SHOULD BE nsIDOMWindow*, not nsIWidget*
dialogResult = fileWidget->PutFile(/*mContentWindow*/nsnull, promptString, docFileSpec);
delete [] titles;
delete [] filters;
@ -1153,7 +1154,7 @@ SkipFilters:
res = editor->SaveFile(&docFileSpec, replacing, saveCopy, nsIDiskDocument::eSaveFileHTML);
if (NS_FAILED(res))
{
Alert(GetString("SaveFileFailed"), GetString("SaveDocument"));
Alert(GetString("SaveDocument"), GetString("SaveFileFailed"));
} else {
// File was saved successfully
*_retval = PR_TRUE;
@ -1241,7 +1242,7 @@ nsEditorShell::GetLocalFileURL(nsIDOMWindow *parent, const PRUnichar *filterType
*_retval = nsnull;
// TODO: DON'T ACCEPT NULL PARENT AFTER WIDGET IS FIXED
if (/*!aParent||*/ !(htmlFilter || imgFilter))
if (parent|| !(htmlFilter || imgFilter))
return NS_ERROR_NOT_INITIALIZED;
@ -1276,18 +1277,18 @@ nsEditorShell::GetLocalFileURL(nsIDOMWindow *parent, const PRUnichar *filterType
nsAutoString titles[] = {"HTML Files"};
nsAutoString filters[] = {"*.htm; *.html; *.shtml"};
fileWidget->SetFilterList(1, titles, filters);
dialogResult = fileWidget->GetFile(nsnull, title, fileSpec);
// First param should be Parent window, but type is nsIWidget*
// Bug is filed to change this to a more suitable window type
dialogResult = fileWidget->GetFile(/*parent*/ nsnull, title, fileSpec);
} else {
nsAutoString imgTitles[] = {"Image Files"};
nsAutoString imgFilters[] = {"*.gif; *.jpg; *.jpeg; *.png"};
fileWidget->SetFilterList(1, imgTitles, imgFilters);
dialogResult = fileWidget->GetFile(nsnull, title, fileSpec);
dialogResult = fileWidget->GetFile(/*parent*/ nsnull, title, fileSpec);
}
// Do this after we get this from preferences
//fileWidget->SetDisplayDirectory(aDisplayDirectory);
// First param should be Parent window, but type is nsIWidget*
// Bug is filed to change this to a more suitable window type
if (dialogResult != nsFileDlgResults_Cancel)
{
// Get the platform-specific format
@ -1739,7 +1740,7 @@ nsEditorShell::GetString(const PRUnichar *name, PRUnichar **_retval)
if (!name || !_retval)
return NS_ERROR_NULL_POINTER;
// Never fail, just return an empty string
// Don't fail, just return an empty string
nsString empty("");
if (mStringBundle)
@ -1764,13 +1765,13 @@ nsEditorShell::GetString(const nsString& name)
if (!ptmpString)
ptmpString = new nsString();
// Don't fail, just return an empty string
*ptmpString = "";
if (mStringBundle && (name != ""))
{
const PRUnichar *ptrtmp = name.GetUnicode();
PRUnichar *ptrv = nsnull;
nsresult res = mStringBundle->GetStringFromName(ptrtmp, &ptrv);
// Never fail, just return an empty string
if (NS_SUCCEEDED(res))
*ptmpString = ptrv;
}
@ -1778,67 +1779,70 @@ nsEditorShell::GetString(const nsString& name)
}
// Utility to bring up a Yes/No/Cancel dialog.
PRInt32
nsEditorShell::ConfirmWithCancel(const nsString& aQuestion, const nsString& aTitle)
nsEditorShell::EConfirmResult
nsEditorShell::ConfirmWithCancel(const nsString& aTitle, const nsString& aQuestion,
const nsString *aYesString, const nsString *aNoString)
{
nsresult rv;
PRInt32 buttonPressed = 0;
nsEditorShell::EConfirmResult result = nsEditorShell::eCancel;
nsIDialogParamBlock* block = NULL;
rv = nsComponentManager::CreateInstance(kDialogParamBlockCID,
0,
nsresult rv = nsComponentManager::CreateInstance(kDialogParamBlockCID, 0,
nsIDialogParamBlock::GetIID(),
(void**)&block );
if ( NS_FAILED( rv ) )
return rv;
// Stuff in Parameters
block->SetInt( nsICommonDialogs::eNumberButtons,2 );
block->SetString( nsICommonDialogs::eMsg, aQuestion.GetUnicode());
nsString url( "chrome://global/skin/question-icon.gif" );
block->SetString( nsICommonDialogs::eIconURL, url.GetUnicode());
nsString yes("yes");
nsString no("no");
block->SetString( nsICommonDialogs::eButton0Text, yes.GetUnicode() );
block->SetString( nsICommonDialogs::eButton1Text, no.GetUnicode() );
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if ( NS_SUCCEEDED( rv ) )
if ( NS_SUCCEEDED(rv) )
{
nsCOMPtr<nsIDOMWindow> parent = do_QueryInterface(mWebShellWin);
rv = dialog->DoDialog( parent, block, "chrome://global/content/commonDialog.xul" );
block->GetInt( nsICommonDialogs::eButtonPressed, &buttonPressed );
// Stuff in Parameters
block->SetInt( nsICommonDialogs::eNumberButtons,3 );
block->SetString( nsICommonDialogs::eMsg, aQuestion.GetUnicode());
nsString url( "chrome://global/skin/question-icon.gif" );
block->SetString( nsICommonDialogs::eIconURL, url.GetUnicode());
nsString yes = aYesString ? *aYesString : GetString("Yes");
nsString no = aNoString ? *aNoString : GetString("No");
nsString cancel = GetString("Cancel");
block->SetString( nsICommonDialogs::eButton0Text, yes.GetUnicode() );
// This is currently not good -- 2nd button is linked to Cancel
block->SetString( nsICommonDialogs::eButton1Text, cancel.GetUnicode() );
block->SetString( nsICommonDialogs::eButton2Text, no.GetUnicode() );
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if ( NS_SUCCEEDED( rv ) )
{
PRInt32 buttonPressed = 0;
rv = dialog->DoDialog( mContentWindow, block, "chrome://global/content/commonDialog.xul" );
block->GetInt( nsICommonDialogs::eButtonPressed, &buttonPressed );
// NOTE: If order of buttons changes in nsICommonDialogs,
// then we must change the EConfirmResult enums in nsEditorShell.h
result = nsEditorShell::EConfirmResult(buttonPressed);
}
NS_IF_RELEASE( block );
}
NS_IF_RELEASE( block );
return buttonPressed;
return result;
}
// Utility to bring up a Yes/No dialog.
// Utility to bring up a OK/Cancel dialog.
PRBool
nsEditorShell::Confirm(const nsString& aQuestion, const nsString& aTitle)
nsEditorShell::Confirm(const nsString& aTitle, const nsString& aQuestion)
{
nsresult res;
nsresult rv;
PRBool result = PR_FALSE;
NS_WITH_SERVICE(nsIPrompt, dialog, kCNetSupportDialogCID, &res);
if (NS_FAILED(res))
return NS_ERROR_FACTORY_NOT_REGISTERED;
if (!dialog)
return NS_ERROR_FAILURE;
res = dialog->ConfirmYN(aQuestion.GetUnicode(), &result);
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if (NS_SUCCEEDED(rv) && dialog)
{
rv = dialog->Confirm(mContentWindow, aTitle.GetUnicode(), aQuestion.GetUnicode(), &result);
}
return result;
}
void
nsEditorShell::Alert(const nsString& aMsg, const nsString& aTitle)
nsEditorShell::Alert(const nsString& aTitle, const nsString& aMsg)
{
nsresult res;
NS_WITH_SERVICE(nsIPrompt, dialog, kCNetSupportDialogCID, &res);
if (NS_SUCCEEDED(res) && dialog)
nsresult rv;
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if (NS_SUCCEEDED(rv) && dialog)
{
res = dialog->Alert(aMsg.GetUnicode());
rv = dialog->Alert(mContentWindow, aTitle.GetUnicode(), aMsg.GetUnicode());
}
}

Просмотреть файл

@ -74,6 +74,10 @@ class nsEditorShell : public nsIEditorShell,
{
public:
// These must map onto the button-order for nsICommonDialog::Confirm results
// which are rather ugly right now (Cancel in the middle!)
typedef enum {eYes = 0, eCancel = 1, eNo = 2 } EConfirmResult;
nsEditorShell();
virtual ~nsEditorShell();
@ -161,11 +165,14 @@ class nsEditorShell : public nsIEditorShell,
NS_IMETHOD PrepareDocumentForEditing(nsIURI *aUrl);
NS_IMETHOD DoFind(PRBool aFindNext);
void Alert(const nsString& aMsg, const nsString& aTitle);
void Alert(const nsString& aTitle, const nsString& aMsg);
// Bring up a Yes/No dialog WE REALLY NEED A Yes/No/Cancel dialog and would like to set our own caption as well!
PRBool Confirm(const nsString& aQuestion, const nsString& aTitle);
PRBool Confirm(const nsString& aTitle, const nsString& aQuestion);
// Return value: No=0, Yes=1, Cancel=2
PRInt32 ConfirmWithCancel(const nsString& aQuestion, const nsString& aTitle);
// aYesString and aNoString are optional:
// if null, then "Yes" and "No" are used
EConfirmResult ConfirmWithCancel(const nsString& aTitle, const nsString& aQuestion,
const nsString *aYesString, const nsString *aNoString);
// this returns an AddReffed nsIScriptContext. You must relase it.
nsIScriptContext* GetScriptContext(nsIDOMWindow * aWin);

Просмотреть файл

@ -85,12 +85,10 @@
#include "nsEditorCID.h"
#include "nsIComponentManager.h"
#include "nsIServiceManager.h"
#include "nsTextServicesCID.h"
#include "nsITextServicesDocument.h"
#include "nsISpellChecker.h"
#include "nsInterfaceState.h"
#include "nsINetSupportDialogService.h"
///////////////////////////////////////
@ -107,7 +105,6 @@ static NS_DEFINE_CID(kCTextServicesDocumentCID, NS_TEXTSERVICESDOCUMENT_CID);
static NS_DEFINE_CID(kCSpellCheckerCID, NS_SPELLCHECKER_CID);
static NS_DEFINE_IID(kCFileWidgetCID, NS_FILEWIDGET_CID);
static NS_DEFINE_CID(kCStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
static NS_DEFINE_CID(kCNetSupportDialogCID, NS_NETSUPPORTDIALOG_CID);
static NS_DEFINE_CID(kCommonDialogsCID, NS_CommonDialog_CID );
static NS_DEFINE_CID(kDialogParamBlockCID, NS_DialogParamBlock_CID);
/* Define Interface IDs */
@ -973,10 +970,9 @@ nsEditorShell::Open()
case eHTMLTextEditorType:
{
// This was written for all local file getting
// TODO: NEED TO GET PROPER PARENT WINDOW
PRUnichar *fileURLString = nsnull;
nsAutoString filterType("html");
result = GetLocalFileURL(nsnull, filterType.GetUnicode(), &fileURLString);
result = GetLocalFileURL(mContentWindow, filterType.GetUnicode(), &fileURLString);
if (NS_FAILED(result) || !fileURLString || !*fileURLString)
return result;
@ -1027,11 +1023,15 @@ nsEditorShell::CheckAndSaveDocument(PRBool *_retval)
if (modCount > 0)
{
// Ask user if they want to save current changes
//nsString saveFileQuestion = GetString("SaveFilePrompt");
// TODO: THIS DIALOG SHOULD HAVE A CANCEL BUTTON AS WELL
if (Confirm(GetString("SaveFilePrompt"),GetString("SaveDocument")))
EConfirmResult result = ConfirmWithCancel(GetString("SaveDocument"), GetString("SaveFilePrompt"),
&GetString("Save"), &GetString("DontSave"));
if (result == eCancel)
{
*_retval = PR_FALSE;
} else if (result == eYes)
{
// Either save to existing file or prompt for name (as for SaveAs)
// We don't continue if we failed to save file (_retval is set to FALSE)
rv = SaveDocument(PR_FALSE, PR_FALSE, _retval);
}
}
@ -1080,7 +1080,7 @@ nsEditorShell::SaveDocument(PRBool saveAs, PRBool saveCopy, PRBool *_retval)
{
if (title->Length() == 0)
{
Alert(GetString("NeedDocTitle"),GetString("DocumentTitle"));
Alert(GetString("DocumentTitle"), GetString("NeedDocTitle"));
// TODO: Popup a simple dialog and set the title
// Note that this involves inserting a <title> tag
// with a text nodechild in the <head> area of the document.
@ -1129,7 +1129,8 @@ nsEditorShell::SaveDocument(PRBool saveAs, PRBool saveCopy, PRBool *_retval)
fileWidget->SetFilterList(2, titles, filters);
SkipFilters:
nsFileDlgResults dialogResult;
dialogResult = fileWidget->PutFile(nsnull, promptString, docFileSpec);
// 1ST PARAM SHOULD BE nsIDOMWindow*, not nsIWidget*
dialogResult = fileWidget->PutFile(/*mContentWindow*/nsnull, promptString, docFileSpec);
delete [] titles;
delete [] filters;
@ -1153,7 +1154,7 @@ SkipFilters:
res = editor->SaveFile(&docFileSpec, replacing, saveCopy, nsIDiskDocument::eSaveFileHTML);
if (NS_FAILED(res))
{
Alert(GetString("SaveFileFailed"), GetString("SaveDocument"));
Alert(GetString("SaveDocument"), GetString("SaveFileFailed"));
} else {
// File was saved successfully
*_retval = PR_TRUE;
@ -1241,7 +1242,7 @@ nsEditorShell::GetLocalFileURL(nsIDOMWindow *parent, const PRUnichar *filterType
*_retval = nsnull;
// TODO: DON'T ACCEPT NULL PARENT AFTER WIDGET IS FIXED
if (/*!aParent||*/ !(htmlFilter || imgFilter))
if (parent|| !(htmlFilter || imgFilter))
return NS_ERROR_NOT_INITIALIZED;
@ -1276,18 +1277,18 @@ nsEditorShell::GetLocalFileURL(nsIDOMWindow *parent, const PRUnichar *filterType
nsAutoString titles[] = {"HTML Files"};
nsAutoString filters[] = {"*.htm; *.html; *.shtml"};
fileWidget->SetFilterList(1, titles, filters);
dialogResult = fileWidget->GetFile(nsnull, title, fileSpec);
// First param should be Parent window, but type is nsIWidget*
// Bug is filed to change this to a more suitable window type
dialogResult = fileWidget->GetFile(/*parent*/ nsnull, title, fileSpec);
} else {
nsAutoString imgTitles[] = {"Image Files"};
nsAutoString imgFilters[] = {"*.gif; *.jpg; *.jpeg; *.png"};
fileWidget->SetFilterList(1, imgTitles, imgFilters);
dialogResult = fileWidget->GetFile(nsnull, title, fileSpec);
dialogResult = fileWidget->GetFile(/*parent*/ nsnull, title, fileSpec);
}
// Do this after we get this from preferences
//fileWidget->SetDisplayDirectory(aDisplayDirectory);
// First param should be Parent window, but type is nsIWidget*
// Bug is filed to change this to a more suitable window type
if (dialogResult != nsFileDlgResults_Cancel)
{
// Get the platform-specific format
@ -1739,7 +1740,7 @@ nsEditorShell::GetString(const PRUnichar *name, PRUnichar **_retval)
if (!name || !_retval)
return NS_ERROR_NULL_POINTER;
// Never fail, just return an empty string
// Don't fail, just return an empty string
nsString empty("");
if (mStringBundle)
@ -1764,13 +1765,13 @@ nsEditorShell::GetString(const nsString& name)
if (!ptmpString)
ptmpString = new nsString();
// Don't fail, just return an empty string
*ptmpString = "";
if (mStringBundle && (name != ""))
{
const PRUnichar *ptrtmp = name.GetUnicode();
PRUnichar *ptrv = nsnull;
nsresult res = mStringBundle->GetStringFromName(ptrtmp, &ptrv);
// Never fail, just return an empty string
if (NS_SUCCEEDED(res))
*ptmpString = ptrv;
}
@ -1778,67 +1779,70 @@ nsEditorShell::GetString(const nsString& name)
}
// Utility to bring up a Yes/No/Cancel dialog.
PRInt32
nsEditorShell::ConfirmWithCancel(const nsString& aQuestion, const nsString& aTitle)
nsEditorShell::EConfirmResult
nsEditorShell::ConfirmWithCancel(const nsString& aTitle, const nsString& aQuestion,
const nsString *aYesString, const nsString *aNoString)
{
nsresult rv;
PRInt32 buttonPressed = 0;
nsEditorShell::EConfirmResult result = nsEditorShell::eCancel;
nsIDialogParamBlock* block = NULL;
rv = nsComponentManager::CreateInstance(kDialogParamBlockCID,
0,
nsresult rv = nsComponentManager::CreateInstance(kDialogParamBlockCID, 0,
nsIDialogParamBlock::GetIID(),
(void**)&block );
if ( NS_FAILED( rv ) )
return rv;
// Stuff in Parameters
block->SetInt( nsICommonDialogs::eNumberButtons,2 );
block->SetString( nsICommonDialogs::eMsg, aQuestion.GetUnicode());
nsString url( "chrome://global/skin/question-icon.gif" );
block->SetString( nsICommonDialogs::eIconURL, url.GetUnicode());
nsString yes("yes");
nsString no("no");
block->SetString( nsICommonDialogs::eButton0Text, yes.GetUnicode() );
block->SetString( nsICommonDialogs::eButton1Text, no.GetUnicode() );
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if ( NS_SUCCEEDED( rv ) )
if ( NS_SUCCEEDED(rv) )
{
nsCOMPtr<nsIDOMWindow> parent = do_QueryInterface(mWebShellWin);
rv = dialog->DoDialog( parent, block, "chrome://global/content/commonDialog.xul" );
block->GetInt( nsICommonDialogs::eButtonPressed, &buttonPressed );
// Stuff in Parameters
block->SetInt( nsICommonDialogs::eNumberButtons,3 );
block->SetString( nsICommonDialogs::eMsg, aQuestion.GetUnicode());
nsString url( "chrome://global/skin/question-icon.gif" );
block->SetString( nsICommonDialogs::eIconURL, url.GetUnicode());
nsString yes = aYesString ? *aYesString : GetString("Yes");
nsString no = aNoString ? *aNoString : GetString("No");
nsString cancel = GetString("Cancel");
block->SetString( nsICommonDialogs::eButton0Text, yes.GetUnicode() );
// This is currently not good -- 2nd button is linked to Cancel
block->SetString( nsICommonDialogs::eButton1Text, cancel.GetUnicode() );
block->SetString( nsICommonDialogs::eButton2Text, no.GetUnicode() );
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if ( NS_SUCCEEDED( rv ) )
{
PRInt32 buttonPressed = 0;
rv = dialog->DoDialog( mContentWindow, block, "chrome://global/content/commonDialog.xul" );
block->GetInt( nsICommonDialogs::eButtonPressed, &buttonPressed );
// NOTE: If order of buttons changes in nsICommonDialogs,
// then we must change the EConfirmResult enums in nsEditorShell.h
result = nsEditorShell::EConfirmResult(buttonPressed);
}
NS_IF_RELEASE( block );
}
NS_IF_RELEASE( block );
return buttonPressed;
return result;
}
// Utility to bring up a Yes/No dialog.
// Utility to bring up a OK/Cancel dialog.
PRBool
nsEditorShell::Confirm(const nsString& aQuestion, const nsString& aTitle)
nsEditorShell::Confirm(const nsString& aTitle, const nsString& aQuestion)
{
nsresult res;
nsresult rv;
PRBool result = PR_FALSE;
NS_WITH_SERVICE(nsIPrompt, dialog, kCNetSupportDialogCID, &res);
if (NS_FAILED(res))
return NS_ERROR_FACTORY_NOT_REGISTERED;
if (!dialog)
return NS_ERROR_FAILURE;
res = dialog->ConfirmYN(aQuestion.GetUnicode(), &result);
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if (NS_SUCCEEDED(rv) && dialog)
{
rv = dialog->Confirm(mContentWindow, aTitle.GetUnicode(), aQuestion.GetUnicode(), &result);
}
return result;
}
void
nsEditorShell::Alert(const nsString& aMsg, const nsString& aTitle)
nsEditorShell::Alert(const nsString& aTitle, const nsString& aMsg)
{
nsresult res;
NS_WITH_SERVICE(nsIPrompt, dialog, kCNetSupportDialogCID, &res);
if (NS_SUCCEEDED(res) && dialog)
nsresult rv;
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if (NS_SUCCEEDED(rv) && dialog)
{
res = dialog->Alert(aMsg.GetUnicode());
rv = dialog->Alert(mContentWindow, aTitle.GetUnicode(), aMsg.GetUnicode());
}
}

Просмотреть файл

@ -74,6 +74,10 @@ class nsEditorShell : public nsIEditorShell,
{
public:
// These must map onto the button-order for nsICommonDialog::Confirm results
// which are rather ugly right now (Cancel in the middle!)
typedef enum {eYes = 0, eCancel = 1, eNo = 2 } EConfirmResult;
nsEditorShell();
virtual ~nsEditorShell();
@ -161,11 +165,14 @@ class nsEditorShell : public nsIEditorShell,
NS_IMETHOD PrepareDocumentForEditing(nsIURI *aUrl);
NS_IMETHOD DoFind(PRBool aFindNext);
void Alert(const nsString& aMsg, const nsString& aTitle);
void Alert(const nsString& aTitle, const nsString& aMsg);
// Bring up a Yes/No dialog WE REALLY NEED A Yes/No/Cancel dialog and would like to set our own caption as well!
PRBool Confirm(const nsString& aQuestion, const nsString& aTitle);
PRBool Confirm(const nsString& aTitle, const nsString& aQuestion);
// Return value: No=0, Yes=1, Cancel=2
PRInt32 ConfirmWithCancel(const nsString& aQuestion, const nsString& aTitle);
// aYesString and aNoString are optional:
// if null, then "Yes" and "No" are used
EConfirmResult ConfirmWithCancel(const nsString& aTitle, const nsString& aQuestion,
const nsString *aYesString, const nsString *aNoString);
// this returns an AddReffed nsIScriptContext. You must relase it.
nsIScriptContext* GetScriptContext(nsIDOMWindow * aWin);

Просмотреть файл

@ -553,7 +553,6 @@ function EditorInsertHTML()
function EditorInsertLink()
{
window.openDialog("chrome://editor/content/EdLinkProps.xul","LinkDlg", "chrome,close,titlebar,modal");
dump("***************** Finished InsertLink dialog\n");
contentWindow.focus();
}

Просмотреть файл

@ -1,3 +1,8 @@
Yes=Yes
No=No
Cancel=Cancel
Save=Save
DontSave=Don't Save
More=More
Fewer=Fewer
OpenHTMLFile=Open HTML File
@ -18,5 +23,5 @@ SaveFileFailed=Saving file failed!
DocumentTitle=Document Title
NeedDocTitle=Document does not have a title.
AttributesFor=Current attributes for:
foo=bar