Lots of editor feature work: bugs 26286, 34519, 28498, 36998, 37089, 14342. r=sfraser

This commit is contained in:
cmanske%netscape.com 2000-05-09 23:03:41 +00:00
Родитель 917ed76799
Коммит 0c4e2853d6
44 изменённых файлов: 1001 добавлений и 1166 удалений

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

@ -44,6 +44,7 @@ CPPSRCS = \
TextEditorTest.cpp \
nsHTMLEditRules.cpp \
nsEditorEventListeners.cpp \
nsEditorShellMouseListener.cpp \
nsEditProperty.cpp \
nsHTMLEditor.cpp \
ChangeAttributeTxn.cpp \

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

@ -39,6 +39,7 @@ CPPSRCS = \
nsHTMLEditUtils.cpp \
TextEditorTest.cpp \
nsEditorEventListeners.cpp \
nsEditorShellMouseListener.cpp \
nsEditProperty.cpp \
EditTxn.cpp \
EditAggregateTxn.cpp \
@ -80,6 +81,7 @@ CPP_OBJS = \
.\$(OBJDIR)\nsHTMLEditRules.obj \
.\$(OBJDIR)\nsHTMLEditUtils.obj \
.\$(OBJDIR)\nsEditorEventListeners.obj \
.\$(OBJDIR)\nsEditorShellMouseListener.obj \
.\$(OBJDIR)\nsEditProperty.obj \
.\$(OBJDIR)\EditTxn.obj \
.\$(OBJDIR)\EditAggregateTxn.obj \

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

@ -603,6 +603,7 @@ nsParagraphStateCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refC
return rv;
}
#ifdef XP_MAC
#pragma mark -
#endif

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

@ -164,5 +164,4 @@ NS_DECL_COMPOSER_COMMAND(nsIncreaseFontSizeCommand)
NS_DECL_COMPOSER_COMMAND(nsDecreaseFontSizeCommand)
#endif // nsComposerCommands_h_

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

@ -331,7 +331,7 @@ nsresult nsComposerController::RegisterComposerCommands(nsIControllerCommandMana
NS_REGISTER_ONE_COMMAND(nsRemoveStylesCommand, "cmd_removeStyles");
NS_REGISTER_ONE_COMMAND(nsIncreaseFontSizeCommand, "cmd_increaseFont");
NS_REGISTER_ONE_COMMAND(nsDecreaseFontSizeCommand, "cmd_decreaseFont");
return NS_OK;
}

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

@ -25,6 +25,7 @@
#include "nsVoidArray.h"
#include "nsString.h"
#include "nsIDOMEvent.h"
#include "nsIDOMDocument.h"
#include "nsIDocument.h"
#include "nsIPresShell.h"
@ -352,8 +353,6 @@ nsTextEditorKeyListener::ScrollSelectionIntoView()
* nsTextEditorMouseListener implementation
*/
NS_IMPL_ADDREF(nsTextEditorMouseListener)
NS_IMPL_RELEASE(nsTextEditorMouseListener)
@ -540,42 +539,9 @@ nsTextEditorMouseListener::MouseDown(nsIDOMEvent* aMouseEvent)
nsresult
nsTextEditorMouseListener::MouseUp(nsIDOMEvent* aMouseEvent)
{
nsCOMPtr<nsIDOMMouseEvent> mouseEvent ( do_QueryInterface(aMouseEvent) );
if (!mouseEvent) {
//non-ui event passed in. bad things.
return NS_OK;
}
// Detect double click message:
PRUint16 clickCount;
nsresult res = mouseEvent->GetClickCount(&clickCount);
if (NS_FAILED(res)) return res;
if (clickCount == 2)
{
nsCOMPtr<nsIHTMLEditor> htmlEditor = do_QueryInterface(mEditor);
if (htmlEditor)
{
nsCOMPtr<nsIDOMElement> selectedElement;
if (NS_SUCCEEDED(htmlEditor->GetSelectedElement(nsAutoString(), getter_AddRefs(selectedElement)))
&& selectedElement)
{
nsAutoString TagName;
selectedElement->GetTagName(TagName);
TagName.ToLowerCase();
#if DEBUG_cmanske
char szTagName[64];
TagName.ToCString(szTagName, 64);
printf("Single Selected element found: %s\n", szTagName);
#endif
}
}
}
return NS_OK;
}
nsresult
nsTextEditorMouseListener::MouseClick(nsIDOMEvent* aMouseEvent)
{
@ -607,13 +573,10 @@ nsTextEditorMouseListener::MouseOut(nsIDOMEvent* aMouseEvent)
}
/*
* nsTextEditorMouseListener implementation
* nsTextEditorTextListener implementation
*/
NS_IMPL_ADDREF(nsTextEditorTextListener)
NS_IMPL_RELEASE(nsTextEditorTextListener)

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

