fix for nsbeta3+ 45687, problems with helper apps pref panel

This commit is contained in:
ben%netscape.com 2006-05-17 02:27:03 +00:00
Родитель 30a018c918
Коммит 9251da342a
6 изменённых файлов: 53 добавлений и 17 удалений

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

@ -357,26 +357,43 @@ function removeOverride(aMIMEType)
var containerRes = gRDF.GetResource("urn:mimetypes:root");
rdfc.Init(gDS, containerRes);
var element = gRDF.GetResource(MIME_URI(aMIMEType));
if (rdfc.IndexOf(element) != -1)
rdfc.RemoveElement(element, true);
if (rdfc.IndexOf(element) != -1) {
try {
rdfc.RemoveElement(element, true);
}
catch(e) {
// suppress (benign?) errors
}
}
}
}
// remove items from the graph
var urns = [ [MIME_URI, ["description", "editable", "value", "smallIcon", "largeIcon"], [HANDLER_URI, "handlerProp"]],
[HANDLER_URI, ["handleInternal", "saveToDisk", "alwaysAsk"], [APP_URI, "externalApplication"]],
var urns = [ [MIME_URI, ["description", "editable", "value", "fileExtensions", "smallIcon", "largeIcon"],
[HANDLER_URI, "handlerProp"]],
[HANDLER_URI, ["handleInternal", "saveToDisk", "alwaysAsk"],
[APP_URI, "externalApplication"]],
[APP_URI, ["path", "prettyName"]] ];
for (var i = 0; i < urns.length; i++) {
var mimeRes = gRDF.GetResource(urns[i][0](aMIMEType));
dump("*** mimeRes = " + mimeRes + "\n");
// unassert the toplevel properties
var properties = urns[i][1];
for (var j = 0; j < properties.length; j++) {
var propertyRes = gRDF.GetResource(NC_RDF(properties[j]), true);
dump("*** propertyRes = " + propertyRes + "\n");
var mimeValue = gDS.GetTarget(mimeRes, propertyRes, true);
dump("*** mimeValue = " + mimeValue + "\n");
gDS.Unassert(mimeRes, propertyRes, mimeValue, true);
if (properties[j] == "fileExtensions") { // hacky. do it better next time.
var mimeValues = gDS.GetTargets(mimeRes, propertyRes, true);
mimeValues = mimeValues.QueryInterface(Components.interfaces.nsISimpleEnumerator);
while (mimeValues.hasMoreElements()) {
var currItem = mimeValues.getNext();
if (mimeRes && propertyRes && currItem)
gDS.Unassert(mimeRes, propertyRes, currItem, true);
}
}
else {
var mimeValue = gDS.GetTarget(mimeRes, propertyRes, true);
if (mimeRes && propertyRes && mimeValue)
gDS.Unassert(mimeRes, propertyRes, mimeValue, true);
}
}
if (urns[i][2]) {
var linkRes = gRDF.GetResource(NC_RDF(urns[i][2][1]), true);

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

@ -54,6 +54,7 @@
function Startup()
{
dump("*** noopy\n");
doSetOKCancel(onOK);
gIcon = document.getElementById("largeIcon");
@ -64,14 +65,17 @@
gAppPath = document.getElementById("appPath");
gAskBeforeOpen = document.getElementById("askBeforeOpen");
dump("*** noopy\n");
gBundle = srGetStrBundle("chrome://communicator/locale/pref/pref-applications.properties");
dump("*** noopy\n");
var handlerInfo = window.arguments[0];
gExtensionLabel.setAttribute("value", handlerInfo.extensions);
gMIMEField.value = handlerInfo.mimeType;
gOldMIME = handlerInfo.mimeType;
dump("*** noopy\n");
// figure out how this type is handled
var data = 0;
if (handlerInfo.handleInternal == "true")
@ -81,6 +85,7 @@
else
data = 2;
dump("*** noopy\n");
gHandlerGroup.selectedItem = gHandlerGroup.getElementsByAttribute("data", data)[0];
doEnabling();
@ -92,6 +97,7 @@
gContentType.setAttribute("value", handlerInfo.description);
gIcon.setAttribute("src", handlerInfo.largeIconURL);
dump("*** noopy\n");
gMIMEField.focus();
}

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

@ -8,7 +8,6 @@ function newType()
if (gNewTypeRV) {
//gTree.builder.rebuild();
gTree.setAttribute("ref", "urn:mimetypes");
selectApplication();
gNewTypeRV = null;
}
}
@ -34,7 +33,9 @@ function editType()
if (gTree.selectedItems && gTree.selectedItems[0]) {
var uri = gTree.selectedItems[0].id;
var handlerOverride = new HandlerOverride(uri);
dump("*** foopy\n");
window.openDialog("chrome://communicator/content/pref/pref-applications-edit.xul", "appEdit", "chrome,modal=yes,resizable=no", handlerOverride);
dump("*** foopy\n");
selectApplication();
}
}
@ -80,7 +81,7 @@ function Startup()
function selectApplication()
{
if (gTree.selectedItems && gTree.selectedItems[0]) {
if (gTree.selectedItems && gTree.selectedItems.length && gTree.selectedItems[0]) {
var uri = gTree.selectedItems[0].id;
var handlerOverride = new HandlerOverride(uri);
gExtensionField.setAttribute("value", handlerOverride.extensions);
@ -88,9 +89,9 @@ function selectApplication()
// figure out how this type is handled
if (handlerOverride.handleInternal == "true")
gHandlerField.setAttribute("value", "Handled Internally"); // gBundle.GetStringFromName("handleInternally"));
gHandlerField.setAttribute("value", gBundle.GetStringFromName("handleInternally"));
else if (handlerOverride.saveToDisk == "true")
gHandlerField.setAttribute("value", "Save to Disk"); // gBundle.GetStringFromName("saveToDisk"));
gHandlerField.setAttribute("value", gBundle.GetStringFromName("saveToDisk"));
else
gHandlerField.setAttribute("value", handlerOverride.appDisplayName);

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

@ -75,6 +75,14 @@
<button class="dialog" value="&browseFile.label;" accesskey="&browseFile.accesskey;"
oncommand="prefNavSelectFile('browserStartupHomepage', 'choosehomepage', false );"/>
</box>
<separator/>
<box autostretch="never">
<checkbox id="alwaysCheckWhenDropOnHome"
value="&alwaysCheckWhenDropHome.label;"
accesskey="&alwaysCheckWhenDropHome.accesskey;"
pref="true" preftype="bool" prefstring="browser.homepage.enable_home_button_drop"
prefattribute="checked"/>
</box>
</titledbox>
</window>

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

@ -31,6 +31,12 @@
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script>
<![CDATA[
_elementIDs = []; // hack
]]>
</script>
<tree id="prefsTree"
onselect="if( hPrefWindow ) hPrefWindow.switchPage();">

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

@ -30,9 +30,7 @@
<script language="JavaScript">
<![CDATA[
dump("*** in platformPrefOverlay for windows\n");
if (_elementIDs != undefined)
_elementIDs.push("browserUseWindowsColors");
_elementIDs.push("browserUseWindowsColors");
]]>
</script>