nsbeta3 UI fixes: HTML source editor bugs 50034, 41869) r=sfraser, fixed Send Page commands for rcassin, changed to using value on title tag (related to 42331), List, Page Colors and other dialog cleanup (47686, 47695), r=rcassin, sfraser, ben

git-svn-id: svn://10.0.0.236/trunk@77573 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
cmanske%netscape.com
2000-08-30 02:44:18 +00:00
parent 213ac26628
commit 1cdcda78c0
26 changed files with 549 additions and 422 deletions

View File

@@ -141,6 +141,7 @@ function SetupComposerWindowCommands()
commandManager.registerCommand("cmd_revert", nsRevertCommand);
commandManager.registerCommand("cmd_openRemote", nsOpenRemoteCommand);
commandManager.registerCommand("cmd_preview", nsPreviewCommand);
commandManager.registerCommand("cmd_editSendPage", nsSendPageCommand);
commandManager.registerCommand("cmd_quit", nsQuitCommand);
commandManager.registerCommand("cmd_close", nsCloseCommand);
commandManager.registerCommand("cmd_preferences", nsPreferencesCommand);
@@ -392,9 +393,9 @@ function CloseWindow()
{
FinishHTMLSource();
// Close window; check to make sure document is saved
var result = CheckAndSaveDocument(window.editorShell.GetString("BeforeClosing"));
if (result == true) // If they saved the document, or it is unchanged, exit
// Check to make sure document is saved. "true" means allow "Don't Save" button,
// so user can choose to close without saving
if (CheckAndSaveDocument(window.editorShell.GetString("BeforeClosing"), true))
{
if (window.InsertCharWindow)
SwitchInsertCharToAnotherEditorOrClose();
@@ -441,31 +442,51 @@ var nsPreviewCommand =
{
isCommandEnabled: function(aCommand, dummy)
{
// maybe disable if we haven't saved?
// return (window.editorShell && !window.editorShell.documentModified);
return (window.editorShell != null);
return (window.editorShell != null && (DocumentHasBeenSaved() || window.editorShell.documentModified));
},
doCommand: function(aCommand)
{
FinishHTMLSource();
// Don't continue if user canceled during prompt for saving
if (!CheckAndSaveDocument(window.editorShell.GetString("BeforePreview")))
// DocumentHasBeenSaved will test if we have a URL and suppress "Don't Save" button if not
if (!CheckAndSaveDocument(window.editorShell.GetString("BeforePreview"), DocumentHasBeenSaved()))
return;
var fileurl = "";
try {
fileurl = window._content.location;
} catch (e) {
return;
}
// Check if we saved again just in case?
if (DocumentHasBeenSaved())
window.openDialog(getBrowserURL(), "EditorPreview", "chrome,all,dialog=no", window._content.location);
}
};
// CheckAndSave doesn't tell us if the user said "Don't Save",
// so make sure we have a url:
if (fileurl != "" && fileurl != "about:blank")
{
window.openDialog(getBrowserURL(), "EditorPreview", "chrome,all,dialog=no", fileurl);
}
//-----------------------------------------------------------------------------------
var nsSendPageCommand =
{
isCommandEnabled: function(aCommand, dummy)
{
return (window.editorShell != null && (DocumentHasBeenSaved() || window.editorShell.documentModified));
},
doCommand: function(aCommand)
{
FinishHTMLSource();
// Don't continue if user canceled during prompt for saving
// DocumentHasBeenSaved will test if we have a URL and suppress "Don't Save" button if not
if (!CheckAndSaveDocument(window.editorShell.GetString("SendPageReason"), DocumentHasBeenSaved()))
return;
// Check if we saved again just in case?
if (DocumentHasBeenSaved())
{
// Lauch Messenger Composer window with current page as contents
var pageTitle = window.editorShell.editorDocument.title;
var pageUrl = window.editorShell.editorDocument.location;
window.openDialog("chrome://messenger/content/messengercompose/messengercompose.xul", "_blank",
"chrome,all,dialog=no", "attachment='" + pageUrl + "',body='" + pageUrl +
"',subject='" + pageTitle + "',bodyislink=true");
}
}
};
@@ -765,7 +786,7 @@ var nsPagePropertiesCommand =
},
doCommand: function(aCommand)
{
window.openDialog("chrome://editor/content/EdPageProps.xul","_blank", "chrome,close,titlebar,modal,resizable", "");
window.openDialog("chrome://editor/content/EdPageProps.xul","_blank", "chrome,close,titlebar,modal", "");
}
};

View File

