Fixed bugs 17098, 17808, and a lot of UI cleanup. Rewrote Image Properties dialog so More/Fewer works and layout is better. Moved image URLs from DTD to CSS files. r=brade

This commit is contained in:
cmanske%netscape.com 1999-11-03 00:48:26 +00:00
Родитель 0a1343a9fe
Коммит 25771bd9e4
22 изменённых файлов: 1287 добавлений и 1384 удалений

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

@ -1738,7 +1738,7 @@ nsEditorShell::SetDocumentTitle(const PRUnichar *title)
if (NS_SUCCEEDED(res) && textNode)
{
// Go through the editor API so action is undoable
res = editor->InsertNode(textNode, headNode, 0);
res = editor->InsertNode(textNode, titleNode, 0);
// This is the non-undoable code:
//res = titleNode->AppendChild(textNode,getter_AddRefs(resultNode));
}

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

@ -143,12 +143,14 @@ nsInterfaceState::ForceUpdate()
// update underline
rv = UpdateTextState("u", "Editor:Underline", "underline", mUnderlineState);
// update the paragraph format popup
rv = UpdateParagraphState("Editor:Paragraph:Format", "format", mParagraphFormat);
// udpate the font face
rv = UpdateFontFace("Editor:Font:Face", "font", mFontString);
// update the paragraph format popup
rv = UpdateParagraphState("Editor:Paragraph:Format", "format", mParagraphFormat);
// TODO: FINISH FONT FACE AND ADD FONT SIZE ("Editor:Font:Size", "size", mFontSize)
// update the list buttons
rv = UpdateListState("Editor:Paragraph:ListType");
@ -183,18 +185,33 @@ nsInterfaceState::UpdateParagraphState(const char* observerName, const char* att
mEditor->GetParagraphTags(&tagList);
PRInt32 numTags = tagList.Count();
nsAutoString thisTag;
//Note: If numTags == 0, we probably have a text node not in a container
// (directly under <body>). Consider it normal
if (numTags > 0)
{
nsAutoString thisTag;
#ifdef DEBUG_cmanske
if (thisTag.Length() > 0)
printf (thisTag.ToNewCString());
else
printf("[emtpy string]");
printf(",");
if (mParagraphFormat.Length() > 0)
printf (mParagraphFormat.ToNewCString());
else
printf("[mParagraph is empty]");
printf(" = ParagraphTag,mParagraphFormat in nsInterfaceState::UpdateParagraphState()\n");
#endif
// This will never show the "mixed state"
// TODO: Scan list of tags and if any are different, set to "mixed"
tagList.StringAt(0, thisTag);
if (thisTag != mParagraphFormat)
{
nsresult rv = SetNodeAttribute(observerName, attributeName, thisTag);
if (NS_FAILED(rv)) return rv;
mParagraphFormat = thisTag;
}
}
if (thisTag != mParagraphFormat)
{
nsresult rv = SetNodeAttribute(observerName, attributeName, thisTag);
if (NS_FAILED(rv)) return rv;
mParagraphFormat = thisTag;
}
return NS_OK;
}
@ -252,16 +269,47 @@ nsInterfaceState::UpdateFontFace(const char* observerName, const char* attribute
nsCOMPtr<nsIAtom> styleAtom = getter_AddRefs(NS_NewAtom("font"));
nsAutoString faceStr("face");
nsAutoString thisFace;
// Use to test for "Default Fixed Width"
nsCOMPtr<nsIAtom> fixedStyleAtom = getter_AddRefs(NS_NewAtom("tt"));
PRBool testBoolean;
if (SelectionIsCollapsed())
{
rv = mEditor->GetTypingStateValue(styleAtom, ioFontString);
if (ioFontString.Length() == 0)
{
// We don't have a font set, so check for "tt" (= "Default Fixed Width")
PRBool stateHasProp = PR_FALSE;
rv = mEditor->GetTypingState(fixedStyleAtom, testBoolean);
testBoolean = stateHasProp;
if (stateHasProp)
thisFace = faceStr;
}
else
testBoolean = PR_TRUE;
}
else
{
rv = mEditor->GetInlineProperty(styleAtom, &faceStr, nsnull, firstOfSelectionHasProp, anyOfSelectionHasProp, allOfSelectionHasProp);
if( !anyOfSelectionHasProp )
{
// No font face set -- check for "tt"
rv = mEditor->GetInlineProperty(fixedStyleAtom, nsnull, nsnull, firstOfSelectionHasProp, anyOfSelectionHasProp, allOfSelectionHasProp);
testBoolean = anyOfSelectionHasProp;
thisFace = faceStr;
}
}
// TODO: HANDLE "MIXED" STATE
if (thisFace != mFontString)
{
nsresult rv = SetNodeAttribute(observerName, faceStr.GetBuffer(), thisFace);
if (NS_FAILED(rv)) return rv;
mFontString = thisFace;
}
// XXX this needs finishing.
return rv;
}

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

@ -1738,7 +1738,7 @@ nsEditorShell::SetDocumentTitle(const PRUnichar *title)
if (NS_SUCCEEDED(res) && textNode)
{
// Go through the editor API so action is undoable
res = editor->InsertNode(textNode, headNode, 0);
res = editor->InsertNode(textNode, titleNode, 0);
// This is the non-undoable code:
//res = titleNode->AppendChild(textNode,getter_AddRefs(resultNode));
}

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

@ -143,12 +143,14 @@ nsInterfaceState::ForceUpdate()
// update underline
rv = UpdateTextState("u", "Editor:Underline", "underline", mUnderlineState);
// update the paragraph format popup
rv = UpdateParagraphState("Editor:Paragraph:Format", "format", mParagraphFormat);
// udpate the font face
rv = UpdateFontFace("Editor:Font:Face", "font", mFontString);
// update the paragraph format popup
rv = UpdateParagraphState("Editor:Paragraph:Format", "format", mParagraphFormat);
// TODO: FINISH FONT FACE AND ADD FONT SIZE ("Editor:Font:Size", "size", mFontSize)
// update the list buttons
rv = UpdateListState("Editor:Paragraph:ListType");
@ -183,18 +185,33 @@ nsInterfaceState::UpdateParagraphState(const char* observerName, const char* att
mEditor->GetParagraphTags(&tagList);
PRInt32 numTags = tagList.Count();
nsAutoString thisTag;
//Note: If numTags == 0, we probably have a text node not in a container
// (directly under <body>). Consider it normal
if (numTags > 0)
{
nsAutoString thisTag;
#ifdef DEBUG_cmanske
if (thisTag.Length() > 0)
printf (thisTag.ToNewCString());
else
printf("[emtpy string]");
printf(",");
if (mParagraphFormat.Length() > 0)
printf (mParagraphFormat.ToNewCString());
else
printf("[mParagraph is empty]");
printf(" = ParagraphTag,mParagraphFormat in nsInterfaceState::UpdateParagraphState()\n");
#endif
// This will never show the "mixed state"
// TODO: Scan list of tags and if any are different, set to "mixed"
tagList.StringAt(0, thisTag);
if (thisTag != mParagraphFormat)
{
nsresult rv = SetNodeAttribute(observerName, attributeName, thisTag);
if (NS_FAILED(rv)) return rv;
mParagraphFormat = thisTag;
}
}
if (thisTag != mParagraphFormat)
{
nsresult rv = SetNodeAttribute(observerName, attributeName, thisTag);
if (NS_FAILED(rv)) return rv;
mParagraphFormat = thisTag;
}
return NS_OK;
}
@ -252,16 +269,47 @@ nsInterfaceState::UpdateFontFace(const char* observerName, const char* attribute
nsCOMPtr<nsIAtom> styleAtom = getter_AddRefs(NS_NewAtom("font"));
nsAutoString faceStr("face");
nsAutoString thisFace;
// Use to test for "Default Fixed Width"
nsCOMPtr<nsIAtom> fixedStyleAtom = getter_AddRefs(NS_NewAtom("tt"));
PRBool testBoolean;
if (SelectionIsCollapsed())
{
rv = mEditor->GetTypingStateValue(styleAtom, ioFontString);
if (ioFontString.Length() == 0)
{
// We don't have a font set, so check for "tt" (= "Default Fixed Width")
PRBool stateHasProp = PR_FALSE;
rv = mEditor->GetTypingState(fixedStyleAtom, testBoolean);
testBoolean = stateHasProp;
if (stateHasProp)
thisFace = faceStr;
}
else
testBoolean = PR_TRUE;
}
else
{
rv = mEditor->GetInlineProperty(styleAtom, &faceStr, nsnull, firstOfSelectionHasProp, anyOfSelectionHasProp, allOfSelectionHasProp);
if( !anyOfSelectionHasProp )
{
// No font face set -- check for "tt"
rv = mEditor->GetInlineProperty(fixedStyleAtom, nsnull, nsnull, firstOfSelectionHasProp, anyOfSelectionHasProp, allOfSelectionHasProp);
testBoolean = anyOfSelectionHasProp;
thisFace = faceStr;
}
}
// TODO: HANDLE "MIXED" STATE
if (thisFace != mFontString)
{
nsresult rv = SetNodeAttribute(observerName, faceStr.GetBuffer(), thisFace);
if (NS_FAILED(rv)) return rv;
mFontString = thisFace;
}
// XXX this needs finishing.
return rv;
}

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

