| 96 |
96 |
| 97 return FALSE; |
97 return FALSE; |
| 98 } |
98 } |
| 99 |
99 |
| 100 static void |
100 static void |
| 101 purple_xmlnode_append_to_buffer(PurpleXmlNode *node, GtkTextIter *iter, GtkTextTag *tag) |
101 purple_xmlnode_append_to_buffer(PurpleXmlNode *node, gint indent_level, GtkTextIter *iter, GtkTextTag *tag) |
| 102 { |
102 { |
| 103 PurpleXmlNode *c; |
103 PurpleXmlNode *c; |
| 104 gboolean need_end = FALSE, pretty = TRUE; |
104 gboolean need_end = FALSE, pretty = TRUE; |
| |
105 gint i; |
| 105 |
106 |
| 106 g_return_if_fail(node != NULL); |
107 g_return_if_fail(node != NULL); |
| |
108 |
| |
109 for (i = 0; i < indent_level; i++) { |
| |
110 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\t", 1, tag, NULL); |
| |
111 } |
| 107 |
112 |
| 108 gtk_text_buffer_insert_with_tags(console->buffer, iter, "<", 1, |
113 gtk_text_buffer_insert_with_tags(console->buffer, iter, "<", 1, |
| 109 tag, console->tags.bracket, NULL); |
114 tag, console->tags.bracket, NULL); |
| 110 gtk_text_buffer_insert_with_tags(console->buffer, iter, node->name, -1, |
115 gtk_text_buffer_insert_with_tags(console->buffer, iter, node->name, -1, |
| 111 tag, console->tags.tag, NULL); |
116 tag, console->tags.tag, NULL); |
| 154 if (pretty) { |
159 if (pretty) { |
| 155 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\n", 1, |
160 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\n", 1, |
| 156 tag, NULL); |
161 tag, NULL); |
| 157 } |
162 } |
| 158 |
163 |
| 159 need_end = FALSE; |
|
| 160 for (c = node->child; c; c = c->next) |
164 for (c = node->child; c; c = c->next) |
| 161 { |
165 { |
| 162 if (c->type == PURPLE_XMLNODE_TYPE_TAG) { |
166 if (c->type == PURPLE_XMLNODE_TYPE_TAG) { |
| 163 purple_xmlnode_append_to_buffer(c, iter, tag); |
167 purple_xmlnode_append_to_buffer(c, indent_level + 1, iter, tag); |
| 164 #if 0 |
|
| 165 if (!need_end) { |
|
| 166 g_string_append(text, "<div class=tab>"); |
|
| 167 need_end = TRUE; |
|
| 168 } |
|
| 169 text = g_string_append_len(text, esc, esc_len); |
|
| 170 #endif |
|
| 171 } else if (c->type == PURPLE_XMLNODE_TYPE_DATA && c->data_sz > 0) { |
168 } else if (c->type == PURPLE_XMLNODE_TYPE_DATA && c->data_sz > 0) { |
| 172 gtk_text_buffer_insert_with_tags(console->buffer, iter, c->data, c->data_sz, |
169 gtk_text_buffer_insert_with_tags(console->buffer, iter, c->data, c->data_sz, |
| 173 tag, NULL); |
170 tag, NULL); |
| 174 } |
171 } |
| 175 } |
172 } |
| 176 |
173 |
| |
174 if (pretty) { |
| |
175 for (i = 0; i < indent_level; i++) { |
| |
176 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\t", 1, tag, NULL); |
| |
177 } |
| |
178 } |
| 177 gtk_text_buffer_insert_with_tags(console->buffer, iter, "<", 1, |
179 gtk_text_buffer_insert_with_tags(console->buffer, iter, "<", 1, |
| 178 tag, console->tags.bracket, NULL); |
180 tag, console->tags.bracket, NULL); |
| 179 gtk_text_buffer_insert_with_tags(console->buffer, iter, "/", 1, |
181 gtk_text_buffer_insert_with_tags(console->buffer, iter, "/", 1, |
| 180 tag, NULL); |
182 tag, NULL); |
| 181 gtk_text_buffer_insert_with_tags(console->buffer, iter, node->name, -1, |
183 gtk_text_buffer_insert_with_tags(console->buffer, iter, node->name, -1, |
| 201 |
203 |
| 202 if (!console || console->gc != gc) |
204 if (!console || console->gc != gc) |
| 203 return; |
205 return; |
| 204 |
206 |
| 205 gtk_text_buffer_get_end_iter(console->buffer, &iter); |
207 gtk_text_buffer_get_end_iter(console->buffer, &iter); |
| 206 purple_xmlnode_append_to_buffer(*packet, &iter, console->tags.incoming); |
208 purple_xmlnode_append_to_buffer(*packet, 0, &iter, console->tags.incoming); |
| 207 } |
209 } |
| 208 |
210 |
| 209 static void |
211 static void |
| 210 purple_xmlnode_sent_cb(PurpleConnection *gc, char **packet, gpointer null) |
212 purple_xmlnode_sent_cb(PurpleConnection *gc, char **packet, gpointer null) |
| 211 { |
213 { |
| 218 |
220 |
| 219 if (!node) |
221 if (!node) |
| 220 return; |
222 return; |
| 221 |
223 |
| 222 gtk_text_buffer_get_end_iter(console->buffer, &iter); |
224 gtk_text_buffer_get_end_iter(console->buffer, &iter); |
| 223 purple_xmlnode_append_to_buffer(node, &iter, console->tags.outgoing); |
225 purple_xmlnode_append_to_buffer(node, 0, &iter, console->tags.outgoing); |
| 224 purple_xmlnode_free(node); |
226 purple_xmlnode_free(node); |
| 225 } |
227 } |
| 226 |
228 |
| 227 static gboolean |
229 static gboolean |
| 228 message_send_cb(GtkWidget *widget, GdkEventKey *event, gpointer p) |
230 message_send_cb(GtkWidget *widget, GdkEventKey *event, gpointer p) |