diff --git a/htmlparser/src/nsViewSourceHTML.cpp b/htmlparser/src/nsViewSourceHTML.cpp index e0e508ffef1..4d40266f469 100644 --- a/htmlparser/src/nsViewSourceHTML.cpp +++ b/htmlparser/src/nsViewSourceHTML.cpp @@ -18,6 +18,11 @@ * Rights Reserved. * * Contributor(s): + * jce2@po.cwru.edu : Added pref to turn on/off + * syntax hilighting in view source + * window. + * + * */ /** @@ -43,7 +48,7 @@ #endif #define VIEW_SOURCE_HTML -//#define VIEW_SOURCE_COLORING +#define VIEW_SOURCE_COLORING #include "nsIDTDDebug.h" #include "nsViewSourceHTML.h" @@ -59,6 +64,15 @@ #ifdef VIEW_SOURCE_HTML #include "nsHTMLEntities.h" #endif // VIEW_SOURCE_HTML + +#ifdef VIEW_SOURCE_COLORING +// For Coloring pref only +// If we aren't going to define it, then should save on bloat. +#include "nsIPref.h" +#include "nsIServiceManager.h" +static NS_DEFINE_CID(kPrefCID, NS_PREF_CID); +#endif // VIEW_SOURCE_COLORING + #include "COtherDTD.h" #include "prenv.h" //this is here for debug reasons... @@ -982,6 +996,13 @@ nsresult CViewSourceHTML::WriteTag(nsString &theXMLTagName,nsString & aText,PRIn nsresult result=NS_OK; CSharedVSContext& theContext=CSharedVSContext::GetSharedContext(); +#ifdef VIEW_SOURCE_COLORING + // This determines the value of the boolean syntax_highlight preference. + PRBool syntaxHilight = PR_FALSE; + NS_WITH_SERVICE(nsIPref, thePrefsService, kPrefCID, &result); + if (NS_SUCCEEDED(result) && thePrefsService) + thePrefsService->GetBoolPref("browser.view_source.syntax_highlight", &syntaxHilight); +#endif // VIEW_SOURCE_COLORING #ifdef VIEW_SOURCE_HTML if (kBeforeText[aTagType][0] != 0) { @@ -992,31 +1013,35 @@ nsresult CViewSourceHTML::WriteTag(nsString &theXMLTagName,nsString & aText,PRIn } #ifdef VIEW_SOURCE_COLORING - nsAutoString tag; - tag.AssignWithConversion("SPAN"); + nsAutoString tag (NS_LITERAL_STRING("SPAN")); CStartToken theTagToken(eHTMLTag_span); - theTagToken.SetStringValue(tag); + if (syntaxHilight) + { + theTagToken.SetStringValue(tag); + } #endif // VIEW_SOURCE_COLORING -#else +#else // VIEW_SOURCE_HTML *UNDEFINED* CToken theTagToken(theXMLTagName); #endif // VIEW_SOURCE_HTML #ifdef VIEW_SOURCE_COLORING - theContext.mStartNode.Init(&theTagToken,mLineNumber); - + if (syntaxHilight) + { + theContext.mStartNode.Init(&theTagToken,mLineNumber); #ifdef VIEW_SOURCE_HTML - nsTokenAllocator* theAllocator=mTokenizer->GetTokenAllocator(); - if(theAllocator) { - CAttributeToken* theAttr=(CAttributeToken*)theAllocator->CreateTokenOfType(eToken_attribute,eHTMLTag_unknown,NS_ConvertToString(kElementStyles[aTagType])); - nsString& theKey=theAttr->GetKey(); - theKey=NS_ConvertToString("style"); - theContext.mStartNode.AddAttribute(theAttr); - } + nsTokenAllocator* theAllocator=mTokenizer->GetTokenAllocator(); + if(theAllocator) { + CAttributeToken* theAttr=(CAttributeToken*)theAllocator->CreateTokenOfType(eToken_attribute,eHTMLTag_unknown,NS_ConvertToString(kElementStyles[aTagType])); + nsString& theKey=theAttr->GetKey(); + theKey=NS_ConvertToString("style"); + theContext.mStartNode.AddAttribute(theAttr); + } #endif // VIEW_SOURCE_HTML STOP_TIMER(); mSink->OpenContainer(theContext.mStartNode); //emit ... + } #endif // VIEW_SOURCE_COLORING #ifdef rickgdebug @@ -1042,11 +1067,14 @@ nsresult CViewSourceHTML::WriteTag(nsString &theXMLTagName,nsString & aText,PRIn #ifdef VIEW_SOURCE_HTML #ifdef VIEW_SOURCE_COLORING - theContext.mStartNode.ReleaseAll(); - CEndToken theEndToken(eHTMLTag_span); - theEndToken.SetStringValue(tag); - theContext.mEndNode.Init(&theEndToken,mLineNumber); - mSink->CloseContainer(theContext.mEndNode); //emit ... + if (syntaxHilight) + { + theContext.mStartNode.ReleaseAll(); + CEndToken theEndToken(eHTMLTag_span); + theEndToken.SetStringValue(tag); + theContext.mEndNode.Init(&theEndToken,mLineNumber); + mSink->CloseContainer(theContext.mEndNode); //emit ... + } #endif // VIEW_SOURCE_COLORING if (kAfterText[aTagType][0] != 0) { nsAutoString afterText; diff --git a/parser/htmlparser/src/nsViewSourceHTML.cpp b/parser/htmlparser/src/nsViewSourceHTML.cpp index e0e508ffef1..4d40266f469 100644 --- a/parser/htmlparser/src/nsViewSourceHTML.cpp +++ b/parser/htmlparser/src/nsViewSourceHTML.cpp @@ -18,6 +18,11 @@ * Rights Reserved. * * Contributor(s): + * jce2@po.cwru.edu : Added pref to turn on/off + * syntax hilighting in view source + * window. + * + * */ /** @@ -43,7 +48,7 @@ #endif #define VIEW_SOURCE_HTML -//#define VIEW_SOURCE_COLORING +#define VIEW_SOURCE_COLORING #include "nsIDTDDebug.h" #include "nsViewSourceHTML.h" @@ -59,6 +64,15 @@ #ifdef VIEW_SOURCE_HTML #include "nsHTMLEntities.h" #endif // VIEW_SOURCE_HTML + +#ifdef VIEW_SOURCE_COLORING +// For Coloring pref only +// If we aren't going to define it, then should save on bloat. +#include "nsIPref.h" +#include "nsIServiceManager.h" +static NS_DEFINE_CID(kPrefCID, NS_PREF_CID); +#endif // VIEW_SOURCE_COLORING + #include "COtherDTD.h" #include "prenv.h" //this is here for debug reasons... @@ -982,6 +996,13 @@ nsresult CViewSourceHTML::WriteTag(nsString &theXMLTagName,nsString & aText,PRIn nsresult result=NS_OK; CSharedVSContext& theContext=CSharedVSContext::GetSharedContext(); +#ifdef VIEW_SOURCE_COLORING + // This determines the value of the boolean syntax_highlight preference. + PRBool syntaxHilight = PR_FALSE; + NS_WITH_SERVICE(nsIPref, thePrefsService, kPrefCID, &result); + if (NS_SUCCEEDED(result) && thePrefsService) + thePrefsService->GetBoolPref("browser.view_source.syntax_highlight", &syntaxHilight); +#endif // VIEW_SOURCE_COLORING #ifdef VIEW_SOURCE_HTML if (kBeforeText[aTagType][0] != 0) { @@ -992,31 +1013,35 @@ nsresult CViewSourceHTML::WriteTag(nsString &theXMLTagName,nsString & aText,PRIn } #ifdef VIEW_SOURCE_COLORING - nsAutoString tag; - tag.AssignWithConversion("SPAN"); + nsAutoString tag (NS_LITERAL_STRING("SPAN")); CStartToken theTagToken(eHTMLTag_span); - theTagToken.SetStringValue(tag); + if (syntaxHilight) + { + theTagToken.SetStringValue(tag); + } #endif // VIEW_SOURCE_COLORING -#else +#else // VIEW_SOURCE_HTML *UNDEFINED* CToken theTagToken(theXMLTagName); #endif // VIEW_SOURCE_HTML #ifdef VIEW_SOURCE_COLORING - theContext.mStartNode.Init(&theTagToken,mLineNumber); - + if (syntaxHilight) + { + theContext.mStartNode.Init(&theTagToken,mLineNumber); #ifdef VIEW_SOURCE_HTML - nsTokenAllocator* theAllocator=mTokenizer->GetTokenAllocator(); - if(theAllocator) { - CAttributeToken* theAttr=(CAttributeToken*)theAllocator->CreateTokenOfType(eToken_attribute,eHTMLTag_unknown,NS_ConvertToString(kElementStyles[aTagType])); - nsString& theKey=theAttr->GetKey(); - theKey=NS_ConvertToString("style"); - theContext.mStartNode.AddAttribute(theAttr); - } + nsTokenAllocator* theAllocator=mTokenizer->GetTokenAllocator(); + if(theAllocator) { + CAttributeToken* theAttr=(CAttributeToken*)theAllocator->CreateTokenOfType(eToken_attribute,eHTMLTag_unknown,NS_ConvertToString(kElementStyles[aTagType])); + nsString& theKey=theAttr->GetKey(); + theKey=NS_ConvertToString("style"); + theContext.mStartNode.AddAttribute(theAttr); + } #endif // VIEW_SOURCE_HTML STOP_TIMER(); mSink->OpenContainer(theContext.mStartNode); //emit ... + } #endif // VIEW_SOURCE_COLORING #ifdef rickgdebug @@ -1042,11 +1067,14 @@ nsresult CViewSourceHTML::WriteTag(nsString &theXMLTagName,nsString & aText,PRIn #ifdef VIEW_SOURCE_HTML #ifdef VIEW_SOURCE_COLORING - theContext.mStartNode.ReleaseAll(); - CEndToken theEndToken(eHTMLTag_span); - theEndToken.SetStringValue(tag); - theContext.mEndNode.Init(&theEndToken,mLineNumber); - mSink->CloseContainer(theContext.mEndNode); //emit ... + if (syntaxHilight) + { + theContext.mStartNode.ReleaseAll(); + CEndToken theEndToken(eHTMLTag_span); + theEndToken.SetStringValue(tag); + theContext.mEndNode.Init(&theEndToken,mLineNumber); + mSink->CloseContainer(theContext.mEndNode); //emit ... + } #endif // VIEW_SOURCE_COLORING if (kAfterText[aTagType][0] != 0) { nsAutoString afterText;