@ -76,7 +76,7 @@ protected:
};
/** editor Implementation of the MouseListener interface
/** editor Implementation of the TextListener interface
*/
class nsTextEditorTextListener : public nsIDOMTextListener
{
@ -140,7 +140,7 @@ protected:
};
/** editor Implementation of the TextListener interface
/** editor Implementation of the MouseListener interface
*/
class nsTextEditorMouseListener : public nsIDOMMouseListener
{
@ -176,7 +176,7 @@ protected:
};
/** editor Implementation of the MouseListener interface
/** editor Implementation of the DragListener interface
*/
class nsTextEditorDragListener : public nsIDOMDragListener
{

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

@ -44,6 +44,7 @@
#include "nsIDOMNodeList.h"
#include "nsICSSLoader.h"
#include "nsICSSStyleSheet.h"
#include "nsIContent.h"
#include "nsIHTMLContentContainer.h"
#include "nsIStyleSet.h"
#include "nsIURI.h"
@ -92,7 +93,6 @@
///////////////////////////////////////
// Editor Includes
///////////////////////////////////////
#include "nsIDOMEventReceiver.h"
#include "nsIDOMEventCapturer.h"
#include "nsString.h"
#include "nsIDOMText.h"
@ -117,6 +117,7 @@
#include "nsAOLCiter.h"
#include "nsInternetCiter.h"
#include "nsEditorShellMouseListener.h"
///////////////////////////////////////
@ -143,6 +144,11 @@ static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
#define EDITOR_BUNDLE_URL "chrome://editor/locale/editor.properties"
enum {
eEditorController,
eComposerController
};
/////////////////////////////////////////////////////////////////////////
// Utility to extract document from a webshell object.
static nsresult
@ -267,6 +273,17 @@ nsEditorShell::~nsEditorShell()
NS_IF_RELEASE(mStateMaintainer);
NS_IF_RELEASE(mParserObserver);
// Remove our document mouse event listener
if (mMouseListenerP)
{
nsCOMPtr<nsIDOMEventReceiver> erP;
nsresult rv = GetDocumentEventReceiver(getter_AddRefs(erP));
if (NS_SUCCEEDED(rv) && erP)
{
erP->RemoveEventListenerByIID(mMouseListenerP, NS_GET_IID(nsIDOMMouseListener));
mMouseListenerP = nsnull;
}
}
// the only other references we hold are in nsCOMPtrs, so they'll take
// care of themselves.
}
@ -367,19 +384,32 @@ nsEditorShell::ResetEditingState()
}
}
nsresult rv;
// now, unregister the selection listener, if there was one
if (mStateMaintainer)
{
nsCOMPtr<nsIDOMSelection> domSelection;
// using a scoped result, because we don't really care if this fails
nsresult result = GetEditorSelection(getter_AddRefs(domSelection));
if (NS_SUCCEEDED(result) && domSelection)
rv = GetEditorSelection(getter_AddRefs(domSelection));
if (NS_SUCCEEDED(rv) && domSelection)
{
domSelection->RemoveSelectionListener(mStateMaintainer);
NS_IF_RELEASE(mStateMaintainer);
}
}
// Remove our document mouse event listener
if (mMouseListenerP)
{
nsCOMPtr<nsIDOMEventReceiver> erP;
rv = GetDocumentEventReceiver(getter_AddRefs(erP));
if (NS_SUCCEEDED(rv) && erP)
{
erP->RemoveEventListenerByIID(mMouseListenerP, NS_GET_IID(nsIDOMMouseListener));
mMouseListenerP = nsnull;
}
}
// clear this editor out of the controller
if (mEditorController)
{
@ -476,6 +506,28 @@ nsEditorShell::PrepareDocumentForEditing(nsIDocumentLoader* aLoader, nsIURI *aUr
mEditorController->SetCommandRefCon(editorAsISupports);
}
// get a mouse listener for double click on tags
// We can't use nsEditor listener because core editor shouldn't call UI commands
rv = NS_NewEditorShellMouseListener(getter_AddRefs(mMouseListenerP), this);
if (NS_FAILED(rv))
{
mMouseListenerP = nsnull;
return rv;
}
// Add mouse listener to document
nsCOMPtr<nsIDOMEventReceiver> erP;
rv = GetDocumentEventReceiver(getter_AddRefs(erP));
if (NS_FAILED(rv))
{
mMouseListenerP = nsnull;
return rv;
}
rv = erP->AddEventListenerByIID(mMouseListenerP, NS_GET_IID(nsIDOMMouseListener));
if (NS_FAILED(rv)) return rv;
// now all the listeners are set up, we can call PostCreate
rv = editor->PostCreate();
if (NS_FAILED(rv)) return rv;
@ -498,7 +550,7 @@ nsEditorShell::PrepareDocumentForEditing(nsIDocumentLoader* aLoader, nsIURI *aUr
nsCRT::strncmp(pageURLString,"about:blank", 11) != 0)
{
// Clutzy method of converting URL to local file format
// nsIFileSpec is going away -- is nsFileSpec???
// nsIFileSpec is going away -- WE NEED TO REWRITE nsIDiskDocument!
nsFileURL pageURL(pageURLString);
nsFileSpec pageSpec(pageURL);
@ -554,6 +606,53 @@ nsEditorShell::PrepareDocumentForEditing(nsIDocumentLoader* aLoader, nsIURI *aUr
return NS_OK;
}
nsresult nsEditorShell::GetDocumentEventReceiver(nsIDOMEventReceiver **aEventReceiver)
{
if (!aEventReceiver) return NS_ERROR_NULL_POINTER;
if (!mContentWindow || !mEditor) return NS_ERROR_NOT_INITIALIZED;
nsCOMPtr<nsIDOMDocument> domDoc;
mContentWindow->GetDocument(getter_AddRefs(domDoc));
if (!domDoc) return NS_ERROR_NOT_INITIALIZED;
nsCOMPtr<nsIDOMElement> rootElement;
nsCOMPtr<nsIEditor> editor = do_QueryInterface(mEditor);
nsresult rv = editor->GetRootElement(getter_AddRefs(rootElement));
nsCOMPtr<nsIDOMEventReceiver> erP;
//(Copied from nsHTMLEditor::InstallEventListeners)
//now hack to make sure we are not anonymous content if we are
// grabbing the parent of root element for our observer
nsCOMPtr<nsIContent> content = do_QueryInterface(rootElement);
if (content)
{
nsCOMPtr<nsIContent> parent;
if (NS_SUCCEEDED(content->GetParent(*getter_AddRefs(parent))) && parent)
{
PRInt32 index;
if (NS_FAILED(parent->IndexOf(content, index)) || index<0 )
{
rootElement = do_QueryInterface(parent);
rv = rootElement->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(erP));
}
else
rootElement = 0;
}
}
if (!rootElement && domDoc)
rv = domDoc->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(erP));
//end hack
if (erP)
{
*aEventReceiver = erP;
NS_ADDREF(*aEventReceiver);
}
return rv;
}
NS_IMETHODIMP
nsEditorShell::SetContentWindow(nsIDOMWindow* aWin)
{
@ -592,12 +691,12 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin)
mEditorController = editorController; // temp weak link, so we can get it and set the editor later
rv = controllers->InsertControllerAt(0, controller);
rv = controllers->InsertControllerAt(eEditorController, controller);
if (NS_FAILED(rv)) return rv;
}
{
// the first is a composer controller, and takes an nsIEditorShell as the refCon
// the second is a composer controller, and takes an nsIEditorShell as the refCon
nsCOMPtr<nsIController> controller = do_CreateInstance("component://netscape/editor/composercontroller", &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIEditorController> editorController = do_QueryInterface(controller);
@ -606,7 +705,7 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin)
rv = editorController->Init(shellAsISupports);
if (NS_FAILED(rv)) return rv;
rv = controllers->InsertControllerAt(1, controller);
rv = controllers->InsertControllerAt(eComposerController, controller);
if (NS_FAILED(rv)) return rv;
}
@ -2668,21 +2767,30 @@ nsEditorShell::ConfirmWithCancel(const nsString& aTitle, const nsString& aQuesti
if ( NS_SUCCEEDED(rv) )
{
// Stuff in Parameters
block->SetInt( nsICommonDialogs::eNumberButtons,3 );
block->SetString( nsICommonDialogs::eMsg, aQuestion.GetUnicode());
nsAutoString url; url.AssignWithConversion( "chrome://global/skin/question-icon.gif" );
block->SetString( nsICommonDialogs::eIconURL, url.GetUnicode());
nsAutoString yesStr, noStr;
// Default is Yes, No, Cancel
PRInt32 numberOfButtons = 3;
if (aYesString)
yesStr.Assign(*aYesString);
else
// We always want a "Yes" string, so supply the default
GetBundleString(NS_ConvertASCIItoUCS2("Yes"), yesStr);
if (aNoString)
if (aNoString && aNoString->Length() > 0)
{
noStr.Assign(*aNoString);
block->SetString( nsICommonDialogs::eButton2Text, noStr.GetUnicode() );
}
else
GetBundleString(NS_ConvertASCIItoUCS2("No"), noStr);
{
// No string for "No" means we only want Yes, Cancel
numberOfButtons = 2;
}
block->SetInt( nsICommonDialogs::eNumberButtons, numberOfButtons );
nsAutoString cancelStr;
GetBundleString(NS_ConvertASCIItoUCS2("Cancel"), cancelStr);
@ -2691,7 +2799,6 @@ nsEditorShell::ConfirmWithCancel(const nsString& aTitle, const nsString& aQuesti
//Note: "button0" is always Ok or Yes action, "button1" is Cancel
block->SetString( nsICommonDialogs::eButton0Text, yesStr.GetUnicode() );
block->SetString( nsICommonDialogs::eButton1Text, cancelStr.GetUnicode() );
block->SetString( nsICommonDialogs::eButton2Text, noStr.GetUnicode() );
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if ( NS_SUCCEEDED( rv ) )
@ -2922,7 +3029,6 @@ nsEditorShell::SetParagraphFormat(const PRUnichar * paragraphFormat)
return err;
}
NS_IMETHODIMP
nsEditorShell::GetEditorDocument(nsIDOMDocument** aEditorDocument)
{
@ -4663,3 +4769,33 @@ nsEditorShell::DocumentIsRootDoc(nsIDocumentLoader* aLoader, PRBool& outIsRoot)
return NS_OK;
}
NS_IMETHODIMP
nsEditorShell::EditElementProperties(nsIDOMElement *aElement, int x, int y)
{
if (!aElement) return NS_OK;
nsresult rv = NS_ERROR_FAILURE;
#if DEBUG_cmanske
nsAutoString TagName;
aElement->GetTagName(TagName);
TagName.ToLowerCase();
char szTagName[64];
TagName.ToCString(szTagName, 64);
printf("***** DBLClick: TagName of element clicked on: %s\n", szTagName);
#endif
// Get the ComposerController:
nsCOMPtr<nsIControllers> controllers;
rv = mContentWindow->GetControllers(getter_AddRefs(controllers));
if (NS_FAILED(rv)) return rv;
if (!controllers) return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsIController> controller;
rv = controllers->GetControllerAt(eComposerController, getter_AddRefs(controller));
if (NS_FAILED(rv)) return rv;
if (!controller) return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsIEditorController> composerController = do_QueryInterface(controller);
// Execute the command
nsAutoString commandName(NS_ConvertASCIItoUCS2("cmd_advancedProperties"));
return composerController->DoCommand(commandName.GetUnicode());
}

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

@ -33,9 +33,11 @@
#include "nsIEditorController.h"
#include "nsIDocumentLoaderObserver.h"
#include "nsIDOMSelectionListener.h"
#include "nsIDOMEventReceiver.h"
#include "nsIPrompt.h"
#include "nsIStreamObserver.h"
#include "nsIDOMDocument.h"
#include "nsIDOMEventListener.h"
#include "nsVoidArray.h"
#include "nsTextServicesCID.h"
#include "nsIEditorSpellCheck.h"
@ -143,9 +145,15 @@ class nsEditorShell : public nsIEditorShell,
// is the document being loaded the root of a frameset, or a non-frameset doc?
nsresult DocumentIsRootDoc(nsIDocumentLoader* aLoader, PRBool& outIsRoot);
nsCOMPtr<nsIHTMLEditor> mEditor; // this can be either an HTML or plain text (or other?) editor
nsCOMPtr<nsISupports> mSearchContext; // context used for search and replace. Owned by the appshell.
nsCOMPtr<nsISpellChecker> mSpellChecker;
nsCOMPtr<nsIHTMLEditor> mEditor; // this can be either an HTML or plain text (or other?) editor
nsCOMPtr<nsISupports> mSearchContext; // context used for search and replace. Owned by the appshell.
nsCOMPtr<nsISpellChecker> mSpellChecker;
// Let UI detect and process double click on elements for AdvancedProperties
// (see nsEditorShellMouseEventListener)
nsCOMPtr<nsIDOMEventListener> mMouseListenerP;
// We need this to add mMouseListenerP to document
nsresult GetDocumentEventReceiver(nsIDOMEventReceiver **aEventReceiver);
PRBool mMailCompose;

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

@ -2767,9 +2767,9 @@ nsHTMLEditor::SetCaretAfterElement(nsIDOMElement* aElement)
return res;
}
NS_IMETHODIMP nsHTMLEditor::SetParagraphFormat(const nsString& aParagraphFormat)
NS_IMETHODIMP
nsHTMLEditor::SetParagraphFormat(const nsString& aParagraphFormat)
{
//Kinda sad to waste memory just to force lower case
nsAutoString tag; tag.Assign(aParagraphFormat);
tag.ToLowerCase();
return InsertBasicBlock(tag);
@ -3340,25 +3340,50 @@ nsHTMLEditor::GetSelectedElement(const nsString& aTagName, nsIDOMElement** aRetu
// default is null - no element found
*aReturn = nsnull;
// First look for a single element in selection
nsCOMPtr<nsIDOMSelection>selection;
nsresult res = GetSelection(getter_AddRefs(selection));
if (NS_FAILED(res)) return res;
if (!selection) return NS_ERROR_NULL_POINTER;
PRBool bNodeFound = PR_FALSE;
res=NS_ERROR_NOT_INITIALIZED;
PRBool isCollapsed;
selection->GetIsCollapsed(&isCollapsed);
nsCOMPtr<nsIDOMElement> selectedElement;
nsCOMPtr<nsIDOMRange> range;
res = selection->GetRangeAt(0, getter_AddRefs(range));
if (NS_FAILED(res)) return res;
nsCOMPtr<nsIDOMNode> startParent;
PRInt32 startOffset, endOffset;
res = range->GetStartParent(getter_AddRefs(startParent));
if (NS_FAILED(res)) return res;
res = range->GetStartOffset(&startOffset);
if (NS_FAILED(res)) return res;
nsCOMPtr<nsIDOMNode> endParent;
res = range->GetEndParent(getter_AddRefs(endParent));
if (NS_FAILED(res)) return res;
res = range->GetEndOffset(&endOffset);
if (NS_FAILED(res)) return res;
if (startParent && startParent == endParent && (endOffset-startOffset) == 1)
{
nsCOMPtr<nsIDOMNode> selectedNode = GetChildAt(startParent, startOffset);
if (NS_FAILED(res)) return NS_OK;
selectedElement = do_QueryInterface(selectedNode);
bNodeFound = PR_TRUE;
}
nsAutoString TagName = aTagName;
TagName.ToLowerCase();
// Empty string indicates we should match any element tag
PRBool anyTag = (TagName.IsEmpty());
//Note that this doesn't need to go through the transaction system
nsresult res=NS_ERROR_NOT_INITIALIZED;
//PRBool first=PR_TRUE;
nsCOMPtr<nsIDOMSelection>selection;
res = GetSelection(getter_AddRefs(selection));
if (NS_FAILED(res)) return res;
if (!selection) return NS_ERROR_NULL_POINTER;
PRBool isCollapsed;
selection->GetIsCollapsed(&isCollapsed);
nsCOMPtr<nsIDOMElement> selectedElement;
PRBool bNodeFound = PR_FALSE;
if (IsLink(TagName))
{
// Link tag is a special case - we return the anchor node

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

@ -603,6 +603,7 @@ nsParagraphStateCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refC
return rv;
}
#ifdef XP_MAC
#pragma mark -
#endif

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

@ -164,5 +164,4 @@ NS_DECL_COMPOSER_COMMAND(nsIncreaseFontSizeCommand)
NS_DECL_COMPOSER_COMMAND(nsDecreaseFontSizeCommand)
#endif // nsComposerCommands_h_

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

@ -44,6 +44,7 @@
#include "nsIDOMNodeList.h"
#include "nsICSSLoader.h"
#include "nsICSSStyleSheet.h"
#include "nsIContent.h"
#include "nsIHTMLContentContainer.h"
#include "nsIStyleSet.h"
#include "nsIURI.h"
@ -92,7 +93,6 @@
///////////////////////////////////////
// Editor Includes
///////////////////////////////////////
#include "nsIDOMEventReceiver.h"
#include "nsIDOMEventCapturer.h"
#include "nsString.h"
#include "nsIDOMText.h"
@ -117,6 +117,7 @@
#include "nsAOLCiter.h"
#include "nsInternetCiter.h"
#include "nsEditorShellMouseListener.h"
///////////////////////////////////////
@ -143,6 +144,11 @@ static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
#define EDITOR_BUNDLE_URL "chrome://editor/locale/editor.properties"
enum {
eEditorController,
eComposerController
};
/////////////////////////////////////////////////////////////////////////
// Utility to extract document from a webshell object.
static nsresult
@ -267,6 +273,17 @@ nsEditorShell::~nsEditorShell()
NS_IF_RELEASE(mStateMaintainer);
NS_IF_RELEASE(mParserObserver);
// Remove our document mouse event listener
if (mMouseListenerP)
{
nsCOMPtr<nsIDOMEventReceiver> erP;
nsresult rv = GetDocumentEventReceiver(getter_AddRefs(erP));
if (NS_SUCCEEDED(rv) && erP)
{
erP->RemoveEventListenerByIID(mMouseListenerP, NS_GET_IID(nsIDOMMouseListener));
mMouseListenerP = nsnull;
}
}
// the only other references we hold are in nsCOMPtrs, so they'll take
// care of themselves.
}
@ -367,19 +384,32 @@ nsEditorShell::ResetEditingState()
}
}
nsresult rv;
// now, unregister the selection listener, if there was one
if (mStateMaintainer)
{
nsCOMPtr<nsIDOMSelection> domSelection;
// using a scoped result, because we don't really care if this fails
nsresult result = GetEditorSelection(getter_AddRefs(domSelection));
if (NS_SUCCEEDED(result) && domSelection)
rv = GetEditorSelection(getter_AddRefs(domSelection));
if (NS_SUCCEEDED(rv) && domSelection)
{
domSelection->RemoveSelectionListener(mStateMaintainer);
NS_IF_RELEASE(mStateMaintainer);
}
}
// Remove our document mouse event listener
if (mMouseListenerP)
{
nsCOMPtr<nsIDOMEventReceiver> erP;
rv = GetDocumentEventReceiver(getter_AddRefs(erP));
if (NS_SUCCEEDED(rv) && erP)
{
erP->RemoveEventListenerByIID(mMouseListenerP, NS_GET_IID(nsIDOMMouseListener));
mMouseListenerP = nsnull;
}
}
// clear this editor out of the controller
if (mEditorController)
{
@ -476,6 +506,28 @@ nsEditorShell::PrepareDocumentForEditing(nsIDocumentLoader* aLoader, nsIURI *aUr
mEditorController->SetCommandRefCon(editorAsISupports);
}
// get a mouse listener for double click on tags
// We can't use nsEditor listener because core editor shouldn't call UI commands
rv = NS_NewEditorShellMouseListener(getter_AddRefs(mMouseListenerP), this);
if (NS_FAILED(rv))
{
mMouseListenerP = nsnull;
return rv;
}
// Add mouse listener to document
nsCOMPtr<nsIDOMEventReceiver> erP;
rv = GetDocumentEventReceiver(getter_AddRefs(erP));
if (NS_FAILED(rv))
{
mMouseListenerP = nsnull;
return rv;
}
rv = erP->AddEventListenerByIID(mMouseListenerP, NS_GET_IID(nsIDOMMouseListener));
if (NS_FAILED(rv)) return rv;
// now all the listeners are set up, we can call PostCreate
rv = editor->PostCreate();
if (NS_FAILED(rv)) return rv;
@ -498,7 +550,7 @@ nsEditorShell::PrepareDocumentForEditing(nsIDocumentLoader* aLoader, nsIURI *aUr
nsCRT::strncmp(pageURLString,"about:blank", 11) != 0)
{
// Clutzy method of converting URL to local file format
// nsIFileSpec is going away -- is nsFileSpec???
// nsIFileSpec is going away -- WE NEED TO REWRITE nsIDiskDocument!
nsFileURL pageURL(pageURLString);
nsFileSpec pageSpec(pageURL);
@ -554,6 +606,53 @@ nsEditorShell::PrepareDocumentForEditing(nsIDocumentLoader* aLoader, nsIURI *aUr
return NS_OK;
}
nsresult nsEditorShell::GetDocumentEventReceiver(nsIDOMEventReceiver **aEventReceiver)
{
if (!aEventReceiver) return NS_ERROR_NULL_POINTER;
if (!mContentWindow || !mEditor) return NS_ERROR_NOT_INITIALIZED;
nsCOMPtr<nsIDOMDocument> domDoc;
mContentWindow->GetDocument(getter_AddRefs(domDoc));
if (!domDoc) return NS_ERROR_NOT_INITIALIZED;
nsCOMPtr<nsIDOMElement> rootElement;
nsCOMPtr<nsIEditor> editor = do_QueryInterface(mEditor);
nsresult rv = editor->GetRootElement(getter_AddRefs(rootElement));
nsCOMPtr<nsIDOMEventReceiver> erP;
//(Copied from nsHTMLEditor::InstallEventListeners)
//now hack to make sure we are not anonymous content if we are
// grabbing the parent of root element for our observer
nsCOMPtr<nsIContent> content = do_QueryInterface(rootElement);
if (content)
{
nsCOMPtr<nsIContent> parent;
if (NS_SUCCEEDED(content->GetParent(*getter_AddRefs(parent))) && parent)
{
PRInt32 index;
if (NS_FAILED(parent->IndexOf(content, index)) || index<0 )
{
rootElement = do_QueryInterface(parent);
rv = rootElement->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(erP));
}
else
rootElement = 0;
}
}
if (!rootElement && domDoc)
rv = domDoc->QueryInterface(NS_GET_IID(nsIDOMEventReceiver), getter_AddRefs(erP));
//end hack
if (erP)
{
*aEventReceiver = erP;
NS_ADDREF(*aEventReceiver);
}
return rv;
}
NS_IMETHODIMP
nsEditorShell::SetContentWindow(nsIDOMWindow* aWin)
{
@ -592,12 +691,12 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin)
mEditorController = editorController; // temp weak link, so we can get it and set the editor later
rv = controllers->InsertControllerAt(0, controller);
rv = controllers->InsertControllerAt(eEditorController, controller);
if (NS_FAILED(rv)) return rv;
}
{
// the first is a composer controller, and takes an nsIEditorShell as the refCon
// the second is a composer controller, and takes an nsIEditorShell as the refCon
nsCOMPtr<nsIController> controller = do_CreateInstance("component://netscape/editor/composercontroller", &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIEditorController> editorController = do_QueryInterface(controller);
@ -606,7 +705,7 @@ nsEditorShell::SetContentWindow(nsIDOMWindow* aWin)
rv = editorController->Init(shellAsISupports);
if (NS_FAILED(rv)) return rv;
rv = controllers->InsertControllerAt(1, controller);
rv = controllers->InsertControllerAt(eComposerController, controller);
if (NS_FAILED(rv)) return rv;
}
@ -2668,21 +2767,30 @@ nsEditorShell::ConfirmWithCancel(const nsString& aTitle, const nsString& aQuesti
if ( NS_SUCCEEDED(rv) )
{
// Stuff in Parameters
block->SetInt( nsICommonDialogs::eNumberButtons,3 );
block->SetString( nsICommonDialogs::eMsg, aQuestion.GetUnicode());
nsAutoString url; url.AssignWithConversion( "chrome://global/skin/question-icon.gif" );
block->SetString( nsICommonDialogs::eIconURL, url.GetUnicode());
nsAutoString yesStr, noStr;
// Default is Yes, No, Cancel
PRInt32 numberOfButtons = 3;
if (aYesString)
yesStr.Assign(*aYesString);
else
// We always want a "Yes" string, so supply the default
GetBundleString(NS_ConvertASCIItoUCS2("Yes"), yesStr);
if (aNoString)
if (aNoString && aNoString->Length() > 0)
{
noStr.Assign(*aNoString);
block->SetString( nsICommonDialogs::eButton2Text, noStr.GetUnicode() );
}
else
GetBundleString(NS_ConvertASCIItoUCS2("No"), noStr);
{
// No string for "No" means we only want Yes, Cancel
numberOfButtons = 2;
}
block->SetInt( nsICommonDialogs::eNumberButtons, numberOfButtons );
nsAutoString cancelStr;
GetBundleString(NS_ConvertASCIItoUCS2("Cancel"), cancelStr);
@ -2691,7 +2799,6 @@ nsEditorShell::ConfirmWithCancel(const nsString& aTitle, const nsString& aQuesti
//Note: "button0" is always Ok or Yes action, "button1" is Cancel
block->SetString( nsICommonDialogs::eButton0Text, yesStr.GetUnicode() );
block->SetString( nsICommonDialogs::eButton1Text, cancelStr.GetUnicode() );
block->SetString( nsICommonDialogs::eButton2Text, noStr.GetUnicode() );
NS_WITH_SERVICE(nsICommonDialogs, dialog, kCommonDialogsCID, &rv);
if ( NS_SUCCEEDED( rv ) )
@ -2922,7 +3029,6 @@ nsEditorShell::SetParagraphFormat(const PRUnichar * paragraphFormat)
return err;
}
NS_IMETHODIMP
nsEditorShell::GetEditorDocument(nsIDOMDocument** aEditorDocument)
{
@ -4663,3 +4769,33 @@ nsEditorShell::DocumentIsRootDoc(nsIDocumentLoader* aLoader, PRBool& outIsRoot)
return NS_OK;
}
NS_IMETHODIMP
nsEditorShell::EditElementProperties(nsIDOMElement *aElement, int x, int y)
{
if (!aElement) return NS_OK;
nsresult rv = NS_ERROR_FAILURE;
#if DEBUG_cmanske
nsAutoString TagName;
aElement->GetTagName(TagName);
TagName.ToLowerCase();
char szTagName[64];
TagName.ToCString(szTagName, 64);
printf("***** DBLClick: TagName of element clicked on: %s\n", szTagName);
#endif
// Get the ComposerController:
nsCOMPtr<nsIControllers> controllers;
rv = mContentWindow->GetControllers(getter_AddRefs(controllers));
if (NS_FAILED(rv)) return rv;
if (!controllers) return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsIController> controller;
rv = controllers->GetControllerAt(eComposerController, getter_AddRefs(controller));
if (NS_FAILED(rv)) return rv;
if (!controller) return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsIEditorController> composerController = do_QueryInterface(controller);
// Execute the command
nsAutoString commandName(NS_ConvertASCIItoUCS2("cmd_advancedProperties"));
return composerController->DoCommand(commandName.GetUnicode());
}

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

@ -33,9 +33,11 @@
#include "nsIEditorController.h"
#include "nsIDocumentLoaderObserver.h"
#include "nsIDOMSelectionListener.h"
#include "nsIDOMEventReceiver.h"
#include "nsIPrompt.h"
#include "nsIStreamObserver.h"
#include "nsIDOMDocument.h"
#include "nsIDOMEventListener.h"
#include "nsVoidArray.h"
#include "nsTextServicesCID.h"
#include "nsIEditorSpellCheck.h"
@ -143,9 +145,15 @@ class nsEditorShell : public nsIEditorShell,
// is the document being loaded the root of a frameset, or a non-frameset doc?
nsresult DocumentIsRootDoc(nsIDocumentLoader* aLoader, PRBool& outIsRoot);
nsCOMPtr<nsIHTMLEditor> mEditor; // this can be either an HTML or plain text (or other?) editor
nsCOMPtr<nsISupports> mSearchContext; // context used for search and replace. Owned by the appshell.
nsCOMPtr<nsISpellChecker> mSpellChecker;
nsCOMPtr<nsIHTMLEditor> mEditor; // this can be either an HTML or plain text (or other?) editor
nsCOMPtr<nsISupports> mSearchContext; // context used for search and replace. Owned by the appshell.
nsCOMPtr<nsISpellChecker> mSpellChecker;
// Let UI detect and process double click on elements for AdvancedProperties
// (see nsEditorShellMouseEventListener)
nsCOMPtr<nsIDOMEventListener> mMouseListenerP;
// We need this to add mMouseListenerP to document
nsresult GetDocumentEventReceiver(nsIDOMEventReceiver **aEventReceiver);
PRBool mMailCompose;

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

@ -188,6 +188,13 @@ interface nsIEditorShell : nsISupports
/** Element insert and property editing */
/** Launch the "Advanced Edit" property dialog
* for the supplied element
* (Called by the DblClick handler in EditorShellMouseListener owned by EditorShell)
* Use x and y are hints to allow different behavior near left and top borders, etc.
*/
void EditElementProperties(in nsIDOMElement element, in PRInt32 x, in PRInt32 y);
/** Return an element only if it is the only node selected,
* such as an image, horizontal rule, etc.
* The exception is a link, which is more like a text attribute:

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

@ -331,7 +331,7 @@ nsresult nsComposerController::RegisterComposerCommands(nsIControllerCommandMana
NS_REGISTER_ONE_COMMAND(nsRemoveStylesCommand, "cmd_removeStyles");
NS_REGISTER_ONE_COMMAND(nsIncreaseFontSizeCommand, "cmd_increaseFont");
NS_REGISTER_ONE_COMMAND(nsDecreaseFontSizeCommand, "cmd_decreaseFont");
return NS_OK;
}

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

@ -2767,9 +2767,9 @@ nsHTMLEditor::SetCaretAfterElement(nsIDOMElement* aElement)
return res;
}
NS_IMETHODIMP nsHTMLEditor::SetParagraphFormat(const nsString& aParagraphFormat)
NS_IMETHODIMP
nsHTMLEditor::SetParagraphFormat(const nsString& aParagraphFormat)
{
//Kinda sad to waste memory just to force lower case
nsAutoString tag; tag.Assign(aParagraphFormat);
tag.ToLowerCase();
return InsertBasicBlock(tag);
@ -3340,25 +3340,50 @@ nsHTMLEditor::GetSelectedElement(const nsString& aTagName, nsIDOMElement** aRetu
// default is null - no element found
*aReturn = nsnull;
// First look for a single element in selection
nsCOMPtr<nsIDOMSelection>selection;
nsresult res = GetSelection(getter_AddRefs(selection));
if (NS_FAILED(res)) return res;
if (!selection) return NS_ERROR_NULL_POINTER;
PRBool bNodeFound = PR_FALSE;
res=NS_ERROR_NOT_INITIALIZED;
PRBool isCollapsed;
selection->GetIsCollapsed(&isCollapsed);
nsCOMPtr<nsIDOMElement> selectedElement;
nsCOMPtr<nsIDOMRange> range;
res = selection->GetRangeAt(0, getter_AddRefs(range));
if (NS_FAILED(res)) return res;
nsCOMPtr<nsIDOMNode> startParent;
PRInt32 startOffset, endOffset;
res = range->GetStartParent(getter_AddRefs(startParent));
if (NS_FAILED(res)) return res;
res = range->GetStartOffset(&startOffset);
if (NS_FAILED(res)) return res;
nsCOMPtr<nsIDOMNode> endParent;
res = range->GetEndParent(getter_AddRefs(endParent));
if (NS_FAILED(res)) return res;
res = range->GetEndOffset(&endOffset);
if (NS_FAILED(res)) return res;
if (startParent && startParent == endParent && (endOffset-startOffset) == 1)
{
nsCOMPtr<nsIDOMNode> selectedNode = GetChildAt(startParent, startOffset);
if (NS_FAILED(res)) return NS_OK;
selectedElement = do_QueryInterface(selectedNode);
bNodeFound = PR_TRUE;
}
nsAutoString TagName = aTagName;
TagName.ToLowerCase();
// Empty string indicates we should match any element tag
PRBool anyTag = (TagName.IsEmpty());
//Note that this doesn't need to go through the transaction system
nsresult res=NS_ERROR_NOT_INITIALIZED;
//PRBool first=PR_TRUE;
nsCOMPtr<nsIDOMSelection>selection;
res = GetSelection(getter_AddRefs(selection));
if (NS_FAILED(res)) return res;
if (!selection) return NS_ERROR_NULL_POINTER;
PRBool isCollapsed;
selection->GetIsCollapsed(&isCollapsed);
nsCOMPtr<nsIDOMElement> selectedElement;
PRBool bNodeFound = PR_FALSE;
if (IsLink(TagName))
{
// Link tag is a special case - we return the anchor node

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

@ -25,6 +25,7 @@
#include "nsVoidArray.h"
#include "nsString.h"
#include "nsIDOMEvent.h"
#include "nsIDOMDocument.h"
#include "nsIDocument.h"
#include "nsIPresShell.h"
@ -352,8 +353,6 @@ nsTextEditorKeyListener::ScrollSelectionIntoView()
* nsTextEditorMouseListener implementation
*/
NS_IMPL_ADDREF(nsTextEditorMouseListener)
NS_IMPL_RELEASE(nsTextEditorMouseListener)
@ -540,42 +539,9 @@ nsTextEditorMouseListener::MouseDown(nsIDOMEvent* aMouseEvent)
nsresult
nsTextEditorMouseListener::MouseUp(nsIDOMEvent* aMouseEvent)
{
nsCOMPtr<nsIDOMMouseEvent> mouseEvent ( do_QueryInterface(aMouseEvent) );
if (!mouseEvent) {
//non-ui event passed in. bad things.
return NS_OK;
}
// Detect double click message:
PRUint16 clickCount;
nsresult res = mouseEvent->GetClickCount(&clickCount);
if (NS_FAILED(res)) return res;
if (clickCount == 2)
{
nsCOMPtr<nsIHTMLEditor> htmlEditor = do_QueryInterface(mEditor);
if (htmlEditor)
{
nsCOMPtr<nsIDOMElement> selectedElement;
if (NS_SUCCEEDED(htmlEditor->GetSelectedElement(nsAutoString(), getter_AddRefs(selectedElement)))
&& selectedElement)
{
nsAutoString TagName;
selectedElement->GetTagName(TagName);
TagName.ToLowerCase();
#if DEBUG_cmanske
char szTagName[64];
TagName.ToCString(szTagName, 64);
printf("Single Selected element found: %s\n", szTagName);
#endif
}
}
}
return NS_OK;
}
nsresult
nsTextEditorMouseListener::MouseClick(nsIDOMEvent* aMouseEvent)
{
@ -607,13 +573,10 @@ nsTextEditorMouseListener::MouseOut(nsIDOMEvent* aMouseEvent)
}
/*
* nsTextEditorMouseListener implementation
* nsTextEditorTextListener implementation
*/
NS_IMPL_ADDREF(nsTextEditorTextListener)
NS_IMPL_RELEASE(nsTextEditorTextListener)

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

@ -76,7 +76,7 @@ protected:
};
/** editor Implementation of the MouseListener interface
/** editor Implementation of the TextListener interface
*/
class nsTextEditorTextListener : public nsIDOMTextListener
{
@ -140,7 +140,7 @@ protected:
};
/** editor Implementation of the TextListener interface
/** editor Implementation of the MouseListener interface
*/
class nsTextEditorMouseListener : public nsIDOMMouseListener
{
@ -176,7 +176,7 @@ protected:
};
/** editor Implementation of the MouseListener interface
/** editor Implementation of the DragListener interface
*/
class nsTextEditorDragListener : public nsIDOMDragListener
{

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

@ -1,55 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
#ifndef NS_IEDITOR_CONTROLLER_H
#define NS_IEDITOR_CONTROLLER_H
#define NS_IEDITORCONTROLLER_IID_STR "075F6CB1-B26D-11d3-9933-00108301233C"
#define NS_IEDITORCONTROLLER_IID \
{ 0x75f6cb1, 0xb26d, 0x11d3, \
{ 0x99, 0x33, 0x0, 0x10, 0x83, 0x1, 0x23, 0x3c }}
class nsIEditor;
class nsCString;
class nsIEditorController : public nsISupports
{
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IEDITORCONTROLLER_IID)
/** init the controller
* aCommandRefCon = a cookie that is passed to commands
*/
NS_IMETHOD Init(nsISupports *aCommandRefCon) = 0;
/** Set the cookie that is passed to commands
*/
NS_IMETHOD SetCommandRefCon(nsISupports *aCommandRefCon) = 0;
};
#endif //NS_IEDITOR_CONTROLLER_H

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

@ -25,6 +25,8 @@
var gComposerCommandManager = null;
var commonDialogsService = Components.classes["component://netscape/appshell/commonDialogs"].getService();
commonDialogsService = commonDialogsService.QueryInterface(Components.interfaces.nsICommonDialogs);
//-----------------------------------------------------------------------------------
function PrintObject(obj)
@ -102,6 +104,64 @@ var nsOpenCommand =
}
};
//-----------------------------------------------------------------------------------
var nsRevertCommand =
{
isCommandEnabled: function(aCommand, dummy)
{
return (window.editorShell &&
window.editorShell.documentModified &&
editorShell.editorDocument.location != "about:blank");
},
doCommand: function(aCommand)
{
if (window.editorShell &&
window.editorShell.documentModified &&
editorShell.editorDocument.location != "about:blank")
{
// Confirm with the user to abandon current changes
if (commonDialogsService)
{
var result = {value:0};
// Put the page title in the message string
var title = editorShell.editorDocument.title;
if (!title || title.length == 0)
title = editorShell.GetTitle("untitled");
var msg = editorShell.GetString("AbandonChanges").replace(/%title%/,title);
commonDialogsService.UniversalDialog(
window,
null,
editorShell.GetString("RevertCaption"),
msg,
null,
editorShell.GetString("Revert"),
editorShell.GetString("Cancel"),
null,
null,
null,
null,
{value:0},
{value:0},
"chrome://global/skin/question-icon.gif",
{value:"false"},
2,
0,
0,
result
);
// Reload page if first button (Rever) was pressed
if(result.value == 0)
editorShell.LoadUrl(editorShell.editorDocument.location);
}
}
}
};
//-----------------------------------------------------------------------------------
var nsNewEditorCommand =
{
@ -296,8 +356,6 @@ var nsHLineCommand =
hLine = window.editorShell.GetSelectedElement(tagName);
if (hLine) {
dump("HLine was found -- opening dialog...!\n");
// We only open the dialog for an existing HRule
window.openDialog("chrome://editor/content/EdHLineProps.xul", "_blank", "chrome,close,titlebar,modal");
} else {
@ -307,7 +365,6 @@ var nsHLineCommand =
// We change the default attributes to those saved in the user prefs
if (gPrefs) {
dump(" We found the Prefs Service\n");
var percent;
var height;
var shading;
@ -315,7 +372,6 @@ var nsHLineCommand =
try {
var align = gPrefs.GetIntPref("editor.hrule.align");
dump("Align pref: "+align+"\n");
if (align == 0 ) {
hLine.setAttribute("align", "left");
} else if (align == 2) {
@ -327,18 +383,15 @@ var nsHLineCommand =
var width = gPrefs.GetIntPref("editor.hrule.width");
var percent = gPrefs.GetBoolPref("editor.hrule.width_percent");
dump("Width pref: "+width+", percent:"+percent+"\n");
if (percent)
width = width +"%";
hLine.setAttribute("width", width);
var height = gPrefs.GetIntPref("editor.hrule.height");
dump("Size pref: "+height+"\n");
hLine.setAttribute("size", String(height));
var shading = gPrefs.GetBoolPref("editor.hrule.shading");
dump("Shading pref:"+shading+"\n");
if (shading) {
hLine.removeAttribute("noshade");
} else {
@ -491,6 +544,22 @@ var nsPagePropertiesCommand =
}
};
//-----------------------------------------------------------------------------------
var nsAdvancedPropertiesCommand =
{
isCommandEnabled: function(aCommand, dummy)
{
return (window.editorShell && window.editorShell.documentEditable);
},
doCommand: function(aCommand)
{
// Launch AdvancedEdit dialog for the selected element
var element = window.editorShell.GetSelectedElement("");
if (element)
window.openDialog("chrome://editor/content/EdAdvancedEdit.xul", "_blank", "chrome,close,titlebar,modal,resizable=yes", "", element);
}
};
//-----------------------------------------------------------------------------------
var nsColorPropertiesCommand =
@ -575,6 +644,7 @@ function SetupControllerCommands()
gComposerCommandManager.registerCommand("cmd_newEditor", nsNewEditorCommand);
gComposerCommandManager.registerCommand("cmd_open", nsOpenCommand);
gComposerCommandManager.registerCommand("cmd_revert", nsRevertCommand);
gComposerCommandManager.registerCommand("cmd_openRemote", nsOpenRemoteCommand);
gComposerCommandManager.registerCommand("cmd_preview", nsPreviewCommand);
gComposerCommandManager.registerCommand("cmd_quit", nsQuitCommand);
@ -590,6 +660,8 @@ function SetupControllerCommands()
gComposerCommandManager.registerCommand("cmd_listProperties", nsListPropertiesCommand);
gComposerCommandManager.registerCommand("cmd_pageProperties", nsPagePropertiesCommand);
gComposerCommandManager.registerCommand("cmd_colorProperties", nsColorPropertiesCommand);
gComposerCommandManager.registerCommand("cmd_advancedProperties", nsAdvancedPropertiesCommand);
gComposerCommandManager.registerCommand("cmd_image", nsImageCommand);
gComposerCommandManager.registerCommand("cmd_hline", nsHLineCommand);

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

@ -24,42 +24,34 @@
* for the "All Tags Edit Mode" Every HTML tag shows up as an icon.
*/
/* For "userdefined" or "unknown" tags */
/* For "userdefined" or "unknown" tags
(Note that "_" must be escaped)
*/
*[_moz-userdefined] {
*[\_moz-userdefined] {
display: inline:
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-unknown.gif) no-repeat;
background: url(chrome://editor/content/images/tag-userdefined.gif) no-repeat;
background-position: top left;
}
*[_moz-userdefined]:before {
content: url(chrome://editor/skin/images/tag-unknown.gif);
min-height: 35px; margin-left: 2px; margin-top: 2px;
}
foo[_moz-userdefined] {
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-a.gif) no-repeat;
background-position: top left;
}
foo[_moz-userdefined]:before {
content: url(chrome://editor/skin/images/tag-abr.gif.gif);
min-height: 35px; margin-left: 2px; margin-top: 2px;
a:before {
content: none;
/*url(chrome://editor/content/images/tag-a.gif);*/
}
a {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-a.gif) no-repeat;
background: url(chrome://editor/content/images/tag-a.gif) no-repeat;
background-position: top left;
}
abbr {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-abr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-abr.gif) no-repeat;
background-position: top left;
}
@ -67,157 +59,154 @@ abbr {
acronym {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-acr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-acr.gif) no-repeat;
background-position: top left;
}
address {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-adr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-adr.gif) no-repeat;
background-position: top left;
}
applet {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-app.gif) no-repeat;
background: url(chrome://editor/content/images/tag-app.gif) no-repeat;
background-position: top left;
}
area {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-ara.gif) no-repeat;
background: url(chrome://editor/content/images/tag-ara.gif) no-repeat;
background-position: top left;
}
b {
content: url(chrome://editor/skin/images/tag-b.gif);
min-height: 35px; margin-left: 2px; margin-top: 2px;
/*
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-b.gif) no-repeat;
background: url(chrome://editor/content/images/tag-b.gif) no-repeat;
background-position: top left;
*/
}
basefont {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-bsf.gif) no-repeat;
background: url(chrome://editor/content/images/tag-bsf.gif) no-repeat;
background-position: top left;
}
bdo {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-bdo.gif) no-repeat;
background: url(chrome://editor/content/images/tag-bdo.gif) no-repeat;
background-position: top left;
}
big {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-big.gif) no-repeat;
background: url(chrome://editor/content/images/tag-big.gif) no-repeat;
background-position: top left;
}
blockquote {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-blq.gif) no-repeat;
background: url(chrome://editor/content/images/tag-blq.gif) no-repeat;
background-position: top left;
}
body {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-body.gif) no-repeat;
background: url(chrome://editor/content/images/tag-body.gif) no-repeat;
background-position: top left;
}
br {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-br.gif) no-repeat;
background: url(chrome://editor/content/images/tag-br.gif) no-repeat;
background-position: top left;
}
button {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-btn.gif) no-repeat;
background: url(chrome://editor/content/images/tag-btn.gif) no-repeat;
background-position: top left;
}
caption {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-cpt.gif) no-repeat;
background: url(chrome://editor/content/images/tag-cpt.gif) no-repeat;
background-position: top left;
}
center {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-ctr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-ctr.gif) no-repeat;
background-position: top left;
}
cite {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-cit.gif) no-repeat;
background: url(chrome://editor/content/images/tag-cit.gif) no-repeat;
background-position: top left;
}
code {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-cod.gif) no-repeat;
background: url(chrome://editor/content/images/tag-cod.gif) no-repeat;
background-position: top left;
}
col {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-col.gif) no-repeat;
background: url(chrome://editor/content/images/tag-col.gif) no-repeat;
background-position: top left;
}
colgroup {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-clg.gif) no-repeat;
background: url(chrome://editor/content/images/tag-clg.gif) no-repeat;
background-position: top left;
}
dd {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-dd.gif) no-repeat;
background: url(chrome://editor/content/images/tag-dd.gif) no-repeat;
background-position: top left;
}
del {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-del.gif) no-repeat;
background: url(chrome://editor/content/images/tag-del.gif) no-repeat;
background-position: top left;
}
dfn {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-dfn.gif) no-repeat;
background: url(chrome://editor/content/images/tag-dfn.gif) no-repeat;
background-position: top left;
}
dir {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-dir.gif) no-repeat;
background: url(chrome://editor/content/images/tag-dir.gif) no-repeat;
background-position: top left;
}
@ -225,315 +214,315 @@ div {
min-height: 35px; margin-left: 2px; margin-top: 2px;
/* TEMPORARY TO COMPENSATE FOR BUG */
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-div.gif) no-repeat;
background: url(chrome://editor/content/images/tag-div.gif) no-repeat;
background-position: top left;
}
dl {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-dl.gif) no-repeat;
background: url(chrome://editor/content/images/tag-dl.gif) no-repeat;
background-position: top left;
}
dt {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-dt.gif) no-repeat;
background: url(chrome://editor/content/images/tag-dt.gif) no-repeat;
background-position: top left;
}
em {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-em.gif) no-repeat;
background: url(chrome://editor/content/images/tag-em.gif) no-repeat;
background-position: top left;
}
fieldset {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-fld.gif) no-repeat;
background: url(chrome://editor/content/images/tag-fld.gif) no-repeat;
background-position: top left;
}
font {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-fnt.gif) no-repeat;
background: url(chrome://editor/content/images/tag-fnt.gif) no-repeat;
background-position: top left;
}
form {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-for.gif) no-repeat;
background: url(chrome://editor/content/images/tag-for.gif) no-repeat;
background-position: top left;
}
frame {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-frm.gif) no-repeat;
background: url(chrome://editor/content/images/tag-frm.gif) no-repeat;
background-position: top left;
}
frameset {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-fst.gif) no-repeat;
background: url(chrome://editor/content/images/tag-fst.gif) no-repeat;
background-position: top left;
}
h1 {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-h1.gif) no-repeat;
background: url(chrome://editor/content/images/tag-h1.gif) no-repeat;
background-position: top left;
}
h2 {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-h2.gif) no-repeat;
background: url(chrome://editor/content/images/tag-h2.gif) no-repeat;
background-position: top left;
}
h3 {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-h3.gif) no-repeat;
background: url(chrome://editor/content/images/tag-h3.gif) no-repeat;
background-position: top left;
}
h4 {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-h4.gif) no-repeat;
background: url(chrome://editor/content/images/tag-h4.gif) no-repeat;
background-position: top left;
}
h5 {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-h5.gif) no-repeat;
background: url(chrome://editor/content/images/tag-h5.gif) no-repeat;
background-position: top left;
}
h6 {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-h6.gif) no-repeat;
background: url(chrome://editor/content/images/tag-h6.gif) no-repeat;
background-position: top left;
}
hr {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-hr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-hr.gif) no-repeat;
background-position: top left;
}
i {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-i.gif) no-repeat;
background: url(chrome://editor/content/images/tag-i.gif) no-repeat;
background-position: top left;
}
iframe {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-ifr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-ifr.gif) no-repeat;
background-position: top left;
}
img {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-img.gif) no-repeat;
background: url(chrome://editor/content/images/tag-img.gif) no-repeat;
background-position: top left;
}
input {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-inp.gif) no-repeat;
background: url(chrome://editor/content/images/tag-inp.gif) no-repeat;
background-position: top left;
}
ins {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-ins.gif) no-repeat;
background: url(chrome://editor/content/images/tag-ins.gif) no-repeat;
background-position: top left;
}
isindex {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-isx.gif) no-repeat;
background: url(chrome://editor/content/images/tag-isx.gif) no-repeat;
background-position: top left;
}
kbd {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-kbd.gif) no-repeat;
background: url(chrome://editor/content/images/tag-kbd.gif) no-repeat;
background-position: top left;
}
label {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-lbl.gif) no-repeat;
background: url(chrome://editor/content/images/tag-lbl.gif) no-repeat;
background-position: top left;
}
legend {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-lgn.gif) no-repeat;
background: url(chrome://editor/content/images/tag-lgn.gif) no-repeat;
background-position: top left;
}
li {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-li.gif) no-repeat;
background: url(chrome://editor/content/images/tag-li.gif) no-repeat;
background-position: top left;
}
listing {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-lst.gif) no-repeat;
background: url(chrome://editor/content/images/tag-lst.gif) no-repeat;
background-position: top left;
}
map {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-map.gif) no-repeat;
background: url(chrome://editor/content/images/tag-map.gif) no-repeat;
background-position: top left;
}
menu {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-men.gif) no-repeat;
background: url(chrome://editor/content/images/tag-men.gif) no-repeat;
background-position: top left;
}
noframes {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-nfr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-nfr.gif) no-repeat;
background-position: top left;
}
noscript {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-nsc.gif) no-repeat;
background: url(chrome://editor/content/images/tag-nsc.gif) no-repeat;
background-position: top left;
}
object {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-obj.gif) no-repeat;
background: url(chrome://editor/content/images/tag-obj.gif) no-repeat;
background-position: top left;
}
ol {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-ol.gif) no-repeat;
background: url(chrome://editor/content/images/tag-ol.gif) no-repeat;
background-position: top left;
}
optgroup {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-opg.gif) no-repeat;
background: url(chrome://editor/content/images/tag-opg.gif) no-repeat;
background-position: top left;
}
option {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-opt.gif) no-repeat;
background: url(chrome://editor/content/images/tag-opt.gif) no-repeat;
background-position: top left;
}
p {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-p.gif) no-repeat;
background: url(chrome://editor/content/images/tag-p.gif) no-repeat;
background-position: top left;
}
param {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-prm.gif) no-repeat;
background: url(chrome://editor/content/images/tag-prm.gif) no-repeat;
background-position: top left;
}
plaintext {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-pln.gif) no-repeat;
background: url(chrome://editor/content/images/tag-pln.gif) no-repeat;
background-position: top left;
}
pre {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-pre.gif) no-repeat;
background: url(chrome://editor/content/images/tag-pre.gif) no-repeat;
background-position: top left;
}
q {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-q.gif) no-repeat;
background: url(chrome://editor/content/images/tag-q.gif) no-repeat;
background-position: top left;
}
s {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-s.gif) no-repeat;
background: url(chrome://editor/content/images/tag-s.gif) no-repeat;
background-position: top left;
}
samp {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-smp.gif) no-repeat;
background: url(chrome://editor/content/images/tag-smp.gif) no-repeat;
background-position: top left;
}
script {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-scr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-scr.gif) no-repeat;
background-position: top left;
}
select {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-slc.gif) no-repeat;
background: url(chrome://editor/content/images/tag-slc.gif) no-repeat;
background-position: top left;
}
small {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-sml.gif) no-repeat;
background: url(chrome://editor/content/images/tag-sml.gif) no-repeat;
background-position: top left;
}
@ -541,35 +530,35 @@ span {
min-height: 35px; margin-left: 2px; margin-top: 2px;
/* TEMPORARY TO COMPENSATE FOR BUG */
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-spn.gif) no-repeat;
background: url(chrome://editor/content/images/tag-spn.gif) no-repeat;
background-position: top left;
}
strike {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-stk.gif) no-repeat;
background: url(chrome://editor/content/images/tag-stk.gif) no-repeat;
background-position: top left;
}
strong {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-stn.gif) no-repeat;
background: url(chrome://editor/content/images/tag-stn.gif) no-repeat;
background-position: top left;
}
sub {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-sub.gif) no-repeat;
background: url(chrome://editor/content/images/tag-sub.gif) no-repeat;
background-position: top left;
}
sup {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-sup.gif) no-repeat;
background: url(chrome://editor/content/images/tag-sup.gif) no-repeat;
background-position: top left;
}
@ -577,30 +566,24 @@ sup {
some table elements. Trying the "before" strategy
*/
table:before {
content: url(chrome://editor/skin/images/tag-tbl.gif);
/*
table {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-tbl.gif) no-repeat;
background: url(chrome://editor/content/images/tag-tbl.gif) no-repeat;
background-position: top left;
*/
}
tbody:before {
content: url(chrome://editor/skin/images/tag-tbd.gif);
/*
tbody {
min-height: 35px; margin-left: 2px; margin-top: 1px;
padding-left: 16px;
content: url(chrome://editor/skin/images/tag-tbd.gif) no-repeat;
content: url(chrome://editor/content/images/tag-tbd.gif) no-repeat;
background-position: top left;
*/
}
td {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background-image: url(chrome://editor/skin/images/tag-td.gif);
background-image: url(chrome://editor/content/images/tag-td.gif);
background-repeat: no-repeat;
background-position: top left;
}
@ -608,79 +591,69 @@ td {
textarea {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-txt.gif) no-repeat;
background: url(chrome://editor/content/images/tag-txt.gif) no-repeat;
background-position: top left;
}
tfoot:before {
content: url(chrome://editor/skin/images/tag-tft.gif.gif);
/*
tfoot {
min-height: 35px; margin-left: 2px; margin-top: 1px;
padding-left: 16px;
content: url(chrome://editor/skin/images/tag-tft.gif) no-repeat;
content: url(chrome://editor/content/images/tag-tft.gif) no-repeat;
background-position: top left;
*/
}
th {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-th.gif) no-repeat;
background: url(chrome://editor/content/images/tag-th.gif) no-repeat;
background-position: top left;
}
thead:before {
content: url(chrome://editor/skin/images/tag-thd.gif);
/*
thead {
min-height: 35px; margin-left: 2px; margin-top: 1px;
padding-left: 16px;
content: url(chrome://editor/skin/images/tag-thd.gif) no-repeat;
content: url(chrome://editor/content/images/tag-thd.gif) no-repeat;
background-position: top left;
*/
}
tr {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-tr.gif) no-repeat;
background: url(chrome://editor/content/images/tag-tr.gif) no-repeat;
background-position: top left;
}
tt {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-tt.gif) no-repeat;
background: url(chrome://editor/content/images/tag-tt.gif) no-repeat;
background-position: top left;
}
u:before {
min-height: 35px; margin-left: 2px;
content: url(chrome://editor/skin/images/tag-u.gif);
/*
u {
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-u.gif) no-repeat;
background: url(chrome://editor/content/images/tag-u.gif) no-repeat;
background-position: top left;
*/
}
ul {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-ul.gif) no-repeat;
background: url(chrome://editor/content/images/tag-ul.gif) no-repeat;
background-position: top left;
}
var {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-var.gif) no-repeat;
background: url(chrome://editor/content/images/tag-var.gif) no-repeat;
background-position: top left;
}
xmp {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-xmp.gif) no-repeat;
background: url(chrome://editor/content/images/tag-xmp.gif) no-repeat;
background-position: top left;
}
@ -692,14 +665,14 @@ xmp {
html {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-html.gif) no-repeat;
background: url(chrome://editor/content/images/tag-html.gif) no-repeat;
background-position: top left;
}
head {
min-height: 35px; margin-left: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-hed.gif) no-repeat;
background: url(chrome://editor/content/images/tag-hed.gif) no-repeat;
background-position: top left;
}
@ -708,35 +681,35 @@ These are tags that are ONLY allowed as children of HEAD:
title {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-ttl.gif) no-repeat;
background: url(chrome://editor/content/images/tag-ttl.gif) no-repeat;
background-position: top left;
}
base {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-bas.gif) no-repeat;
background: url(chrome://editor/content/images/tag-bas.gif) no-repeat;
background-position: top left;
}
style {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-stl.gif) no-repeat;
background: url(chrome://editor/content/images/tag-stl.gif) no-repeat;
background-position: top left;
}
meta {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-met.gif) no-repeat;
background: url(chrome://editor/content/images/tag-met.gif) no-repeat;
background-position: top left;
}
link {
min-height: 35px; margin-left: 2px; margin-top: 2px;
padding-left: 16px;
background: url(chrome://editor/skin/images/tag-lnk.gif) no-repeat;
background: url(chrome://editor/content/images/tag-lnk.gif) no-repeat;
background-position: top left;
}
*/

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

@ -40,15 +40,15 @@
oncommand="EditorObjectProperties()"/>
<menu id="tableMenu" value="&tableMenu.label;" accesskey="&tablemenu.accesskey;">
<menupopup oncreate="InitTableMenu()">
<menupopup oncreate="EditorInitTableMenu()">
<menu id="tableSelectMenu" value="&tableSelectMenu.label;"
accesskey="&tableselectmenu.accesskey;">
<menupopup>
<menuitem value="&tableTable.label;" accesskey="&tabletable.accesskey;" oncommand="EditorSelectTable()"/>
<menuitem value="&tableRow.label;" accesskey="&tablerow.accesskey;" oncommand="EditorSelectTableRow()"/>
<menuitem value="&tableColumn.label;" accesskey="&tablecolumn.accesskey;" oncommand="EditorSelectTableColumn()"/>
<menuitem value="&tableCell.label;" accesskey="&tablecell.accesskey;" oncommand="EditorSelectTableCell()"/>
<menuitem value="&tableAllCells.label;" accesskey="&tableallcells.accesskey;" oncommand="EditorSelectAllTableCells()"/>
<menuitem id="menu_SelectTable" value="&tableTable.label;" accesskey="&tabletable.accesskey;" oncommand="EditorSelectTable()"/>
<menuitem id="menu_SelectRow" value="&tableRow.label;" accesskey="&tablerow.accesskey;" oncommand="EditorSelectTableRow()"/>
<menuitem id="menu_SelectColumn" value="&tableColumn.label;" accesskey="&tablecolumn.accesskey;" oncommand="EditorSelectTableColumn()"/>
<menuitem id="menu_SelectCell" value="&tableCell.label;" accesskey="&tablecell.accesskey;" oncommand="EditorSelectTableCell()"/>
<menuitem id="menu_SelectAllCells" value="&tableAllCells.label;" accesskey="&tableallcells.accesskey;" oncommand="EditorSelectAllTableCells()"/>
</menupopup>
</menu>
<menu id="tableInsertMenu" value="&tableInsertMenu.label;" accesskey="&tableinsertmenu.accesskey;">
@ -67,10 +67,11 @@
</menu>
<menu id="tableDeleteMenu" value="&tableDeleteMenu.label;" accesskey="&tabledeletemenu.accesskey;">
<menupopup>
<menuitem value="&tableTable.label;" accesskey="&tabletable.accesskey;" oncommand="EditorDeleteTable()"/>
<menuitem value="&tableRow.label;" accesskey="&tablerow.accesskey;" oncommand="EditorDeleteTableRow(1)"/>
<menuitem value="&tableColumn.label;" accesskey="&tablecolumn.accesskey;" oncommand="EditorDeleteTableColumn(1)"/>
<menuitem value="&tableCell.label;" accesskey="&tablecell.accesskey;" oncommand="EditorDeleteTableCell(1)"/>
<menuitem id="menu_DeleteTable" value="&tableTable.label;" accesskey="&tabletable.accesskey;" oncommand="EditorDeleteTable()"/>
<menuitem id="menu_DeleteRow" value="&tableRow.label;" accesskey="&tablerow.accesskey;" oncommand="EditorDeleteTableRow(1)"/>
<menuitem id="menu_DeleteColumn" value="&tableColumn.label;" accesskey="&tablecolumn.accesskey;" oncommand="EditorDeleteTableColumn(1)"/>
<menuitem id="menu_DeleteCell" value="&tableCell.label;" accesskey="&tablecell.accesskey;" oncommand="EditorDeleteTableCell(1)"/>
<menuitem id="menu_DeleteCellContents" value="&tableCellContents.label;" accesskey="&tablecellcontents.accesskey;" oncommand="EditorDeleteTableCellContents()"/>
</menupopup>
</menu>
<menuseparator />

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

@ -27,8 +27,9 @@
* place in EditorOverride.css, instead of here.
*/
/* Use "before" rule so single click can select icon */
a[name]:before {
content: url(chrome://editor/skin/images/anchor-in-doc.gif);
content: url(chrome://editor/content/images/tag-anchor.gif);
}
/* Force border display for empty cells

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

@ -47,3 +47,99 @@ sb-file-contextMenu.js
sb-file-panel.js
sb-file-panel.xul
sb-FileWidgetFileHandler.js
images:tag-anchor.gif
images:tag-abr.gif
images:tag-acr.gif
images:tag-adr.gif
images:tag-ara.gif
images:tag-bas.gif
images:tag-blq.gif
images:tag-bsf.gif
images:tag-btn.gif
images:tag-cit.gif
images:tag-clg.gif
images:tag-cod.gif
images:tag-cpt.gif
images:tag-ctr.gif
images:tag-fld.gif
images:tag-fnt.gif
images:tag-for.gif
images:tag-frm.gif
images:tag-fst.gif
images:tag-ifr.gif
images:tag-inp.gif
images:tag-lbl.gif
images:tag-lgn.gif
images:tag-lnk.gif
images:tag-lst.gif
images:tag-men.gif
images:tag-nfr.gif
images:tag-nsc.gif
images:tag-opg.gif
images:tag-opt.gif
images:tag-prm.gif
images:tag-scr.gif
images:tag-slc.gif
images:tag-sml.gif
images:tag-smp.gif
images:tag-spn.gif
images:tag-stk.gif
images:tag-stl.gif
images:tag-stn.gif
images:tag-tbd.gif
images:tag-tbl.gif
images:tag-tft.gif
images:tag-thd.gif
images:tag-hed.gif
images:tag-isx.gif
images:tag-met.gif
images:tag-ttl.gif
images:tag-pln.gif
images:tag-xmp.gif
images:tag-txt.gif
images:tag-a.gif
images:tag-app.gif
images:tag-b.gif
images:tag-bdo.gif
images:tag-big.gif
images:tag-body.gif
images:tag-br.gif
images:tag-col.gif
images:tag-dd.gif
images:tag-del.gif
images:tag-dfn.gif
images:tag-dir.gif
images:tag-div.gif
images:tag-dl.gif
images:tag-dt.gif
images:tag-em.gif
images:tag-h1.gif
images:tag-h2.gif
images:tag-h3.gif
images:tag-h4.gif
images:tag-h5.gif
images:tag-h6.gif
images:tag-hr.gif
images:tag-html.gif
images:tag-i.gif
images:tag-img.gif
images:tag-ins.gif
images:tag-kbd.gif
images:tag-li.gif
images:tag-map.gif
images:tag-obj.gif
images:tag-ol.gif
images:tag-p.gif
images:tag-pre.gif
images:tag-q.gif
images:tag-s.gif
images:tag-sub.gif
images:tag-sup.gif
images:tag-td.gif
images:tag-th.gif
images:tag-tr.gif
images:tag-tt.gif
images:tag-u.gif
images:tag-ul.gif
images:tag-var.gif
images:tag-userdefined.gif

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

@ -27,6 +27,8 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = images
CHROME_DIR = editor
CHROME_CONTENT_DIR = content

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

@ -96,7 +96,6 @@
<!-- id pulls in "Show Sidebar" item from sidebarOverlay -->
<menupopup id="menu_View_Popup">
<menu id="viewToolbar"/>
<menuitem id="showEditModeBar"/>
<menuseparator/>
<menuitem id="viewSourceMenuitem"/>
<menuitem id="viewParagraphMarks"/>
@ -202,14 +201,15 @@
</deck>
<!-- TODO: Set collapsed="true" so default is to not show the editmode toolbar -->
<toolbar id="EditModeToolbar" chromeclass="extrachrome" persist="collapsed">
<text class="margin-left-right" value="&editMode.label;"/>
<toolbar id="EditModeToolbar" autostretch="never" valign="middle" persist="collapsed">
<text id="EditModeLabel" class="margin-left-right" value="&editMode.label;"/>
<!-- From editorOverlay.xul -->
<text id="NormalModeButton"/>
<text id="TagModeButton"/>
<text id="SourceModeButton"/>
<text id="PreviewModeButton"/>
<button id="NormalModeButton" persist="type"/>
<button id="TagModeButton"/>
<button id="SourceModeButton"/>
<button id="PreviewModeButton"/>
<spring flex="1"/>
<button id="ToggleEditModeType"/>
</toolbar>
<!-- Some of this is from globarOverlay.xul -->

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

@ -129,6 +129,7 @@
>
<command id="cmd_save" value="&saveCmd.label;" oncommand="goDoCommand('cmd_save')"/>
<command id="cmd_saveAs" value="&saveAsCmd.label;" oncommand="goDoCommand('cmd_saveAs')"/>
<command id="cmd_revert" value="&fileRevert.label;" oncommand="goDoCommand('cmd_revert')"/>
<command id="cmd_preview" oncommand="goDoCommand('cmd_preview')"/>
</commandset>
@ -191,6 +192,8 @@
<command id="cmd_paragraphState" state="" oncommand="goDoCommand('cmd_paragraphState')"/>
<command id="cmd_align" state="" oncommand="goDoCommand('cmd_align')"/>
<command id="cmd_advancedProperties" oncommand="goDoCommand('cmd_advancedProperties')"/>
<command id="cmd_increaseFont" oncommand="goDoCommand('cmd_increaseFont')"/>
<command id="cmd_decreaseFont" oncommand="goDoCommand('cmd_decreaseFont')"/>
@ -246,11 +249,11 @@
<menuitem value="(recent file menu)"/>
</menupopup>
</menu>
<menuitem accesskey="&filerevert.accesskey;" value="&fileRevert.label;"/>
<menuitem accesskey="&filerevert.accesskey;" observes="cmd_revert"/>
<menuseparator />
<menuitem accesskey="&fileclose.accesskey;" key="closekb" observes="cmd_close"/>
<menuitem accesskey="&filesave.accesskey;" key="savekb" observes="cmd_save"/>
<menuitem accesskey="&filesaveas.accesskey;" observes="cmd_saveAs"/>
<menuitem accesskey="&fileclose.accesskey;" key="closekb" observes="cmd_close"/>
<menuitem accesskey="&filesave.accesskey;" key="savekb" observes="cmd_save"/>
<menuitem accesskey="&filesaveas.accesskey;" observes="cmd_saveAs"/>
<menuseparator />
<!-- FRAME, LINK should go here, but nav must put them in global files -->
<menuitem id="menu_sendPage" observes="cmd_sendPage"/>
@ -294,10 +297,10 @@
<menuitem value="&compositionToolbarCmd.label;" accesskey="&compositiontb.accesskey;" observes="cmd_viewCompToolbar" />
<menuitem value="&formattingToolbarCmd.label;" accesskey="&formattingtb.accesskey;" observes="cmd_viewFormatToolbar" />
<menuitem value="&editmodeToolbarCmd.label;" accesskey="&editmodetb.accesskey;" observes="cmd_viewEditModeToolbar" />
<menuitem value="&taskbarCmd.label;" accesskey="&taskbarCmd.accesskey;" observes="cmd_viewtaskbar" />
</menupopup>
</menu>
<menuitem id="showEditModeBar" value="&editmodeToolbarCmd.label;" accesskey="&editmodetb.accesskey;" observes="cmd_viewEditModeToolbar" />
<menuitem id="viewSourceMenuitem" value="&viewPageSource.label;" accesskey="&viewpagesource.accesskey;" oncommand="EditorViewSource();"/>
<menuitem id="viewParagraphMarks" value="&viewParagraphMarks.label;" accesskey="&viewparagraphmarks.accesskey;" oncommand="EditorToggleParagraphMarks();" persist="checked"/>
@ -593,7 +596,7 @@
<menu id="tableMenu"/>
<popup id="TextColorPopup" popupanchor="bottomleft" tooltip="aTooltip" tooltiptext="foo text color">
<popup id="TextColorPopup" popupanchor="bottomleft" tooltip="aTooltip" ignorekeys="true">
<text class="ColorPickerLabel" id="TextColorCaption" value="&textColorCaption.label;" flex="1"/>
<!-- TODO: Add "Last color picked" button and text -->
<box valign="middle" autostretch="never">
@ -609,7 +612,7 @@
<button class="dialog" value="&colorPicker.default.label;" oncommand="EditorRemoveTextColor('TextColorPopupButton');"/>
</popup>
<popup id="BackColorPopup" popupanchor="bottomleft" oncreate="InitBackColorPopup()">
<popup id="BackColorPopup" popupanchor="bottomleft" oncreate="InitBackColorPopup()" ignorekeys="true">
<!-- Text is filled in at runtime according to what background element will be set -->
<text class="ColorPickerLabel" id="BackColorCaption" value="Background Color" flex="1"/>
<!-- TODO: Add "Last color picked" button and text -->
@ -789,13 +792,14 @@
tooltip="aTooltip" tooltiptext="&alignmentToolbarCmd.tooltip;"/>
<!-- Edit Mode toolbar -->
<text id="NormalModeButton" class="EditModeButton" selected="1" value="&normalMode.label;" onclick="SetEditMode(1)"/>
<text id="TagModeButton" class="EditModeButton" selected="0" value="&showAllTags.label;" onclick="SetEditMode(2)"/>
<text id="SourceModeButton" class="EditModeButton" selected="0" value="&sourceMode.label;" onclick="SetEditMode(3)"/>
<text id="PreviewModeButton" class="EditModeButton" selected="0" value="&previewMode.label;" onclick="SetEditMode(0)"/>
<!-- InsertPopupButton is used by messengercompose.xul -->
<button class="button-toolbar format popup" id="InsertPopupButton"/>
<button id="NormalModeButton" class="EditModeButton plain" type="text" selected="1" value="&normalMode.label;" onclick="SetEditMode(1)"/>
<button id="TagModeButton" class="EditModeButton plain" type="text" selected="0" value="&showAllTags.label;" onclick="SetEditMode(2)"/>
<button id="SourceModeButton" class="EditModeButton plain" type="text" selected="0" value="&sourceMode.label;" onclick="SetEditMode(3)"/>
<button id="PreviewModeButton" class="EditModeButton plain" type="text" selected="0" value="&previewMode.label;" onclick="SetEditMode(0)"/>
<button id="ToggleEditModeType" class="plain" onclick="ToggleEditModeType()"/>
<!-- InsertPopupButton is used by messengercompose.xul -->
<button class="plain format popup" id="InsertPopupButton"/>
<!-- Paste as quotation is used by mail compose,

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

@ -25,7 +25,7 @@ CHROME_DIR = editor
CHROME_CONTENT_DIR = content\images
CHROME_CONTENT = \
.\anchor-in-doc.gif \
.\tag-anchor.gif \
.\tag-abr.gif \
.\tag-acr.gif \
.\tag-adr.gif \

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

@ -48,6 +48,102 @@ install::
$(MAKE_INSTALL) sb-FileWidgetFileHandler.js $(DIST)\bin\chrome\editor\content
$(MAKE_INSTALL) editorOverlay.xul $(DIST)\bin\chrome\editor\content
$(MAKE_INSTALL) editorOverlay.js $(DIST)\bin\chrome\editor\content
$(MAKE_INSTALL) images\tag-anchor.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-abr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-acr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-adr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-ara.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-bas.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-blq.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-bsf.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-btn.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-cit.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-clg.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-cod.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-cpt.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-ctr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-fld.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-fnt.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-for.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-frm.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-fst.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-ifr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-inp.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-lbl.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-lgn.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-lnk.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-lst.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-men.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-nfr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-nsc.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-opg.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-opt.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-prm.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-scr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-slc.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-sml.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-smp.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-spn.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-stk.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-stl.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-stn.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-tbd.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-tbl.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-tft.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-thd.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-hed.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-isx.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-met.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-ttl.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-pln.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-xmp.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-txt.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-a.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-app.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-b.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-bdo.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-big.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-body.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-br.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-col.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-dd.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-del.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-dfn.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-dir.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-div.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-dl.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-dt.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-em.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-h1.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-h2.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-h3.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-h4.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-h5.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-h6.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-hr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-html.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-i.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-img.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-ins.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-kbd.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-li.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-map.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-obj.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-ol.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-p.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-pre.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-q.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-s.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-sub.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-sup.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-td.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-th.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-tr.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-tt.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-u.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-ul.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-var.gif $(DIST)\bin\chrome\editor\content\images
$(MAKE_INSTALL) images\tag-userdefined.gif $(DIST)\bin\chrome\editor\content\images
clobber::
rm -f $(DIST)\bin\chrome\editor\content\editor.xul
@ -74,3 +170,99 @@ clobber::
rm -f $(DIST)\bin\chrome\editor\content\sb-FileWidgetFileHandler.js
rm -f $(DIST)\bin\chrome\editor\content\editorOverlay.xul
rm -f $(DIST)\bin\chrome\editor\content\editorOverlay.js
rm -f $(DIST)\bin\chrome\editor\content\images\tag-anchor.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-abr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-acr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-adr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-ara.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-bas.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-blq.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-bsf.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-btn.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-cit.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-clg.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-cod.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-cpt.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-ctr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-fld.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-fnt.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-for.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-frm.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-fst.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-ifr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-inp.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-lbl.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-lgn.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-lnk.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-lst.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-men.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-nfr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-nsc.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-opg.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-opt.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-prm.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-scr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-slc.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-sml.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-smp.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-spn.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-stk.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-stl.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-stn.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-tbd.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-tbl.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-tft.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-thd.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-hed.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-isx.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-met.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-ttl.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-pln.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-xmp.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-txt.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-a.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-app.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-b.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-bdo.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-big.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-body.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-br.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-col.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-dd.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-del.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-dfn.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-dir.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-div.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-dl.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-dt.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-em.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-h1.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-h2.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-h3.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-h4.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-h5.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-h6.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-hr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-html.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-i.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-img.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-ins.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-kbd.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-li.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-map.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-obj.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-ol.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-p.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-pre.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-q.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-s.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-sub.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-sup.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-td.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-th.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-tr.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-tt.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-u.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-ul.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-var.gif
rm -f $(DIST)\bin\chrome\editor\content\images\tag-userdefined.gif

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

@ -47,6 +47,10 @@ BeforePreview=in order to preview
#Don't translate %title% and %reason% (this is the reason for asking user to close, such as "before closing")
SaveFilePrompt=Save changes to "%title%" %reason%?
SaveFileFailed=Saving file failed!
RevertCaption=Revert To Last Saved
Revert=Revert
#Don't translate %title%
AbandonChanges=Abandon unsaved changes to %title% and reload page?
DocumentTitle=Document Title
NeedDocTitle=Enter a title for the current page. The title identifies the page in the window title and bookmarks.
AttributesFor=Current attributes for:
@ -100,3 +104,13 @@ ObjectProperties=%obj% Properties...
#Next 2 must contain the "tablejoincells.accesskey" letter in editorOverlay.dtd
JoinSelectedCells=Join Selected Cells
JoinCellToRight=Join with Cell to the Right
#The next 5 are keys on keyboard -- I don't know if they are normally translated!
XulKeyWin=Ctrl+
XulKeyMac=Cmd+
XulKeyUnix=Alt+
Del=Del
Delete=Delete
Clear=Clear
#Mouse actions
Click=Click
Drag=Drag

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

@ -79,6 +79,16 @@
<!ENTITY pasteCmd.label "Paste">
<!ENTITY editpaste.accesskey "p">
<!ENTITY editpaste.keybinding "v">
<!-- For a "Paste" submenu when more than 1
clipboard formats are available -->
<!ENTITY pasteTextCmd.label "Text">
<!ENTITY editpastetext.accesskey "t">
<!ENTITY pasteTextCmd.label "Image">
<!ENTITY editpastetext.accesskey "i">
<!ENTITY pasteTextCmd.label "Link">
<!ENTITY editpastetext.accesskey "l">
<!ENTITY pasteTextCmd.label "HTML">
<!ENTITY editpastetext.accesskey "h">
<!ENTITY pasteAsQuotationCmd.label "Paste As Quotation">
<!ENTITY editpastequotation.accesskey "q">
<!ENTITY editStripQuotesCmd.label "Strip Quotes">
@ -401,6 +411,8 @@ Menu item text for "[Page|Table|Cell] Background color" is filled from
<!-- Shared by Heading and Paragraph menu, and in toolbar menulist -->
<!ENTITY normalCmd.label "Normal">
<!ENTITY normal.accesskey "n">
<!ENTITY advancedPropertiesCmd.label "Advanced Properties...">
<!ENTITY advancedproperties.accesskey "v">
<!ENTITY NormalAbbr.label "Norm.">
<!ENTITY ParagraphAbbr.label "P">
@ -474,6 +486,8 @@ Menu item text for "[Page|Table|Cell] Background color" is filled from
<!ENTITY tablecolumnafter.accesskey "a">
<!ENTITY tableCell.label "Cell">
<!ENTITY tablecell.accesskey "c">
<!ENTITY tableCellContents.label "Cell Contents">
<!ENTITY tablecellcontents.accesskey "n">
<!ENTITY tableAllCells.label "All Cells">
<!ENTITY tableCellBefore.label "Cell Before">
<!ENTITY tableallcells.accesskey "a">
@ -484,8 +498,8 @@ Menu item text for "[Page|Table|Cell] Background color" is filled from
<!ENTITY tableDeleteMenu.label "Delete">
<!ENTITY tabledeletemenu.accesskey "d">
<!ENTITY tableFixup.label "Normalize table layout">
<!ENTITY tablefixup.accesskey "n">
<!ENTITY tableFixup.label "Fix Table Layout">
<!ENTITY tablefixup.accesskey "f">
<!-- text for "Join Cells" is in editor.properties
("JoinSelectedCells" and "JoinCellToRight")
the access key must exist in both of those strings

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

@ -1,266 +0,0 @@
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
/* This contains CSS just for editor toolbars */
#EditorToolbox {
min-width: 1px;
}
#FormatToolbar {
border-bottom: 1px solid #003366;
}
.separator_small {
width: 1em;
}
.margin-left-right {
margin-left: 3px;
margin-right: 3px;
}
/* From button.css: */
/* margin: 4px 7px 1px 1px; */
/* We have too many buttons - must be closer! */
.toolbar, .key-toolbar {
margin-right: 2px;
}
.inset-border {
border: 1px inset white;
}
/* THIS DOESN'T WORK ON <text>! */
.center {
text-align: center;
}
/* end of SHOULD GO IN GLOBAL */
#EditModeToolbar {
padding: 0px;
/* Same as "standard" toolbar background */
border-top: 1px solid #003366;
border-bottom: 1px solid darkgray;
margin-bottom: 0px;
min-width: 1px;
color: white;
background-color: #999999;
overflow: hidden;
}
.EditModeButton {
-moz-border-radius: 0px 0px 8px 8px;
border-top: 1px solid #CCCCCC; /* Must be same as background */
border-bottom: 1px solid #666666;
border-left: 1px solid white;
border-right: 1px solid #666666;
padding: 0px 4px 0px 4px;
margin: 0px;
color: black;
background-color: #CCCCCC;
}
.EditModeButton:hover {
border: 1px solid white;
}
.EditModeButton:active {
padding: 1px 5px -1px 3px;
}
.EditModeButton[selected="1"] {
padding: 0px 4px 0px 4px;
margin: -1px 0px 0px 0px;
font-weight: bold;
}
.EditModeButton[selected="1"]:active {
padding: 1px 5px -1px 3px;
}
/* Image URLs for all Editor toolbar buttons */
#boldButton {
list-style-image:url(chrome://editor/skin/images/bold.gif);
}
#italicButton {
list-style-image:url(chrome://editor/skin/images/italic.gif);
}
#underlineButton {
list-style-image:url(chrome://editor/skin/images/underline.gif);
}
#newButton {
list-style-image:url("chrome://editor/skin/images/newfile.gif");
}
#openButton {
list-style-image:url("chrome://editor/skin/images/openfile.gif");
}
#saveButton {
list-style-image:url("chrome://editor/skin/images/savefile.gif");
}
#saveButton[dirty="true"] {
list-style-image:url(chrome://editor/skin/images/savemod.gif);
}
#publishButton {
list-style-image:url("chrome://editor/skin/images/publish.gif");
}
#previewButton {
list-style-image:url("chrome://editor/skin/images/preview.gif");
}
#printButton {
list-style-image:url("chrome://editor/skin/images/print.gif");
}
#findButton {
list-style-image:url("chrome://editor/skin/images/find.gif");
}
#linkButton {
list-style-image:url("chrome://editor/skin/images/link-white.gif");
}
#imageButton {
list-style-image:url("chrome://editor/skin/images/image-white.gif");
}
#namedAnchorButton {
list-style-image:url("chrome://editor/skin/images/anchor-white.gif");
}
#hlineButton {
list-style-image:url("chrome://editor/skin/images/hline-white.gif");
}
#tableButton {
list-style-image:url("chrome://editor/skin/images/table-white.gif");
}
#linkButton-dark {
list-style-image:url("chrome://editor/skin/images/link.gif");
}
#imageButton-dark {
list-style-image:url("chrome://editor/skin/images/image.gif");
}
#namedAnchorButton-dark {
list-style-image:url("chrome://editor/skin/images/anchor.gif");
}
#hlineButton-dark {
list-style-image:url("chrome://editor/skin/images/hline.gif");
}
#tableButton-dark {
list-style-image:url("chrome://editor/skin/images/table.gif");
}
#spellingButton {
list-style-image:url("chrome://editor/skin/images/spell.gif");
}
#DecreaseFontSizeButton {
list-style-image:url("chrome://editor/skin/images/dec-font-size.gif");
border: 1px solid transparent;
margin: 1px 0px 1px 1px;
padding: 2px 1px 2px 2px;
}
#DecreaseFontSizeButton:hover {
border: 1px solid white;
}
#DecreaseFontSizeButton:active {
border: 1px inset white;
padding: 3px 0px 1px 3px;
}
#IncreaseFontSizeButton {
list-style-image:url("chrome://editor/skin/images/inc-font-size.gif");
border: 1px solid transparent;
margin: 1px 1px 1px 0px;
padding: 2px 2px 2px 0px;
}
#IncreaseFontSizeButton:hover {
border: 1px solid white;
}
#IncreaseFontSizeButton:active {
border: 1px inset white;
padding: 3px 1px 1px 1px;
}
#ulButton {
list-style-image:url("chrome://editor/skin/images/bullets.gif");
}
#olButton {
list-style-image:url("chrome://editor/skin/images/numbers.gif");
}
#outdentButton {
list-style-image:url("chrome://editor/skin/images/outdent.gif");
}
#indentButton {
list-style-image:url("chrome://editor/skin/images/indent.gif");
}
#AlignPopupButton {
list-style-image:url("chrome://editor/skin/images/align.gif");
}
#InsertPopupButton {
list-style-image:url("chrome://editor/skin/images/object-popup.gif");
}
#text-align-left {
list-style-image:url("chrome://editor/skin/images/left.gif");
}
#text-align-center {
list-style-image:url("chrome://editor/skin/images/center.gif");
}
#text-align-right {
list-style-image:url("chrome://editor/skin/images/right.gif");
}
#text-align-justify {
list-style-image:url("chrome://editor/skin/images/justify.gif");
}
.ColorPickerLabel {
border: 1px inset white;
margin: 0px;
padding: 2px;
text-align: center;
}
/* TODO: How to make inset color skinable? */
.color-button {
border: 1px inset #CCCCCC;
padding: 0px;
width: 14px;
height: 12px;
margin: 2px;
}
.color-button:hover {
border: 1px solid white;
}
#TextColorPopupButton {
margin: 2px 9px 9px 2px;
/* TEMP: Set color here. TODO: Set color from page */
background-color: #AA0000;
}
#BackColorPopupButton {
margin: 9px 2px 2px 9px;
/* TEMP: Set color here. TODO: Set color from page */
background-color: #FFFF00;
}

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

