-var ThemeControlCodeMap = {\r
- "C": "\x03",\r
- "B": "\x02",\r
- "U": "\x1F",\r
- "O": "\x0F",\r
- "$": "$"\r
-};\r
-\r
-var DefaultTheme = {\r
- "PREFIX": ["$C4==$O "],\r
- "SIGNON": ["Signed on!", true],\r
- "CONNECT": ["Connected to server.", true],\r
- "RAW": ["$m", true],\r
- "DISCONNECT": ["Disconnected from server.", true],\r
- "ERROR": ["ERROR: $m", true],\r
- "SERVERNOTICE": ["$m", true],\r
- "JOIN": ["$n [$h] has joined $c", true],\r
- "PART": ["$n [$h] has left $c [$m]", true],\r
- "KICK": ["$v was kicked from $c by $n [$m]", true],\r
- "MODE": ["mode/$c [$m] by $n", true],\r
- "QUIT": ["$n [$h] has quit [$m]", true],\r
- "NICK": ["$n has changed nick to $w", true],\r
- "TOPIC": ["$n changed the topic of $c to: $m", true],\r
- "UMODE": ["MODE $n $m", true],\r
- "INVITE": ["$n invites you to join $c", true],\r
- "CHANMSG": ["<$n> $m"],\r
- "PRIVMSG": ["<$n> $m"],\r
- "CHANNOTICE": ["-$n:$c- $m"],\r
- "PRIVNOTICE": ["-$n- $m"],\r
- "OURCHANMSG": ["<$n> $m"],\r
- "OURPRIVMSG": ["<$n> $m"],\r
- "OURTARGETEDMSG": ["*$t* $m"],\r
- "OURTARGETEDNOTICE": ["[notice($t)] $m"],\r
- "OURCHANNOTICE": ["-$n:$t- $m"],\r
- "OURPRIVNOTICE": ["-$n- $m"],\r
- "OURCHANACTION": [" * $n $m"],\r
- "OURPRIVACTION": [" * $n $m"],\r
- "CHANACTION": [" * $n $m"],\r
- "PRIVACTION": [" * $n $m"],\r
- "CHANCTCP": ["$n [$h] requested CTCP $x from $c: $m"],\r
- "PRIVCTCP": ["$n [$h] requested CTCP $x from $-: $m"],\r
- "CTCPREPLY": ["CTCP $x reply from $n: $m"],\r
- "OURCHANCTCP": ["[ctcp($t)] $x $m"],\r
- "OURPRIVCTCP": ["[ctcp($t)] $x $m"],\r
- "OURTARGETEDCTCP": ["[ctcp($t)] $x $m"]\r
-};\r
-\r
-var Theme = new Class({\r
- initialize: function(themeDict) {\r
- this.__theme = {};\r
- \r
- for(var k in DefaultTheme)\r
- this.__theme[k] = DefaultTheme[k];\r
- \r
- if(themeDict)\r
- for(var k in themeDict)\r
- this.__theme[k] = themeDict[k];\r
-\r
- for(var k in this.__theme) {\r
- if(k == "PREFIX")\r
- continue;\r
-\r
- var data = this.__theme[k];\r
- if(data[1]) {\r
- this.__theme[k] = this.__theme["PREFIX"] + data[0];\r
- } else {\r
- this.__theme[k] = data[0];\r
- }\r
- }\r
- },\r
- __dollarSubstitute: function(x, h) {\r
- var msg = [];\r
-\r
- var n = x.split("");\r
- for(var i=0;i<n.length;i++) {\r
- var c = n[i];\r
- if(c == "$" && (i <= n.length - 1)) {\r
- var c2 = n[++i];\r
-\r
- var o = ThemeControlCodeMap[c2];\r
- if(!o)\r
- o = h[c2];\r
- if(o)\r
- msg.push(o);\r
- } else {\r
- msg.push(c);\r
- }\r
- }\r
- \r
- return msg.join("");\r
- },\r
- message: function(type, data) {\r
- var msg = this.__theme[type];\r
- \r
- msg = this.__dollarSubstitute(msg, data);\r
-\r
- return msg;\r
- }\r
-});\r
+qwebirc.ui.themes.ThemeControlCodeMap = {
+ "C": "\x03",
+ "B": "\x02",
+ "U": "\x1F",
+ "O": "\x0F",
+ "{": "\x00",
+ "}": "\x00",
+ "[": "qwebirc://whois/",
+ "]": "/",
+ "$": "$"
+};
+
+qwebirc.ui.themes.Default = {
+ "PREFIX": ["$C4==$O "],
+ "SIGNON": ["Signed on!", true],
+ "CONNECTING": ["Connecting to server, please wait...", true],
+ "CONNECT": ["Logging in, please wait...", true],
+ "CONNECTED": ["Connected and logged in -- ready to go!", true],
+ "RAW": ["$m", true],
+ "DISCONNECT": ["Disconnected from server: $m", true],
+ "ERROR": ["ERROR: $m", true],
+ "SERVERNOTICE": ["$m", true],
+ "JOIN": ["${$N$} [$h] has joined $c", true],
+ "OURJOIN": ["${$N$} [$h] has joined $c", true],
+ "PART": ["${$N$} [$h] has left $c [$m]", true],
+ "KICK": ["${$v$} was kicked from $c by ${$N$} [$m]", true],
+ "MODE": ["mode/$c [$m] by ${$N$}", true],
+ "QUIT": ["${$N$} [$h] has quit [$m]", true],
+ "NICK": ["${$n$} has changed nick to ${$[$w$]$}", true],
+ "TOPIC": ["${$N$} changed the topic of $c to: $m", true],
+ "UMODE": ["Usermode change: $m", true],
+ "INVITE": ["$N invites you to join $c", true],
+ "HILIGHT": ["$C4"],
+ "HILIGHTEND": ["$O"],
+ "CHANMSG": ["<$C15$@$O${$($N$)$}> $m"],
+ "PRIVMSG": ["<$($N$)> $m"],
+ "CHANNOTICE": ["-${$($N$)$}:$c- $m"],
+ "PRIVNOTICE": ["-$($N$)- $m"],
+ "OURCHANMSG": ["<$C15$@$O$U$N$O> $m"],
+ "OURPRIVMSG": ["<$U$N$O> $m"],
+ "OURTARGETEDMSG": ["*$[$t$]* $m"],
+ "OURTARGETEDNOTICE": ["[notice($[$t$])] $m"],
+ "OURCHANNOTICE": ["-$N:$t- $m"],
+ "OURPRIVNOTICE": ["-$N- $m"],
+ "OURCHANACTION": [" * $U$N$O $m"],
+ "OURPRIVACTION": [" * $U$N$O $m"],
+ "CHANACTION": [" * ${$($N$)$} $m"],
+ "PRIVACTION": [" * $($N$) $m"],
+ "CHANCTCP": ["$N [$h] requested CTCP $x from $c: $m"],
+ "PRIVCTCP": ["$N [$h] requested CTCP $x from $-: $m"],
+ "CTCPREPLY": ["CTCP $x reply from $N: $m"],
+ "OURCHANCTCP": ["[ctcp($t)] $x $m"],
+ "OURPRIVCTCP": ["[ctcp($t)] $x $m"],
+ "OURTARGETEDCTCP": ["[ctcp($t)] $x $m"],
+ "WHOISUSER": ["$B$N$B [$h]", true],
+ "WHOISREALNAME": [" realname : $m", true],
+ "WHOISCHANNELS": [" channels : $m", true],
+ "WHOISSERVER": [" server : $x [$m]", true],
+ "WHOISACCOUNT": [" account : qwebirc://qwhois/$m", true],
+ "WHOISIDLE": [" idle : $x [connected: $m]", true],
+ "WHOISAWAY": [" away : $m", true],
+ "WHOISOPER": [" : $BIRC Operator$B", true],
+ "WHOISOPERNAME": [" operedas : $m", true],
+ "WHOISACTUALLY": [" realhost : $m [ip: $x]", true],
+ "WHOISGENERICTEXT": [" : $m", true],
+ "WHOISEND": ["End of WHOIS", true],
+ "AWAY": ["$N is away: $m", true],
+ "GENERICERROR": ["$m: $t", true],
+ "GENERICMESSAGE": ["$m", true],
+ "WALLOPS": ["WALLOP $n: $t", true],
+ "CHANNELCREATIONTIME": ["Channel $c was created at: $m", true],
+ "CHANNELMODEIS": ["Channel modes on $c are: $m", true],
+ "IGNORED": ["Ignored $n, to unignore type: /UNIGNORE $n", false],
+ "UNIGNORED": ["Unignored $n.", false],
+ "IGNOREHEADER": ["Ignore list:", false],
+ "IGNOREENTRY": ["- $h", false],
+ "IGNOREEMPTY": ["Ignore list is empty.", false],
+ "SILENCE": ["Silenced: $h", false],
+
+ "NOTIFYCHANMSGTITLE": ["Mentioned on $c:", false],
+ "NOTIFYCHANMSGBODY": ["<$@$n> $m", false],
+ "NOTIFYCHANACTIONTITLE": ["Mentioned on $c:", false],
+ "NOTIFYCHANACTIONBODY": [" * $n $m", false],
+ "NOTIFYPRIVMSGTITLE": ["Private message from $n:", false],
+ "NOTIFYPRIVMSGBODY": ["$m", false],
+ "NOTIFYPRIVACTIONTITLE": ["Private message from $n:", false],
+ "NOTIFYPRIVACTIONBODY": [" * $n $m", false],
+ "NOTIFYCHANNOTICETITLE": ["Mentioned on $c:", false],
+ "NOTIFYCHANNOTICEBODY": ["-$n- $m", false],
+ "NOTIFYPRIVNOTICETITLE": ["Private notice from $n:", false],
+ "NOTIFYPRIVNOTICEBODY": ["$m", false]
+};
+
+qwebirc.ui.Theme = new Class({
+ initialize: function(themeDict) {
+ this.__theme = qwebirc.util.dictCopy(qwebirc.ui.themes.Default);
+
+ if(themeDict)
+ for(var k in themeDict)
+ this.__theme[k] = themeDict[k];
+
+ for(var k in this.__theme) {
+ if(k == "PREFIX")
+ continue;
+
+ var data = this.__theme[k];
+ if(data[1]) {
+ this.__theme[k] = this.__theme["PREFIX"] + data[0];
+ } else {
+ this.__theme[k] = data[0];
+ }
+ }
+
+ this.__ccmap = qwebirc.util.dictCopy(qwebirc.ui.themes.ThemeControlCodeMap);
+ this.__ccmaph = qwebirc.util.dictCopy(this.__ccmap);
+
+ this.__ccmaph["("] = this.message("HILIGHT", {}, this.__ccmap);
+ this.__ccmaph[")"] = this.message("HILIGHTEND", {}, this.__ccmap);
+ this.__ccmaph["{"] = this.__ccmaph["}"] = "";
+ },
+ __dollarSubstitute: function(x, h, mapper) {
+ var msg = [];
+
+ var n = x.split("");
+ for(var i=0;i<n.length;i++) {
+ var c = n[i];
+ if(c == "$" && (i <= n.length - 1)) {
+ var c2 = n[++i];
+
+ var o = mapper[c2];
+ if(!o)
+ o = h[c2];
+ if(o)
+ msg.push(o);
+ } else {
+ msg.push(c);
+ }
+ }
+
+ return msg.join("");
+ },
+ message: function(type, data, hilight) {
+ var map;
+ if(hilight) {
+ map = this.__ccmaph;
+ } else {
+ map = this.__ccmap;
+ }
+
+ if(data && data["n"])
+ data["N"] = "qwebirc://whois/" + data.n + "/";
+ return this.__dollarSubstitute(this.__theme[type], data, map);
+ }
+});