pidgin/gtkdebug.html

Fri, 09 Sep 2016 12:43:59 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 09 Sep 2016 12:43:59 -0500
changeset 38040
8f2b9a832dec
parent 33925
e5b703bc9f03
permissions
-rw-r--r--

enable meanwhile

33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
1 <!DOCTYPE html>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
2 <html>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
3 <head>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
4 <style>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
5 body{white-space:pre-wrap;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
6 div.l0{color:#000000;} /* All debug levels. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
7 div.l1{color:#666666;} /* Misc. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
8 div.l2{color:#000000;} /* Information. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
9 div.l3{color:#660000;} /* Warnings. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
10 div.l4{color:#FF0000;} /* Errors. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
11 div.l5{color:#FF0000;font-weight:bold;} /* Fatal errors. */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
12 /* Filter levels */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
13 div#pause~div{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
14 body.l1 div.l0{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
15 body.l2 div.l0,body.l2 div.l1{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
16 body.l3 div.l0,body.l3 div.l1,body.l3 div.l2{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
17 body.l4 div.l0,body.l4 div.l1,body.l4 div.l2,body.l4 div.l3{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
18 body.l5 div.l0,body.l5 div.l1,body.l5 div.l2,body.l5 div.l3,body.l5 div.l4{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
19 /* Regex */
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
20 div.hide{display:none;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
21 span.regex{background-color:#ffafaf;font-weight:bold;}
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
22 </style>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
23 <script>
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
24 function nearBottom() {
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
25 return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.5 ) ) );
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
26 }
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
27
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
28 function scrollToBottom() {
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
29 document.body.scrollTop = document.body.offsetHeight;
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
30 }
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
31
33923
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
32 regex = {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
33 clear: function () {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
34 var list, i;
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
35 var scroll = nearBottom();
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
36
33923
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
37 /* Remove highlighting SPANs */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
38 list = document.getElementsByClassName('regex');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
39 i = list.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
40 while (i--) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
41 var span = list[i];
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
42 var parent = span.parentNode;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
43 var content = span.textContent;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
44 var text = document.createTextNode(content);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
45 parent.replaceChild(text, span);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
46 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
47
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
48 /* Remove hidden DIVs */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
49 list = document.getElementsByClassName('hide');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
50 i = list.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
51 while (i--) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
52 list[i].classList.remove('hide');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
53 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
54
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
55 if (scroll)
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
56 scrollToBottom();
33923
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
57 this.enabled = false;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
58 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
59
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
60 highlightTextNodes: function (div, start_pos, end_pos) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
61 var data = [], node, range, span, contents;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
62 var ind, end_ind
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
63 var this_start, this_end;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
64
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
65 ind = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
66 div.normalize();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
67 node = div;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
68
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
69 /* First, find the container nodes and offsets to apply highlighting. */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
70 do {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
71 if (node.nodeType === Node.TEXT_NODE) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
72 end_ind = ind + node.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
73
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
74 if (start_pos <= ind)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
75 this_start = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
76 else if (start_pos < end_ind)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
77 this_start = start_pos - ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
78 else
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
79 this_start = -1;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
80
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
81 if (end_pos < end_ind)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
82 this_end = end_pos - ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
83 else
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
84 this_end = end_ind - ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
85
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
86 if (this_start != -1 && this_start < this_end) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
87 data.push(this_end, this_start, node);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
88 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
89
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
90 ind = end_ind;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
91 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
92
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
93 if (node.hasChildNodes()) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
94 node = node.firstChild;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
95 } else {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
96 while (node != div) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
97 var next = node.nextSibling;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
98 if (next) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
99 node = next;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
100 break;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
101 } else {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
102 node = node.parentNode;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
103 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
104 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
105 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
106 } while (node != div);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
107
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
108 /* Second, apply highlighting to saved sections. Changing the DOM is
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
109 automatically reflected in all WebKit API, so we have to do this after
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
110 finding the offsets, or things could get complicated. */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
111 while (data.length) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
112 node = data.pop();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
113 this_start = data.pop();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
114 this_end = data.pop();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
115
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
116 range = document.createRange();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
117 range.setStart(node, this_start);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
118 range.setEnd(node, this_end);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
119
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
120 span = document.createElement('span');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
121 span.className = 'regex';
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
122
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
123 contents = range.extractContents();
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
124 range.insertNode(span);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
125 span.appendChild(contents);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
126 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
127 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
128
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
129 match: function (div) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
130 var text, match_info;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
131 var m, count, start_pos, end_pos;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
132
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
133 text = div.textContent;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
134 if (!text)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
135 return;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
136
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
137 /* We do a first pass to see if it matches at all. If it does we work out
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
138 * the offsets to highlight.
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
139 */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
140 this.regex.lastIndex = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
141 var match_info = this.regex.exec(text);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
142 if ((match_info != null) != this.invert) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
143 /* If we're not highlighting or the expression is inverted, we're
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
144 * done and move on.
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
145 */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
146 if (!this.highlight || this.invert)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
147 return;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
148
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
149 do {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
150 if (match_info === null)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
151 break;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
152
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
153 count = match_info.length;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
154 if (count === 1)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
155 m = 0;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
156 else
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
157 m = 1;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
158
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
159 /* We do this because JS doesn't provide a sufficient means to
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
160 determine the indices of matched groups. So we're just going
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
161 to highlight the entire match instead. */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
162 m = 0; count = 1;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
163
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
164 for (; m < count; m++) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
165 start_pos = match_info.index;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
166 end_pos = this.regex.lastIndex;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
167 if (end_pos == -1)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
168 break;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
169
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
170 this.highlightTextNodes(div, start_pos, end_pos);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
171 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
172
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
173 /* Workaround broken API for empty matches */
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
174 if (match_info.index == this.regex.lastIndex)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
175 this.regex.lastIndex++;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
176 } while (match_info = this.regex.exec(text));
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
177 } else {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
178 div.classList.add('hide');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
179 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
180 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
181
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
182 filterAll: function (str, inv, high) {
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
183 this.regex = new RegExp(str, 'gi');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
184 this.invert = inv;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
185 this.highlight = high;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
186 this.enabled = true;
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
187 var list = document.getElementsByTagName('div');
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
188 for (var i = 0; i < list.length; i++)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
189 this.match(list[i]);
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
190 },
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
191
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
192 highlight: false,
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
193 invert: false,
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
194 enabled: false,
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
195 regex: undefined
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
196 }
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
197
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
198 function append(level, time, cat, msg) {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
199 var div = document.createElement('div');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
200 div.className = 'l' + level;
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
201
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
202 div.appendChild(document.createTextNode('(' + time + ') '));
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
203
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
204 if (cat) {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
205 var cat_n = document.createElement('b');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
206 cat_n.appendChild(document.createTextNode(cat + ':'));
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
207 div.appendChild(cat_n);
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
208 div.appendChild(document.createTextNode(' '));
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
209 }
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
210
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
211 div.appendChild(document.createTextNode(msg));
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
212
33923
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
213 if (regex.enabled)
0fcc5635daba Rewrite debug window filter in JS.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33922
diff changeset
214 regex.match(div);
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
215
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
216 var scroll = nearBottom();
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
217 document.body.appendChild(div);
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
218 if (scroll)
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
219 scrollToBottom();
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
220 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
221
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
222 function clear() {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
223 document.body.innerHTML = '';
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
224 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
225
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
226 function pauseOutput() {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
227 document.body.insertAdjacentHTML('beforeEnd', '<div id=pause></div>');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
228 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
229
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
230 function resumeOutput() {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
231 var pause = document.getElementById('pause');
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
232 if (pause) {
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
233 var parent = pause.parentNode;
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
234 parent.removeChild(pause);
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
235 scrollToBottom();
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
236 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
237 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
238
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
239 function setFilterLevel(l) {
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
240 var scroll = nearBottom();
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
241
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
242 document.body.className = 'l'+l;
33925
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
243
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
244 if (scroll)
e5b703bc9f03 Fix autoscroll in debug window.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33923
diff changeset
245 scrollToBottom();
33922
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
246 }
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
247 </script>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
248 </head>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
249 <body class=l0></body>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
250 </html>
61f997b47954 Split debug window HTML into a separate file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
diff changeset
251

mercurial