@ -1,166 +0,0 @@
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
editor.css
EditorToolbars.css
#skin directory
images:left.gif
images:center.gif
images:right.gif
images:justify.gif
images:anchor.gif
images:anchor-in-doc.gif
images:div.gif
images:span.gif
images:bullets.gif
images:outdent.gif
images:hline.gif
images:hover-teal.gif
images:image.gif
images:img-align-bottom.gif
images:img-align-left.gif
images:img-align-middle.gif
images:img-align-right.gif
images:img-align-top.gif
images:indent.gif
images:italic.gif
images:link.gif
images:numbers.gif
images:spell.gif
images:table.gif
images:underline.gif
images:bold.gif
images:color.gif
images:align.gif
images:object-popup.gif
images:newfile.gif
images:openfile.gif
images:savefile.gif
images:savemod.gif
images:publish.gif
images:print.gif
images:preview.gif
images:find.gif
images:link-white.gif
images:anchor-white.gif
images:image-white.gif
images:table-white.gif
images:hline-white.gif
images:dec-font-size.gif
images:inc-font-size.gif
images:tag-abr.gif
images:tag-acr.gif
images:tag-adr.gif
images:tag-ara.gif
images:tag-bas.gif
images:tag-blq.gif
images:tag-bsf.gif
images:tag-btn.gif
images:tag-cit.gif
images:tag-clg.gif
images:tag-cod.gif
images:tag-cpt.gif
images:tag-ctr.gif
images:tag-fld.gif
images:tag-fnt.gif
images:tag-for.gif
images:tag-frm.gif
images:tag-fst.gif
images:tag-ifr.gif
images:tag-inp.gif
images:tag-lbl.gif
images:tag-lgn.gif
images:tag-lnk.gif
images:tag-lst.gif
images:tag-men.gif
images:tag-nfr.gif
images:tag-nsc.gif
images:tag-opg.gif
images:tag-opt.gif
images:tag-prm.gif
images:tag-scr.gif
images:tag-slc.gif
images:tag-sml.gif
images:tag-smp.gif
images:tag-spn.gif
images:tag-stk.gif
images:tag-stl.gif
images:tag-stn.gif
images:tag-tbd.gif
images:tag-tbl.gif
images:tag-tft.gif
images:tag-thd.gif
images:tag-hed.gif
images:tag-isx.gif
images:tag-met.gif
images:tag-ttl.gif
images:tag-pln.gif
images:tag-xmp.gif
images:tag-txt.gif
images:tag-unknown.gif
images:tag-a.gif
images:tag-app.gif
images:tag-b.gif
images:tag-bdo.gif
images:tag-big.gif
images:tag-body.gif
images:tag-br.gif
images:tag-col.gif
images:tag-dd.gif
images:tag-del.gif
images:tag-dfn.gif
images:tag-dir.gif
images:tag-div.gif
images:tag-dl.gif
images:tag-dt.gif
images:tag-em.gif
images:tag-h1.gif
images:tag-h2.gif
images:tag-h3.gif
images:tag-h4.gif
images:tag-h5.gif
images:tag-h6.gif
images:tag-hr.gif
images:tag-html.gif
images:tag-i.gif
images:tag-img.gif
images:tag-ins.gif
images:tag-kbd.gif
images:tag-li.gif
images:tag-map.gif
images:tag-obj.gif
images:tag-ol.gif
images:tag-p.gif
images:tag-pre.gif
images:tag-q.gif
images:tag-s.gif
images:tag-sub.gif
images:tag-sup.gif
images:tag-td.gif
images:tag-th.gif
images:tag-tr.gif
images:tag-tt.gif
images:tag-u.gif
images:tag-ul.gif
images:tag-var.gif

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