@@ -342,49 +342,29 @@ function editorSendPage()
"chrome,all,dialog=no", "attachment='" + pageUrl + "',body='" + pageUrl +
"',subject='" + pageTitle + "',bodyislink=true");
}
else if (CheckAndSaveDocument(GetString("SendPageReason")))
else if (CheckAndSaveDocument(GetString("SendPageReason")), DocumentHasBeenSaved())
editorSendPage();
window._content.focus();
}
/*
// This is redundant -- use CheckAndSaveDocument instead
function sendPageMustSave()
function DocumentHasBeenSaved()
{
var result = {value:0};
commonDialogsService.UniversalDialog(
window,
null,
window.editorShell.GetString("SendPage"),
window.editorShell.GetString("SendPageCaption"),
null,
window.editorShell.GetString("Yes"),
window.editorShell.GetString("No"),
null,
null,
null,
null,
{value:0},
{value:0},
"chrome://global/skin/question-icon.gif",
{value:"false"},
2,
0,
0,
result
);
if (result.value == 0) // They chose "Yes" -- they'd like to save their document now
{
var returned = window.editorShell.saveDocument(false, false);
if (returned)
editorSendPage(); // They saved the page, now we can send page :)
fileurl = "";
try {
fileurl = window._content.location;
} catch (e) {
return false;
}
}
*/
function CheckAndSaveDocument(reasonToSave)
if (fileurl == "" || fileurl == "about:blank")
return false;
// We have a file URL already
return true;
}
function CheckAndSaveDocument(reasonToSave, allowDontSave)
{
var document = editorShell.editorDocument;
if (!editorShell.documentModified)
@@ -407,7 +387,7 @@ function CheckAndSaveDocument(reasonToSave)
null,
window.editorShell.GetString("Save"), // Save Button
window.editorShell.GetString("Cancel"), // Cancel Button
window.editorShell.GetString("DontSave"), // Don't Save Button
(allowDontSave ? window.editorShell.GetString("DontSave") : null), // Don't Save Button
null,
null,
null,
@@ -415,7 +395,7 @@ function CheckAndSaveDocument(reasonToSave)
{value:0},
"chrome://global/skin/question-icon.gif",
{value:"false"},
3,
(allowDontSave ? 3 : 2),
0,
0,
result
@@ -462,7 +442,8 @@ function EditorCanClose()
// Returns FALSE only if user cancels save action
//dump("Calling EditorCanClose\n");
var canClose = CheckAndSaveDocument(GetString("BeforeClosing"));
// "true" means allow "Don't Save" button
var canClose = CheckAndSaveDocument(GetString("BeforeClosing"), true);
// This is our only hook into closing via the "X" in the caption
// or "Quit" (or other paths?)
@@ -476,34 +457,6 @@ function EditorCanClose()
// --------------------------- View menu ---------------------------
function EditorViewSource()
{
// Temporary hack: save to a file and call up the source view window
// using the local file url.
if (CheckAndSaveDocument(GetString("BeforeViewSource")))
return;
fileurl = "";
try {
fileurl = window._content.location;
} catch (e) {
return;
}
// CheckAndSave doesn't tell us if the user said "Don't Save",
// so make sure we have a url:
if (fileurl != "" && fileurl != "about:blank")
{
// Use a browser window to view source
window.openDialog( "chrome://navigator/content/viewSource.xul",
"_blank",
"chrome,menubar,status,dialog=no,resizable",
fileurl,
"view-source" );
}
}
function EditorSetDocumentCharacterSet(aCharset)
{
if(editorShell)
@@ -822,16 +775,24 @@ function EditorSelectColor(colorType)
// Launch the ColorPicker dialog
// TODO: Figure out how to position this under the color buttons on the toolbar
window.openDialog("chrome://editor/content/EdColorPicker.xul", "_blank", "chrome,close,titlebar,modal", "", gColorObj);
// User canceled the dialog
if (gColorObj.Cancel)
return;
var broadcaster;
if (colorType == "Text")
{
if (currentColor != gColorObj.TextColor)
window.editorShell.SetTextProperty("font", "color", gColorObj.TextColor);
// Trying to force updating of "state" in command node
// so next caret move updates color button, but not working!
//goUpdateCommand("cmd_fontColor");
SetTextColorButton(gColorObj.TextColor);
// Update the broadcaster state (this will trigger color button update)
broadcaster = document.getElementById("cmd_fontColor");
if (broadcaster)
broadcaster.setAttribute("state",gColorObj.TextColor);
//SetTextColorButton(gColorObj.TextColor);
}
else if (element)
{
@@ -853,9 +814,10 @@ function EditorSelectColor(colorType)
}
else if (currentColor != gColorObj.BackgroundColor)
window.editorShell.SetBackgroundColor(gColorObj.BackgroundColor);
// goUpdateCommand("cmd_backgroundColor");
SetBackgroundColorButton(gColorObj.BackgroundColor);
broadcaster = document.getElementById("cmd_backgroundColor");
if (broadcaster)
broadcaster.setAttribute("state",gColorObj.BackgroundColor);
}
window._content.focus();
}
@@ -909,31 +871,28 @@ function SetEditMode(mode)
if (mode == DisplayModeSource)
{
// Get the current contents and output into the SourceWindow
if (bodyNode)
// Get the entire document's source string
var source = editorShell.GetContentsAs("text/html", 0);
if (source.length > 0)
{
var childCount = bodyNode.childNodes.length;
if( childCount)
{
gSourceContentWindow.setAttribute("value",editorShell.GetContentsAs("text/html", 0)); //gOutputBodyOnly));
gSourceContentWindow.focus();
// Note: We can't set the caret location in a multiline textfield
return;
}
// Don't include anything before "<head", such as "<DOCTYPE..."
headStart = source.indexOf("<head");
if (headStart > 0)
gSourceContentWindow.value = source.slice(headStart);
else
headStart = source;
gSourceContentWindow.focus();
}
// If we fall through, revert to previous node
SetDisplayMode(PreviousNonSourceDisplayMode);
else
SetDisplayMode(PreviousNonSourceDisplayMode);
}
else if (previousMode == DisplayModeSource)
{
// We are comming from edit source mode,
// so transfer that back into the document
//TODO: THIS IS NOT WORKING YET!
editorShell.RebuildDocumentFromSource(gSourceContentWindow.value);
/*
editorShell.SelectAll();
editorShell.InsertSource(gSourceContentWindow.value);
*/
// Clear out the source editor buffer
gSourceContentWindow.value = "";
@@ -1040,6 +999,32 @@ function SetDisplayMode(mode)
window._content.focus();
}
// We must set check on menu item since toolbar may have been used
document.getElementById("viewPreviewMode").setAttribute("checked","false");
document.getElementById("viewNormalMode").setAttribute("checked","false");
document.getElementById("viewAllTagsMode").setAttribute("checked","false");
document.getElementById("viewSourceMode").setAttribute("checked","true");
var menuID;
switch(mode)
{
case DisplayModePreview:
menuID = "viewPreviewMode";
break;
case DisplayModeNormal:
menuID = "viewNormalMode";
break;
case DisplayModeAllTags:
menuID = "viewAllTagsMode";
break;
case DisplayModeSource:
menuID = "viewSourceMode";
break;
}
if (menuID.length > 0)
document.getElementById(menuID).setAttribute("checked","true");
return true;
}
}
@@ -1048,7 +1033,6 @@ function SetDisplayMode(mode)
function DisableMenusForHTMLSource(disable)
{
// Disable toolbar buttons
DisableItem("findButton", disable);
DisableItem("spellingButton", disable);
DisableItem("imageButton", disable);
DisableItem("hlineButton", disable);
@@ -1056,6 +1040,10 @@ function DisableMenusForHTMLSource(disable)
DisableItem("linkButton", disable);
DisableItem("namedAnchorButton", disable);
// Any toolbar can be toggled on/off except the format toolbar
DisableItem("viewFormatToolbar", disable);
// Top-level menus that we completely hide
CollapseItem("insertMenu", disable);
CollapseItem("formatMenu", disable);
@@ -1073,7 +1061,8 @@ function DisableMenusForHTMLSource(disable)
for (var i = 0; i < children.length; i++)
{
var item = children.item(i);
if (item.id != "viewNormalMode" &&
if (item.id != "viewToolbar" &&
item.id != "viewNormalMode" &&
item.id != "viewAllTagsMode" &&
item.id != "viewSourceMode" &&
item.id != "viewPreviewMode" &&

View File

@@ -148,8 +148,8 @@
<command id="cmd_saveAs" value="&saveAsCmd.label;" oncommand="goDoCommand('cmd_saveAs')"/>
<command id="cmd_saveAsCharset" value="&saveAsCharsetCmd.label;" oncommand="goDoCommand('cmd_saveAsCharset')"/>
<command id="cmd_revert" value="&fileRevert.label;" oncommand="goDoCommand('cmd_revert')"/>
<command id="cmd_preview" oncommand="goDoCommand('cmd_preview')"/>
<command id="cmd_preview" oncommand="goDoCommand('cmd_preview')"/>
<command id="cmd_editSendPage" value="&sendPageCmd.label;" oncommand="goDoCommand('cmd_editSendPage')"/>
</commandset>
@@ -309,8 +309,9 @@
<menuitem accesskey="&filerevert.accesskey;" observes="cmd_revert"/>
<menuseparator />
<!-- FRAME, LINK should go here, but nav must put them in global files -->
<menuitem id="menu_preview" value="&previewCmd.label;" accesskey="&filepreview.accesskey;" observes="cmd_preview"/>
<menuitem id="menu_sendPage" value="&sendPageCmd.label;" accesskey="&sendPage.accesskey;" oncommand="editorSendPage();"/>
<menuitem id="menu_preview" value="&previewCmd.label;" accesskey="&filepreview.accesskey;" observes="cmd_preview"/>
<!-- Editor needs a different menuItem and cmd node than other module's send page (we need to prompt for filesave) -->
<menuitem id="menu_editSendPage" accesskey="&sendPage.accesskey;" observes="cmd_editSendPage"/>
<menuseparator />
<menuitem accesskey="&fileprintsetup.accesskey;" observes="cmd_printSetup" />
<menuitem accesskey="&fileprintpreview.accesskey;" observes="cmd_printPreview"/>
@@ -345,11 +346,10 @@
<!-- view menu items -->
<menu id="viewToolbar" value="&viewToolbarsMenu.label;" accesskey="&viewToolbarsMenu.accesskey;">
<menupopup>
<menuitem value="&compositionToolbarCmd.label;" type="checkbox" accesskey="&compositiontb.accesskey;" observes="cmd_viewCompToolbar" />
<menuitem value="&formattingToolbarCmd.label;" type="checkbox" accesskey="&formattingtb.accesskey;" observes="cmd_viewFormatToolbar" />
<menuitem value="&editmodeToolbarCmd.label;" type="checkbox" accesskey="&editmodetb.accesskey;" observes="cmd_viewEditModeToolbar" />
<menuitem value="&taskbarCmd.label;" type="checkbox" accesskey="&taskbarCmd.accesskey;" observes="cmd_viewtaskbar" />
<menuitem id="viewComposerToolbar" value="&compositionToolbarCmd.label;" type="checkbox" accesskey="&compositiontb.accesskey;" observes="cmd_viewCompToolbar" />
<menuitem id="viewFormatToolbar" value="&formattingToolbarCmd.label;" type="checkbox" accesskey="&formattingtb.accesskey;" observes="cmd_viewFormatToolbar" />
<menuitem id="viewEditModeToolbar" value="&editmodeToolbarCmd.label;" type="checkbox" accesskey="&editmodetb.accesskey;" observes="cmd_viewEditModeToolbar" />
<menuitem id="viewTaskBar" value="&taskbarCmd.label;" type="checkbox" accesskey="&taskbarCmd.accesskey;" observes="cmd_viewtaskbar" />
</menupopup>
</menu>

View File

@@ -49,8 +49,7 @@
<box class="box-smallheader" title="&lHeader;"/>
<titledbox orient="vertical" autostretch="never">
<title><text value="&tableEditing.label;"/></title>
<title value="&tableEditing.label;"/>
<checkbox
value = "&maintainTableStructure.label;"
id = "maintainTableStructure"
@@ -84,7 +83,7 @@
<!-- Recent files menu -->
<titledbox orient="vertical">
<title><text value="&recentFiles.title;"/></title>
<title value="&recentFiles.title;"/>
<box align="horizontal" valign="middle">
<text value="&documentsInMenu;"/>
<textfield
@@ -104,7 +103,7 @@
<!-- Take out Auto-Save; not supported at this time
-->
<titledbox orient="vertical">
<title><text value="&saving;"/></title>
<title value="&saving;"/>
<box align="horizontal" valign="middle">
<checkbox
value = "&AutoSaveCheck;"
@@ -132,7 +131,7 @@
<!-- HTML formatting on output -->
<titledbox orient="vertical">
<title><text value="&savingFiles.title;"/></title>
<title value="&savingFiles.title;"/>
<box align="horizontal" valign="middle">
<checkbox
value = "&preserveExistingFormatting;"
@@ -148,7 +147,7 @@
<!-- External Editors are not supported at this time
<titledbox orient="vertical">
<title><text value="&exterLegend.label;"/></title>
<title value="&exterLegend.label;"/>
<box>
<checkbox
name = "htmlSourceEditorCheckbox"

View File

@@ -45,14 +45,14 @@
<box class="box-smallheader" title="&lHeader;"/>
<titledbox orient="vertical">
<title><text value="&authorName.label;"/></title>
<title value="&authorName.label;"/>
<textfield id="editorAuthor" flex="1"
pref="true" preftype="string" prefstring="editor.author"
prefattribute="value"/>
</titledbox>
<titledbox orient="vertical">
<title><text value="&pageColorHeader;"/></title>
<title value="&pageColorHeader;"/>
<box>
<box orient="vertical">

View File

@@ -38,14 +38,12 @@ Alert=Alert
CantEditFramesetMsg=This editor cannot edit HTML framesets. Try editing the page for each frame separately.
CantEditMimeTypeMsg=This type of page can't be edited.
CantEditDocumentMsg=This page can't be edited for some reason.
HTMLFiles=HTML Files
IMGFiles=Image Files
TextFiles=Text Files
AllFiles=All Files
BeforeClosing= before closing
BeforeViewSource=in order to view source
BeforePreview=in order to preview
BeforeClosing=before closing
BeforePreview=before previewing in Navigator
# LOCALIZATION NOTE (SaveFilePrompt): Don't translate %title% and %reason% (this is the reason for asking user to close, such as "before closing")
SaveFilePrompt=Save changes to "%title%" %reason%?
SaveFileFailed=Saving file failed!
@@ -91,10 +89,15 @@ untitled=untitled
NoNamedAnchors=(No named anchors in this page)
NoHeadings=(No headings without anchors)
TextColor=Text Color
PageBackgroundColor=Page Background Color
TableBackgroundColor=Table Background Color
CellBackgroundColor=Cell Background Color
PageColor=Page Background Color
TableColor=Table Background Color
CellColor=Cell Background Color
TableOrCellColor=Table or Cell Color
LinkColor=Link Text Color
ActiveLinkColor=Active Link Color
VisitedLinkColor=Visited Link Color
Color=Color
NoColorError=Click on a color or enter a valid HTML color string
Table=Table
TableCell=Table Cell
HLine=Horizontal Line

View File

@@ -106,7 +106,6 @@ function Startup()
**/
function onOK()
{
dump("in onOK\n")
UpdateObject(); // call UpdateObject fn to update element in document
window.opener.AdvancedEditOK = true;
window.opener.globalElement = element;
@@ -191,7 +190,7 @@ function doRemoveAttribute( which )
switch ( tree.id ) {
case "HTMLATree":
HTMLRAttrs[HTMLRAttrs.length] = TrimString(name.getAttribute("value"));
dump("HTMLRAttrs[" + (HTMLRAttrs.length - 1) + "]: " + HTMLRAttrs[HTMLRAttrs.length-1] + "\n");
// dump("HTMLRAttrs[" + (HTMLRAttrs.length - 1) + "]: " + HTMLRAttrs[HTMLRAttrs.length-1] + "\n");
break;
case "CSSATree":
CSSRAttrs[CSSRAttrs.length] = TrimString(name.getAttribute("value"));

View File

@@ -102,7 +102,7 @@
<box orient="vertical">
<spring class="spacer"/>
<titledbox orient="vertical">
<title><text value="&AddHTMLAttributeLabel.label;"/></title>
<title value="&AddHTMLAttributeLabel.label;"/>
<box autostretch="never">
<text class="label" for="AddHTMLAttributeNameInput" value="&AttName.label;"/>
<textfield flex="1" id="AddHTMLAttributeNameInput" onkeyup="doHTMLEnabling(event.keyCode)" onmouseup="doHTMLEnabling(event.which)"/>
@@ -134,7 +134,7 @@
<box orient="vertical">
<spring class="spacer"/>
<titledbox orient="vertical">
<title><text value="&AddCSSAttributeLabel.label;"/></title>
<title value="&AddCSSAttributeLabel.label;"/>
<box autostretch="never">
<text class="label" for="AddCSSAttributeNameInput" value="&AttName.label;"/>
<textfield flex="1" id="AddCSSAttributeNameInput" onkeyup="doCSSEnabling(event.keyCode)" onmouseup="doHTMLEnabling(event.which)"/>
@@ -166,7 +166,7 @@
<box orient="vertical">
<spring class="spacer"/>
<titledbox orient="vertical">
<title><text value="&AddJSEAttributeLabel.label;"/></title>
<title value="&AddJSEAttributeLabel.label;"/>
<box autostretch="never">
<text class="label" for="AddJSEAttributeNameInput" value="&AttName.label;"/>
<textfield type="text" flex="1" id="AddJSEAttributeNameInput" onkeyup="doJSEEnabling(event.keyCode)" onmouseup="doHTMLEnabling(event.which)"/>

View File

@@ -25,11 +25,14 @@
var insertNew = true;
var tagname = "TAG NAME"
var dialog;
var color = "";
var LastPickedColor = "";
var ColorType; // = "Text";
var ColorType = "Text";
var TextType = false;
var TableOrCell = false;
var LastPickedIsDefault = true;
var gLocation;
var NoDefault = false;
// dialog initialization code
function Startup()
@@ -40,6 +43,8 @@ function Startup()
return;
}
window.arguments[1].Cancel = false;
// Create dialog object to store controls for easy access
dialog = new Object;
@@ -53,34 +58,40 @@ function Startup()
dialog.ColorSwatch = document.getElementById("ColorPickerSwatch");
// The type of color we are setting:
// Text, or background: Page, Table, or Cell
ColorType = window.arguments[1].Type;
// text: Text, Link, ActiveLink, VisitedLink,
// or background: Page, Table, or Cell
if (window.arguments[1].Type)
{
ColorType = window.arguments[1].Type;
// Get string for dialog title from passed-in type
// (note constraint on editor.properties string name)
window.title = GetString(ColorType+"Color");
}
if (!window.title)
window.title = GetString("Color");
dialog.ColorInput.value = "";
var color = "";
// window.arguments[1] is object to set initial and return color
switch (ColorType)
{
case "Page":
window.title = GetString("PageBackgroundColor");
if (window.arguments[1].PageColor)
color = window.arguments[1].PageColor;
break;
case "Table":
window.title = GetString("TableBackgroundColor");
if (window.arguments[1].TableColor)
color = window.arguments[1].TableColor;
break;
case "Cell":
window.title = GetString("CellBackgroundColor");
if (window.arguments[1].CellColor)
color = window.arguments[1].CellColor;
break;
case "TableOrCell":
TableOrCell = true;
document.getElementById("TableOrCellGroup").setAttribute("collapsed", "false");
window.title = GetString("TableOrCellColor");
if (window.arguments[1].TableColor)
{
color = window.arguments[1].TableColor;
@@ -88,14 +99,13 @@ function Startup()
}
else
{
if (window.arguments[1].CellColor)
color = window.arguments[1].CellColor;
color = window.arguments[1].CellColor;
dialog.CellRadio.checked = true;
}
break;
default:
window.title = GetString("TextColor");
// Any other type will change some kind of text,
TextType = true;
if (window.arguments[1].TextColor)
color = window.arguments[1].TextColor;
break;
@@ -103,16 +113,14 @@ function Startup()
SetCurrentColor(color)
if (ColorType == "Text")
if (TextType)
LastPickedColor = dialog.LastPickedColor.getAttribute("LastTextColor");
else
LastPickedColor = dialog.LastPickedColor.getAttribute("LastBackgroundColor");
dump("LastPickedColor = "+LastPickedColor+"|\n");
dialog.LastPickedColor.setAttribute("style","background-color: "+LastPickedColor);
doSetOKCancel(onOK, onCancel);
doSetOKCancel(onOK, onCancelColor);
// Set method to detect clicking on OK button
// so we don't get fooled by changing "default" behavior
@@ -120,10 +128,17 @@ dump("LastPickedColor = "+LastPickedColor+"|\n");
// Make the "Last-picked" the default button
// until the user selects a color
dialog.Ok.removeAttribute("default");
dialog.LastPickedButton.setAttribute("default","true");
// Caller can prevent user from submitting an empty, i.e., default color
NoDefault = window.arguments[1].NoDefault;
if (NoDefault)
{
// Hide the "Default button -- user must pick a color
document.getElementById("DefaultColorButton").setAttribute("collapsed","true");
}
SetTextfieldFocus(dialog.ColorInput);
SetWindowLocation();
@@ -162,6 +177,7 @@ function SelectLastPickedColor()
function SetCurrentColor(color)
{
// TODO: Validate color?
if(!color) color = "";
dialog.ColorInput.value = color.trimString().toLowerCase();
SetColorSwatch();
}
@@ -198,21 +214,32 @@ function onOKClick()
window.close();
}
function onOK()
function ValidateData()
{
var color;
if (LastPickedIsDefault)
color = LastPickedColor;
else
color = dialog.ColorInput.value;
color = color.trimString().toLowerCase();
// TODO: Validate the color string!
dump("ColorPicker onOK: color = "+color+"|\n");
if (NoDefault && color.length == 0)
{
ShowInputErrorMessage(GetString("NoColorError"));
SetTextfieldFocus(dialog.ColorInput);
return false;
}
return true;
}
function onOK()
{
if (!ValidateData()) return;
// Set return values and save in persistent color attributes
if (ColorType == "Text")
if (TextType)
{
window.arguments[1].TextColor = color;
if (color.length > 0)
@@ -232,3 +259,11 @@ dump("ColorPicker onOK: color = "+color+"|\n");
return true; // do close the window
}
function onCancelColor()
{
// Tells caller that user canceled
window.arguments[1].Cancel = true;
SaveWindowLocation();
window.close();
}

View File

@@ -84,7 +84,7 @@
<spring flex="1"/>
<spring id="ColorPickerSwatch"/>
<spring flex="1"/>
<button class="dialog" value="&default.label;"
<button id="DefaultColorButton" class="dialog" value="&default.label;"
style="margin-right:0px;" oncommand="RemoveColor()"/>
</box>
</box>

View File

@@ -28,31 +28,25 @@
When in "Custom Colors" mode, all colors will be set on body tag,
even if they are just default colors, to assure compatable colors in page.
User cannot select "use default" for individual colors
When in UseDefaultColors mode, the color buttons can be used,
Instead of disabling using color buttons while in UseDefault mode,
and we switch to UseCustom mode automatically
This let's user start with default palette as starting point for
really setting colors
(2_13 Can't disable color buttons anyway!)
*/
//Cancel() is in EdDialogCommon.js
var BodyElement;
var prefs;
var lastSetBackgroundImage;
var backgroundImage;
// Initialize in case we can't get them from prefs???
var defaultTextColor="#000000";
var defaultLinkColor="#000099";
var defaultVisitedLinkColor="#990099";
var defaultActiveColor="#000099";
var defaultVisitedColor="#990099";
var defaultBackgroundColor="#FFFFFF";
// Save
var customTextColor;
var customLinkColor;
var customVisitedColor;
var customActiveColor;
var customVisitedColor;
var customBackgroundColor;
// Strings we use often
@@ -64,6 +58,7 @@ var alinkStr = "alink";
var bgcolorStr = "bgcolor";
var backgroundStr = "background";
var colorStyle = "color: ";
var backColorStyle = "background-color: ";
var backImageStyle = " background-image: url(";
// dialog initialization code
@@ -94,7 +89,6 @@ function Startup()
dump("Failed to get BODY element!\n");
window.close();
}
dump(BodyElement+"\n");
// Set element we will edit
globalElement = BodyElement.cloneNode(false);
@@ -105,14 +99,11 @@ function Startup()
var prefs = GetPrefs();
if (prefs)
{
dump("Getting browser prefs...\n");
// This doesn't necessarily match what appears in the page
// It is complicated by browser.display.use_document_colors
// TODO: WE MUST FORCE WINDOW TO USE DOCUMENT COLORS!!!
// How do we do that without changing browser prefs?
var useDocumentColors = prefs.GetBoolPref("browser.display.use_document_colors");
dump("browser.display.use_document_colors = "+ useDocumentColors+"\n");
if (useDocumentColors)
{
// How do I get current colors as show in page?
@@ -122,20 +113,14 @@ function Startup()
defaultTextColor = prefs.CopyCharPref("browser.display.foreground_color");
defaultLinkColor = prefs.CopyCharPref("browser.anchor_color");
// Note: Browser doesn't store a value for ActiveLinkColor
defaultVisitedLinkColor = prefs.CopyCharPref("browser.visited_color");
defaultActiveColor = defaultLinkColor;
defaultVisitedColor = prefs.CopyCharPref("browser.visited_color");
defaultBackgroundColor= prefs.CopyCharPref("browser.display.background_color");
}
catch (ex) {
dump("Failed getting browser colors from prefs\n");
}
}
try {
// Get the last-set background image
lastSetBackgroundImage = prefs.CopyCharPref("editor.default_background_image");
}
catch (ex) {
dump("Failed getting browser colors from prefs\n");
}
}
InitDialog();
@@ -149,159 +134,235 @@ function Startup()
function InitDialog()
{
SetColor("textCW", globalElement.getAttribute(textStr));
SetColor("linkCW", globalElement.getAttribute(linkStr));
SetColor("visitedCW", globalElement.getAttribute(vlinkStr));
SetColor("activeCW", globalElement.getAttribute(alinkStr));
SetColor("backgroundCW", globalElement.getAttribute(bgcolorStr));
if (dialog.textColor ||
dialog.linkColor ||
dialog.visitedLinkColor ||
dialog.activeLinkColor ||
dialog.backgroundColor)
// Get image from document
backgroundImage = globalElement.getAttribute(backgroundStr);
if (backgroundImage.length > 0)
{
dialog.BackgroundImageInput.value = backgroundImage;
dialog.ColorPreview.setAttribute(styleStr, backImageStyle+backgroundImage+");");
}
customTextColor = globalElement.getAttribute(textStr);
customLinkColor = globalElement.getAttribute(linkStr);
customActiveColor = globalElement.getAttribute(alinkStr);
customVisitedColor = globalElement.getAttribute(vlinkStr);
customBackgroundColor = globalElement.getAttribute(bgcolorStr);
if (customTextColor ||
customLinkColor ||
customVisitedColor ||
customActiveColor ||
customBackgroundColor)
{
// Set default color explicitly for any that are missing
if (!customTextColor) customTextColor = defaultTextColor;
if (!customLinkColor) customLinkColor = defaultLinkColor;
if (!customActiveColor) customActiveColor = defaultActiveColor;
if (!customVisitedColor) customVisitedColor = defaultVisitedColor;
if (!customBackgroundColor) customBackgroundColor = defaultBackgroundColor;
// If any colors are set, then check the "Custom" radio button
dialog.CustomColorsRadio.checked = true;
} else {
dialog.DefaultColorsRadio.checked = true;
UseCustomColors();
}
// Save a copy to use when switching from UseDefault to UseCustom
SaveCustomColors();
// Get image from document
dialog.BackgroundImage = globalElement.getAttribute(backgroundStr);
if (dialog.BackgroundImage)
else
{
dialog.BackgroundImageInput.value = dialog.BackgroundImage;
dialog.ColorPreview.setAttribute(backgroundStr, dialog.BackgroundImage);
dialog.DefaultColorsRadio.checked = true;
UseDefaultColors();
}
}
function GetColorAndUpdate(ColorWellID)
{
// Only allow selecting when in custom mode
if (!dialog.CustomColorsRadio.checked) return;
function SetColor(ColorWellID, color)
var colorObj = new Object;
var colorWell = document.getElementById(ColorWellID);
if (!colorWell) return;
// Don't allow a blank color, i.e., using the "default"
colorObj.NoDefault = true;
switch( ColorWellID )
{
case "textCW":
colorObj.Type = "Text";
colorObj.TextColor = customTextColor;
break;
case "linkCW":
colorObj.Type = "Link";
colorObj.TextColor = customLinkColor;
break;
case "activeCW":
colorObj.Type = "ActiveLink";
colorObj.TextColor = customActiveColor;
break;
case "visitedCW":
colorObj.Type = "VisitedLink";
colorObj.TextColor = customVisitedColor;
break;
case "backgroundCW":
colorObj.Type = "Page";
colorObj.PageColor = customBackgroundColor;
break;
}
window.openDialog("chrome://editor/content/EdColorPicker.xul", "_blank", "chrome,close,titlebar,modal", "", colorObj);
// User canceled the dialog
if (colorObj.Cancel)
return;
color = "";
switch( ColorWellID )
{
case "textCW":
color = customTextColor = colorObj.TextColor;
break;
case "linkCW":
color = customLinkColor = colorObj.TextColor;
break;
case "activeCW":
color = customActiveColor = colorObj.TextColor;
break;
case "visitedCW":
color = customVisitedColor = colorObj.TextColor;
break;
case "backgroundCW":
color = customBackgroundColor = colorObj.BackgroundColor;
break;
}
setColorWell(ColorWellID, color);
SetColorPreview(ColorWellID, color);
// Setting a color automatically changes into UseCustomColors mode
//dialog.CustomColorsRadio.checked = true;
}
function SetColorPreview(ColorWellID, color)
{
switch( ColorWellID )
{
case "textCW":
if (!color) color = defaultTextColor;
dialog.textColor = color;
dialog.NormalText.setAttribute(styleStr,colorStyle+color);
break;
case "linkCW":
if (!color) color = defaultLinkColor;
dialog.linkColor = color;
dialog.LinkText.setAttribute(styleStr,colorStyle+color);
break;
case "activeCW":
if (!color) color = defaultLinkColor;
dialog.activeLinkColor = color;
dialog.ActiveLinkText.setAttribute(styleStr,colorStyle+color);
break;
case "visitedCW":
if (!color) color = defaultVisitedLinkColor;
dialog.visitedLinkColor = color;
dialog.VisitedLinkText.setAttribute(styleStr,colorStyle+color);
break;
case "backgroundCW":
if (!color) color = defaultBackgroundColor;
dialog.backgroundColor = color;
// Must combine background color and image style values
styleValue = colorStyle+color;
if (dialog.backgroundImage > 0)
styleValue += ";"+backImageStyle+backImageStyle+");";
styleValue = backColorStyle+color;
if (backgroundImage.length > 0)
styleValue += ";"+backImageStyle+backgroundImage+");";
dialog.ColorPreview.setAttribute(styleStr,styleValue);
break;
}
setColorWell(ColorWellID, color);
}
function GetColorAndUpdate(ColorPickerID, ColorWellID, widget)
{
// Close the colorpicker
widget.parentNode.closePopup();
SetColor(ColorWellID, getColor(ColorPickerID));
// Setting a color automatically changes into UseCustomColors mode
dialog.CustomColorsRadio.checked = true;
}
function SaveCustomColors()
{
customTextColor = dialog.textColor;
customLinkColor = dialog.linkColor;
customVisitedColor = dialog.visitedLinkColor;
customActiveColor = dialog.activeLinkColor;
customBackgroundColor = dialog.backgroundColor;
}
function UseCustomColors()
{
// Restore from saved colors
SetColor("textCW", customTextColor);
SetColor("linkCW", customLinkColor);
SetColor("activeCW", customActiveColor);
SetColor("visitedCW", customVisitedColor);
SetColor("backgroundCW", customBackgroundColor);
SetElementEnabledById("TextButton", true);
SetElementEnabledById("LinkButton", true);
SetElementEnabledById("ActiveLinkButton", true);
SetElementEnabledById("VisitedLinkButton", true);
SetElementEnabledById("BackgroundButton", true);
SetColorPreview("textCW", customTextColor);
SetColorPreview("linkCW", customLinkColor);
SetColorPreview("activeCW", customActiveColor);
SetColorPreview("visitedCW", customVisitedColor);
SetColorPreview("backgroundCW", customBackgroundColor);
setColorWell("textCW", customTextColor);
setColorWell("linkCW", customLinkColor);
setColorWell("activeCW", customActiveColor);
setColorWell("visitedCW", customVisitedColor);
setColorWell("backgroundCW", customBackgroundColor);
}
function UseDefaultColors()
{
dump("UseDefaultColors\n");
// Save colors to use when switching back to UseCustomColors
SaveCustomColors();
SetColorPreview("textCW", defaultTextColor);
SetColorPreview("linkCW", defaultLinkColor);
SetColorPreview("activeCW", defaultActiveColor);
SetColorPreview("visitedCW", defaultVisitedColor);
SetColorPreview("backgroundCW", defaultBackgroundColor);
SetColor("textCW", defaultTextColor);
SetColor("linkCW", defaultLinkColor);
SetColor("activeCW", defaultLinkColor); //Browser doesn't store this separately
SetColor("visitedCW", defaultVisitedLinkColor);
SetColor("backgroundCW", defaultBackgroundColor);
// Setting to blank color will remove color from buttons,
setColorWell("textCW", "");
setColorWell("linkCW", "");
setColorWell("activeCW", "");
setColorWell("visitedCW", "");
setColorWell("backgroundCW", "");
// Disable color buttons
SetElementEnabledById("TextButton", false);
SetElementEnabledById("LinkButton", false);
SetElementEnabledById("ActiveLinkButton", false);
SetElementEnabledById("VisitedLinkButton", false);
SetElementEnabledById("BackgroundButton", false);
}
function chooseFile()
{
// Get a local file, converted into URL format
// Get a local image file, converted into URL format
fileName = GetLocalFileURL("img");
if (fileName && fileName != "")
{
dialog.BackgroundImage = fileName;
dialog.BackgroundImageInput.value = fileName;
dialog.ColorPreview.setAttribute(backgroundStr, fileName);
// First make a string with just background color
var styleValue = colorStyle+dialog.backgroundColor+";";
if (ValidateImage())
{
// Append image style
styleValue += backImageStyle+dialog.BackgroundImage+");";
}
dump(styleValue+"=style value when setting image\n")
// Set style on preview (removes image if not checked or not valid)
dialog.ColorPreview.setAttribute(styleStr, styleValue);
dialog.BackgroundImageInput = filename;
ValidateAndPreviewImage(true);
}
// Put focus into the input field
SetTextfieldFocus(dialog.BackgroundImageInput);
}
function ValidateImage()
function ChangeBackgroundImage()
{
// Don't show error message for image while user is typing
ValidateAndPreviewImage(false);
}
function ValidateAndPreviewImage(ShowErrorMessage)
{
// First make a string with just background color
var styleValue = backColorStyle+dialog.backgroundColor+";";
var image = dialog.BackgroundImageInput.value.trimString();
if (image && image != "")
if (image.length > 0)
{
if (IsValidImage(image))
{
dialog.BackgroundImage = image;
return true;
} else {
dialog.BackgroundImage = null;
backgroundImage = image;
// Append image style
styleValue += backImageStyle+backgroundImage+");";
}
else
{
backgroundImage = null;
if (ShowErrorMessage)
{
SetTextfieldFocus(dialog.BackgroundImageInput);
// Tell user about bad image
ShowInputErrorMessage(GetString("MissingImageError"));
}
return false;
}
}
SetTextfieldFocus(dialog.BackgroundImageInput);
ShowInputErrorMessage(GetString("MissingImageError"));
else backgroundImage = null;
return false;
// Set style on preview (removes image if not valid)
dialog.ColorPreview.setAttribute(styleStr, styleValue);
// Note that an "empty" string is valid
return true;
}
function ValidateData()
@@ -317,21 +378,24 @@ function ValidateData()
}
else
{
globalElement.setAttribute(textStr, dialog.textColor);
globalElement.setAttribute(linkStr, dialog.linkColor);
globalElement.setAttribute(vlinkStr, dialog.visitedLinkColor);
globalElement.setAttribute(alinkStr, dialog.activeLinkColor);
globalElement.setAttribute(bgcolorStr, dialog.backgroundColor);
globalElement.setAttribute(textStr, customTextColor);
globalElement.setAttribute(linkStr, customLinkColor);
globalElement.setAttribute(vlinkStr, customVisitedColor);
globalElement.setAttribute(alinkStr, customActiveColor);
globalElement.setAttribute(bgcolorStr, customBackgroundColor);
}
if (ValidateImage())
if (ValidateAndPreviewImage(true))
{
globalElement.setAttribute(backgroundStr, dialog.BackgroundImage);
} else {
globalElement.removeAttribute(backgroundStr);
return false;
}
// A valid image may be null for no image
if (backgroundImage)
{
globalElement.setAttribute(backgroundStr, backgroundImage);
} else {
globalElement.removeAttribute(backgroundStr);
return false;
}
}
return true;
}
@@ -339,13 +403,6 @@ function onOK()
{
if (ValidateData())
{
// Save image for future editing
if (prefs && dialog.BackgroundImage)
{
dump("Saving default background image in prefs\n");
prefs.SetCharPref("editor.default_background_image", dialog.BackgroundImage);
}
// Copy attributes to element we are changing
editorShell.CloneAttributes(BodyElement, globalElement);

View File

@@ -46,103 +46,99 @@
<broadcaster id="args" value=""/>
<popupset id="aTooltipSet" />
<titledbox orient="vertical"><title><text class="label" value="&pageColors.label;"/></title>
<titledbox orient="horizontal"><title value="&pageColors.label;" flex="1"/>
<box orient="vertical">
<radiogroup id="pageColorGroup" orient="vertical" autostretch="never">
<radio group="pageColorGroup" id="DefaultColorsRadio" value="&defaultColorsRadio.label;" oncommand="UseDefaultColors()"
<radio group="pageColorGroup" id="DefaultColorsRadio" value="fuck you" oncommand="UseDefaultColors()"
tooltip="aTooltip" tooltiptext="&defaultColorsRadio.tooltip;" />
<radio group="pageColorGroup" id="CustomColorsRadio" value="&customColorsRadio.label;" oncommand="UseCustomColors()"
tooltip="aTooltip" tooltiptext="&customColorsRadio.tooltip;" />
</radiogroup>
</box>
<spring class="spacer"/>
<box class="big-left-margin">
<grid>
<columns><column/><column/></columns>
<rows>
<row>
<text class="label" value="&normalText.label;&colon.character;" />
<menu class="colorpicker">
<box>
<spring id="textCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<menupopup id="normalMenuPopup">
<colorpicker id="textCP" palettename="standard" onclick="GetColorAndUpdate('textCP','textCW',this);"/>
</menupopup>
</menu>
</row>
<row>
<text class="label" value="&linkText.label;&colon.character;" />
<menu class="colorpicker">
<box>
<spring id="linkCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<menupopup>
<colorpicker id="linkCP" palettename="standard" onclick="GetColorAndUpdate('linkCP','linkCW',this);"/>
</menupopup>
</menu>
</row>
<row>
<text class="label" value="&activeLinkText.label;&colon.character;" />
<menu class="colorpicker">
<box>
<spring id="activeCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<menupopup>
<colorpicker id="activeCP" palettename="standard" onclick="GetColorAndUpdate('activeCP','activeCW',this);"/>
</menupopup>
</menu>
</row>
<row>
<text class="label" value ="&visitedLinkText.label;&colon.character;" />
<menu class="colorpicker">
<box>
<spring id="visitedCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<menupopup>
<colorpicker id="visitedCP" palettename="standard" onclick="GetColorAndUpdate('visitedCP','visitedCW',this);"/>
</menupopup>
</menu>
</row>
<row>
<text class="label" value="&background.label;" />
<menu class="colorpicker">
<box>
<spring id="backgroundCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<menupopup>
<colorpicker id="backgroundCP" palettename="standard" onclick="GetColorAndUpdate('backgroundCP','backgroundCW',this);"/>
</menupopup>
</menu>
</row>
</rows>
</grid>
<box orient="vertical" id="ColorPreview">
<text class="label" id="NormalText" value="&normalText.label;"/>
<text class="label" id="LinkText" value="&linkText.label;"/>
<text class="label" id="ActiveLinkText" value="&activeLinkText.label;"/>
<text class="label" id="VisitedLinkText" value="&visitedLinkText.label;"/>
<spring class="spacer"/>
<box class="big-left-margin">
<grid>
<columns><column/><column/></columns>
<rows>
<row>
<text class="label" value="&normalText.label;&colon.character;" />
<stack>
<box autostretch="never" valign="middle">
<spring id="textCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<button id="TextButton" class="dialog color-button" onclick="GetColorAndUpdate('textCW')" flex="1"/>
</stack>
</row>
<row>
<text class="label" value="&linkText.label;&colon.character;" />
<stack>
<box autostretch="never" valign="middle">
<spring id="linkCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<button id="LinkButton" class="dialog color-button" onclick="GetColorAndUpdate('linkCW')" flex="1"/>
</stack>
</row>
<row>
<text class="label" value="&activeLinkText.label;&colon.character;" />
<stack>
<box autostretch="never" valign="middle">
<spring id="activeCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<button id="ActiveLinkButton" class="dialog color-button" onclick="GetColorAndUpdate('activeCW')" flex="1"/>
</stack>
</row>
<row>
<text class="label" value ="&visitedLinkText.label;&colon.character;" />
<stack>
<box autostretch="never" valign="middle">
<spring id="visitedCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<button id="VisitedLinkButton" class="dialog color-button" onclick="GetColorAndUpdate('visitedCW')" flex="1"/>
</stack>
</row>
<row>
<text class="label" value="&background.label;" />
<stack>
<box autostretch="never" valign="middle">
<spring id="backgroundCW" class="color-well"/>
<image class="popup-trigger"/>
</box>
<button id="BackgroundButton" class="dialog color-button" onclick="GetColorAndUpdate('backgroundCW')" flex="1"/>
</stack>
</row>
</rows>
</grid>
</box>
</box>
<spring class="spacer"/>
<box orient="vertical" id="ColorPreview" flex="1">
<spring flex="1"/>
<text class="label larger" id="NormalText" value="&normalText.label;"/>
<spring flex="1"/>
<text class="label larger" id="LinkText" value="&linkText.label;"/>
<spring flex="1"/>
<text class="label larger" id="ActiveLinkText" value="&activeLinkText.label;"/>
<spring flex="1"/>
<text class="label larger" id="VisitedLinkText" value="&visitedLinkText.label;"/>
<spring flex="1"/>
</box>
</titledbox>
<spring class="spacer"/>
<text class="label" id="BackgroundImageCheckbox" value="&backgroundImage.label;"/>
<grid>
<columns><column/><column/></columns>
<text class="label" value="&backgroundImage.label;"/>
<grid flex="1">
<columns><column/><column flex="1"/></columns>
<rows>
<row style="margin-bottom: 5px">
<textfield id="BackgroundImageInput"
<row autostretch="never" valign="middle" style="margin-bottom: 5px">
<textfield id="BackgroundImageInput" onkeyup="ChangeBackgroundImage()"
tooltip="aTooltip" tooltiptext="&backgroundImage.tooltip;" />
<button class="dialog" id="ChooseFile" flex="1" />
<!-- from EdDialogOverlay.xul -->
<button class="dialog" id="ChooseFile" flex="1"/>
</row>
<row autostretch="never" valign="middle">
<spring/>
<!-- from EdDialogOverlay.xul -->
<button class="dialog" id="AdvancedEditButton" flex="1"/>
</row>
</rows>

View File

@@ -574,14 +574,6 @@ function onAdvancedEdit()
if (window.AdvancedEditOK) {
// Copy edited attributes to the dialog widgets:
InitDialog();
/*
// Use this if we want to close the parent dialog immediately
if (onOK()) {
// I'm not sure why, but calling onOK() from JS doesn't trigger closing
// automatically as it does when you click on the OK button!
window.close();
}
*/
}
}
}

View File

@@ -48,7 +48,7 @@
<keyset id="keyset"/>
<popupset id="aTooltipSet" />
<titledbox orient="vertical"><title><text value="&dimensionsBox.label;"/></title>
<titledbox orient="vertical"><title value="&dimensionsBox.label;"/>
<grid>
<columns><column/><column/><column /></columns>
<rows>
@@ -67,7 +67,7 @@
</grid>
<checkbox id="3dShading" value="&threeDShading.label;" />
</titledbox>
<titledbox><title><text align="left" value="&alignmentBox.label;"/></title>
<titledbox><title align="left" value="&alignmentBox.label;"/>
<radiogroup id="alignmentGroup" orient="horizontal">
<spring class="spacer"/>
<radio group="alignmentGroup" id="leftAlign" value="&leftRadio.value;" />

View File

@@ -46,7 +46,7 @@
<broadcaster id="args" value=""/>
<titledbox orient="vertical" flex="1">
<title><text id="titleInput" value="&link.label;"/></title>
<title id="titleInput" value="&link.label;"/>
<grid>
<columns><column/><column/><column/></columns>
@@ -71,7 +71,7 @@
<titledbox orient="vertical" flex="1">
<title><text id="targetLabel" value="&targetFieldset.label;"/></title>
<title id="targetLabel" value="&targetFieldset.label;"/>
<grid>
<columns><column/><column/><column/></columns>
<rows>

View File

@@ -54,7 +54,7 @@
<popupset id="aTooltipSet" />
<titledbox orient="vertical">
<title><text value="&locationBox.label;"/></title>
<title value="&locationBox.label;"/>
<!--/////// Src URL and ALT Text //////-->
<grid>
<columns><column/><column/><column/></columns>
@@ -88,7 +88,9 @@
</row>
</rows>
</grid>
<spring class="spacer"/>
</titledbox>
<spring class="spacer"/>
<box>
<button
class = "dialog"
@@ -108,7 +110,7 @@
<box orient="vertical">
<!-- //////// Image Dimensions //////// -->
<titledbox orient="vertical" flex="1">
<title><text id="dimensionsLabel" value="&dimensionsBox.label;"/></title>
<title id="dimensionsLabel" value="&dimensionsBox.label;"/>
<radiogroup id="imgSizeGroup" orient="vertical">
<radio
group = "imgSizeGroup"
@@ -165,7 +167,7 @@
</titledbox>
<!--////// IMAGE MAP BUTTONS //////-->
<titledbox flex="1">
<title><text id="imagemapLabel" value="&imagemapBox.label;"/></title>
<title id="imagemapLabel" value="&imagemapBox.label;"/>
<box>
<button
class = "dialog"
@@ -186,7 +188,7 @@
<box orient="vertical" flex="1">
<!--//////// Alignment ////////-->
<titledbox flex="1" orient="vertical">
<title><text class="label" id="alignLabel" value="&alignment.label;"/></title>
<title id="alignLabel" value="&alignment.label;"/>
<menulist id = "alignTypeSelect" onchange ="doOverallEnabling()">
<menupopup valign="middle">
<menuitem class="middle"><image id="img-align-top"/> <text class="label" value = "&topPopup.value;"/></menuitem>
@@ -200,7 +202,7 @@
<!--//////// Borders and Spacing ////////-->
<titledbox flex="1">
<title><text id="spacingLabel" value="&spacingBox.label;"/></title>
<title id="spacingLabel" value="&spacingBox.label;"/>
<grid>
<columns><column/><column/><column/></columns>
<rows>

View File

@@ -44,7 +44,7 @@
<keyset id="keyset"/>
<broadcaster id="args" value=""/>
<titledbox orient="vertical"><title><text value="&category.label;"/></title>
<titledbox orient="vertical"><title value="&category.label;"/>
<radiogroup id="CatGrp" orient="vertical" persist="category letter_index char_index">
<radio group="CatGrp" id="AccentUpper" value="&accentUpper.label;" oncommand="ChangeCategory(this.id)"/>
<radio group="CatGrp" id="AccentLower" value="&accentLower.label;" oncommand="ChangeCategory(this.id)"/>

View File

@@ -48,7 +48,7 @@
<broadcaster id="args" value=""/>
<keyset id="keyset"/>
<popupset id="aTooltipSet" />
<titledbox orient="vertical"><title><text value="&size.label;"/></title>
<titledbox orient="vertical"><title value="&size.label;"/>
<grid>
<columns><column/><column/><column/></columns>
<rows>

View File

@@ -46,12 +46,12 @@
<keyset id="keyset"/>
<box orient="vertical" style="min-width: 20em">
<titledbox orient="vertical"><title><text id="linkTextCaption" align="left"/></title>
<titledbox orient="vertical"><title id="linkTextCaption" align="left"/>
<text class="label" id="linkTextMessage"/>
<textfield id="linkTextInput" flex="1" onkeyup="ChangeText()"/>
</titledbox>
<titledbox orient="vertical"><title><text class="label" value="&LinkURLBox.label;"/></title>
<titledbox orient="vertical"><title value="&LinkURLBox.label;"/>
<text class="label" value="&LinkURLEditField.label;"/>
<box autostretch="never" valign="middle">
<textfield id="hrefInput" flex="1" style="min-width: 18em" onkeyup="ChangeLocation()"/>

View File

@@ -157,7 +157,7 @@ dump("List Type: "+ListType+" globalElement: "+globalElement+"\n");
function SelectListType()
{
dump(ListTypeList+"ListTypeList\n");
//dump(ListTypeList+"ListTypeList\n");
switch (ListTypeList.selectedIndex)
{
case 1:
@@ -192,7 +192,40 @@ function SelectBulletStyle()
if (ListType == "ul")
BulletStyleIndex = BulletStyleList.selectedIndex;
else if (ListType == "ol")
{
if (NumberStyleIndex != BulletStyleList.selectedIndex)
StartingNumberInput.value = "";
NumberStyleIndex = BulletStyleList.selectedIndex;
}
}
function FilterStartNumber()
{
var stringIn = StartingNumberInput.value.trimString();
if (stringIn.length > 0)
{
switch (NumberStyleIndex)
{
case 0:
// Allow only integers
stringIn = stringIn.replace(/\D+/g,"");
break;
case 1: // "I";
stringIn = stringIn.toUpperCase().replace(/[^ICDVXL]+/g,"");
break;
case 2: // "i";
stringIn = stringIn.toLowerCase().replace(/[^icdvxl]+/g,"");
break;
case 3: // "A";
stringIn.toUpperCase();
break;
case 4: // "a";
stringIn.toLowerCase();
break;
}
if (!stringIn) stringIn = "";
StartingNumberInput.value = stringIn;
}
}
function ValidateData()

View File

@@ -63,7 +63,7 @@
<box>
<text class="label" id="StartingNumberLabel" value="&startingNumber.label;"/>
<spring class="spacer"/>
<textfield class="narrow" id="StartingNumber" onkeyup="forceInteger('StartingNumber')"/>
<textfield class="narrow" id="StartingNumber" onkeyup="FilterStartNumber()"/>
<spring/>
</box>
<!-- from EdDialogOverlay -->

View File

@@ -45,27 +45,27 @@
<broadcaster id="args" value=""/>
<keyset id="keyset"/>
<grid>
<columns><column/><column flex="1"/></columns>
<columns><column flex="1"/><column flex="2"/></columns>
<rows>
<row>
<text class="label" value="&location.label;" flex ="1"/>
<text class="label" value="&locationNewPage.label;" id="PageLocation" flex ="1"/>
<text class="label" value="&location.label;"/>
<text class="label" value="&locationNewPage.label;" id="PageLocation"/>
</row>
<row>
<text class="label" value="&lastModified.label;" flex ="1" align="left"/>
<text class="label" value="&lastModified.label;" align="left"/>
<text class="label" id="PageModDate" align="left"/>
</row>
<row valign="middle">
<text class="label" value="&titleInput.label;"/>
<textfield id="TitleInput" flex ="1" onkeyup="TextfieldChanged(this.id)"/>
<textfield class="MinWidth20em" id="TitleInput" onkeyup="TextfieldChanged(this.id)"/>
</row>
<row valign="middle">
<text class="label" value="&authorInput.label;"/>
<textfield id="AuthorInput" flex ="1" onkeyup="TextfieldChanged(this.id)"/>
<textfield class="MinWidth20em" id="AuthorInput" onkeyup="TextfieldChanged(this.id)"/>
</row>
<row valign="middle">
<text class="label" value="&descriptionInput.label;"/>
<textfield class="MinWidth20em" id="DescriptionInput" flex ="1" onkeyup="TextfieldChanged(this.id)"/>
<textfield class="MinWidth20em" id="DescriptionInput" onkeyup="TextfieldChanged(this.id)"/>
</row>
</rows>
</grid>

View File

@@ -56,7 +56,7 @@
<!-- TABLE PANEL -->
<box id="TablePanel" orient="vertical">
<titledbox><title><text value="&size.label;"/></title>
<titledbox><title value="&size.label;"/>
<grid>
<columns><column/><column/></columns>
<rows>
@@ -88,7 +88,7 @@
</grid>
</titledbox>
<box><!-- Border and Alignment -->
<titledbox orient="vertical"><title><text align="left" value="&tableBorderSpacing.label;"/></title>
<titledbox orient="vertical"><title align="left" value="&tableBorderSpacing.label;"/>
<grid>
<columns><column/><column/><column/></columns>
<rows>
@@ -170,7 +170,7 @@
<!-- CELL PANEL -->
<box id="CellPanel" orient="vertical">
<titledbox autostretch="never" valign="middle">
<title><text align="left" value="&cellSelection.label;"/></title>
<title value="&cellSelection.label;"/>
<box orient="vertical">
<menulist id="SelectionList" oncommand="ChangeSelection(event.target.data)" flex="1">
<menupopup>
@@ -193,7 +193,7 @@
</box>
</titledbox>
<!-- cell size titledbox -->
<titledbox><title><text align="left" value="&size.label;"/></title>
<titledbox><title align="left" value="&size.label;"/>
<grid>
<columns><column/><column/><column/></columns>
<rows>
@@ -226,7 +226,7 @@
</titledbox>
<box><!-- Alignment and style -->
<titledbox orient="vertical" flex="1">
<title><text align="left" value="&cellContentAlignment.label;"/></title>
<title align="left" value="&cellContentAlignment.label;"/>
<grid>
<columns><column/><column/><column/></columns>
<rows>

View File

@@ -48,14 +48,14 @@
<keyset id="keyset"/>
<box orient="vertical">
<titledbox orient="vertical"><title><text align="left" value="&documentTitleTitle.label;"/></title>
<titledbox orient="vertical"><title align="left" value="&documentTitleTitle.label;"/>
<!-- Text labels filled in from editor.properties -->
<text id="EnterTitleLabel" class="label"/>
<textfield id="TitleInput" flex="1" onkeyup="TitleChanged();"/>
<html id="TitleHelp" class="label wrap" style="width:1em" flex="1"/>
</titledbox>
<titledbox orient="vertical"><title><text class="label" value="&documentCharsetTitle.label;"/></title>
<titledbox orient="vertical"><title value="&documentCharsetTitle.label;"/>
<text class="label" value="&documentCharsetDesc.label;"/>
<box flex="1">
<tree class="list" id="CharsetTree" rows="10" flex="1" onselect="SelectCharset();">

View File

@@ -23,7 +23,8 @@
<!-- Window title -->
<!ENTITY windowTitle.label "Page Colors and Background">
<!ENTITY pageColors.label "Page Colors">
<!ENTITY defaultColorsRadio.label "Reader's default colors (Don't set colors in page)">
<!ENTITY defaultColorsRadio.label "Reader's default colors">
<!ENTITY defaultColorsMsg.label "(Don't set colors in page)">
<!ENTITY defaultColorsRadio.tooltip "Use the color settings from the viewer (reader's) browser only">
<!ENTITY customColorsRadio.label "Use custom colors:">
<!ENTITY customColorsRadio.tooltip "These color settings override the viewer's browser settings">

View File

@@ -28,4 +28,4 @@
<!ENTITY authorInput.label "Author:">
<!ENTITY descriptionInput.label "Description:">
<!ENTITY locationNewPage.label "[New page, not saved yet]">
<!ENTITY EditHEADSource.label "Advanced users:<html:br/>To edit contents of the &lt;head&gt; region, use &quot;HTML Source&quot; in the View Menu or Edit Mode Toolbar.">
<!ENTITY EditHEADSource.label "Advanced users:<html:br/>To edit other contents of the &lt;head&gt; region, use &quot;HTML Source&quot; in the View Menu or Edit Mode Toolbar.">