pidgin/plugins/xmppconsole.c

branch
soc.2013.gobjectification.plugins
changeset 36692
324db2a53c4c
parent 36637
9b0109ae118d
parent 34935
686fa55b0deb
child 36719
0d7682bdf828
equal deleted inserted replaced
36691:92122af1f083 36692:324db2a53c4c
61 "span.value { color: #324aa4; }" \ 61 "span.value { color: #324aa4; }" \
62 "span.xmlns { color: #2cb12f; font-weight: bold;}" \ 62 "span.xmlns { color: #2cb12f; font-weight: bold;}" \
63 "</style></head></html>" 63 "</style></head></html>"
64 64
65 static char * 65 static char *
66 xmlnode_to_pretty_str(xmlnode *node, int *len) 66 purple_xmlnode_to_pretty_str(PurpleXmlNode *node, int *len)
67 { 67 {
68 GString *text = g_string_new(""); 68 GString *text = g_string_new("");
69 xmlnode *c; 69 PurpleXmlNode *c;
70 char *node_name, *esc, *esc2; 70 char *node_name, *esc, *esc2;
71 gboolean need_end = FALSE, pretty = TRUE; 71 gboolean need_end = FALSE, pretty = TRUE;
72 72
73 g_return_val_if_fail(node != NULL, NULL); 73 g_return_val_if_fail(node != NULL, NULL);
74 74
92 g_free(xmlns); 92 g_free(xmlns);
93 } 93 }
94 } 94 }
95 for (c = node->child; c; c = c->next) 95 for (c = node->child; c; c = c->next)
96 { 96 {
97 if (c->type == XMLNODE_TYPE_ATTRIB) { 97 if (c->type == PURPLE_XMLNODE_TYPE_ATTRIB) {
98 esc = g_markup_escape_text(c->name, -1); 98 esc = g_markup_escape_text(c->name, -1);
99 esc2 = g_markup_escape_text(c->data, -1); 99 esc2 = g_markup_escape_text(c->data, -1);
100 g_string_append_printf(text, 100 g_string_append_printf(text,
101 " <span class=attr>%s</span>=" 101 " <span class=attr>%s</span>="
102 "'<span class=value>%s</span>'", 102 "'<span class=value>%s</span>'",
103 esc, esc2); 103 esc, esc2);
104 g_free(esc); 104 g_free(esc);
105 g_free(esc2); 105 g_free(esc2);
106 } else if (c->type == XMLNODE_TYPE_TAG || c->type == XMLNODE_TYPE_DATA) { 106 } else if (c->type == PURPLE_XMLNODE_TYPE_TAG || c->type == PURPLE_XMLNODE_TYPE_DATA) {
107 if (c->type == XMLNODE_TYPE_DATA) 107 if (c->type == PURPLE_XMLNODE_TYPE_DATA)
108 pretty = FALSE; 108 pretty = FALSE;
109 need_end = TRUE; 109 need_end = TRUE;
110 } 110 }
111 } 111 }
112 112
116 pretty ? "<br>" : ""); 116 pretty ? "<br>" : "");
117 117
118 need_end = FALSE; 118 need_end = FALSE;
119 for (c = node->child; c; c = c->next) 119 for (c = node->child; c; c = c->next)
120 { 120 {
121 if (c->type == XMLNODE_TYPE_TAG) { 121 if (c->type == PURPLE_XMLNODE_TYPE_TAG) {
122 int esc_len; 122 int esc_len;
123 esc = xmlnode_to_pretty_str(c, &esc_len); 123 esc = purple_xmlnode_to_pretty_str(c, &esc_len);
124 if (!need_end) { 124 if (!need_end) {
125 g_string_append(text, "<div class=tab>"); 125 g_string_append(text, "<div class=tab>");
126 need_end = TRUE; 126 need_end = TRUE;
127 } 127 }
128 text = g_string_append_len(text, esc, esc_len); 128 text = g_string_append_len(text, esc, esc_len);
129 g_free(esc); 129 g_free(esc);
130 } else if (c->type == XMLNODE_TYPE_DATA && c->data_sz > 0) { 130 } else if (c->type == PURPLE_XMLNODE_TYPE_DATA && c->data_sz > 0) {
131 esc = g_markup_escape_text(c->data, c->data_sz); 131 esc = g_markup_escape_text(c->data, c->data_sz);
132 text = g_string_append(text, esc); 132 text = g_string_append(text, esc);
133 g_free(esc); 133 g_free(esc);
134 } 134 }
135 } 135 }
154 154
155 return g_string_free(text, FALSE); 155 return g_string_free(text, FALSE);
156 } 156 }
157 157
158 static void 158 static void
159 xmlnode_received_cb(PurpleConnection *gc, xmlnode **packet, gpointer null) 159 purple_xmlnode_received_cb(PurpleConnection *gc, PurpleXmlNode **packet, gpointer null)
160 { 160 {
161 char *str, *formatted; 161 char *str, *formatted;
162 162
163 if (!console || console->gc != gc) 163 if (!console || console->gc != gc)
164 return; 164 return;
165 str = xmlnode_to_pretty_str(*packet, NULL); 165 str = purple_xmlnode_to_pretty_str(*packet, NULL);
166 formatted = g_strdup_printf("<div class=incoming>%s</div>", str); 166 formatted = g_strdup_printf("<div class=incoming>%s</div>", str);
167 gtk_webview_append_html(GTK_WEBVIEW(console->webview), formatted); 167 gtk_webview_append_html(GTK_WEBVIEW(console->webview), formatted);
168 g_free(formatted); 168 g_free(formatted);
169 g_free(str); 169 g_free(str);
170 } 170 }
171 171
172 static void 172 static void
173 xmlnode_sent_cb(PurpleConnection *gc, char **packet, gpointer null) 173 purple_xmlnode_sent_cb(PurpleConnection *gc, char **packet, gpointer null)
174 { 174 {
175 char *str; 175 char *str;
176 char *formatted; 176 char *formatted;
177 xmlnode *node; 177 PurpleXmlNode *node;
178 178
179 if (!console || console->gc != gc) 179 if (!console || console->gc != gc)
180 return; 180 return;
181 node = xmlnode_from_str(*packet, -1); 181 node = purple_xmlnode_from_str(*packet, -1);
182 182
183 if (!node) 183 if (!node)
184 return; 184 return;
185 185
186 str = xmlnode_to_pretty_str(node, NULL); 186 str = purple_xmlnode_to_pretty_str(node, NULL);
187 formatted = g_strdup_printf("<div class=outgoing>%s</div>", str); 187 formatted = g_strdup_printf("<div class=outgoing>%s</div>", str);
188 gtk_webview_append_html(GTK_WEBVIEW(console->webview), formatted); 188 gtk_webview_append_html(GTK_WEBVIEW(console->webview), formatted);
189 g_free(formatted); 189 g_free(formatted);
190 g_free(str); 190 g_free(str);
191 xmlnode_free(node); 191 purple_xmlnode_free(node);
192 } 192 }
193 193
194 static gboolean 194 static gboolean
195 message_send_cb(GtkWidget *widget, GdkEventKey *event, gpointer p) 195 message_send_cb(GtkWidget *widget, GdkEventKey *event, gpointer p)
196 { 196 {
226 int lines; 226 int lines;
227 GdkRectangle oneline; 227 GdkRectangle oneline;
228 int height; 228 int height;
229 int pad_top, pad_inside, pad_bottom; 229 int pad_top, pad_inside, pad_bottom;
230 #endif 230 #endif
231 xmlnode *node; 231 PurpleXmlNode *node;
232 232
233 #if 0 233 #if 0
234 /* TODO WebKit: Do entry auto-sizing... */ 234 /* TODO WebKit: Do entry auto-sizing... */
235 wrapped_lines = 1; 235 wrapped_lines = 1;
236 gtk_text_buffer_get_start_iter(buffer, &iter); 236 gtk_text_buffer_get_start_iter(buffer, &iter);
256 256
257 str = gtk_webview_get_body_text(GTK_WEBVIEW(webview)); 257 str = gtk_webview_get_body_text(GTK_WEBVIEW(webview));
258 if (!str) 258 if (!str)
259 return; 259 return;
260 xmlstr = g_strdup_printf("<xml>%s</xml>", str); 260 xmlstr = g_strdup_printf("<xml>%s</xml>", str);
261 node = xmlnode_from_str(xmlstr, -1); 261 node = purple_xmlnode_from_str(xmlstr, -1);
262 if (node) { 262 if (node) {
263 gtk_webview_clear_formatting(GTK_WEBVIEW(console->entry)); 263 gtk_webview_clear_formatting(GTK_WEBVIEW(console->entry));
264 } else { 264 } else {
265 gtk_webview_toggle_backcolor(GTK_WEBVIEW(console->entry), "#ffcece"); 265 gtk_webview_toggle_backcolor(GTK_WEBVIEW(console->entry), "#ffcece");
266 } 266 }
267 g_free(str); 267 g_free(str);
268 g_free(xmlstr); 268 g_free(xmlstr);
269 if (node) 269 if (node)
270 xmlnode_free(node); 270 purple_xmlnode_free(node);
271 } 271 }
272 272
273 static void iq_clicked_cb(GtkWidget *w, gpointer nul) 273 static void iq_clicked_cb(GtkWidget *w, gpointer nul)
274 { 274 {
275 GtkWidget *vbox, *hbox, *to_entry, *label, *type_combo; 275 GtkWidget *vbox, *hbox, *to_entry, *label, *type_combo;
715 if (!jabber) 715 if (!jabber)
716 return FALSE; 716 return FALSE;
717 717
718 xmpp_console_handle = plugin; 718 xmpp_console_handle = plugin;
719 purple_signal_connect(jabber, "jabber-receiving-xmlnode", xmpp_console_handle, 719 purple_signal_connect(jabber, "jabber-receiving-xmlnode", xmpp_console_handle,
720 PURPLE_CALLBACK(xmlnode_received_cb), NULL); 720 PURPLE_CALLBACK(purple_xmlnode_received_cb), NULL);
721 purple_signal_connect(jabber, "jabber-sending-text", xmpp_console_handle, 721 purple_signal_connect(jabber, "jabber-sending-text", xmpp_console_handle,
722 PURPLE_CALLBACK(xmlnode_sent_cb), NULL); 722 PURPLE_CALLBACK(purple_xmlnode_sent_cb), NULL);
723 purple_signal_connect(purple_connections_get_handle(), "signing-on", 723 purple_signal_connect(purple_connections_get_handle(), "signing-on",
724 plugin, PURPLE_CALLBACK(signing_on_cb), NULL); 724 plugin, PURPLE_CALLBACK(signing_on_cb), NULL);
725 purple_signal_connect(purple_connections_get_handle(), "signed-off", 725 purple_signal_connect(purple_connections_get_handle(), "signed-off",
726 plugin, PURPLE_CALLBACK(signed_off_cb), NULL); 726 plugin, PURPLE_CALLBACK(signed_off_cb), NULL);
727 727

mercurial