@ -1,176 +0,0 @@
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
DEPTH = ../../../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
CHROME_DIR = editor
CHROME_SKIN_DIR = skin/images
CHROME_SKIN = \
bold.gif \
bullets.gif \
left.gif \
center.gif \
right.gif \
justify.gif \
outdent.gif \
find.gif \
hline.gif \
hover-teal.gif \
image.gif \
indent.gif \
italic.gif \
link.gif \
numbers.gif \
spell.gif \
table.gif \
anchor.gif \
anchor-in-doc.gif \
div.gif \
span.gif \
underline.gif \
color.gif \
align.gif \
object-popup.gif \
newfile.gif \
openfile.gif \
savefile.gif \
savemod.gif \
publish.gif \
preview.gif \
print.gif \
find.gif \
img-align-bottom.gif \
img-align-left.gif \
img-align-middle.gif \
img-align-right.gif \
img-align-top.gif \
link-white.gif \
anchor-white.gif \
image-white.gif \
table-white.gif \
hline-white.gif \
dec-font-size.gif \
inc-font-size.gif \
tag-abr.gif \
tag-acr.gif \
tag-adr.gif \
tag-ara.gif \
tag-bas.gif \
tag-blq.gif \
tag-bsf.gif \
tag-btn.gif \
tag-cit.gif \
tag-clg.gif \
tag-cod.gif \
tag-cpt.gif \
tag-ctr.gif \
tag-fld.gif \
tag-fnt.gif \
tag-for.gif \
tag-frm.gif \
tag-fst.gif \
tag-ifr.gif \
tag-inp.gif \
tag-lbl.gif \
tag-lgn.gif \
tag-lnk.gif \
tag-lst.gif \
tag-men.gif \
tag-nfr.gif \
tag-nsc.gif \
tag-opg.gif \
tag-opt.gif \
tag-prm.gif \
tag-scr.gif \
tag-slc.gif \
tag-sml.gif \
tag-smp.gif \
tag-spn.gif \
tag-stk.gif \
tag-stl.gif \
tag-stn.gif \
tag-tbd.gif \
tag-tbl.gif \
tag-tft.gif \
tag-thd.gif \
tag-hed.gif \
tag-isx.gif \
tag-met.gif \
tag-ttl.gif \
tag-pln.gif \
tag-xmp.gif \
tag-txt.gif \
tag-unknown.gif \
tag-a.gif \
tag-app.gif \
tag-b.gif \
tag-bdo.gif \
tag-big.gif \
tag-body.gif \
tag-br.gif \
tag-col.gif \
tag-dd.gif \
tag-del.gif \
tag-dfn.gif \
tag-dir.gif \
tag-div.gif \
tag-dl.gif \
tag-dt.gif \
tag-em.gif \
tag-h1.gif \
tag-h2.gif \
tag-h3.gif \
tag-h4.gif \
tag-h5.gif \
tag-h6.gif \
tag-hr.gif \
tag-html.gif \
tag-i.gif \
tag-img.gif \
tag-ins.gif \
tag-kbd.gif \
tag-li.gif \
tag-map.gif \
tag-obj.gif \
tag-ol.gif \
tag-p.gif \
tag-pre.gif \
tag-q.gif \
tag-s.gif \
tag-sub.gif \
tag-sup.gif \
tag-td.gif \
tag-th.gif \
tag-tr.gif \
tag-tt.gif \
tag-u.gif \
tag-ul.gif \
tag-var.gif \
$(NULL)
include $(topsrcdir)/config/rules.mk

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

