X-Git-Url: https://jfr.im/git/irc/quakenet/qwebirc.git/blobdiff_plain/8dc46dfa15e0a2392cd0c61e240cd6267b9f00f6..a205506c06372f2bd03dbc4becb5ddc3c622d9d1:/js/ui/theme.js diff --git a/js/ui/theme.js b/js/ui/theme.js index 806a93e..b8b6db3 100644 --- a/js/ui/theme.js +++ b/js/ui/theme.js @@ -1,12 +1,16 @@ -var ThemeControlCodeMap = { +qwebirc.ui.themes.ThemeControlCodeMap = { "C": "\x03", "B": "\x02", "U": "\x1F", "O": "\x0F", + "{": "\x00", + "}": "\x00", + "[": "qwebirc://whois/", + "]": "/", "$": "$" }; -var DefaultTheme = { +qwebirc.ui.themes.Default = { "PREFIX": ["$C4==$O "], "SIGNON": ["Signed on!", true], "CONNECT": ["Connected to server.", true], @@ -14,44 +18,62 @@ var DefaultTheme = { "DISCONNECT": ["Disconnected from server: $m", true], "ERROR": ["ERROR: $m", true], "SERVERNOTICE": ["$m", true], - "JOIN": ["$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": ["MODE $n $m", true], - "INVITE": ["$n invites you to join $c", true], - "CHANMSG": ["<$n> $m"], - "PRIVMSG": ["<$n> $m"], - "CHANNOTICE": ["-$n:$c- $m"], - "PRIVNOTICE": ["-$n- $m"], - "OURCHANMSG": ["<$n> $m"], - "OURPRIVMSG": ["<$n> $m"], - "OURTARGETEDMSG": ["*$t* $m"], - "OURTARGETEDNOTICE": ["[notice($t)] $m"], - "OURCHANNOTICE": ["-$n:$t- $m"], - "OURPRIVNOTICE": ["-$n- $m"], - "OURCHANACTION": [" * $n $m"], - "OURPRIVACTION": [" * $n $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"], + "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": ["<${$@$($N$)$}> $m"], + "PRIVMSG": ["<$($N$)> $m"], + "CHANNOTICE": ["-${$($N$)$}:$c- $m"], + "PRIVNOTICE": ["-$($N$)- $m"], + "OURCHANMSG": ["<$@$N> $m"], + "OURPRIVMSG": ["<$N> $m"], + "OURTARGETEDMSG": ["*$[$t$]* $m"], + "OURTARGETEDNOTICE": ["[notice($[$t$])] $m"], + "OURCHANNOTICE": ["-$N:$t- $m"], + "OURPRIVNOTICE": ["-$N- $m"], + "OURCHANACTION": [" * $N $m"], + "OURPRIVACTION": [" * $N $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"] + "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] }; -var Theme = new Class({ +qwebirc.ui.Theme = new Class({ initialize: function(themeDict) { - this.__theme = {}; + this.__theme = qwebirc.util.dictCopy(qwebirc.ui.themes.Default); - for(var k in DefaultTheme) - this.__theme[k] = DefaultTheme[k]; - if(themeDict) for(var k in themeDict) this.__theme[k] = themeDict[k]; @@ -67,8 +89,15 @@ var Theme = new Class({ 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) { + __dollarSubstitute: function(x, h, mapper) { var msg = []; var n = x.split(""); @@ -77,7 +106,7 @@ var Theme = new Class({ if(c == "$" && (i <= n.length - 1)) { var c2 = n[++i]; - var o = ThemeControlCodeMap[c2]; + var o = mapper[c2]; if(!o) o = h[c2]; if(o) @@ -89,11 +118,16 @@ var Theme = new Class({ return msg.join(""); }, - message: function(type, data) { - var msg = this.__theme[type]; + message: function(type, data, hilight) { + var map; + if(hilight) { + map = this.__ccmaph; + } else { + map = this.__ccmap; + } - msg = this.__dollarSubstitute(msg, data); - - return msg; + if(data && data["n"]) + data["N"] = "qwebirc://whois/" + data.n + "/"; + return this.__dollarSubstitute(this.__theme[type], data, map); } });