@ -27,22 +27,10 @@ var toolbar;
var documentModified;
var EditorDisplayMode = 0; // Normal Editor mode
var gTagToFormat = {
"P" : "Normal", // these should really be entities. Not sure how to do that from JS
"H1" : "Heading 1",
"H2" : "Heading 2",
"H3" : "Heading 3",
"H4" : "Heading 4",
"H5" : "Heading 5",
"H6" : "Heading 6",
"BLOCKQUOTE" : "Blockquote",
"ADDRESS" : "Address",
"PRE" : "Preformatted",
"LI" : "List Item",
"DT" : "Definition Term",
"DD" : "Definition Description"
};
// These must be kept in synch with the XUL <options> lists
var gParagraphTagNames = new Array("P","H1","H2","H3","H4","H5","H6","BLOCKQUOTE","ADDRESS","PRE","DT","DD");
var gFontFaceNames = new Array("","tt","Arial, Helvetica","Times","Courier");
var gFontSizeNames = new Array("-2","-1","0","+1","+2","+3","+4");
var gStyleTags = {
"bold" : "b",
@ -83,18 +71,7 @@ function EditorStartup(editorType, editorElement)
window.addEventListener("load", EditorDocumentLoaded, true, false);
dump("Trying to make an Editor Shell through the component manager...\n");
/* var editorShell = Components.classes["component://netscape/editor/editorshell"].createInstance();
if (editorShell)
editorShell = editorShell.QueryInterface(Components.interfaces.nsIEditorShell);
if (!editorShell)
{
dump("Failed to create editor shell\n");
// 7/12/99 THIS DOESN'T WORK YET!
window.close();
return;
}
*/
// store the editor shell in the window, so that child windows can get to it.
var editorShell = window.editorShell = editorElement.editorShell;
@ -110,6 +87,7 @@ function EditorStartup(editorType, editorElement)
editorShell.LoadUrl(url);
dump("EditorAppCore windows have been set.\n");
SetupToolbarElements();
// Set focus to the edit window
@ -138,7 +116,7 @@ function TestMenuCreation()
dump("Failed to find new menu item\n");
}
// NOT USED?
function GenerateFormatToolbar()
{
var toolbarButtons = [
@ -208,7 +186,6 @@ function GenerateFormatToolbar()
}
function SetupToolbarElements()
{
// Create an object to store controls for easy access
@ -372,41 +349,96 @@ function EditorSetTextProperty(property, attribute, value)
contentWindow.focus();
}
function EditorSelectParagraphFormat()
{
var select = document.getElementById("ParagraphSelect");
if (select)
{
if (select.selectedIndex == -1)
return;
editorShell.SetParagraphFormat(gParagraphTagNames[select.selectedIndex]);
}
}
function onParagraphFormatChange()
{
var select = document.getElementById("ParagraphSelect");
if (select)
{
// If we don't match anything, set to "normal"
var newIndex = 0;
var format = select.getAttribute("format");
if ( format == "mixed")
{
// No single type selected
newIndex = -1;
}
else
{
for( var i = 0; i < gParagraphTagNames.length; i++)
{
if( gParagraphTagNames[i] == format )
{
newIndex = i;
break;
}
}
}
if (select.selectedIndex != newIndex)
select.selectedIndex = newIndex;
}
}
function EditorSetParagraphFormat(paraFormat)
{
editorShell.SetParagraphFormat(paraFormat);
contentWindow.focus();
}
function EditorListProperties()
function EditorSelectFontFace()
{
window.openDialog("chrome://editor/content/EdListProps.xul","_blank", "chrome,close,titlebar,modal");
contentWindow.focus();
var select = document.getElementById("FontFaceSelect");
dump("EditorSelectFontFace: "+gFontFaceNames[select.selectedIndex]+"\n");
if (select)
{
if (select.selectedIndex == -1)
return;
EditorSetFontFace(gFontFaceNames[select.selectedIndex]);
}
}
function EditorSetFontSize(size)
function onFontFaceChange()
{
if( size == "0" || size == "normal" ||
size == "+0" )
{
editorShell.RemoveTextProperty("font", size);
dump("Removing font size\n");
} else {
dump("Setting font size\n");
editorShell.SetTextProperty("font", "size", size);
var select = document.getElementById("FontFaceSelect");
if (select)
{
// Default selects "Variable Width"
var newIndex = 0;
var face = select.getAttribute("face");
if ( face == "mixed")
{
// No single type selected
newIndex = -1;
}
else
{
for( var i = 0; i < gFontFaceNames.length; i++)
{
if( gFontFaceNames[i] == face )
{
newIndex = i;
break;
}
}
}
if (select.selectedIndex != newIndex)
select.selectedIndex = newIndex;
}
contentWindow.focus();
}
function EditorSetFontFace(fontFace)
{
/* Testing returning out params
var first = new Object();
var all = new Object();
var any = new Object();
editorShell.GetTextProperty("tt", "", "", first, any, all);
dump("GetTextProperty: first: "+first.value+", any: "+any.value+", all: "+all.value+"\n");
*/
if( fontFace == "tt") {
// The old "teletype" attribute
editorShell.SetTextProperty("tt", "", "");
@ -425,6 +457,62 @@ function EditorSetFontFace(fontFace)
contentWindow.focus();
}
function EditorSelectFontSize()
{
var select = document.getElementById("FontSizeSelect");
dump("EditorSelectFontSize: "+gFontSizeNames[select.selectedIndex]+"\n");
if (select)
{
if (select.selectedIndex == -1)
return;
EditorSetFontSize(gFontSizeNames[select.selectedIndex]);
}
}
function onFontSizeChange()
{
var select = document.getElementById("FontFaceSelect");
if (select)
{
// If we don't match anything, set to "0 (normal)"
var newIndex = 2;
var size = select.getAttribute("size");
if ( size == "mixed")
{
// No single type selected
newIndex = -1;
}
else
{
for( var i = 0; i < gFontSizeNames.length; i++)
{
if( gFontSizeNames[i] == size )
{
newIndex = i;
break;
}
}
}
if (select.selectedIndex != newIndex)
select.selectedIndex = newIndex;
}
}
function EditorSetFontSize(size)
{
if( size == "0" || size == "normal" ||
size == "+0" )
{
editorShell.RemoveTextProperty("font", size);
dump("Removing font size\n");
} else {
dump("Setting font size\n");
editorShell.SetTextProperty("font", "size", size);
}
contentWindow.focus();
}
function EditorSetFontColor(color)
{
editorShell.SetTextProperty("font", "color", color);
@ -481,6 +569,12 @@ function EditorRemoveLinks()
contentWindow.focus();
}
function EditorListProperties()
{
window.openDialog("chrome://editor/content/EdListProps.xul","_blank", "chrome,close,titlebar,modal");
contentWindow.focus();
}
function EditorApplyStyleSheet(styleSheetURL)
{
// Second param is true for "override" type of sheet
@ -1203,26 +1297,15 @@ function onDirtyChange()
var theButton = document.getElementById("saveButton");
if (theButton)
{
var isDirty = theButton.getAttribute("dirty");
var isDirty = theButton.getAttribute("dirty");
if (isDirty == "true") {
theButton.setAttribute("src", "chrome://editor/skin/images/ED_SaveMod.gif");
theButton.setAttribute("src", "chrome://editor/skin/images/savemod.gif");
} else {
theButton.setAttribute("src", "chrome://editor/skin/images/ED_SaveFile.gif");
theButton.setAttribute("src", "chrome://editor/skin/images/savefile.gif");
}
}
}
function onParagraphFormatChange()
{
var theButton = document.getElementById("ParagraphPopupButton");
if (theButton)
{
var theFormat = theButton.getAttribute("format");
theButton.setAttribute("value", gTagToFormat[theFormat]);
dump("Setting value\n");
}
}
function onListFormatChange(listType)
{
var theButton = document.getElementById(listType + "Button");

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

@ -38,7 +38,7 @@
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="EditorOnLoad()"
onunload="EditorShutdown()"
titlemodifier="&textEditorWindow.titlemodifier;"
titlemodifier="&editorWindow.titlemodifier;"
titlemenuseparator="&editorWindow.titlemodifiermenuseparator;"
align="vertical"
width="640" height="480">
@ -157,19 +157,13 @@
</toolbar>
<toolbar id="FormatToolbar" persist="collapsed">
<!-- buttons are filled out from editorOverlay -->
<menu>
<titledbutton id="ParagraphPopupButton"/>
<menupopup id="ParagraphPopup"/>
</menu>
<menu>
<titledbutton id="FontFacePopupButton"/>
<menupopup id="FontFacePopup"/>
</menu>
<menu>
<titledbutton id="FontSizePopupButton"/>
<menupopup id="FontSizePopup"/>
</menu>
<html:div class="toolbar-middle">
<!-- items are filled out from editorOverlay -->
<html:select id="ParagraphSelect"/>
<html:select id="FontFaceSelect"/>
<html:select id="FontSizeSelect"/>
</html:div>
<menu>
<titledbutton id="TextColorPopupButton"/>
<menupopup id="TextColorPopup"/>

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

@ -127,11 +127,10 @@
<broadcaster id="Editor:Paragraph:Format" format=""/>
<broadcaster id="Editor:Paragraph:ListType" format=""/>
<broadcaster id="Editor:Font:Face" font=""/>
<broadcaster id="Editor:Font:Face" face=""/>
<broadcaster id="Editor:Font:Size" size=""/>
<!-- Broadcaster nodes -->
<!-- Command Broadcaster nodes -->
<broadcaster id="Editor:Open" value="&openCmd.label;" oncommand="EditorOpen()"/>
<broadcaster id="Editor:Save" value="&saveCmd.label;" disabled="true" oncommand="EditorSave()"/>
<broadcaster id="Editor:SaveAs" value="&saveAsCmd.label;" disabled="false" oncommand="EditorSaveAs()"/>
@ -227,86 +226,86 @@
<menuitem id="formatToolbarMenuitem" accesskey="&viewformattingtb.accesskey;" observes="Editor:ToggleFormattingToolbar"/>
<menuitem id="viewSourceMenuitem" value="&viewPageSource.label;" accesskey="&viewpagesource.accesskey;" oncommand="EditorViewSource();" />
<menu id="charsetMenu" value="&dcharMenu.label;" accesskey="&viewcharsetmenu.accesskey;">
<menupopup>
<menuitem value="&dcharIso1Cmd.label;" accesskey="&charsetLatin1.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-1');"/>
<menuitem value="&dcharIso15Cmd.label;" accesskey="&charsetLatin9.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-15');"/>
<menuitem value="&dcharIso2Cmd.label;" accesskey="&charsetLatin2.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-2');"/>
<menuitem value="&dcharIso3Cmd.label;" accesskey="&charsetLatin3.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-3');"/>
<menuitem value="&dcharIso4Cmd.label;" accesskey="&charsetLatin4.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-4');"/>
<menuitem value="&dcharIsoGreekCmd.label;" accesskey="&charsetGreek.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-7');"/>
<menuitem value="&dcharIso9Cmd.label;" accesskey="&charsetLatin5.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-9');"/>
<menuitem value="&dcharIso10Cmd.label;" accesskey="&charsetLatin6.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-10');"/>
<menuitem value="&dcharIso13Cmd.label;" accesskey="&charsetLatin7.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-13');"/>
<menuitem value="&dcharIso14Cmd.label;" accesskey="&charsetLatin8.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-14');"/>
</menupopup>
</menu>
<menu id="charsetMenu1" value="&dcharMenu1.label;" accesskey="&viewcharsetmenu1.accesskey;">
<menupopup>
<menuitem value="&dcharJapanCmd.label;" accesskey="&charsetJIS.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-2022-JP');"/>
<menuitem value="&dcharJapanShiftjsCmd.label;" accesskey="&charsetshiftJIS.accesskey;" oncommand="EditorSetDocumentCharacterSet('Shift_JIS');"/>
<menuitem value="&dcharJapanEucCmd.label;" accesskey="&charsetJapaneseEUC.accesskey;" oncommand="EditorSetDocumentCharacterSet('EUC-JP');"/>
<menuseparator />
<menuitem value="&dcharTradChiBigCmd.label;" accesskey="&charsetChineseBig5.accesskey;" oncommand="EditorSetDocumentCharacterSet('Big5');"/>
<menuitem value="&dcharTriChiEucCmd.label;" accesskey="&charsetChineseEUC.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-euc-tw');"/>
<menuitem value="&dcharSimpChiGbCmd.label;" accesskey="&charsetChineseSimplified.accesskey;" oncommand="EditorSetDocumentCharacterSet('GB2312');"/>
<menuseparator />
<menuitem value="&dcharKoreanCmd.label;" accesskey="&charsetKorean.accesskey;" oncommand="EditorSetDocumentCharacterSet('EUC-KR');"/>
<menuseparator />
<menuitem value="&dcharUtf7Cmd.label;" accesskey="&charsetUTF7.accesskey;" oncommand="EditorSetDocumentCharacterSet('UTF-7');"/>
<menuitem value="&dcharUtf8Cmd.label;" accesskey="&charsetUTF8.accesskey;" oncommand="EditorSetDocumentCharacterSet('UTF-8');"/>
</menupopup>
</menu>
<menu id="charsetMenu2" value="&dcharMenu2.label;" accesskey="&viewcharsetmenu2.accesskey;">
<menupopup>
<menuitem value="&dcharRusCmd.label;" accesskey="&charsetRussian.accesskey;" oncommand="EditorSetDocumentCharacterSet('KOI8-R');"/>
<menuitem value="&dcharIsoCyrCmd.label;" accesskey="&charsetISOCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-5');"/>
<menuitem value="&dcharWinCyrCmd.label;" accesskey="&charsetWinCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1251');"/>
<menuitem value="&dcharEcmaCyrCmd.label;" accesskey="&charsetECMACyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-IR-111');"/>
<menuitem value="&dcharDosCyrCmd.label;" accesskey="&charsetDOSCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('IBM866');"/>
<menuitem value="&dcharMacCyrCmd.label;" accesskey="&charsetMacCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-cyrillic');"/>
<menuitem value="&dcharUkrCmd.label;" accesskey="&charsetUkrainian.accesskey;" oncommand="EditorSetDocumentCharacterSet('KOI8-U');"/>
<menuitem value="&dcharMacUkrCmd.label;" accesskey="&charsetMacUkrainian.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-ukrainian');"/>
</menupopup>
</menu>
<menu id="charsetMenu3" value="&dcharMenu3.label;" accesskey="&viewcharsetmenu3.accesskey;">
<menupopup>
<menuitem value="&dcharWinVietCmd.label;" accesskey="&charsetWinVietnamese.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1258');"/>
<menuitem value="&dcharVietTcnCmd.label;" accesskey="&charsetVietnameseTCN.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-viet-tcvn5712');"/>
<menuitem value="&dcharVietViCmd.label;" accesskey="&charsetVietnameseVIS.accesskey;" oncommand="EditorSetDocumentCharacterSet('VISCII');"/>
<menuitem value="&dcharVieVpCmd.label;" accesskey="&charsetVietnameseVPS.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-viet-vps');"/>
<menuseparator />
<menuitem value="&dcharThaiCmd.label;" accesskey="&charsetThai.accesskey;" oncommand="EditorSetDocumentCharacterSet('TIS-620');"/>
<menuseparator />
<menuitem value="&dcharArmCmd.label;" accesskey="&charsetArmenian.accesskey;" oncommand="EditorSetDocumentCharacterSet('ARMSCII-8');"/>
<menuseparator />
<menuitem value="&dcharIso6Cmd.label;" accesskey="&charsetArabic.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-6');"/>
<menuitem value="&dcharCp1256Cmd.label;" accesskey="&charsetWinArabic.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1256');"/>
<menuseparator />
<menuitem value="&dcharIso8Cmd.label;" accesskey="&charsetHebrew.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-8');"/>
<menuitem value="&dcharCp1255Cmd.label;" accesskey="&charsetWinHebrew.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1255');"/>
</menupopup>
</menu>
<menu id="charsetMenu4" value="&dcharMenu4.label;" accesskey="&viewcharsetmenu4.accesskey;">
<menupopup>
<menuitem value="&dcharMacRomCmd.label;" accesskey="&charsetMacRoman.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-roman');"/>
<menuitem value="&dcharMacCenEuroCmd.label;" accesskey="&charsetMacCentralEurope.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-ce');"/>
<menuitem value="&dcharMacTurCmd.label;" accesskey="&charsetMacTurkish.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-turkish');"/>
<menuitem value="&dcharMacCroaCmd.label;" accesskey="&charsetMacCroatian.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-croatian');"/>
<menuitem value="&dcharMacRomanianCmd.label;" accesskey="&charsetMacRomanian.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-romanian');"/>
<menuitem value="&dcharMacIceCmd.label;" accesskey="&charsetMacIcelandic.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-icelandic');"/>
<menuitem value="&dcharMacGreekCmd.label;" accesskey="&charsetMacGreek.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-greek');"/>
</menupopup>
</menu>
<menu id="charsetMenu5" value="&dcharMenu5.label;" accesskey="&viewcharsetmenu4.accesskey;">
<menupopup>
<menuitem value="&dcharWinLat1Cmd.label;" accesskey="&charsetWinLatin1.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1252');"/>
<menuitem value="&dcharWinLat2Cmd.label;" accesskey="&charsetWinLatin2.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1250');"/>
<menuitem value="&dcharWinLat5Cmd.label;" accesskey="&charsetWinLatin5.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1254');"/>
<menuitem value="&dcharWinBalRimCmd.label;" accesskey="&charsetWinBaltic.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1257');"/>
<menuitem value="&dcharWinGreekCmd.label;" accesskey="&charsetWinGreek.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1253');"/>
</menupopup>
</menu>
<menu id="charsetMenu" value="&dcharMenu.label;" accesskey="&viewcharsetmenu.accesskey;">
<menupopup>
<menuitem value="&dcharIso1Cmd.label;" accesskey="&charsetLatin1.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-1');"/>
<menuitem value="&dcharIso15Cmd.label;" accesskey="&charsetLatin9.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-15');"/>
<menuitem value="&dcharIso2Cmd.label;" accesskey="&charsetLatin2.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-2');"/>
<menuitem value="&dcharIso3Cmd.label;" accesskey="&charsetLatin3.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-3');"/>
<menuitem value="&dcharIso4Cmd.label;" accesskey="&charsetLatin4.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-4');"/>
<menuitem value="&dcharIsoGreekCmd.label;" accesskey="&charsetGreek.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-7');"/>
<menuitem value="&dcharIso9Cmd.label;" accesskey="&charsetLatin5.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-9');"/>
<menuitem value="&dcharIso10Cmd.label;" accesskey="&charsetLatin6.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-10');"/>
<menuitem value="&dcharIso13Cmd.label;" accesskey="&charsetLatin7.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-13');"/>
<menuitem value="&dcharIso14Cmd.label;" accesskey="&charsetLatin8.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-14');"/>
</menupopup>
</menu>
<menu id="charsetMenu1" value="&dcharMenu1.label;" accesskey="&viewcharsetmenu1.accesskey;">
<menupopup>
<menuitem value="&dcharJapanCmd.label;" accesskey="&charsetJIS.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-2022-JP');"/>
<menuitem value="&dcharJapanShiftjsCmd.label;" accesskey="&charsetshiftJIS.accesskey;" oncommand="EditorSetDocumentCharacterSet('Shift_JIS');"/>
<menuitem value="&dcharJapanEucCmd.label;" accesskey="&charsetJapaneseEUC.accesskey;" oncommand="EditorSetDocumentCharacterSet('EUC-JP');"/>
<menuseparator />
<menuitem value="&dcharTradChiBigCmd.label;" accesskey="&charsetChineseBig5.accesskey;" oncommand="EditorSetDocumentCharacterSet('Big5');"/>
<menuitem value="&dcharTriChiEucCmd.label;" accesskey="&charsetChineseEUC.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-euc-tw');"/>
<menuitem value="&dcharSimpChiGbCmd.label;" accesskey="&charsetChineseSimplified.accesskey;" oncommand="EditorSetDocumentCharacterSet('GB2312');"/>
<menuseparator />
<menuitem value="&dcharKoreanCmd.label;" accesskey="&charsetKorean.accesskey;" oncommand="EditorSetDocumentCharacterSet('EUC-KR');"/>
<menuseparator />
<menuitem value="&dcharUtf7Cmd.label;" accesskey="&charsetUTF7.accesskey;" oncommand="EditorSetDocumentCharacterSet('UTF-7');"/>
<menuitem value="&dcharUtf8Cmd.label;" accesskey="&charsetUTF8.accesskey;" oncommand="EditorSetDocumentCharacterSet('UTF-8');"/>
</menupopup>
</menu>
<menu id="charsetMenu2" value="&dcharMenu2.label;" accesskey="&viewcharsetmenu2.accesskey;">
<menupopup>
<menuitem value="&dcharRusCmd.label;" accesskey="&charsetRussian.accesskey;" oncommand="EditorSetDocumentCharacterSet('KOI8-R');"/>
<menuitem value="&dcharIsoCyrCmd.label;" accesskey="&charsetISOCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-5');"/>
<menuitem value="&dcharWinCyrCmd.label;" accesskey="&charsetWinCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1251');"/>
<menuitem value="&dcharEcmaCyrCmd.label;" accesskey="&charsetECMACyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-IR-111');"/>
<menuitem value="&dcharDosCyrCmd.label;" accesskey="&charsetDOSCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('IBM866');"/>
<menuitem value="&dcharMacCyrCmd.label;" accesskey="&charsetMacCyrillic.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-cyrillic');"/>
<menuitem value="&dcharUkrCmd.label;" accesskey="&charsetUkrainian.accesskey;" oncommand="EditorSetDocumentCharacterSet('KOI8-U');"/>
<menuitem value="&dcharMacUkrCmd.label;" accesskey="&charsetMacUkrainian.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-ukrainian');"/>
</menupopup>
</menu>
<menu id="charsetMenu3" value="&dcharMenu3.label;" accesskey="&viewcharsetmenu3.accesskey;">
<menupopup>
<menuitem value="&dcharWinVietCmd.label;" accesskey="&charsetWinVietnamese.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1258');"/>
<menuitem value="&dcharVietTcnCmd.label;" accesskey="&charsetVietnameseTCN.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-viet-tcvn5712');"/>
<menuitem value="&dcharVietViCmd.label;" accesskey="&charsetVietnameseVIS.accesskey;" oncommand="EditorSetDocumentCharacterSet('VISCII');"/>
<menuitem value="&dcharVieVpCmd.label;" accesskey="&charsetVietnameseVPS.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-viet-vps');"/>
<menuseparator />
<menuitem value="&dcharThaiCmd.label;" accesskey="&charsetThai.accesskey;" oncommand="EditorSetDocumentCharacterSet('TIS-620');"/>
<menuseparator />
<menuitem value="&dcharArmCmd.label;" accesskey="&charsetArmenian.accesskey;" oncommand="EditorSetDocumentCharacterSet('ARMSCII-8');"/>
<menuseparator />
<menuitem value="&dcharIso6Cmd.label;" accesskey="&charsetArabic.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-6');"/>
<menuitem value="&dcharCp1256Cmd.label;" accesskey="&charsetWinArabic.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1256');"/>
<menuseparator />
<menuitem value="&dcharIso8Cmd.label;" accesskey="&charsetHebrew.accesskey;" oncommand="EditorSetDocumentCharacterSet('ISO-8859-8');"/>
<menuitem value="&dcharCp1255Cmd.label;" accesskey="&charsetWinHebrew.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1255');"/>
</menupopup>
</menu>
<menu id="charsetMenu4" value="&dcharMenu4.label;" accesskey="&viewcharsetmenu4.accesskey;">
<menupopup>
<menuitem value="&dcharMacRomCmd.label;" accesskey="&charsetMacRoman.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-roman');"/>
<menuitem value="&dcharMacCenEuroCmd.label;" accesskey="&charsetMacCentralEurope.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-ce');"/>
<menuitem value="&dcharMacTurCmd.label;" accesskey="&charsetMacTurkish.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-turkish');"/>
<menuitem value="&dcharMacCroaCmd.label;" accesskey="&charsetMacCroatian.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-croatian');"/>
<menuitem value="&dcharMacRomanianCmd.label;" accesskey="&charsetMacRomanian.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-romanian');"/>
<menuitem value="&dcharMacIceCmd.label;" accesskey="&charsetMacIcelandic.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-icelandic');"/>
<menuitem value="&dcharMacGreekCmd.label;" accesskey="&charsetMacGreek.accesskey;" oncommand="EditorSetDocumentCharacterSet('x-mac-greek');"/>
</menupopup>
</menu>
<menu id="charsetMenu5" value="&dcharMenu5.label;" accesskey="&viewcharsetmenu4.accesskey;">
<menupopup>
<menuitem value="&dcharWinLat1Cmd.label;" accesskey="&charsetWinLatin1.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1252');"/>
<menuitem value="&dcharWinLat2Cmd.label;" accesskey="&charsetWinLatin2.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1250');"/>
<menuitem value="&dcharWinLat5Cmd.label;" accesskey="&charsetWinLatin5.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1254');"/>
<menuitem value="&dcharWinBalRimCmd.label;" accesskey="&charsetWinBaltic.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1257');"/>
<menuitem value="&dcharWinGreekCmd.label;" accesskey="&charsetWinGreek.accesskey;" oncommand="EditorSetDocumentCharacterSet('windows-1253');"/>
</menupopup>
</menu>
<!-- Insert menu -->
<menu id="insertMenu" value="&insertMenu.label;" accesskey="&insertmenu.accesskey;">
@ -346,22 +345,22 @@
<!-- Font size submenu -->
<menu id="fontSizeMenu" value="&fontsizeMenu.label;" accesskey="&formatsizemenu.accesskey;">
<menupopup>
<menuitem value="&sizeMinusTwoCmd.label;" accesskey="&sizeminus2.accesskey;" oncommand="EditorSetFontSize('-2')"/>
<menuitem value="&sizeMinusOneCmd.label;" accesskey="&sizeminus1.accesskey;" oncommand="EditorSetFontSize('-1')"/>
<menuitem value="&sizeNormalCmd.label;" accesskey="&sizenormal.accesskey;" oncommand="EditorSetFontSize('0')"/>
<menuitem value="&sizePlusOneCmd.label;" accesskey="&size1.accesskey;" oncommand="EditorSetFontSize('+1')"/>
<menuitem value="&sizePlusTwoCmd.label;" accesskey="&size2.accesskey;" oncommand="EditorSetFontSize('+2')"/>
<menuitem value="&sizePlusThreeCmd.label;" accesskey="&size3.accesskey;" oncommand="EditorSetFontSize('+3')"/>
<menuitem value="&sizePlusFourCmd.label;" accesskey="&size4.accesskey;" oncommand="EditorSetFontSize('+4')"/>
<menuitem value="&size-2Cmd.label;" accesskey="&size-2.accesskey;" oncommand="EditorSetFontSize('-2')"/>
<menuitem value="&size-1Cmd.label;" accesskey="&size-1.accesskey;" oncommand="EditorSetFontSize('-1')"/>
<menuitem value="&size0Cmd.label;" accesskey="&size0.accesskey;" oncommand="EditorSetFontSize('0')"/>
<menuitem value="&size1Cmd.label;" accesskey="&size1.accesskey;" oncommand="EditorSetFontSize('+1')"/>
<menuitem value="&size2Cmd.label;" accesskey="&size2.accesskey;" oncommand="EditorSetFontSize('+2')"/>
<menuitem value="&size3Cmd.label;" accesskey="&size3.accesskey;" oncommand="EditorSetFontSize('+3')"/>
<menuitem value="&size4Cmd.label;" accesskey="&size4.accesskey;" oncommand="EditorSetFontSize('+4')"/>
</menupopup>
</menu>
<!-- Font style submenu -->
<menu id="fontStyleMenu" value="&fontStyleMenu.label;" accesskey="&formatstylemenu.accesskey;">
<menupopup>
<menuitem value="&styleBoldCmd.label;" accesskey="&stylebold.accesskey;" key="boldkb" observes="Editor:Bold"/>
<menuitem value="&styleItalicCmd.label;" accesskey="&styleitalic.accesskey;" key="italickb" observes="Editor:Italic"/>
<menuitem value="&styleUnderlineCmd.label;" accesskey="&styleunderline.accesskey;" key="underlinekb" observes="Editor:Underline"/>
<menuitem value="&styleBoldCmd.label;" accesskey="&stylebold.accesskey;" key="boldkb" observes="Editor:Bold"/>
<menuitem value="&styleItalicCmd.label;" accesskey="&styleitalic.accesskey;" key="italickb" observes="Editor:Italic"/>
<menuitem value="&styleUnderlineCmd.label;" accesskey="&styleunderline.accesskey;" key="underlinekb" observes="Editor:Underline"/>
<menuitem value="&styleStrikeThruCmd.label;" accesskey="&stylestrikethru.accesskey;" oncommand="EditorApplyStyle('strike')"/>
<menuitem value="&styleSuperscriptCmd.label;" accesskey="&stylesuperscript.accesskey;" oncommand="EditorApplyStyle('sup')"/>
<menuitem value="&styleSubscriptCmd.label;" accesskey="&stylesubscript.accesskey;" oncommand="EditorApplyStyle('sub')"/>
@ -406,12 +405,12 @@
<menu id="headingMenu" value="&headingMenu.label;" accesskey="&formatheadingmenu.accesskey;">
<menupopup>
<menuitem value="&headingNormalCmd.label;" accesskey="&headingnone.accesskey;" oncommand="EditorSetParagraphFormat('normal')"/>
<menuitem value="&headingOneCmd.label;" accesskey="&heading1.accesskey;" oncommand="EditorSetParagraphFormat('h1')"/>
<menuitem value="&headingTwoCmd.label;" accesskey="&heading2.accesskey;" oncommand="EditorSetParagraphFormat('h2')"/>
<menuitem value="&headingThreeCmd.label;" accesskey="&heading3.accesskey;" oncommand="EditorSetParagraphFormat('h3')"/>
<menuitem value="&headingFourCmd.label;" accesskey="&heading4.accesskey;" oncommand="EditorSetParagraphFormat('h4')"/>
<menuitem value="&headingFiveCmd.label;" accesskey="&heading5.accesskey;" oncommand="EditorSetParagraphFormat('h5')"/>
<menuitem value="&headingSixCmd.label;" accesskey="&heading6.accesskey;" oncommand="EditorSetParagraphFormat('h6')"/>
<menuitem value="&heading1Cmd.label;" accesskey="&heading1.accesskey;" oncommand="EditorSetParagraphFormat('h1')"/>
<menuitem value="&heading2Cmd.label;" accesskey="&heading2.accesskey;" oncommand="EditorSetParagraphFormat('h2')"/>
<menuitem value="&heading3Cmd.label;" accesskey="&heading3.accesskey;" oncommand="EditorSetParagraphFormat('h3')"/>
<menuitem value="&heading4Cmd.label;" accesskey="&heading4.accesskey;" oncommand="EditorSetParagraphFormat('h4')"/>
<menuitem value="&heading5Cmd.label;" accesskey="&heading5.accesskey;" oncommand="EditorSetParagraphFormat('h5')"/>
<menuitem value="&heading6Cmd.label;" accesskey="&heading6.accesskey;" oncommand="EditorSetParagraphFormat('h6')"/>
</menupopup>
</menu>
@ -422,7 +421,6 @@
<menuitem value="&paragraphBlockquoteCmd.label;" accesskey="&paragraphblockquote.accesskey;" oncommand="EditorSetParagraphFormat('blockquote')"/>
<menuitem value="&paragraphAddressCmd.label;" accesskey="&paragraphaddress.accesskey;" oncommand="EditorSetParagraphFormat('address')"/>
<menuitem value="&paragraphPreformatCmd.label;" accesskey="&paragraphpreformat.accesskey;" oncommand="EditorSetParagraphFormat('pre')"/>
<menuitem value="&paragraphListCmd.label;" accesskey="&paragraphlist.accesskey;" oncommand="EditorSetParagraphFormat('li')"/>
<menuitem value="&paragraphDfnTermCmd.label;" accesskey="&paragraphterm.accesskey;" oncommand="EditorSetParagraphFormat('dt')"/>
<menuitem value="&paragraphDfnDescCmd.label;" accesskey="&paragraphdesc.accesskey;" oncommand="EditorSetParagraphFormat('dd')"/>
</menupopup>
@ -471,40 +469,7 @@
</menu>
<!-- Toolbar popups -->
<menupopup id="ParagraphPopup">
<menuitem value="&headingNormalCmd.label;" oncommand="EditorSetParagraphFormat('normal')"/>
<menuitem value="&headingOneCmd.label;" oncommand="EditorSetParagraphFormat('h1')"/>
<menuitem value="&headingTwoCmd.label;" oncommand="EditorSetParagraphFormat('h2')"/>
<menuitem value="&headingThreeCmd.label;" oncommand="EditorSetParagraphFormat('h3')"/>
<menuitem value="&headingFourCmd.label;" oncommand="EditorSetParagraphFormat('h4')"/>
<menuitem value="&headingFiveCmd.label;" oncommand="EditorSetParagraphFormat('h5')"/>
<menuitem value="&headingSixCmd.label;" oncommand="EditorSetParagraphFormat('h6')"/>
<menuitem value="&paragraphAddressCmd.label;" oncommand="EditorSetParagraphFormat('address')"/>
<menuitem value="&paragraphPreformatCmd.label;" oncommand="EditorSetParagraphFormat('pre')"/>
<menuitem value="&paragraphListCmd.label;" oncommand="EditorSetParagraphFormat('li')"/>
<menuitem value="&paragraphDfnTermCmd.label;" oncommand="EditorSetParagraphFormat('dt')"/>
<menuitem value="&paragraphDfnDescCmd.label;" oncommand="EditorSetParagraphFormat('dd')"/>
</menupopup>
<menupopup id="FontFacePopup">
<menuitem value="&defaultVariableWidthCmd.label;" oncommand="EditorSetFontFace('')"/>
<menuitem value="&defaultFixedWidthCmd.label;" oncommand="EditorSetFontFace('tt')"/>
<menuseparator/>
<menuitem value="&arialHelveticaFont.label;" oncommand="EditorSetFontFace('Arial, Helvetica, sans-serif')"/>
<menuitem value="&timesFont.label;" oncommand="EditorSetFontFace('Times New Roman, Times, serif')"/>
<menuitem value="&courierFont.label;" oncommand="EditorSetFontFace('Courier New, Courier, mono')"/>
</menupopup>
<menupopup id="FontSizePopup">
<menuitem value="&sizeMinusTwoCmd.label;" oncommand="EditorSetFontSize('-2')"/>
<menuitem value="&sizeMinusOneCmd.label;" oncommand="EditorSetFontSize('-1')"/>
<menuitem value="&sizeNormalCmd.label;" oncommand="EditorSetFontSize('0')"/>
<menuitem value="&sizePlusOneCmd.label;" oncommand="EditorSetFontSize('+1')"/>
<menuitem value="&sizePlusTwoCmd.label;" oncommand="EditorSetFontSize('+2')"/>
<menuitem value="&sizePlusThreeCmd.label;" oncommand="EditorSetFontSize('+3')"/>
<menuitem value="&sizePlusFourCmd.label;" oncommand="EditorSetFontSize('+4')"/>
</menupopup>
<!-- TODO: REPLACE WITH COLOR WIDGET -->
<menupopup id="BackColorPopup">
<menuitem value="&colorBlackCmd.label;" oncommand="EditorSetBackgroundColor('black')"/>
<menuitem value="&colorGrayCmd.label;" oncommand="EditorSetBackgroundColor('gray')"/>
@ -533,42 +498,75 @@
<menupopup id="AlignmentPopup">
<menuitem oncommand="EditorAlign('left')">
<titledbutton src="chrome://editor/skin/images/left.gif" align="left" value="&alignLeft.label;"/>
<titledbutton id="text-align-left" align="left" value="&alignLeft.label;"/>
</menuitem>
<menuitem oncommand="EditorAlign('center')">
<titledbutton src="chrome://editor/skin/images/center.gif" align="left" value="&alignCenter.label;"/>
<titledbutton id="text-align-center" align="left" value="&alignCenter.label;"/>
</menuitem>
<menuitem oncommand="EditorAlign('right')">
<titledbutton src="chrome://editor/skin/images/right.gif" align="left" value="&alignRight.label;"/>
<titledbutton id="text-align-right" align="left" value="&alignRight.label;"/>
</menuitem>
<menuitem oncommand="EditorAlign('justify')">
<titledbutton src="chrome://editor/skin/images/justify.gif" align="left" value="&alignJustify.label;"/>
<titledbutton id="text-align-justify" align="left" value="&alignJustify.label;"/>
</menuitem>
</menupopup>
<!-- Editor toolbar items -->
<!-- note that we override the submenu item label "Blank Window" with "New" used for the menu -->
<titledbutton id="newButton" class="button28" src="&newEditorIcon.url;" observes="cmd_newEditor" value="&newMenu.label;" />
<titledbutton id="openButton" class="button28" src="&openEditorIcon.url;" observes="Editor:Open"/>
<titledbutton id="saveButton" class="button28" src="&saveIcon.url;" observes="Editor:Save"/>
<titledbutton id="printButton" class="other28" src="&printIcon.url;" observes="Editor:Print"/>
<titledbutton id="findButton" class="other28" src="&findIcon.url;" observes="Editor:Find"/>
<titledbutton id="spellingButton" class="other28" src="&spellingIcon.url;" value="&spellToolbarCmd.label;" onclick="CheckSpelling()"/>
<titledbutton id="newButton" class="button28" observes="cmd_newEditor" value="&newMenu.label;" />
<titledbutton id="openButton" class="button28" observes="Editor:Open"/>
<titledbutton id="saveButton" class="button28" observes="Editor:Save"/>
<titledbutton id="printButton" class="other28" observes="Editor:Print"/>
<titledbutton id="findButton" class="other28" observes="Editor:Find"/>
<titledbutton id="spellingButton" class="other28" value="&spellToolbarCmd.label;" onclick="CheckSpelling()"/>
<titledbutton id="imageButton" class="other28" src="&imageIcon.url;" value="&imageToolbarCmd.label;" onclick="EditorInsertImage()"/>
<titledbutton id="hlineButton" class="other28" src="&hlineIcon.url;" value="&hruleToolbarCmd.label;" onclick="EditorInsertHLine()"/>
<titledbutton id="tableButton" class="other28" src="&tableIcon.url;" value="&tableToolbarCmd.label;" onclick="EditorInsertOrEditTable(true)"/>
<titledbutton id="linkButton" class="other28" src="&linkIcon.url;" value="&linkToolbarCmd.label;" onclick="EditorInsertLink()"/>
<titledbutton id="namedAnchorButton" class="other28" src="&anchorIcon.url;" value="&anchorToolbarCmd.label;" onclick="EditorInsertNamedAnchor()"/>
<titledbutton id="imageButton" class="other28" value="&imageToolbarCmd.label;" onclick="EditorInsertImage()"/>
<titledbutton id="hlineButton" class="other28" value="&hruleToolbarCmd.label;" onclick="EditorInsertHLine()"/>
<titledbutton id="tableButton" class="other28" value="&tableToolbarCmd.label;" onclick="EditorInsertOrEditTable(true)"/>
<titledbutton id="linkButton" class="other28" value="&linkToolbarCmd.label;" onclick="EditorInsertLink()"/>
<titledbutton id="namedAnchorButton" class="other28" value="&anchorToolbarCmd.label;" onclick="EditorInsertNamedAnchor()"/>
<!-- Formatting toolbar items -->
<titledbutton style="width:68pt" id="ParagraphPopupButton" value="&paragraphToolbarMenu.label;" class="popup" align="left" popupanchor="bottomleft">
<observes element="Editor:Paragraph:Format" attribute="format" onbroadcast="onParagraphFormatChange()"/>
</titledbutton>
<titledbutton id="FontFacePopupButton" class="format popup" value="&fontToolbarMenu.label;" align="right" popupanchor="bottomleft"/>
<titledbutton id="FontSizePopupButton" class="format popup" value="&sizeToolbarMenu.label;" align="right" popupanchor="bottomleft"/>
<titledbutton id="TextColorPopupButton" class="format popup" src="chrome://editor/skin/images/text-color.gif" popupanchor="bottomleft"/>
<titledbutton id="BackColorPopupButton" class="format popup" src="chrome://editor/skin/images/backcolor.gif" popupanchor="bottomleft"/>
<html:select class="toolbar" id="ParagraphSelect" size="1" onchange="EditorSelectParagraphFormat()">
<observes element="Editor:Paragraph:Format" attribute="format" onbroadcast="onParagraphFormatChange()"/>
<html:option>&headingNormalCmd.label;</html:option>
<html:option>&heading1Cmd.label;</html:option>
<html:option>&heading2Cmd.label;</html:option>
<html:option>&heading3Cmd.label;</html:option>
<html:option>&heading4Cmd.label;</html:option>
<html:option>&heading5Cmd.label;</html:option>
<html:option>&heading6Cmd.label;</html:option>
<html:option>&paragraphBlockquoteCmd.label;</html:option>
<html:option>&paragraphAddressCmd.label;</html:option>
<html:option>&paragraphPreformatCmd.label;</html:option>
<html:option>&paragraphDfnTermCmd.label;</html:option>
<html:option>&paragraphDfnDescCmd.label;</html:option>
</html:select>
<!-- TODO: Use actual "face" value when combobox can display arbitrary HTML -->
<html:select class="toolbar" id="FontFaceSelect" size="1" onchange="EditorSelectFontFace()">
<observes element="Editor:Font:Face" attribute="face" onbroadcast="onFontFaceChange()"/>
<html:option>&defaultVariableWidthCmd.label;</html:option>
<html:option>&defaultFixedWidthCmd.label;</html:option>
<html:option>&arialHelveticaFont.label;</html:option>
<html:option>&timesFont.label;</html:option>
<html:option>&courierFont.label;</html:option>
</html:select>
<html:select class="toolbar" id="FontSizeSelect" size="1" onchange="EditorSelectFontSize()">
<observes element="Editor:Font:Size" attribute="size" onbroadcast="onFontSizeChange()"/>
<html:option>&size-2Cmd.label;</html:option>
<html:option>&size-1Cmd.label;</html:option>
<html:option>&size0Cmd.label;</html:option>
<html:option>&size1Cmd.label;</html:option>
<html:option>&size2Cmd.label;</html:option>
<html:option>&size3Cmd.label;</html:option>
<html:option>&size4Cmd.label;</html:option>
</html:select>
<!-- CSS not working to pull buttons together with -margin -->
<titledbutton id="TextColorPopupButton" class="popup" popupanchor="bottomleft"/>
<titledbutton id="BackColorPopupButton" class="popup" popupanchor="bottomleft"/>
<!-- can't just use observes here because we don't want the value from the broadcaster -->
<titledbutton id="boldButton" class="format TextAttribute" value="&formatToolbar.boldChar;" align="center" onclick="EditorToggleStyle('bold')">
@ -581,17 +579,17 @@
<observes element="Editor:Underline" attribute="underline" onbroadcast="onStyleChange('underline')"/>
</titledbutton>
<titledbutton id="ulButton" class="format" src="&bulletListIcon.url;" onclick="EditorMakeOrChangeList('ul')">
<titledbutton id="ulButton" class="format" onclick="EditorMakeOrChangeList('ul')">
<observes element="Editor:Paragraph:ListType" attribute="format" onbroadcast="onListFormatChange('ul')"/>
</titledbutton>
<titledbutton id="olButton" class="format" src="&numberListIcon.url;" align="bottom" onclick="EditorMakeOrChangeList('ol')">
<titledbutton id="olButton" class="format" onclick="EditorMakeOrChangeList('ol')">
<observes element="Editor:Paragraph:ListType" attribute="format" onbroadcast="onListFormatChange('ol')"/>
</titledbutton>
<titledbutton id="outdentButton" class="format" src="&outdentIcon.url;" align="bottom" onclick="EditorIndent('outdent')"/>
<titledbutton id="indentButton" class="format" src="&indentIcon.url;" align="bottom" onclick="EditorIndent('indent')"/>
<titledbutton id="AlignPopupButton" class="format popup" src="&alignpopupIcon.url;" align="bottom" popupanchor="bottomleft"/>
<titledbutton id="outdentButton" class="format" onclick="EditorIndent('outdent')"/>
<titledbutton id="indentButton" class="format" onclick="EditorIndent('indent')"/>
<titledbutton id="AlignPopupButton" class="format popup" popupanchor="bottomleft"/>
<!-- DEBUG only -->

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

@ -14,6 +14,8 @@ Fewer=Fewer
Less=Less
MoreAttributes=More Attributes
FewerAttributes=Fewer Attributes
MoreProperties=More Properties
FewerProperties=Fewer Properties
None=None
none=none
OpenHTMLFile=Open HTML File

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

@ -219,11 +219,11 @@
<!-- Font Face SubMenu -->
<!ENTITY fontfaceMenu.label "Font Face">
<!ENTITY formatfontmenu.accesskey "f">
<!ENTITY defaultVariableWidthCmd.label "Default Variable Width">
<!ENTITY defaultVariableWidthCmd.label "Variable Width">
<!ENTITY fontvarwidth.accesskey "v">
<!ENTITY defaultFixedWidthCmd.label "Default Fixed Width">
<!ENTITY defaultFixedWidthCmd.label "Fixed Width">
<!ENTITY fontfixedwidth.accesskey "x">
<!ENTITY arialHelveticaFont.label "Arial, Helvetica">
<!ENTITY arialHelveticaFont.label "Arial, Helv.">
<!ENTITY fonthelvetica.accesskey "l">
<!ENTITY timesFont.label "Times">
<!ENTITY fonttimes.accesskey "t">
@ -233,19 +233,19 @@
<!-- Font Size SubMenu -->
<!ENTITY fontsizeMenu.label "Size">
<!ENTITY formatsizemenu.accesskey "s">
<!ENTITY sizeMinusTwoCmd.label " -2">
<!ENTITY sizeminus2.accesskey "-">
<!ENTITY sizeMinusOneCmd.label " -1 (smaller)">
<!ENTITY sizeminus1.accesskey "s">
<!ENTITY sizeNormalCmd.label " Normal">
<!ENTITY sizenormal.accesskey "n">
<!ENTITY sizePlusOneCmd.label " +1 (bigger)">
<!ENTITY size-2Cmd.label " -2">
<!ENTITY size-2.accesskey "-">
<!ENTITY size-1Cmd.label " -1">
<!ENTITY size-1.accesskey "s">
<!ENTITY size0Cmd.label " 0">
<!ENTITY size0.accesskey "n">
<!ENTITY size1Cmd.label " +1">
<!ENTITY size1.accesskey "1">
<!ENTITY sizePlusTwoCmd.label " +2">
<!ENTITY size2Cmd.label " +2">
<!ENTITY size2.accesskey "2">
<!ENTITY sizePlusThreeCmd.label " +3">
<!ENTITY size3Cmd.label " +3">
<!ENTITY size3.accesskey "3">
<!ENTITY sizePlusFourCmd.label " +4">
<!ENTITY size4Cmd.label " +4">
<!ENTITY size4.accesskey "4">
<!-- Font Style SubMenu -->
@ -302,17 +302,17 @@
<!ENTITY formatheadingmenu.accesskey "h">
<!ENTITY headingNormalCmd.label "Normal">
<!ENTITY headingnone.accesskey "n">
<!ENTITY headingOneCmd.label "Heading 1">
<!ENTITY heading1Cmd.label "Heading 1">
<!ENTITY heading1.accesskey "1">
<!ENTITY headingTwoCmd.label "Heading 2">
<!ENTITY heading2Cmd.label "Heading 2">
<!ENTITY heading2.accesskey "2">
<!ENTITY headingThreeCmd.label "Heading 3">
<!ENTITY heading3Cmd.label "Heading 3">
<!ENTITY heading3.accesskey "3">
<!ENTITY headingFourCmd.label "Heading 4">
<!ENTITY heading4Cmd.label "Heading 4">
<!ENTITY heading4.accesskey "4">
<!ENTITY headingFiveCmd.label "Heading 5">
<!ENTITY heading5Cmd.label "Heading 5">
<!ENTITY heading5.accesskey "5">
<!ENTITY headingSixCmd.label "Heading 6">
<!ENTITY heading6Cmd.label "Heading 6">
<!ENTITY heading6.accesskey "6">
<!ENTITY paragraphMenu.label "Paragraph">
@ -327,9 +327,9 @@
<!ENTITY paragraphpreformat.accesskey "p">
<!ENTITY paragraphListCmd.label "List item">
<!ENTITY paragraphlist.accesskey "l">
<!ENTITY paragraphDfnTermCmd.label "Definition term">
<!ENTITY paragraphDfnTermCmd.label "Def. term">
<!ENTITY paragraphterm.accesskey "t">
<!ENTITY paragraphDfnDescCmd.label "Definition description">
<!ENTITY paragraphDfnDescCmd.label "Def. description">
<!ENTITY paragraphdesc.accesskey "d">
<!-- List menu items -->
@ -438,19 +438,6 @@
<!ENTITY toolspellcheck.accesskey "s">
<!-- editor toolbar -->
<!ENTITY newEditorIcon.url "chrome://editor/skin/images/newfile.gif">
<!ENTITY openEditorIcon.url "chrome://editor/skin/images/openfile.gif">
<!ENTITY saveIcon.url "chrome://editor/skin/images/savefile.gif">
<!ENTITY publishIcon.url "chrome://editor/skin/images/publish.gif">
<!ENTITY previewIcon.url "chrome://editor/skin/images/preview.gif">
<!ENTITY printIcon.url "chrome://editor/skin/images/print.gif">
<!ENTITY findIcon.url "chrome://editor/skin/images/find.gif">
<!ENTITY linkIcon.url "chrome://editor/skin/images/link.gif">
<!ENTITY imageIcon.url "chrome://editor/skin/images/image.gif">
<!ENTITY anchorIcon.url "chrome://editor/skin/images/anchor.gif">
<!ENTITY hlineIcon.url "chrome://editor/skin/images/hline.gif">
<!ENTITY tableIcon.url "chrome://editor/skin/images/table.gif">
<!ENTITY spellingIcon.url "chrome://editor/skin/images/spell.gif">
<!-- formatting toolbar -->
<!ENTITY paragraphToolbarMenu.label "Paragraph">
@ -459,15 +446,10 @@
<!ENTITY formatToolbar.boldChar "B">
<!ENTITY formatToolbar.italicChar "I">
<!ENTITY formatToolbar.underlineChar "U">
<!ENTITY bulletListIcon.url "chrome://editor/skin/images/bullets.gif">
<!ENTITY numberListIcon.url "chrome://editor/skin/images/numbers.gif">
<!ENTITY outdentIcon.url "chrome://editor/skin/images/outdent.gif">
<!ENTITY indentIcon.url "chrome://editor/skin/images/indent.gif">
<!ENTITY alignpopupIcon.url "chrome://editor/skin/images/align.gif">
<!ENTITY alignLeft.label "Left">
<!ENTITY alignCenter.label "Center">
<!ENTITY alignRight.label "Right">
<!ENTITY alignJustify.label "Justify">
<!ENTITY tempNotification.label "Some random notification">
<!ENTITY tempDoneLoading.label "Document: Done">
<!ENTITY tempNotification.label "[status message]">
<!ENTITY tempDoneLoading.label "[Document loading message]">

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

@ -46,43 +46,34 @@ box#DisplayModeBar {
background-color: #999999;
}
toolbar#EditToolbar titledbutton#SaveButton {
list-style-image:url(chrome://editor/skin/images/savefile.gif);
}
toolbar#EditToolbar titledbutton#SaveButton[dirty="true"] {
list-style-image:url(chrome://editor/skin/images/savemod.gif);
}
toolbar#FormatToolbar titledbutton[class~=format] {
margin: 2px 2px 2px 2px;
toolbar#FormatToolbar titledbutton.format {
border: 1px solid transparent;
margin: 1px 1px 1px 1px;
padding: 2px;
text-decoration: none;
color: inherit;
}
toolbar#FormatToolbar titledbutton[class~=format]:hover {
toolbar#FormatToolbar titledbutton.format[toggled="1"] {
border: 1px white inset;
}
toolbar#FormatToolbar titledbutton.format:hover {
/* What we should use, but this has a blue border that doesn't look good against gray toolbars
background-image:url("chrome://global/skin/otherbutton28-bg-hover.gif");
*/
background-image:url("chrome://editor/skin/images/hover-teal.gif");
background-repeat: no-repeat;
background-position: center center;
*/
border: 1px solid white;
text-decoration: none;
/* global class="plain" should do this! */
}
toolbar#FormatToolbar titledbutton[class~=format]:active {
margin: 3px 1px 1px 3px;
margin: 2px 0px 0px 2px;
}
/*
Experimental: a flat look for buttons that show "set" state, like bold
toolbar#FormatToolbar titledbutton[class~=format][toggled="1"] {
border: 1px solid #003366;
}
*/
toolbar#FormatToolbar titledbutton[class~=TextAttribute] {
/* Make these narrower */
padding: 2px 0px;
@ -108,13 +99,18 @@ toolbar#FormatToolbar titledbutton#underlineButton {
text-decoration: underline;
}
/* Use negative margins to bring buttons together to look like one */
toolbar#FormatToolbar titledbutton#TextColorPopupButton {
margin-right: -2px;
div.toolbar-middle {
/* trying to center vertically in the toolbar! */
vertical-align: middle;
}
toolbar#FormatToolbar titledbutton#BackColorPopupButton {
margin-left: -2px;
select.toolbar {
/* I'd prefer to have this centered */
margin-top: 3px;
margin-left: 3px;
margin-right: 3px;
/* This is ignored! */
font-size: smaller;
max-width: 20em;
}
box#DisplayModeBar titledbutton[class~=DisplayModeButton] {
@ -128,12 +124,11 @@ box#DisplayModeBar titledbutton[class~=DisplayModeButton] {
}
box#DisplayModeBar titledbutton[class~=DisplayModeButton]:hover {
/*border: 1px solid white;
padding: 0px 4px 0px 4px;
margin: 0px;
*/
border: 1px solid white;
/* Alternate hover style: change background
color: white;
background-color: #66AAAA;
*/
}
box#DisplayModeBar titledbutton[class~=DisplayModeButton]:active {
@ -151,8 +146,11 @@ box#DisplayModeBar titledbutton[class~=DisplayModeButton][selected="1"] {
}
box#DisplayModeBar titledbutton[class~=DisplayModeButton][selected="1"]:hover {
border: 1px solid white;
/* Alternate hover style: change background
background-color: #66AAAA;
color: white;
*/
}
box#DisplayModeBar titledbutton[class~=DisplayModeButton][selected="1"]:active {
@ -176,3 +174,98 @@ spring.spacer5 {
width: 5px;
height: 5px;
}
/* Image URLs for all Editor toolbar buttons */
titledbutton#newButton {
list-style-image:url("chrome://editor/skin/images/newfile.gif");
}
titledbutton#openButton {
list-style-image:url("chrome://editor/skin/images/openfile.gif");
}
titledbutton#saveButton {
list-style-image:url("chrome://editor/skin/images/savefile.gif");
}
titledbutton#saveButton[dirty="true"] {
list-style-image:url(chrome://editor/skin/images/savemod.gif);
}
titledbutton#publishButton {
list-style-image:url("chrome://editor/skin/images/publish.gif");
}
titledbutton#printButton {
list-style-image:url("chrome://editor/skin/images/print.gif");
}
titledbutton#findButton {
list-style-image:url("chrome://editor/skin/images/find.gif");
}
titledbutton#linkButton {
list-style-image:url("chrome://editor/skin/images/link.gif");
}
titledbutton#imageButton {
list-style-image:url("chrome://editor/skin/images/image.gif");
}
titledbutton#namedAnchorButton {
list-style-image:url("chrome://editor/skin/images/anchor.gif");
}
titledbutton#hlineButton {
list-style-image:url("chrome://editor/skin/images/hline.gif");
}
titledbutton#tableButton {
list-style-image:url("chrome://editor/skin/images/table.gif");
}
titledbutton#spellingButton {
list-style-image:url("chrome://editor/skin/images/spell.gif");
}
titledbutton#ulButton {
list-style-image:url("chrome://editor/skin/images/bullets.gif");
}
titledbutton#olButton {
list-style-image:url("chrome://editor/skin/images/numbers.gif");
}
titledbutton#outdentButton {
list-style-image:url("chrome://editor/skin/images/outdent.gif");
}
titledbutton#indentButton {
list-style-image:url("chrome://editor/skin/images/indent.gif");
}
titledbutton#AlignPopupButton {
list-style-image:url("chrome://editor/skin/images/align.gif");
}
/* Use negative margins to bring buttons together to look like one */
titledbutton#TextColorPopupButton {
list-style-image:url("chrome://editor/skin/images/text-color.gif");
border: 1px solid transparent;
margin: 1px -1px 1px 1px;
padding: 0px;
}
titledbutton#TextColorPopupButton:hover {
list-style-image:url("chrome://editor/skin/images/text-color.gif");
border: 1px solid white;
}
titledbutton#BackColorPopupButton {
list-style-image:url("chrome://editor/skin/images/backcolor.gif");
border: 1px solid transparent;
margin: 1px 1px 1px -1px;
padding: 0px;
}
titledbutton#BackColorPopupButton:hover {
list-style-image:url("chrome://editor/skin/images/backcolor.gif");
border: 1px solid white;
}
titledbutton#text-align-left {
list-style-image:url("chrome://editor/skin/images/left.gif");
}
titledbutton#text-align-center {
list-style-image:url("chrome://editor/skin/images/center.gif");
}
titledbutton#text-align-right {
list-style-image:url("chrome://editor/skin/images/right.gif");
}
titledbutton#text-align-justify {
list-style-image:url("chrome://editor/skin/images/justify.gif");
}

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