@ -1,170 +0,0 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
DEPTH=..\..\..\..\..
CHROME_DIR = editor
CHROME_SKIN_DIR = skin\images
CHROME_SKIN = \
.\align.gif \
.\bold.gif \
.\bullets.gif\
.\left.gif \
.\center.gif \
.\right.gif \
.\justify.gif\
.\find.gif \
.\hline.gif \
.\hover-teal.gif \
.\image.gif \
.\indent.gif \
.\italic.gif \
.\link.gif \
.\numbers.gif \
.\object-popup.gif \
.\outdent.gif \
.\spell.gif \
.\table.gif \
.\anchor.gif \
.\anchor-in-doc.gif \
.\div.gif \
.\span.gif \
.\underline.gif \
.\color.gif \
.\newfile.gif \
.\openfile.gif \
.\savefile.gif \
.\savemod.gif \
.\publish.gif \
.\preview.gif \
.\print.gif \
.\find.gif \
.\img-align-bottom.gif \
.\img-align-left.gif \
.\img-align-middle.gif \
.\img-align-right.gif \
.\img-align-top.gif \
.\link-white.gif \
.\anchor-white.gif \
.\image-white.gif \
.\table-white.gif \
.\hline-white.gif \
.\dec-font-size.gif \
.\inc-font-size.gif \
.\tag-abr.gif \
.\tag-acr.gif \
.\tag-adr.gif \
.\tag-ara.gif \
.\tag-bas.gif \
.\tag-blq.gif \
.\tag-bsf.gif \
.\tag-btn.gif \
.\tag-cit.gif \
.\tag-clg.gif \
.\tag-cod.gif \
.\tag-cpt.gif \
.\tag-ctr.gif \
.\tag-fld.gif \
.\tag-fnt.gif \
.\tag-for.gif \
.\tag-frm.gif \
.\tag-fst.gif \
.\tag-ifr.gif \
.\tag-inp.gif \
.\tag-lbl.gif \
.\tag-lgn.gif \
.\tag-lnk.gif \
.\tag-lst.gif \
.\tag-men.gif \
.\tag-nfr.gif \
.\tag-nsc.gif \
.\tag-opg.gif \
.\tag-opt.gif \
.\tag-prm.gif \
.\tag-scr.gif \
.\tag-slc.gif \
.\tag-sml.gif \
.\tag-smp.gif \
.\tag-spn.gif \
.\tag-stk.gif \
.\tag-stl.gif \
.\tag-stn.gif \
.\tag-tbd.gif \
.\tag-tbl.gif \
.\tag-tft.gif \
.\tag-thd.gif \
.\tag-hed.gif \
.\tag-isx.gif \
.\tag-met.gif \
.\tag-ttl.gif \
.\tag-pln.gif \
.\tag-xmp.gif \
.\tag-txt.gif \
.\tag-a.gif \
.\tag-app.gif \
.\tag-b.gif \
.\tag-bdo.gif \
.\tag-big.gif \
.\tag-body.gif \
.\tag-br.gif \
.\tag-col.gif \
.\tag-dd.gif \
.\tag-del.gif \
.\tag-dfn.gif \
.\tag-dir.gif \
.\tag-div.gif \
.\tag-dl.gif \
.\tag-dt.gif \
.\tag-em.gif \
.\tag-h1.gif \
.\tag-h2.gif \
.\tag-h3.gif \
.\tag-h4.gif \
.\tag-h5.gif \
.\tag-h6.gif \
.\tag-hr.gif \
.\tag-html.gif \
.\tag-i.gif \
.\tag-img.gif \
.\tag-ins.gif \
.\tag-kbd.gif \
.\tag-li.gif \
.\tag-map.gif \
.\tag-obj.gif \
.\tag-ol.gif \
.\tag-p.gif \
.\tag-pre.gif \
.\tag-q.gif \
.\tag-s.gif \
.\tag-sub.gif \
.\tag-sup.gif \
.\tag-td.gif \
.\tag-th.gif \
.\tag-tr.gif \
.\tag-tt.gif \
.\tag-u.gif \
.\tag-ul.gif \
.\tag-var.gif \
.\tag-unknown.gif \
$(NULL)
include <$(DEPTH)\config\rules.mak>

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

