timeless%mozdev.org dae7b0629a Bug 106386 Correct misspellings in source code
patch by unknown@simplemachines.org r=timeless rs=brendan


git-svn-id: svn://10.0.0.236/trunk@185282 18797224-902f-48f8-a5cc-f745e15eee43
2005-11-25 21:57:13 +00:00

384 lines
14 KiB
JavaScript

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is JSIRC Test Client #3.
*
* The Initial Developer of the Original Code is
* New Dimensions Consulting, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Robert Ginda, rginda@ndcico.com, original author
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
* THIS FILE IS NO LONGER USED. IT'S ONLY IN THE TREE FOR LATER REFERENCE.
* SEE prefs.js IN THIS SAME DIRECTORY INSTEAD.
* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*/
/*
* currently recognized prefs:
* + extensions.irc.
* +- nickname (String) initial nickname
* +- username (String) initial username (ie: username@host.tld)
* +- desc (String) initial description (used in whois info)
* +- defaultNet (String) default network to use for irc:// urls
* +- reconnect (Boolean) reconnect when disconnected due to ERROR
* +- multiline (Boolean) multiline input mode
* +- colorcodes (Boolean) enable color code escape characters
* +- bugURL (String) url to use for "bug 12345" links. Use %s to place
* | the bug number.
* +- initialURLs (String) irc:// urls to connect to on startup, semicolon
* | separated
* +- initialScripts (String) urls for scripts to run at startup,
* | semicolon separated
* +- newTabLimit (Number) max number of tabs to have open before disabling
* | automatic tab creation for private messages.
* | use 0 for unlimited new tabs, or 1 to disable
* | automatic tab creation.
* +- raiseNewTab (Boolean) bring new tabs created in response to a private
* | message to the front.
* +- munger (Boolean) send output through text->html munger
* | +- colorCodes (Boolean) enable color code handling
* | +- <various> (Boolean) enable specific munger entry
* | +- smileyText (Boolean) true => display text (and graphic) when
* | matching smileys
* | false => show only the smiley graphic
* +- nickCompleteStr (String) String to use when tab-completing nicknames
* | at the beginning of sentences
* +- stalkWords (String) List of words to add to the stalk victims list
* | semicolon separated (see the /stalk command)
* +- stalkWholeWords (Boolean) True if stalk words should not match against
* | parts of words.
* +- deleteOnPart (Boolean) Delete channel window automatically after a /part
* |
* | The following beep prefs can be set to the text "beep" to use the
* | system beep, or "" to disable the beep.
* +- msgBeep (String) url to sound to play when a /msg is received
* +- stalkBeep (String) url to sound to play when a /stalk matches
* +- queryBeep (String) url to sound to play for new msgs in a /query
* |
* +- notify
* | +- aggressive (Boolean) flash trayicon/ bring window to top when
* | your nickname is mentioned.
* +- settings
* | +- autoSave (Boolean) Save settings on exit
* +- style
* | +- default (String) url to default style sheet
* +- views
* | +- collapseMsgs (Boolean) Collapse consecutive messages from same
* | | user
* | +- copyMessages (Boolean) Copy important messages to the network
* | | window
* | +- client
* | | +- maxlines (Number) max lines to keep in *client* view
* | +- network
* | | +- maxlines (Number) max lines to keep in network views
* | +- channel
* | | +- maxlines (Number) max lines to keep in channel views
* | +- chanuser
* | +- maxlines (Number) max lines to keep in /msg views
* +- debug
* | +- tracer (Boolean) enable/disable debug message tracing
* +- viewList
* +- client
* | +- logging (Boolean) enable/disable logging in the client view
* +- <escaped network name>
* | +- logging (Boolean) enable/disable logging in the <network> view
* +- <escaped network,channel>
* +- logging (Boolean) enable/disable logging in the <channel> view on
* <network>
*/
function initReadPrefs()
{
client.prefSpecs = {
//"nickname": ["CIRCNetwork.prototype.INITIAL_NICK", "IRCMonkey"],
//"username": ["CIRCNetwork.prototype.INITIAL_NAME", "chatzilla"],
//"desc": ["CIRCNetwork.prototype.INITIAL_DESC","New Now Know How"],
//"reconnect": ["CIRCNetwork.prototype.stayingPower", true],
//"multiline": ["client.MULTILINE", false],
//"colorCodes": ["client.COLORCODES", false],
//REMOVED: "defaultNet": ["client.DEFAULT_NETWORK", "moznet"],
//"charset": ["client.CHARSET", ""],
//"initialURLs": ["client.INITIAL_URLS", "irc://"],
//"initialScripts": ["client.INITIAL_SCRIPTS", ""],
//"newTabLimit": ["client.NEW_TAB_LIMIT", 15],
//REMOVED: "raiseNewTab": ["client.RAISE_NEW_TAB", false],
//"nickCompleteStr": ["client.ADDRESSED_NICK_SEP", ", "],
//"stalkWords": ["client.stalkingVictims", []],
//"stalkWholeWords": ["client.STALK_WHOLE_WORDS", true],
//"deleteOnPart": ["client.DELETE_ON_PART", true],
//"stalkBeep": ["client.STALK_BEEP", "beep"],
//"msgBeep": ["client.MSG_BEEP", "beep beep"],
//"queryBeep": ["client.QUERY_BEEP", "beep"],
//REMOVED: "munger": ["client.munger.enabled", true],
//"munger.colorCodes": ["client.enableColors", true],
//REMOVED: "munger.smileyText": ["client.smileyText", false],
//"bugURL": ["client.BUG_URL",
// "http://bugzilla.mozilla.org/show_bug.cgi?id=%s"],
//"notify.aggressive": ["client.FLASH_WINDOW", true],
//REMOVED: "settings.autoSave": ["client.SAVE_SETTINGS", true],
//REMOVED: "debug.tracer" : ["client.debugHook.enabled", false],
//"style.default": ["client.DEFAULT_STYLE",
// "chrome://chatzilla/skin/output-default.css"],
//CHANGED: "views.collapseMsgs": ["client.COLLAPSE_MSGS", false],
//CHANGED: "views.copyMessages": ["client.COPY_MESSAGES", true],
//CHANGED:"views.client.maxlines": ["client.MAX_MESSAGES", 200],
//CHANGED:"views.network.maxlines":
// ["CIRCNetwork.prototype.MAX_MESSAGES", 100],
//CHANGED:"views.channel.maxlines":
// ["CIRCChannel.prototype.MAX_MESSAGES", 300],
//CHANGED:"views.chanuser.maxlines":
// ["CIRCChanUser.prototype.MAX_MESSAGES", 200]
};
const PREF_CTRID = "@mozilla.org/preferences-service;1";
const nsIPrefService = Components.interfaces.nsIPrefService;
const nsIPrefBranch = Components.interfaces.nsIPrefBranch;
const nsIPrefBranchInternal = Components.interfaces.nsIPrefBranchInternal;
client.prefService =
Components.classes[PREF_CTRID].getService(nsIPrefService);
client.prefBranch = client.prefService.getBranch ("extensions.irc.");
var internal = client.prefBranch.QueryInterface(nsIPrefBranchInternal);
internal.addObserver("", client.prefObserver, false);
readPrefs();
}
function destroyReadPrefs()
{
const nsIPrefBranchInternal = Components.interfaces.nsIPrefBranchInternal;
var internal = client.prefBranch.QueryInterface(nsIPrefBranchInternal);
internal.removeObserver("", client.prefObserver);
}
client.prefObserver = new Object();
client.prefObserver.observe =
function pref_observe (prefService, topic, prefName)
{
if (!("prefLock" in client))
readPref(prefName);
}
function readPref(prefName)
{
var ary;
if (prefName in client.prefSpecs)
{
var varName = client.prefSpecs[prefName][0];
var defaultValue = client.prefSpecs[prefName][1];
var prefValue;
if (typeof defaultValue == "boolean")
{
prefValue = getBoolPref(prefName, defaultValue);
eval (varName + " = " + prefValue);
}
else if (typeof defaultValue == "number")
{
prefValue = getIntPref(prefName, defaultValue);
eval (varName + " = " + prefValue);
}
else if (defaultValue instanceof Array)
{
prefValue = getCharPref(prefName, defaultValue.join("; "));
if (prefValue)
eval (varName + " = " + prefValue.split(/\s*;\s*/).toSource());
else
eval (varName + " = []");
}
else
{
prefValue = getCharPref (prefName, defaultValue);
eval (varName + " = " + prefValue.quote());
}
}
else if ((ary = prefName.match(/munger\.(.*)/)) &&
ary[1] in client.munger.entries)
{
client.munger.entries[ary[1]].enabled =
getBoolPref ("munger." + prefName,
client.munger.entries[ary[1]].enabled);
}
else
{
if (!(prefName.match(/viewList\..*/)))
dd ("readPref: UNKNOWN PREF ``" + prefName + "''");
}
}
function readPrefs()
{
for (var p in client.prefSpecs)
readPref(p);
//if (!client.INITIAL_URLS)
// client.INITIAL_URLS = "irc://";
for (var entry in client.munger.entries)
{
if (entry[0] != ".")
{
client.munger.entries[entry].enabled =
getBoolPref ("munger." + entry,
client.munger.entries[entry].enabled);
}
}
}
function writePref(prefName)
{
function clearPref(prefName)
{
try
{
client.prefBranch.clearUserPref (prefName);
}
catch (ex)
{
// ignore missing pref exception
}
};
var ary;
if (prefName in client.prefSpecs)
{
var varName = client.prefSpecs[prefName][0];
var defaultValue = client.prefSpecs[prefName][1];
var prefValue = eval(varName);
if (prefValue != defaultValue)
{
if (typeof defaultValue == "boolean")
client.prefBranch.setBoolPref(prefName, prefValue);
else if (typeof defaultValue == "number")
client.prefBranch.setIntPref(prefName, prefValue);
else if (defaultValue instanceof Array)
client.prefBranch.setCharPref(prefName, prefValue.join("; "));
else
client.prefBranch.setCharPref(prefName, prefValue);
}
else
{
clearPref(prefName);
}
}
else if ((ary = prefName.match(/munger\.(.*)/)) &&
ary[1] in client.munger.entries)
{
var entry = client.munger.entries[ary[1]];
if (entry.enabled != entry.enabledDefault)
client.prefBranch.setBoolPref(prefName, entry.enabled);
else
clearPref (prefName);
}
else
{
dd ("writePref: UNKNOWN PREF ``" + prefName + "''");
}
if (!("prefLock" in client))
client.prefService.savePrefFile(null);
}
function writePrefs (rootNode)
{
client.prefLock = true;
for (var p in client.prefSpecs)
writePref(p);
for (var entry in client.munger.entries)
{
if (entry[0] != ".")
{
writePref("munger." + entry);
}
}
delete client.prefLock;
client.prefService.savePrefFile(null);
}
function getCharPref (prefName, defaultValue)
{
var rv;
try
{
rv = client.prefBranch.getCharPref (prefName);
}
catch (e)
{
rv = defaultValue;
}
//dd ("getCharPref: returning '" + rv + "' for " + prefName);
return rv;
}
function getIntPref (prefName, defaultValue)
{
try
{
return client.prefBranch.getIntPref (prefName);
}
catch (e)
{
return defaultValue;
}
}
function getBoolPref (prefName, defaultValue, branch)
{
try
{
if (branch)
return branch.getBoolPref (prefName);
return client.prefBranch.getBoolPref (prefName);
}
catch (e)
{
return defaultValue;
}
}