@ -63,6 +63,7 @@ function StringExists(string)
function ClearList(list)
{
dump("Clear List: list="+list+"\n");
if (list) {
list.selectedIndex = -1;
for( i=list.length-1; i >= 0; i--)
@ -227,7 +228,7 @@ function PrepareStringForURL(string)
// or disabled (setAttribute) as specified in the "doEnable" parameter
function SetElementEnabledByID( elementID, doEnable )
{
element = document.getElementById(elementID);
element = document.getElementById(elementID);
if ( element )
{
if ( doEnable )
@ -336,7 +337,6 @@ function InitPixelOrPercentPopupButton(element, attribute, buttonID)
function SetPixelOrPercentByID(elementID, percentString)
{
percentChar = percentString;
dump("SetPixelOrPercent. PercentChar="+percentChar+"\n");
btn = document.getElementById( elementID );
if ( btn )
@ -346,7 +346,6 @@ function SetPixelOrPercentByID(elementID, percentString)
var containing = getContainer();
if (containing != null)
{
dump("Containing Element = " + containing + "\n");
if (containing.nodeName == "TD")
btn.setAttribute("value", GetString("PercentOfCell"));
else
@ -397,7 +396,6 @@ function onAdvancedEdit()
// (the copy named "globalElement")
window.openDialog("chrome://editor/content/EdAdvancedEdit.xul", "_blank", "chrome,close,titlebar,modal", "", globalElement);
if (window.AdvancedEditOK) {
dump("Advanced Dialog closed with OK\n");
// Copy edited attributes to the dialog widgets:
// to setup for validation
InitDialog();
@ -415,7 +413,6 @@ function onAdvancedEdit()
function onCancel()
{
dump("Cancel button clicked: closing window\n");
window.close();
}

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

@ -30,6 +30,8 @@
<box id="AdvancedEditButton" align="vertical">
<box align="horizontal" id="AdvancedEditButtonNoHR" style="margin-top: 0.2em">
<!-- This will right-align the button -->
<!-- spring flex="100%"/ -->
<titledbutton class="push" id="AdvancedEdit" onclick="onAdvancedEdit()" value="&AdvancedEditButton.label;"/>
</box>
<html:div class="separator" align="horizontal"/>

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

@ -150,7 +150,6 @@ function ValidateData()
{
// Height is always pixels
height = ValidateNumberString(dialog.heightInput.value, 1, maxPixels);
var isPercent = (dialog.pixelOrPercentSelect.selectedIndex == 1);
if (height == "") {
// Set focus to the offending control
dump("Height is empty\n");
@ -160,6 +159,7 @@ function ValidateData()
dump("Setting height="+height+"\n");
globalElement.setAttribute("size", height);
var isPercent = (dialog.pixelOrPercentSelect.selectedIndex == 1);
var maxLimit;
if (isPercent) {
maxLimit = 100;

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

@ -23,11 +23,11 @@
* Ben Goodger
*/
var insertNew = true;
var insertNew = true;
var SeeMore = true;
var wasEnableAll = false;
var oldSourceInt = 0;
var imageElement;
var SeeMore = true;
var wasEnableAll = false;
var oldSourceInt = 0;
// dialog initialization code
@ -39,59 +39,47 @@ function Startup()
doSetOKCancel(onOK, null);
// Create dialog object to store controls for easy access
dialog = new Object;
dialog = new Object;
// This is the "combined" widget:
dialog.srcInput = document.getElementById("image.srcInput");
dialog.altTextInput = document.getElementById("image.altTextInput");
dialog.MoreFewerButton = document.getElementById("MoreFewerButton");
dialog.MoreRow = document.getElementById("MoreRow");
dialog.customsizeRadio = document.getElementById( "customsizeRadio" );
dialog.imagewidthInput = document.getElementById( "imagewidthInput" );
dialog.imageheightInput = document.getElementById( "imageheightInput" );
dialog.imagewidthSelect = document.getElementById( "widthunitSelect" );
dialog.imageheightSelect = document.getElementById( "heightunitSelect" );
dialog.imagelrInput = document.getElementById( "imageleftrightInput" );
dialog.imagetbInput = document.getElementById( "imagetopbottomInput" );
dialog.imageborderInput = document.getElementById( "imageborderInput" );
dialog.srcInput = document.getElementById( "srcInput" );
dialog.altTextInput = document.getElementById( "altTextInput" );
dialog.MoreFewerButton = document.getElementById( "MoreFewerButton" );
dialog.MoreSection = document.getElementById( "MoreSection" );
dialog.customsizeRadio = document.getElementById( "customsizeRadio" );
dialog.constrainCheckbox = document.getElementById( "constrainCheckbox" );
dialog.widthInput = document.getElementById( "widthInput" );
dialog.heightInput = document.getElementById( "heightInput" );
dialog.widthUnitsSelect = document.getElementById( "widthUnitsSelect" );
dialog.heightUnitsSelect = document.getElementById( "heightUnitsSelect" );
dialog.imagelrInput = document.getElementById( "imageleftrightInput" );
dialog.imagetbInput = document.getElementById( "imagetopbottomInput" );
dialog.border = document.getElementById( "border" );
dialog.alignTypeSelect = document.getElementById( "alignTypeSelect" );
// Set SeeMore bool to the OPPOSITE of the current state,
// which is automatically saved by using the 'persist="more"'
// attribute on the MoreFewerButton button
// onMoreFewer will toggle it and redraw the dialog
// onMoreFewer will toggle the state and redraw the dialog
SeeMore = (dialog.MoreFewerButton.getAttribute("more") != "1");
onMoreFewer();
if (null == dialog.srcInput ||
null == dialog.altTextInput )
{
dump("Not all dialog controls were found!!!\n");
}
// Get a single selected image element
var tagName = "img"
imageElement = editorShell.GetSelectedElement(tagName);
var tagName = "img"
imageElement = editorShell.GetSelectedElement(tagName);
if (imageElement)
{
// We found an element and don't need to insert one
insertNew = false;
insertNew = false;
}
else
{
insertNew = true;
insertNew = true;
// We don't have an element selected,
// so create one with default attributes
imageElement = editorShell.CreateElementWithDefaults(tagName);
imageElement = editorShell.CreateElementWithDefaults(tagName);
if( !imageElement )
{
dump("Failed to get selected element or create a new one!\n");
@ -111,87 +99,66 @@ function Startup()
// Set dialog widgets with attribute data
// We get them from globalElement copy so this can be used
// by AdvancedEdit(), which is shared by all property dialogs
function InitDialog() {
function InitDialog()
{
// Set the controls to the image's attributes
str = globalElement.getAttribute("src");
if ( str == "null" )
{
str = "";
}
dialog.srcInput.value = str;
str = globalElement.getAttribute("src");
if (str)
dialog.srcInput.value = str;
str = globalElement.getAttribute("alt");
if ( str == "null" )
{
str = "";
}
dialog.altTextInput.value = str;
str = globalElement.getAttribute("alt");
if (str)
dialog.altTextInput.value = str;
// set height and width
// note: need to set actual image size if no attributes
dimvalue = globalElement.getAttribute("width");
if ( dimvalue == "null" )
{
dimvalue = "";
}
dialog.imagewidthInput.value = dimvalue;
// setup the height and width widgets
dialog.widthInput.value = InitPixelOrPercentCombobox(globalElement, "width", "widthUnitsSelect");
dialog.heightInput.value = InitPixelOrPercentCombobox(globalElement, "height", "heightUnitsSelect");
dimvalue = globalElement.getAttribute("height");
if ( dimvalue == "null" )
{
dimvalue = "";
}
dialog.imageheightInput.value = dimvalue;
// TODO: We need to get the actual image dimensions.
// If different from attribute dimensions, then "custom" is checked.
// For now, always check custom, so we don't trash existing values
dialog.customsizeRadio.checked = true;
// Mods Brian King XML Workshop
// Set H & W pop-up on start-up
if (insertNew == false)
{
var wdh = globalElement.getAttribute("width");
var hgt = globalElement.getAttribute("height");
ispercentw = wdh.substr(wdh.length-1, 1);
ispercenth = hgt.substr(hgt.length-1, 1);
if (ispercentw == "%")
setPopup("w");
if (ispercenth == "%")
setPopup("h");
}
// End Mods BK
// this is not the correct way to determine if custom or original
if ( dimvalue != "" )
{
dialog.customsizeRadio.checked = true;
}
alignpopup = document.getElementById("image.alignType");
dump(dialog.customsizeRadio.checked+" dialog.customsizeRadio.checked\n");
// set spacing editfields
dialog.imagelrInput.value = globalElement.getAttribute("hspace");
dialog.imagetbInput.value = globalElement.getAttribute("vspace");
dialog.border.value = globalElement.getAttribute("border");
sizevalue = globalElement.getAttribute("hspace");
dialog.imagelrInput.value = sizevalue;
sizevalue = globalElement.getAttribute("vspace");
dialog.imagetbInput.value = sizevalue;
sizevalue = globalElement.getAttribute("border");
dialog.imageborderInput.value = sizevalue;
// Get alignment setting
var align = globalElement.getAttribute("align");
if (align) {
align.toLowerCase();
dump("Image Align exists = "+align+"\n");
}
dump("Image Align="+align+"\n");
switch ( align )
{
case "top":
dialog.alignTypeSelect.selectedIndex = 0;
break;
case "center":
dialog.alignTypeSelect.selectedIndex = 1;
break;
case "left":
dialog.alignTypeSelect.selectedIndex = 3;
break;
case "right":
dialog.alignTypeSelect.selectedIndex = 4;
break;
default: // Default or "bottom"
dialog.alignTypeSelect.selectedIndex = 2;
break;
}
dump( "Image Align Select Index after setting="+dialog.alignTypeSelect.selectedIndex+"\n");
imageTypeExtension = checkForImage();
// we want to force an update so initialize "wasEnableAll" to be the opposite of what the actual state is
imageTypeExtension = checkForImage();
wasEnableAll = !imageTypeExtension;
wasEnableAll = !imageTypeExtension;
doOverallEnabling();
}
@ -199,15 +166,16 @@ function chooseFile()
{
// Get a local file, converted into URL format
fileName = editorShell.GetLocalFileURL(window, "img");
fileName = editorShell.GetLocalFileURL(window, "img");
if (fileName && fileName != "") {
dialog.srcInput.value = fileName;
// imageTypeExtension = checkForImage();
dialog.srcInput.value = fileName;
// imageTypeExtension = checkForImage();
doValueChanged();
}
checkForImage( "srcInput" );
// Put focus into the input field
dialog.srcInput.focus();
}
@ -215,22 +183,20 @@ function onMoreFewer()
{
if (SeeMore)
{
SeeMore = false;
dialog.MoreFewerButton.setAttribute("value",GetString("MoreAttributes"));
// This has too many bugs to use now (10/22/99)
dialog.MoreRow.style.visibility = "collapse";
// dialog.MoreRow.setAttribute("style","display: none");
dialog.MoreSection.setAttribute("style","display: none");
window.sizeToContent();
dialog.MoreFewerButton.setAttribute("more","0");
dialog.MoreFewerButton.setAttribute("value",GetString("MoreProperties"));
SeeMore = false;
}
else
{
SeeMore = true;
dialog.MoreFewerButton.setAttribute("value",GetString("FewerAttributes"));
dialog.MoreRow.style.visibility = "inherit";
// dialog.MoreRow.setAttribute("style","display: inherit");
dialog.MoreSection.setAttribute("style","display: inherit");
window.sizeToContent();
dialog.MoreFewerButton.setAttribute("more","1");
dialog.MoreFewerButton.setAttribute("value",GetString("FewerProperties"));
SeeMore = true;
}
window.sizeToContent();
}
function doValueChanged()
@ -238,16 +204,6 @@ function doValueChanged()
doOverallEnabling();
}
function SelectWidthUnits()
{
list = document.getElementById("WidthUnits");
value = list.options[list.selectedIndex].value;
dump("Selected item: "+value+"\n");
doValueChanged();
}
function OnChangeSrc()
{
doValueChanged();
@ -255,145 +211,98 @@ function OnChangeSrc()
function doDimensionEnabling( doEnable )
{
// Make associated text labels look disabled or not
SetElementEnabledByID( "originalsizeLabel", doEnable );
SetElementEnabledByID( "customsizeLabel", doEnable );
SetElementEnabledByID( "dimensionsLabel", doEnable );
SetClassEnabledByID( "originalsizeLabel", doEnable );
SetClassEnabledByID( "customsizeLabel", doEnable );
SetElementEnabledByID( "originalsizeRadio", doEnable );
SetElementEnabledByID( "customsizeRadio", doEnable );
SetClassEnabledByID( "dimensionsLegend", doEnable );
// Rest are enabled only if "Custom" is checked
var enable = (doEnable && dialog.customsizeRadio.checked);
customradio = document.getElementById( "customsizeRadio" );
SetElementEnabledByID( "widthInput", enable );
SetElementEnabledByID( "widthLabel", enable);
SetElementEnabledByID( "widthUnitsSelect", enable );
SetElementEnabledByID( "heightInput", enable );
SetElementEnabledByID( "heightLabel", enable );
SetElementEnabledByID( "heightUnitsSelect", enable );
if ( customradio && customradio.checked )
{
// disable or enable custom setting controls
SetElementEnabledByID( "imagewidthInput", doEnable && customradio.checked );
////////////////// this is currently the only way i can get it to work /////////////////
// SetElementEnabledByID( "widthunitSelect", doEnable && customradio.checked );
element = document.getElementById( "widthunitSelect" );
element.setAttribute( "disabled", false );
SetElementEnabledByID( "imageheightInput", doEnable && customradio.checked );
element = document.getElementById( "heightunitSelect" );
element.setAttribute( "disabled", false );
//SetElementEnabledByID( "heightunitSelect", doEnable && customradio.checked );
/////////////////////////////////////////////////////////////////////////////////////////
SetElementEnabledByID( "constrainCheckbox", doEnable && customradio.checked );
SetClassEnabledByID( "imagewidthLabel", doEnable && customradio.checked );
SetClassEnabledByID( "imageheightLabel", doEnable && customradio.checked );
SetClassEnabledByID( "constrainLabel", doEnable && customradio.checked );
}
SetElementEnabledByID( "constrainCheckbox", enable );
SetElementEnabledByID( "constrainLabel", enable );
}
function doOverallEnabling()
{
var imageTypeExtension = checkForImage();
var canEnableAll = imageTypeExtension != 0;
var imageTypeExtension = checkForImage();
var canEnableAll = imageTypeExtension != 0;
if ( wasEnableAll == canEnableAll )
return;
wasEnableAll = canEnableAll;
wasEnableAll = canEnableAll;
SetElementEnabledByID("ok", canEnableAll );
SetElementEnabledByID( "altTextLabel", canEnableAll );
fieldset = document.getElementById("imagedimensionsFieldset");
if ( fieldset )
{
SetElementEnabledByID("imagedimensionsFieldset", canEnableAll );
doDimensionEnabling( canEnableAll );
}
// Do widgets for sizing
doDimensionEnabling( canEnableAll );
// handle altText and MoreFewer button
SetElementEnabledByID("alignLabel", canEnableAll );
SetElementEnabledByID("alignTypeSelect", canEnableAll );
SetClassEnabledByID( "image.altTextLabel", canEnableAll );
SetElementEnabledByID("image.altTextInput", canEnableAll );
SetClassEnabledByID("MoreFewerButton", canEnableAll );
SetElementEnabledByID("AdvancedEdit", canEnableAll );
// spacing fieldset
SetElementEnabledByID( "spacingLabel", canEnableAll );
SetElementEnabledByID( "imageleftrightInput", canEnableAll );
SetElementEnabledByID( "leftrightLabel", canEnableAll );
SetElementEnabledByID( "leftrighttypeLabel", canEnableAll );
// alignment
SetElementEnabledByID( "imagetopbottomInput", canEnableAll );
SetElementEnabledByID( "topbottomLabel", canEnableAll );
SetElementEnabledByID( "topbottomtypeLabel", canEnableAll );
SetClassEnabledByID( "imagealignmentLabel", canEnableAll );
SetElementEnabledByID("image.alignType", canEnableAll );
SetElementEnabledByID( "border", canEnableAll );
SetElementEnabledByID( "borderLabel", canEnableAll );
SetElementEnabledByID( "bordertypeLabel", canEnableAll );
/* this shouldn't be needed here; doDimensionEnabling should do this */
customradio = document.getElementById( "customsizeRadio" );
if(customradio.checked){
SetElementEnabledByID("heightunitSelect", canEnableAll );
SetElementEnabledByID("widthunitSelect", canEnableAll );
}
// spacing fieldset
SetClassEnabledByID( "spacingLegend", canEnableAll );
SetElementEnabledByID("spacing.fieldset", canEnableAll );
SetElementEnabledByID("imageleftrightInput", canEnableAll );
SetElementEnabledByID("imagetopbottomInput", canEnableAll );
SetElementEnabledByID("imageborderInput", canEnableAll );
// do spacing labels
SetClassEnabledByID( "leftrightLabel", canEnableAll );
SetClassEnabledByID( "leftrighttypeLabel", canEnableAll );
SetClassEnabledByID( "topbottomLabel", canEnableAll );
SetClassEnabledByID( "topbottomtypeLabel", canEnableAll );
SetClassEnabledByID( "borderLabel", canEnableAll );
SetClassEnabledByID( "bordertypeLabel", canEnableAll );
}
function SetImageAlignment(align)
{
// do stuff
// contentWindow.focus();
SetElementEnabledByID( "AdvancedEdit", canEnableAll );
}
// an API to validate and image by sniffing out the extension
/* assumes that the element id is "image.srcInput" */
/* assumes that the element id is "srcInput" */
/* returns lower-case extension or 0 */
function checkForImage() {
image = document.getElementById( "image.srcInput" ).value;
function checkForImage()
{
image = dialog.srcInput.value.trimString();
if ( !image )
return 0;
return 0;
/* look for an extension */
var tailindex = image.lastIndexOf(".");
var tailindex = image.lastIndexOf(".");
if ( tailindex == 0 || tailindex == -1 ) /* -1 is not found */
return 0;
return 0;
/* move past period, get the substring from the first character after the '.' to the last character (length) */
tailindex = tailindex + 1;
var type = image.substring(tailindex,image.length);
var type = image.substring(tailindex,image.length);
/* convert extension to lower case */
if (type)
type = type.toLowerCase();
// TODO: Will we convert .BMPs to a web format?
switch( type ) {
case "gif":
case "jpg":
case "jpeg":
case "png":
return type;
break;
default : return 0;
}
return type;
break;
default :
return 0;
}
}
@ -402,7 +311,7 @@ function checkForImage() {
function constrainProportions( srcID, destID )
{
srcElement = document.getElementById ( srcID );
srcElement = document.getElementById ( srcID );
if ( !srcElement )
return;
@ -410,13 +319,11 @@ function constrainProportions( srcID, destID )
// now find out if we should be constraining or not
checkbox = document.getElementById( "constrainCheckbox" );
if ( !checkbox)
return;
if ( !checkbox.checked )
var constrainChecked = (dialog.constrainCheckbox.checked);
if ( !constrainChecked )
return;
destElement = document.getElementById( destID );
destElement = document.getElementById( destID );
if ( !destElement )
return;
@ -425,18 +332,18 @@ function constrainProportions( srcID, destID )
// newDest = (newSrc * oldDest / oldSrc)
if ( oldSourceInt == 0 )
destElement.value = srcElement.value;
destElement.value = srcElement.value;
else
destElement.value = Math.round( srcElement.value * destElement.value / oldSourceInt );
destElement.value = Math.round( srcElement.value * destElement.value / oldSourceInt );
oldSourceInt = srcElement.value;
oldSourceInt = srcElement.value;
}
// Get data from widgets, validate, and set for the global element
// accessible to AdvancedEdit() [in EdDialogCommon.js]
function ValidateData()
{
var imageTypeExtension = checkForImage();
var imageTypeExtension = checkForImage();
if ( !imageTypeExtension ) {
ShowInputErrorMessage(GetString("MissingImageError"));
return false;
@ -444,63 +351,104 @@ function ValidateData()
//TODO: WE NEED TO DO SOME URL VALIDATION HERE, E.G.:
// We must convert to "file:///" or "http://" format else image doesn't load!
globalElement.setAttribute("src",dialog.srcInput.value);
var src = dialog.srcInput.value.trimString();
globalElement.setAttribute("src", src);
// TODO: Should we confirm with user if no alt tag? Or just set to empty string?
globalElement.setAttribute("alt", dialog.altTextInput.value);
var alt = dialog.altTextInput.value.trimString();
globalElement.setAttribute("alt", alt);
// set width if custom size and width is greater than 0
// Note: This accepts and empty string as meaning "don't set
// BUT IT ALSO ACCEPTS 0. Should use ValidateNumberString() to tell user proper range
if ( dialog.customsizeRadio.checked
&& ( dialog.imagewidthInput.value.length > 0 )
&& ( dialog.imageheightInput.value.length > 0 ) )
var isPercentWidth = (dialog.widthUnitsSelect.selectedIndex == 1);
var maxLimitWidth = isPercentWidth ? 100 : maxPixels; // Defined in EdDialogCommon.js
var isPercentHeight = (dialog.heightUnitsSelect.selectedIndex == 1);
var maxLimitHeight = isPercentHeight ? 100 : maxPixels; // Defined in EdDialogCommon.js
//TODO: WE SHOULD ALWAYS SET WIDTH AND HEIGHT FOR FASTER IMAGE LAYOUT
// IF USER DOESN'T SET IT, WE NEED TO GET VALUE FROM ORIGINAL IMAGE
var width = "";
var height = "";
if ( dialog.customsizeRadio.checked )
{
setDimensions(); // width and height
}
else
{
//TODO: WE SHOULD ALWAYS SET WIDTH AND HEIGHT FOR FASTER IMAGE LAYOUT
// IF USER DOESN'T SET IT, WE NEED TO GET VALUE FROM ORIGINAL IMAGE
globalElement.removeAttribute( "width" );
globalElement.removeAttribute( "height" );
width = ValidateNumberString(dialog.widthInput.value, 1, maxLimitWidth);
if (width == "") {
dump("Image Width is empty\n");
dialog.widthInput.focus();
return false;
}
if (isPercentWidth)
width = width + "%";
height = ValidateNumberString(dialog.heightInput.value, 1, maxLimitHeight);
if (height == "") {
dump("Image Height is empty\n");
dialog.heightInput.focus();
return false;
}
if (isPercentHeight)
height = height + "%";
}
dump("Image width,heigth: "+width+","+height+"\n");
if (width.length > 0)
globalElement.setAttribute("width", width);
if (height.length > 0)
globalElement.setAttribute("width", width);
// spacing attributes
// All of these should use ValidateNumberString() to
// ensure value is within acceptable range
if ( dialog.imagelrInput.value.length > 0 )
globalElement.setAttribute( "hspace", dialog.imagelrInput.value );
{
var hspace = ValidateNumberString(dialog.imagelrInput.value, 0, maxPixels);
if (hspace == "")
return false;
globalElement.setAttribute( "hspace", hspace );
}
else
globalElement.removeAttribute( "hspace" );
if ( dialog.imagetbInput.value.length > 0 )
globalElement.setAttribute( "vspace", dialog.imagetbInput.value );
{
var vspace = ValidateNumberString(dialog.imagetbInput.value, 0, maxPixels);
if (vspace == "")
return false;
globalElement.setAttribute( "vspace", vspace );
}
else
globalElement.removeAttribute( "vspace" );
// note this is deprecated and should be converted to stylesheets
if ( dialog.imageborderInput.value.length > 0 )
globalElement.setAttribute( "border", dialog.imageborderInput.value );
if ( dialog.border.value.length > 0 )
{
var border = ValidateNumberString(dialog.border.value, 0, maxPixels);
if (border == "")
return false;
globalElement.setAttribute( "border", border );
}
else
globalElement.removeAttribute( "border" );
// This currently triggers a "Not implemented" assertion, preventing inserting an image
// TODO: FIX THIS!
/*
alignpopup = document.getElementById("image.alignType");
if ( alignpopup )
// Default or setting "bottom" means don't set the attribute
var align = "";
switch ( dialog.alignTypeSelect.selectedIndex )
{
var alignurl;
alignpopup.getAttribute( "src", alignurl );
dump( "popup value = " + alignurl + "\n" );
if ( alignurl == "&bottomIcon.url;" )
globalElement.removeAttribute("align");
// else
// globalElement.setAttribute("align", alignurl );
case 0:
align = "top";
break;
case 1:
align = "center";
break;
case 3:
break;
case 4:
break;
}
*/
if (align == "")
globalElement.removeAttribute( "align" );
else
globalElement.setAttribute( "align", align );
return true;
}
@ -526,77 +474,3 @@ function onOK()
return false;
}
// setDimensions()
// sets height and width attributes to inserted image
// Brian King - XML Workshop
function setDimensions()
{
var wtype = dialog.imagewidthSelect.getAttribute("value");
var htype = dialog.imageheightSelect.getAttribute("value");
// width
// TODO: NO! this is not the way to do it! Depends on english strings
// Instead, store which index is selected when popup "pixel" or "percent of..." is used
if (wtype.substr(0,4) == "% of")
{
//var Iwidth = eval("dialog.imagewidthInput.value + '%';");
globalElement.setAttribute("width", dialog.imagewidthInput.value + "%");
}
else
globalElement.setAttribute("width", dialog.imagewidthInput.value);
//height
if (htype.substr(0,4) == "% of")
{
//var Iheight = eval("dialog.imageheightInput.value + '%';");
globalElement.setAttribute("height", dialog.imageheightInput.value + "%");
}
else
globalElement.setAttribute("height", dialog.imageheightInput.value);
}
// setPopup()
// sets height and width popups on during initialisation
// Brian King - XML Workshop
function setPopup(dim)
{
select = getContainer();
if (select.nodeName == "TD")
{
if (dim == "w")
dialog.imagewidthSelect.setAttribute("value",GetString("PercentOfCell"));
else
dialog.imageheightSelect.setAttribute("value",GetString("PercentOfCell"));
} else
{
if (dim == "w")
dialog.imagewidthSelect.setAttribute("value",GetString("PercentOfWindow"));
else
dialog.imageheightSelect.setAttribute("value",GetString("PercentOfWindow"));
}
}
// This function moves the selected item into view
function popupSelectedImage( item, elementID, node ){
selectedItem = document.getElementById(elementID);
selectedItem.setAttribute(node, item);
}
function SetPixelOrPercentByID(fu, bar){
dump("comming soon . . . SetPixelOrPercentByID\n\n");
}

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

@ -36,620 +36,369 @@
xmlns:xul ="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns="http://www.w3.org/TR/REC-html40"
onload = "Startup()"
align="vertical"
style="width: auto; height: auto;">
<!-- Methods common to all editor dialogs -->
<script language="JavaScript" src="chrome://editor/content/EdDialogCommon.js">
</script>
<script language="JavaScript" src="chrome://editor/content/EdImageProps.js">
</script>
<script language="JavaScript" src="chrome://global/content/dialogOverlay.js" />
align="vertical">
<script language="JavaScript" src="chrome://editor/content/EdDialogCommon.js"/>
<script language="JavaScript" src="chrome://editor/content/EdImageProps.js"/>
<script language="JavaScript" src="chrome://global/content/dialogOverlay.js"/>
<xul:broadcaster id="args" value=""/>
<xul:keyset id="keyset"/>
<!-- /////////////////////// Parent table //////////////////////////////// -->
<fieldset>
<legend
class = "dialog"
align = "left">
&locationFieldset.label;
</legend>
<table>
<!--/////// Src URL and ALT Text //////-->
<tr>
<td align="right">
<label
class = "dialog"
for = "srcInput">
&locationEditField.label;
</label>
</td>
<td>
<input
type = "text"
id = "srcInput"
size = "30"
onkeypress = "OnChangeSrc()"
onkeyup = "checkForImage( this.id ); doValueChanged()"
onmouseup = "checkForImage( this.id ); doValueChanged()"
onchange = "OnChangeSrc(); doOverallEnabling()" />
</td>
<td>
<xul:titledbutton
class = "push dialog"
id = "ChooseFile"
onclick = "chooseFile()"
value = "&chooseButton.label;"/>
</td>
</tr>
<tr>
<td>
<label
class = "dialog"
id = "altTextLabel"
for = "altTextInput">
&altTextEditField.label;
</label>
</td>
<td>
<input
type ="text"
id ="altTextInput"
size ="30"
onchange = "doValueChanged()"/>
</td>
<td/>
</tr>
</table>
</fieldset>
<div>
<xul:titledbutton
class = "push dialog"
id = "MoreFewerButton"
align = "left"
onclick = "onMoreFewer()"
style = "width: 10em"
persist = "more"/>
</div>
<!--
<xul:box align="horizontal">
<xul:titledbutton
class = "push dialog"
id = "MoreFewerButton"
align = "left"
onclick = "onMoreFewer()"
persist = "more"/>
<xul:spring flex="100%"/>
</xul:box>
-->
<!-- Area that shows and hides via MoreFewerButton -->
<!-- xul:box id="MoreSection" align="horizontal" -->
<!-- div id="MoreSection" align="vertical" flex="100%" -->
<table id="MoreSection" style="width: 100% height: 100%">
<tbody>
<tr>
<td rowspan="2" valign="bottom">
<!-- //////// Image Dimensions //////// -->
<fieldset>
<legend
class="dialog"
id="dimensionsLabel">
&dimensionsFieldset.label;
</legend>
<!-- THIS NEEDS TO BE onchange RATHER THAN onclick -->
<input
type = "radio"
name = "dimensionType"
id = "originalsizeRadio"
onclick = "doDimensionEnabling( false );"/>
<!-- onclick was: "doValueChanged();" -->
<label
class = "dialog"
id = "originalsizeLabel"
for = "originalsizeRadio">
&originalSizeRadio.label;
</label>
<br/>
<!-- THIS NEEDS TO BE onchange RATHER THAN onclick -->
<input
type ="radio"
name = "dimensionType"
id = "customsizeRadio"
onclick = "doDimensionEnabling( true );" />
<label
class = "dialog"
id = "customsizeLabel"
for = "customsizeRadio">
&customSizeRadio.label;
</label>
<table>
<!--////// IMAGE WIDTH //////-->
<tr>
<td>
<label
class = "dialog"
id = "widthLabel"
for = "widthInput">
&widthEditField.label;
</label>
</td>
<td>
<input
type = "text"
id = "widthInput"
size = "4"
length = "4"
onfocus = "oldSourceInt = this.value;"
onkeyup = "constrainProportions(this.id, 'heightInput')"
onchange = "doValueChanged()" />
</td>
<td>
<select
id = "widthUnitsSelect"
size = "1"
onclick = "doValueChanged()"/>
<!-- option elements are appended by JS -->
</td>
</tr>
<!--////// IMAGE HEIGHT //////-->
<tr>
<td>
<label
class = "dialog"
id = "heightLabel"
for = "heightInput">
&heightEditField.label;
</label>
</td>
<td>
<input
type = "text"
size = "4"
length = "4"
id = "heightInput"
onfocus = "oldSourceInt = this.value;"
onkeyup = "constrainProportions(this.id, 'widthInput')"
onchange = "doValueChanged()" />
</td>
<td>
<select
id = "heightUnitsSelect"
size = "1"
onclick = "doValueChanged()"/>
<!-- option elements are appended by JS -->
</td>
</tr>
</table>
<!--////// CONSTRAIN DIMENSIONS //////-->
<input type="checkbox" id="constrainCheckbox"/>
<label
class = "dialog"
id = "constrainLabel"
for = "constrainCheckbox">
&constrainCheckbox.label;
</label>
</fieldset>
</td>
<!-- End of Bottom Left Region -->
<!-- Bottom Right Region -->
<td>
<!--//////// Alignment ////////-->
<label
class = "dialog"
id = "alignLabel"
for = "alignTypeSelect">
&alignment.label;
</label>
<br/>
<!-- BUG: Select contents can be nothing but text! -->
<select
id = "alignTypeSelect"
size = "1">
<option>
&topPopup.value;
</option>
<option>
&centerPopup.value;
</option>
<option>
&bottomPopup.value;
</option>
<option>
&wrapLeftPopup.value;
</option>
<option>
&wrapRightPopup.value;
</option>
<!--
<table>
Use this when option content bug is fixed:
<option>
<titledbutton id="img-align-top" value="&topPopup.value;" align="left"/>
</option>
<option>
<titledbutton id="img-align-center" value="&centerPopup.value;" align="left"/>
</option>
<option>
<titledbutton id="img-align-bottom" value="&bottomPopup.value;" align="left"/>
</option>
<option>
<titledbutton id="img-align-left" value="&wrapLeftPopup.value;" align="left"/>
</option>
<option>
<titledbutton id="img-align-right" value="&wrapRightPopup.value;" align="left"/>
</option>
-->
</select>
<!--
<xul:titledbutton
id = "alignTypeSelect"
src = "resource:/chrome/editor/skin/default/images/img-align-bottom.gif"
class = "push dialog popup"
popup = "ImageTextAlignment"
popupanchor = "bottomleft"
align = "left"
onchange = "doValueChanged()" />
-->
</td>
</tr>
<tr>
<td>
-->
<!-- /////////////////////// Choose File Alt text table /////////////////// -->
<table>
<tr>
<td colspan="2">
<fieldset id="imageInfo.fieldset" ><legend align="left"> &locationFieldset.label; </legend>
<table>
<tr>
<td align="right" valign="middle">
<label
class = "enabled"
for = "image.srcInput">
&locationEditField.label;
</label>
</td>
<td valign="middle">
<input
type = "text"
size = "30"
length = "30"
id = "image.srcInput"
onkeypress = "OnChangeSrc()"
onkeyup = "checkForImage( this.id ); doValueChanged()"
onmouseup = "checkForImage( this.id ); doValueChanged()"
onblur = "/*checkForImage( this.id ); doValueChanged()*/"
onfocus = "checkForImage( this.id ); doValueChanged()"
onchange = "OnChangeSrc(); doOverallEnabling()" />
<!-- onmouseup checks for a paste
onkeyup checks for typing
onblur is for good luck
-->
</td>
<td>
<button
id = "ChooseFile"
onclick = "chooseFile(); checkForImage( 'image.srcInput' );">
&chooseButton.label;
</button>
</td>
</tr>
<tr>
<td align="right" valign="middle">
<label
class = "enabled"
for = "image.altTextInput"
id = "image.altTextLabel">
&altTextEditField.label;
</label>
</td>
<td>
<input
type ="text"
size = "30"
id = "image.altTextInput"
onchange = "doValueChanged()"/>
</td>
<td/>
</tr>
</table>
</fieldset>
</td>
<td/>
</tr>
<tr>
<td>
<xul:titledbutton class="push" id="MoreFewerButton" align="left" style="width: 10em" onclick="onMoreFewer()" persist="more"/>
</td>
<td/>
</tr>
</table>
<!-- ////////////////////// "More" controls table ///////////////////////////////// -->
<div id="MoreRow" style="visibility: inherit; display: block;">
<xul:box align="vertical">
<table>
<tr>
<td>
<fieldset
id = "imagedimensionsFieldset" >
<legend
id = "dimensionsLegend"
class = "disabled"
align = "left">
&dimensionsFieldset.label;
</legend>
<table cellspacing="0" cellpadding="0">
<tr>
<td>
<!-- THIS NEEDS TO BE onchange RATHER THAN onclick -->
<input
type = "radio"
name = "image.dimensionType"
id = "originalsizeRadio"
onclick = " doValueChanged();"
checked = "true" />
</td>
<td colspan="3">
<label
class = "disabled"
for = "originalsizeRadio"
id = "originalsizeLabel" >
&originalSizeRadio.label;
</label>
</td>
</tr>
<tr>
<td>
<!-- THIS NEEDS TO BE onchange RATHER THAN onclick -->
<input type="radio"
name = "image.dimensionType"
id = "customsizeRadio"
onclick = "doDimensionEnabling( true );" />
</td>
<td colspan="3">
<label
class = "disabled"
for = "customsizeRadio"
id = "customsizeLabel" >
&customSizeRadio.label;
</label>
</td>
</tr>
<!-- IMAGE WIDTH -->
<tr valign="middle">
<td/>
<td>
<label
class = "disabled"
for = "imagewidthInput"
id = "imagewidthLabel">
&widthEditField.label;
</label>
</td>
<td>
<input
type = "text"
size = "4"
length = "4"
id = "imagewidthInput"
disabled = "true"
onfocus = "oldSourceInt = this.value;"
onkeyup = "constrainProportions(this.id, 'imageheightInput')"
onchange = "doValueChanged()" />
</td>
<td>
<xul:titledbutton
class = "push popup"
id = "widthunitSelect"
style = "width: 50px;"
disabled = "true"
value = "&pixelsPopup.value;"
align = "left"
popup = "PixelOrPercentMenu1"
popupanchor = "bottomleft"
onchange = "doValueChanged()" />
</td>
</tr>
<!-- IMAGE HEIGHT -->
<tr valign="middle">
<td/>
<td>
<label
class = "disabled"
for = "imageheightInput"
id = "imageheightLabel">
&heightEditField.label;
</label>
</td>
<td>
<input
type = "text"
size = "4"
length = "4"
id = "imageheightInput"
disabled = "true"
onfocus = "oldSourceInt = this.value;"
onkeyup = "constrainProportions(this.id, 'imagewidthInput')"
onchange = "doValueChanged()" />
</td>
<td>
<xul:titledbutton
class = "push popup"
id = "heightunitSelect"
style = "width: 50px;"
disabled = "true"
value = "&pixelsPopup.value;"
align = "left"
popup = "PixelOrPercentMenu2"
popupanchor = "bottomleft"
onchange = "doValueChanged()" />
</td>
</tr>
<!-- CONSTRAIN DIMENSIONS -->
<tr valign="middle">
<td/>
<td/>
<td colspan="2">
<input
type = "checkbox"
id = "constrainCheckbox" />
<label
class = "disabled"
id = "constrainLabel"
for = "constrainCheckbox">
&constrainCheckbox.label;
</label>
</td>
</tr>
</table>
</fieldset>
</td>
<td align="right">
<!-- IMAGE ALIGNMENT -->
<label
class = "selectbox"
for = "image.alignType"
id = "imagealignmentLabel">
&alignment.label;
</label>
<xul:titledbutton
id = "image.alignType"
src = "resource:/chrome/editor/skin/default/images/img-align-bottom.gif"
class = "push popup"
popup = "ImageTextAlignment"
popupanchor = "bottomleft"
align = "left"
onchange = "doValueChanged()" />
<fieldset
id = "spacing.fieldset">
<legend
id = "spacingLegend"
class = "disabled"
align = "left">
&spacingFieldset.label;
</legend>
<table cellspacing="0" cellpadding="0">
<tr valign="middle">
<td align="right">
<label
class = "disabled"
for = "imageleftrightInput"
id = "leftrightLabel">
&leftRightEditField.label;
</label>
</td>
<td>
<input
type = "text"
size = "4"
length = "4"
maxlength = "4"
id = "imageleftrightInput"
onkeyup = "forceInteger(this.id)"
onchange = "doValueChanged()"/>
</td>
<td valign="middle">
<label
class = "disabled"
for = "imageleftrightInput"
id = "leftrighttypeLabel">
&pixelsPopup.value;
</label>
</td>
</tr>
<tr valign="middle">
<td align="right">
<label
class = "disabled"
for = "imagetopbottomInput"
id = "topbottomLabel">
&topBottomEditField.label;
</label>
</td>
<td>
<input
type = "text"
size = "4"
length = "4"
maxlength = "4"
id = "imagetopbottomInput"
onkeyup = "forceInteger(this.id)"
onchange = "doValueChanged()"/>
</td>
<td valign="middle">
<label
class = "disabled"
for = "imagetopbottomInput"
id = "topbottomtypeLabel">
&pixelsPopup.value;
</label>
</td>
</tr>
<tr valign="middle">
<td align="right">
<label
class = "disabled"
for = "imageborderInput"
id = "borderLabel">
&borderEditField.label;
</label>
</td>
<td>
<input
type ="text"
size = "4"
length = "4"
maxlength = "4"
id = "imageborderInput"
onkeyup = "forceInteger(this.id)"
onchange = "doValueChanged()" />
</td>
<td valign="middle">
<label
class = "disabled"
for = "imageborderInput"
id = "bordertypeLabel">
&pixelsPopup.value;
</label>
</td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
</xul:box>
</div> <!-- END of block that is hidden by More/Less button -->
<!-- from EdDialogOverlay -->
<xul:box id="AdvancedEditButtonNoHR"/>
<!-- ///////////////////// End Parent Table //////////////////////////////////// -->
<!--
</td>
<!--//////// Borders and Spacing ////////-->
<fieldset>
<legend
class = "dialog"
id = "spacingLabel"
align = "left">
&spacingFieldset.label;
</legend>
<table>
<tr>
<td align="right">
<label
class = "dialog"
id = "leftrightLabel"
for = "imageleftrightInput">
&leftRightEditField.label;
</label>
</td>
<td>
<input
type = "text"
id = "imageleftrightInput"
size = "4"
length = "4"
maxlength = "4"
onkeyup = "forceInteger(this.id)"
onchange = "doValueChanged()"/>
</td>
<td>
<label
class = "dialog"
id = "leftrighttypeLabel"
for = "imageleftrightInput">
&pixelsPopup.value;
</label>
</td>
</tr>
<tr>
<td align="right">
<label
class = "dialog"
id = "topbottomLabel"
for = "imagetopbottomInput">
&topBottomEditField.label;
</label>
</td>
<td>
<input
type = "text"
id = "imagetopbottomInput"
size = "4"
length = "4"
maxlength = "4"
onkeyup = "forceInteger(this.id)"
onchange = "doValueChanged()"/>
</td>
<td>
<label
class = "dialog"
id = "topbottomtypeLabel"
for = "imagetopbottomInput">
&pixelsPopup.value;
</label>
</td>
</tr>
<tr>
<td align="right">
<label
class = "dialog"
id = "borderLabel"
for = "border">
&borderEditField.label;
</label>
</td>
<td>
<input
type ="text"
id = "border"
size = "4"
length = "4"
maxlength = "4"
onkeyup = "forceInteger(this.id)"
onchange = "doValueChanged()" />
</td>
<td valign="middle">
<label
class = "dialog"
id = "bordertypeLabel"
for = "border">
&pixelsPopup.value;
</label>
</td>
</tr>
</table>
</fieldset>
</td>
</tr>
</tbody>
</table>
-->
<div class="separator" align="horizontal"/>
<!-- ////////////////////////// OK CANCEL Box /////////////////////////////// -->
<!--/div-->
<!-- from global dialogOverlay -->
<xul:box id="okCancelButtons"/>
<!-- ///////////////////// Image Percent 1 PopUp Window //////////////////////// -->
<xul:popup id = "PixelOrPercentMenu1">
<xul:window
class = "popup"
xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
name = "menu2"
align = "vertical"
flex = "100%"
style="
background-color: #CCCCDD;
width: 70px;
height: auto;
display: block;
overflow: hidden;
font: 3mm tahoma,arial,helvetica,sans-serif;
padding: 0px;"
>
<xul:box align="vertical" flex="100%" style="border: 1px outset white;">
<xul:titledbutton
class = "push select"
value = "&pixelsPopup.value;"
align = "center"
style = "height:20px; vertical-align: middle;"
onclick = "opener.SetPixelOrPercentByID('heightunitSelect', '');
opener.popupSelectedImage('&pixelsPopup.value;', 'widthunitSelect', 'value');
window.close();"/>
<xul:titledbutton
class = "push select"
value = "&percentPopup.value;"
align = "center"
style = "height:20px; vertical-align: middle;"
onclick = "opener.SetPixelOrPercentByID('heightunitSelect', '%');
opener.popupSelectedImage('&percentPopup.value;', 'widthunitSelect', 'value');
window.close();"/>
</xul:box>
</xul:window>
</xul:popup>
<!-- ///////////////////// Image Percent 2 PopUp Window //////////////////////// -->
<xul:popup id = "PixelOrPercentMenu2">
<xul:window
class = "popup"
xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
name = "menu2"
align = "vertical"
flex = "100%"
style="
background-color: #CCCCDD;
width: 70px;
height: auto;
display: block;
overflow: hidden;
font: 3mm tahoma,arial,helvetica,sans-serif;
padding: 0px;"
>
<xul:box align="vertical" flex="100%" style="border: 1px outset white;">
<xul:titledbutton
class = "push select"
value = "&pixelsPopup.value;"
align = "center"
style = "height:20px; vertical-align: middle;"
onclick = "opener.SetPixelOrPercentByID('heightunitSelect', '');
opener.popupSelectedImage('&pixelsPopup.value;', 'heightunitSelect', 'value');
window.close();"/>
<xul:titledbutton
class = "push select"
value = "&percentPopup.value;"
align = "center"
style = "height:20px; vertical-align: middle;"
onclick = "opener.SetPixelOrPercentByID('heightunitSelect', '%');
opener.popupSelectedImage('&percentPopup.value;', 'heightunitSelect', 'value');
window.close();"/>
</xul:box>
</xul:window>
</xul:popup>
<!-- ///////////////////// Image Align PopUp Window //////////////////////// -->
<xul:popup id="ImageTextAlignment">
<xul:window
class = "popup"
xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
name = "imageAlignPopup"
align = "vertical"
flex = "100%"
style="
background-color: #CCCCDD;
width: auto;
height: auto;
display: block;
overflow: hidden;
font: 3mm tahoma,arial,helvetica,sans-serif;
padding: 0px;"
>
<xul:box align="vertical" flex="100%" style="border: 1px outset white;">
<xul:titledbutton class="push"
src = "&topIcon.url;"
value = "&topPopup.value;"
onclick = "opener.SetImageAlignment('top');
opener.popupSelectedImage('&topIcon.url;', 'image.alignType', 'src');
window.close();" />
<titledbutton class="push"
src = "&centerIcon.url;"
value ="&centerPopup.value;"
onclick = "opener.SetImageAlignment('middle');
opener.popupSelectedImage('&centerIcon.url;', 'image.alignType', 'src');
window.close();" />
<titledbutton class="push"
src = "&bottomIcon.url;"
value = "&bottomPopup.value;"
onclick = "opener.SetImageAlignment('bottom', 'image.alignType');
opener.popupSelectedImage('&bottomIcon.url;', 'image.alignType', 'src');
window.close();" />
<titledbutton class="push"
src = "&wrapRightIcon.url;"
value = "&wrapRightPopup.value;"
onclick = "opener.SetImageAlignment('left', 'image.alignType');
opener.popupSelectedImage('&wrapRightIcon.url;', 'image.alignType', 'src');
window.close();" />
<titledbutton class="push"
src = "&wrapLeftIcon.url;"
value = "&wrapLeftPopup.value;"
onclick = "opener.SetImageAlignment('right');
opener.popupSelectedImage('&wrapLeftIcon.url;', 'image.alignType', 'src');
window.close();" />
</xul:box>
</xul:window>
</xul:popup>
<!-- from EdDialogOverlay -->
<xul:box id="AdvancedEditButton"/>
<!-- from global dialogOverlay -->
<xul:box id="okCancelButtons"/>
</xul:window>
<!-- The old stuff:
<input type="checkbox"> Leave Image at Original Location
<input type="checkbox"> Page Background
<input type="button" value=" Edit Image "/>
<input type="button" value=" Remove Image Map " disabled />
-->

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

@ -44,7 +44,7 @@
<xul:keyset id="keyset"/>
<table>
<tr class="vcenter">
<tr>
<td align="right">
<label for="rows"> &numRowsEditField.label; </label>
</td>
@ -53,7 +53,7 @@
onkeyup="forceInteger('rows')" />
</td>
</tr>
<tr class="vcenter">
<tr>
<td align="right">
<label for="columns"> &numColumnsEditField.label; </label>
</td>
@ -62,7 +62,7 @@
onkeyup="forceInteger('columns')" />
</td>
</tr>
<tr class="vcenter">
<tr>
<td align="right">
<label for="width" > &widthEditField.label; </label>
</td>
@ -75,7 +75,7 @@
<!-- option elements are appended by JS -->
</td>
</tr>
<tr class="vcenter">
<tr>
<td align="right">
<label for="border"> &borderEditField.label; </label>
</td>

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

@ -218,6 +218,7 @@ function FillListboxes()
} else {
// Message to tell user there are none
AppendStringToList(NamedAnchorList,GetString("NoNamedAnchors"));
NamedAnchorList.setAttribute("disabled", "true");
}
var firstHeading = true;
for (var j = 1; j <= 6; j++) {
@ -263,6 +264,7 @@ function FillListboxes()
} else {
// Message to tell user there are none
AppendStringToList(HeadingsList,GetString("NoHeadings"));
HeadingsList.setAttribute("disabled", "true");
}
}
@ -295,24 +297,20 @@ function onMoreFewer()
{
if (SeeMore)
{
SeeMore = false;
// This doesn't work very well - lots of layout bugs
// MoreSection.setAttribute("style","visibility:collapse");
MoreSection.setAttribute("style","display: none");
MoreFewerButton.setAttribute("value",GetString("MoreAttributes"));
window.sizeToContent();
MoreFewerButton.setAttribute("more","0");
//AdvancedEditSection.setAttribute("style","display: none");
MoreFewerButton.setAttribute("value",GetString("MoreProperties"));
SeeMore = false;
}
else
{
SeeMore = true;
// MoreSection.setAttribute("style","visibility: inherit");
MoreSection.setAttribute("style","display: inherit");
MoreFewerButton.setAttribute("value",GetString("FewerAttributes"));
window.sizeToContent();
MoreFewerButton.setAttribute("more","1");
//AdvancedEditSection.setAttribute("style","display: inherit");
MoreFewerButton.setAttribute("value",GetString("FewerProperties"));
SeeMore = true;
}
window.sizeToContent();
}

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

@ -66,7 +66,7 @@
</box>
</box>
<!-- ***** The style: width setting is need to cover a bug in button width resizing when text changes ***** -->
<html:div><titledbutton class="push" id="MoreFewerButton" align="left" style="width: 10em" onclick="onMoreFewer()" persist="more"/></html:div>
<html:div><titledbutton class="push" id="MoreFewerButton" style="width: 10em" align="left" onclick="onMoreFewer()" persist="more"/></html:div>
<box id="MoreSection" align="vertical">
<spring class="spacer"/>
<html:div>&NamedAnchorMsg.label;</html:div>

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

@ -40,27 +40,27 @@
<xul:broadcaster id="args" value=""/>
<table>
<tr>
<tr valign="top">
<td colspan="3">
<label for="Word"> &wordEditField.label; </label>
</td>
</tr>
<tr>
<tr valign="top">
<td>
<input type="text" class="SpellCheckWord" id="Word" size="24"/>
</td>
<td>
<xul:titledbutton class="SizeToParent" id="CheckWord" onclick="CheckWord()" value="&checkwordButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="CheckWord" onclick="CheckWord()" value="&checkwordButton.label;"/>
</td>
<td>
</td>
</tr>
<tr>
<tr valign="top">
<td colspan="3">
<label> &suggestions.label; </label>
</td>
</tr>
<tr>
<tr valign="top">
<td rowspan="5">
<select class="SpellCheckList" id="SuggestedList" size="8" onchange="SelectSuggestedWord()">
</select>
@ -68,18 +68,18 @@
</tr>
<tr>
<td>
<xul:titledbutton class="SizeToParent" id="Ignore" onclick="Ignore()" value="&ignoreButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="Ignore" onclick="Ignore()" value="&ignoreButton.label;"/>
</td>
<td>
<xul:titledbutton class="SizeToParent" id="IgnoreAll" onclick="IgnoreAll()" value="&ignoreallButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="IgnoreAll" onclick="IgnoreAll()" value="&ignoreallButton.label;"/>
</td>
</tr>
<tr>
<tr valign="top">
<td>
<xul:titledbutton class="SizeToParent" id="Replace" onclick="Replace()" value="&changeButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="Replace" onclick="Replace()" value="&changeButton.label;"/>
</td>
<td>
<xul:titledbutton class="SizeToParent" id="ReplaceAll" onclick="ReplaceAll()" value="&changeallButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="ReplaceAll" onclick="ReplaceAll()" value="&changeallButton.label;"/>
</td>
</tr>
<tr>
@ -87,27 +87,27 @@
<label> &userDictionary.label; </label>
</td>
</tr>
<tr>
<tr valign="top">
<td>
<xul:titledbutton class="SizeToParent" id="AddToDictionary" onclick="AddToDictionary()" value="&addtouserdictionaryButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="AddToDictionary" onclick="AddToDictionary()" value="&addtouserdictionaryButton.label;"/>
</td>
<td>
<xul:titledbutton class="SizeToParent" id="EditDictionary" onclick="EditDictionary()" value="&edituserdictionaryButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="EditDictionary" onclick="EditDictionary()" value="&edituserdictionaryButton.label;"/>
</td>
</tr>
<tr>
<tr valign="top">
<td colspan="3">
<label> &languagePopup.label; </label>
</td>
</tr>
<tr>
<tr valign="top">
<td colspan="2">
<select class="SpellCheckLanguage" id="LanguageList" size="1" onchange="SelectLanguage()">
<option> &englishLanguagePopup.value; </option>
</select>
</td>
<td>
<xul:titledbutton class="SizeToParent" id="Close" onclick="Close()" value="&closeButton.label;"/>
<xul:titledbutton class="push SizeToParent" id="Close" onclick="Close()" value="&closeButton.label;"/>
</td>
</tr>
</table>

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

@ -21,5 +21,3 @@
-->
<!ENTITY AdvancedEditButton.label "Advanced Edit...">
<!ENTITY pixelsPopup.value "pixels">
<!ENTITY percentPopup.value "percent">

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

@ -20,12 +20,6 @@
- Contributor(s):
-->
<!-- These strings are generic to all or most of the editor's dialogs. -->
<!-- This button is for the progressive disclosure of additional editing functionality -->
<!-- THIS TEXT WILL CHANGE DYNAMICALLY, SO VALUES SHOULD BE IN Editor.properties STRING BUNDLE FILE -->
<!ENTITY MoreButton.label "More">
<!ENTITY FewerButton.label "Fewer">
<!-- These strings are for use specifically in the editor's image dialog. -->
<!-- Window title -->
@ -49,17 +43,12 @@
<!ENTITY constrainCheckbox.label "Constrain">
<!-- These are the options for image alignment -->
<!ENTITY alignment.label "Align Text to Image">
<!ENTITY alignment.label "Align Text to Image:">
<!ENTITY bottomPopup.value "at the bottom">
<!ENTITY topPopup.value "at the top">
<!ENTITY centerPopup.value "in the center">
<!ENTITY wrapRightPopup.value "wrap around right side">
<!ENTITY wrapLeftPopup.value "wrap around left side">
<!ENTITY bottomIcon.url "chrome://editor/skin/images/img-align-bottom.gif">
<!ENTITY topIcon.url "chrome://editor/skin/images/img-align-top.gif">
<!ENTITY centerIcon.url "chrome://editor/skin/images/img-align-middle.gif">
<!ENTITY wrapRightIcon.url "chrome://editor/skin/images/img-align-left.gif">
<!ENTITY wrapLeftIcon.url "chrome://editor/skin/images/img-align-right.gif">
<!ENTITY wrapRightPopup.value "wrap to the right">
<!ENTITY wrapLeftPopup.value "wrap to the left">
<!-- These controls are in the Spacing Fieldset of the expanded area -->
<!ENTITY spacingFieldset.label "Spacing">

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

@ -26,44 +26,23 @@
CHANGES REVIEWED BY cmanske@netscape.com.
*/
/* XUL ELEMENTS */
/* values = margin, padding. Padding doesn't work yet */
/* HTML ELEMENTS */
/* Should be in XUL.css? */
tab {
padding: 0px 3px;
}
table { cell-spacing: 0px; }
td, table { border: 0px;}
titledbutton#MoreFewerButton[more="0"] {
list-style-image: url(chrome://global/skin/scroll-down.gif)
}
titledbutton#MoreFewerButton[more="1"] {
list-style-image: url(chrome://global/skin/scroll-up.gif);
/* Use to center vertically in a table cell */
tr {
vertical-align: middle;
}
select.SpellCheckList, select.SpellCheckLanguage, input.SpellCheckWord {
width: 20em;
}
/* HTML ELEMENTS */
table { cell-spacing: 5px; }
td, table { border: 0px;}
/* Use to center vertically in a table cell */
.vcenter {
vertical-align: middle;
}
spring.spacer {
width: 5px;
height: 5px;
}
spring.bigspacer {
width: 10px;
height: 10px;
select.dialog {
font-size: smaller;
}
div.spacer [align~=horizontal] {
@ -76,12 +55,95 @@ div#message {
margin-left: 10px
}
/* XUL ELEMENTS */
/* values = margin, padding. Padding doesn't work yet */
/* Should be in XUL.css? */
tab {
padding: 0px 3px;
}
select#alignTypeSelect,label#alignLabel {
margin-left: 5px;
}
titledbutton#AdvancedEdit {
margin-left: 6px;
min-width: 10em;
}
titledbutton#MoreFewerButton[more="0"] {
margin-left: 6px;
list-style-image: url(chrome://global/skin/scroll-down.gif);
/* use this after Eric fixes button width bug */
/* width: 10em */
}
titledbutton#MoreFewerButton[more="1"] {
margin-left: 6px;
list-style-image: url(chrome://global/skin/scroll-up.gif);
/* width: 10em */
}
/* THIS SHOULD BE IN GLOBAL.CSS */
label.dialog[disabled],legend.dialog[disabled] {
color: gray;
}
/* Link Properties */
titledbutton#SaveDefault {
margin-right: 6px;
width: 7em;
}
titledbutton[class~=SizeToParent] {
width: 100%;
}
spring.spacer {
width: 5px;
height: 5px;
}
spring.bigspacer {
width: 10px;
height: 10px;
}
box.tabpanel {
border: 1px outset #CCCCDD;
padding: 10px;
}
img.AlignIcon {
margin-right: 5px;
/* To make all align the same */
/*vertical-align: middle;*/
}
titledbutton#img-align-top {
list-style-image:url("chrome://editor/skin/images/img-align-top.gif");
}
titledbutton#img-align-middle {
list-style-image:url("chrome://editor/skin/images/img-align-middle.gif");
}
titledbutton#img-align-bottom {
list-style-image:url("chrome://editor/skin/images/img-align-bottom.gif");
}
titledbutton#img-align-left {
list-style-image:url("chrome://editor/skin/images/img-align-left.gif");
}
titledbutton#img-align-right {
list-style-image:url("chrome://editor/skin/images/img-align-right.gif");
}
/* Rest are from Ben Goodger for Advanced Edit dialog
These need reviewing and eliminate all but essential attributes */
div.tagname {
font-weight: bold;
font-size : 17px;
/*font-size : 17px;*/
}
div#tagLabel {
@ -159,23 +221,9 @@ input.AttributesCell {
border: none;
height: 100%;
}
/*
input.AttributesCell:active {
border: 1px white inset;
}
input.AttributesCell:hover {
border: 1px white inset;
}
*/
treecell input:hover {
background-color: #ECECEC;
font-weight : bold;
border : 2px solid #666699;
}
box.tabpanel {
border: 1px outset #CCCCDD;
padding: 10px;
}