@ -46,7 +46,6 @@ install:: $(DLL)
$(MAKE_INSTALL) images\spell.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\table.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\anchor.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\anchor-in-doc.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\div.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\span.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\underline.gif $(DIST)\bin\chrome\editor\skin\images
@ -71,6 +70,11 @@ install:: $(DLL)
$(MAKE_INSTALL) images\hline-white.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\dec-font-size.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\inc-font-size.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\editmode-normal.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\editmode-tags.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\editmode-html.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\editmode-preview.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\editmode-toggle.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\tag-abr.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\tag-acr.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\tag-adr.gif $(DIST)\bin\chrome\editor\skin\images
@ -165,7 +169,7 @@ install:: $(DLL)
$(MAKE_INSTALL) images\tag-u.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\tag-ul.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\tag-var.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\tag-unknown.gif $(DIST)\bin\chrome\editor\skin\images
$(MAKE_INSTALL) images\tag-userdefined.gif $(DIST)\bin\chrome\editor\skin\images
clobber::
rm -f $(DIST)\bin\chrome\editor\skin\editor.css
@ -189,7 +193,6 @@ clobber::
rm -f $(DIST)\bin\chrome\editor\skin\images\spell.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\table.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\anchor.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\anchor-in-doc.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\div.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\span.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\underline.gif
@ -215,6 +218,11 @@ clobber::
rm -f $(DIST)\bin\chrome\editor\skin\images\hline-white.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\dec-font-size.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\inc-font-size.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\editmode-normal.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\editmode-tags.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\editmode-html.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\editmode-preview.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\editmode-toggle.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-abr.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-acr.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-adr.gif
@ -309,4 +317,4 @@ clobber::
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-u.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-ul.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-var.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-unknown.gif
rm -f $(DIST)\bin\chrome\editor\skin\images\tag-userdefined.gif

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

