107 lines
2.8 KiB
JavaScript
107 lines
2.8 KiB
JavaScript
function MultiplexHandler(event)
|
|
{
|
|
node = event.target;
|
|
name = node.getAttribute('name');
|
|
|
|
if (name == 'detectorGroup') {
|
|
SelectDetector(event);
|
|
} else if (name == 'charsetGroup') {
|
|
charset = node.getAttribute('id');
|
|
charset = charset.substring('charset.'.length, charset.length)
|
|
SetDefaultCharacterSet(charset);
|
|
} else {
|
|
SetDefaultCharacterSet(node.getAttribute('id'));
|
|
}
|
|
}
|
|
|
|
function SetDefaultCharacterSet(charset)
|
|
{
|
|
dump("Charset Overlay menu item pressed: " + charset + "\n");
|
|
BrowserSetDefaultCharacterSet(charset);
|
|
}
|
|
|
|
function SelectDetector(event)
|
|
{
|
|
dump("Charset Detector menu item pressed: " + event.target.getAttribute('id') + "\n");
|
|
|
|
uri = event.target.getAttribute("id");
|
|
prefvalue = uri.substring('charsetDetector.'.length, uri.length);
|
|
if("off" == prefvalue) { // "off" is special value to turn off the detectors
|
|
prefvalue = "";
|
|
}
|
|
|
|
pref = Components.classes['component://netscape/preferences'];
|
|
if (pref) {
|
|
pref = pref.getService();
|
|
pref = pref.QueryInterface(Components.interfaces.nsIPref);
|
|
}
|
|
|
|
if (pref) {
|
|
pref.SetCharPref("intl.charset.detector", prefvalue);
|
|
window.content.location.reload();
|
|
}
|
|
}
|
|
|
|
function UpdateCurrentCharset()
|
|
{
|
|
charset = document.commandDispatcher.focusedWindow.document.characterSet;
|
|
charset = charset.toLowerCase();
|
|
|
|
menuitem = document.getElementById('charset.' + charset);
|
|
|
|
if (menuitem) {
|
|
menuitem.setAttribute('checked', 'true');
|
|
}
|
|
}
|
|
|
|
function UpdateCharsetDetector()
|
|
{
|
|
pref = Components.classes['component://netscape/preferences'];
|
|
if (pref) {
|
|
pref = pref.getService();
|
|
pref = pref.QueryInterface(Components.interfaces.nsIPref);
|
|
}
|
|
|
|
if (pref) {
|
|
prefvalue = pref.CopyCharPref("intl.charset.detector");
|
|
if (prefvalue == "") prefvalue = "off";
|
|
}
|
|
|
|
prefvalue = 'charsetDetector.' + prefvalue;
|
|
menuitem = document.getElementById(prefvalue);
|
|
|
|
if (menuitem) {
|
|
menuitem.setAttribute('checked', 'true');
|
|
}
|
|
}
|
|
|
|
function UpdateMenus(event)
|
|
{
|
|
UpdateCurrentCharset();
|
|
UpdateCharsetDetector();
|
|
}
|
|
|
|
function charsetLoadListener (event)
|
|
{
|
|
menu = Components.classes['component://netscape/rdf/datasource?name=charset-menu'];
|
|
|
|
if (menu) {
|
|
menu = menu.getService();
|
|
menu = menu.QueryInterface(Components.interfaces.nsICurrentCharsetListener);
|
|
}
|
|
|
|
charset = window.content.document.characterSet;
|
|
charset = charset.toLowerCase();
|
|
|
|
if (menu) {
|
|
menu.SetCurrentCharset(charset);
|
|
}
|
|
|
|
// XXX you know, here I could also set the checkmark, for the case when a
|
|
// doc finishes loading after the menu is already diplayed. But I get a
|
|
// weird assertion!
|
|
}
|
|
|
|
contentArea = window.document.getElementById("appcontent")
|
|
contentArea.addEventListener("load", charsetLoadListener, true);
|