]> jfr.im git - irc/quakenet/qwebirc.git/blame - js/ui/theme.js
Reorganise.
[irc/quakenet/qwebirc.git] / js / ui / theme.js
CommitLineData
c3efd9cc
CP
1var ThemeControlCodeMap = {\r
2 "C": "\x03",\r
3 "B": "\x02",\r
4 "U": "\x1F",\r
5 "O": "\x0F",\r
6 "$": "$"\r
7};\r
8\r
da4b5be7
CP
9var DefaultTheme = {\r
10 "PREFIX": ["$C4==$O "],\r
11 "SIGNON": ["Signed on!", true],\r
12 "CONNECT": ["Connected to server.", true],\r
13 "RAW": ["$m", true],\r
14 "DISCONNECT": ["Disconnected from server.", true],\r
15 "ERROR": ["ERROR: $m", true],\r
16 "SERVERNOTICE": ["$m", true],\r
17 "JOIN": ["$n [$h] has joined $c", true],\r
18 "PART": ["$n [$h] has left $c [$m]", true],\r
19 "KICK": ["$v was kicked from $c by $n [$m]", true],\r
20 "MODE": ["mode/$c [$m] by $n", true],\r
21 "QUIT": ["$n [$h] has quit [$m]", true],\r
22 "NICK": ["$n has changed nick to $w", true],\r
23 "TOPIC": ["$n changed the topic of $c to: $m", true],\r
24 "UMODE": ["MODE $n $m", true],\r
25 "INVITE": ["$n invites you to join $c", true],\r
26 "CHANMSG": ["<$n> $m"],\r
27 "PRIVMSG": ["<$n> $m"],\r
28 "CHANNOTICE": ["-$n:$c- $m"],\r
29 "PRIVNOTICE": ["-$n- $m"],\r
30 "OURCHANMSG": ["<$n> $m"],\r
31 "OURPRIVMSG": ["<$n> $m"],\r
32 "OURTARGETEDMSG": ["*$t* $m"],\r
33 "OURTARGETEDNOTICE": ["[notice($t)] $m"],\r
34 "OURCHANNOTICE": ["-$n:$t- $m"],\r
35 "OURPRIVNOTICE": ["-$n- $m"],\r
36 "OURCHANACTION": [" * $n $m"],\r
37 "OURPRIVACTION": [" * $n $m"],\r
38 "CHANACTION": [" * $n $m"],\r
39 "PRIVACTION": [" * $n $m"],\r
40 "CHANCTCP": ["$n [$h] requested CTCP $x from $c: $m"],\r
41 "PRIVCTCP": ["$n [$h] requested CTCP $x from $-: $m"],\r
42 "CTCPREPLY": ["CTCP $x reply from $n: $m"],\r
43 "OURCHANCTCP": ["[ctcp($t)] $x $m"],\r
44 "OURPRIVCTCP": ["[ctcp($t)] $x $m"],\r
45 "OURTARGETEDCTCP": ["[ctcp($t)] $x $m"]\r
46};\r
47\r
48var Theme = new Class({\r
49 initialize: function(themeDict) {\r
50 this.__theme = {};\r
c3efd9cc 51 \r
da4b5be7
CP
52 for(var k in DefaultTheme)\r
53 this.__theme[k] = DefaultTheme[k];\r
c3efd9cc 54 \r
da4b5be7
CP
55 if(themeDict)\r
56 for(var k in themeDict)\r
57 this.__theme[k] = themeDict[k];\r
58\r
59 for(var k in this.__theme) {\r
60 if(k == "PREFIX")\r
61 continue;\r
62\r
63 var data = this.__theme[k];\r
64 if(data[1]) {\r
65 this.__theme[k] = this.__theme["PREFIX"] + data[0];\r
66 } else {\r
67 this.__theme[k] = data[0];\r
68 }\r
69 }\r
70 },\r
71 __dollarSubstitute: function(x, h) {\r
c3efd9cc 72 var msg = [];\r
da4b5be7 73\r
c3efd9cc
CP
74 var n = x.split("");\r
75 for(var i=0;i<n.length;i++) {\r
76 var c = n[i];\r
77 if(c == "$" && (i <= n.length - 1)) {\r
78 var c2 = n[++i];\r
79\r
80 var o = ThemeControlCodeMap[c2];\r
e2757a91 81 if(!o)\r
c3efd9cc 82 o = h[c2];\r
e2757a91
CP
83 if(o)\r
84 msg.push(o);\r
c3efd9cc
CP
85 } else {\r
86 msg.push(c);\r
87 }\r
88 }\r
89 \r
90 return msg.join("");\r
da4b5be7
CP
91 },\r
92 message: function(type, data) {\r
93 var msg = this.__theme[type];\r
c3efd9cc 94 \r
da4b5be7 95 msg = this.__dollarSubstitute(msg, data);\r
c3efd9cc
CP
96\r
97 return msg;\r
98 }\r
da4b5be7 99});\r