@ -143,11 +143,16 @@ function SetTextfieldFocus(textfield)
{
if (textfield)
{
dump("Selection Start="+textfield.selectionStart+"\n");
dump("Selection End="+textfield.selectionEnd+"\n");
textfield.focus();
//TODO: This is not working -- did Simon checkin? Do we need to change XBL?
textfield.selectionStart = 0;
//textfield.selectionStart = 0;
textfield.setAttribute("selectionStart",0);
//TODO: Simon should change this to support "-1" for "select to end"
textfield.selectionEnd = textfield.value.length;
//textfield.selectionEnd = textfield.value.length;
textfield.setAttrubute("selectionEnd",textfield.value.length);
}
}

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

@ -61,3 +61,5 @@ EdImageMapHotSpot.js
EdImageMapHotSpot.xul
EdImageMapShapes.js
EdImageMapPage.html
EditConflict.xul
EditConflict.js

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

@ -69,6 +69,8 @@ CHROME_CONTENT = \
EdImageMapHotSpot.xul \
EdImageMapShapes.js \
EdImageMapPage.html \
EditConflict.xul \
EditConflict.js \
$(NULL)
include $(topsrcdir)/config/rules.mk

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

@ -63,6 +63,8 @@ install::
$(MAKE_INSTALL) EdImageMapHotSpot.xul $(DIST)\bin\chrome\editor\content
$(MAKE_INSTALL) EdImageMapShapes.js $(DIST)\bin\chrome\editor\content
$(MAKE_INSTALL) EdImageMapPage.html $(DIST)\bin\chrome\editor\content
$(MAKE_INSTALL) EditConflict.xul $(DIST)\bin\chrome\editor\content
$(MAKE_INSTALL) EditConflict.js $(DIST)\bin\chrome\editor\content
clobber::
@ -105,3 +107,5 @@ clobber::
rm -f $(DIST)\bin\chrome\editor\content\EdImageMapHotSpot.xul
rm -f $(DIST)\bin\chrome\editor\content\EdImageMapShapes.js
rm -f $(DIST)\bin\chrome\editor\content\EdImageMapPage.html
rm -f $(DIST)\bin\chrome\editor\content\EditConflict.xul
rm -f $(DIST)\bin\chrome\editor\content\EditConflict.js

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

@ -40,3 +40,4 @@ EdAdvancedEdit.dtd
EditorImageMap.dtd
EditorImageMapHotSpot.dtd
EditorInsertChars.dtd
EditConflict.dtd

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

@ -47,6 +47,7 @@ CHROME_L10N = \
EdAdvancedEdit.dtd \
EditorImageMap.dtd \
EditorImageMapHotSpot.dtd \
EditConflict.dtd \
$(NULL)
include $(topsrcdir)/config/rules.mk

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

@ -41,6 +41,7 @@ install::
$(MAKE_INSTALL) EdAdvancedEdit.dtd $(DIST)\bin\chrome\editor\locale
$(MAKE_INSTALL) EditorImageMap.dtd $(DIST)\bin\chrome\editor\locale
$(MAKE_INSTALL) EditorImageMapHotSpot.dtd $(DIST)\bin\chrome\editor\locale
$(MAKE_INSTALL) EditConflict.dtd $(DIST)\bin\chrome\editor\locale
clobber::
rm -f $(DIST)\bin\chrome\editor\locale\EditorHLineProperties.dtd
@ -60,5 +61,6 @@ clobber::
rm -f $(DIST)\bin\chrome\editor\locale\EdAdvancedEdit.dtd
rm -f $(DIST)\bin\chrome\editor\locale\EditorImageMap.dtd
rm -f $(DIST)\bin\chrome\editor\locale\EditorImageMapHotSpot.dtd
rm -f $(DIST)\bin\chrome\editor\locale\EditConflict.dtd