pidgin/plugins/xmppconsole/xmppconsole.c

Mon, 05 Sep 2022 23:36:14 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Mon, 05 Sep 2022 23:36:14 -0500
changeset 41652
fd32ea10d1cb
parent 41555
6ef22b85cb10
child 41854
c1d7e7445b0f
permissions
-rw-r--r--

Modernize XMPP console a bit

Convert `GtkComboBox` to `GtkDropDown`.

Changed the invalid XML entry to use error underline instead of the custom CSS background. Unfortunately, the upstream `error` CSS does not apply to a `TextView `, so this was the better alternative.

Fixed alignment on the `<iq>` popover.

Add a bit of vertical padding and suggested action CSS in popovers.

Inline some objects in the .ui now that `<property>` can contain children.
Consequently, the popover is closed with `gtk_menu_button_popdown` instead of `gtk_popover_popdown`. I don't know if it makes a difference, but it _seems_ better to use the parent's method instead of the child's.

Testing Done:
Opened XMPP console, picked some of the automated entries, changed to invalid XML to check the invalid styling.

Reviewed at https://reviews.imfreedom.org/r/1714/

15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
2 * Purple - XMPP debugging tool
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
4 *
39810
f75b20dbdfbb Use standard legalese in XMPP console.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39808
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
f75b20dbdfbb Use standard legalese in XMPP console.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39808
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
f75b20dbdfbb Use standard legalese in XMPP console.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39808
diff changeset
7 * source distribution.
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
8 *
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * (at your option) any later version.
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 *
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * GNU General Public License for more details.
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 *
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 */
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
23 #include <glib/gi18n-lib.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
24
40502
875489636847 pidgin.h phase3: create pidgin.h and force its usage
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
25 #include <gdk/gdkkeysyms.h>
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
26 #include <gtk/gtk.h>
40360
e21f3bbcc2a5 Update all of the pidgin code to include purple.h
Gary Kramlich <grim@reaperworld.com>
parents: 40222
diff changeset
27 #include <purple.h>
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
28 #include <pidgin.h>
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
30 #include "xmppconsole.h"
33011
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
31
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
32 #define PLUGIN_ID "gtk-xmpp"
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
33 #define PLUGIN_DOMAIN (g_quark_from_static_string(PLUGIN_ID))
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
34
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
35 struct _PidginXmppConsole {
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
36 GtkWindow parent;
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
37
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
38 GtkComboBox *account_chooser;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
39 PurpleConnection *gc;
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
40 GtkTextBuffer *buffer;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
41 struct {
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
42 GtkTextTag *info;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
43 GtkTextTag *incoming;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
44 GtkTextTag *outgoing;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
45 GtkTextTag *bracket;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
46 GtkTextTag *tag;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
47 GtkTextTag *attr;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
48 GtkTextTag *value;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
49 GtkTextTag *xmlns;
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
50 } tags;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
51 GtkWidget *entry;
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
52 GtkTextBuffer *entry_buffer;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 GtkWidget *sw;
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
54
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
55 struct {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
56 GtkMenuButton *button;
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
57 GtkEntry *to;
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
58 GtkDropDown *type;
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
59 } iq;
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
60
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
61 struct {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
62 GtkMenuButton *button;
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
63 GtkEntry *to;
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
64 GtkDropDown *type;
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
65 GtkDropDown *show;
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
66 GtkEntry *status;
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
67 GtkEntry *priority;
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
68 } presence;
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
69
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
70 struct {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
71 GtkMenuButton *button;
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
72 GtkEntry *to;
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
73 GtkDropDown *type;
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
74 GtkEntry *body;
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
75 GtkEntry *subject;
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
76 GtkEntry *thread;
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
77 } message;
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
78 };
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
79
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
80 G_DEFINE_DYNAMIC_TYPE(PidginXmppConsole, pidgin_xmpp_console, GTK_TYPE_WINDOW)
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
81
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
82 static PidginXmppConsole *console = NULL;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
83
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
84 /******************************************************************************
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
85 * Helpers
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
86 *****************************************************************************/
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
87 static void
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
88 xmppconsole_append_xmlnode(PidginXmppConsole *console, PurpleXmlNode *node,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
89 gint indent_level, GtkTextIter *iter,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
90 GtkTextTag *tag)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91 {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
92 PurpleXmlNode *c;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93 gboolean need_end = FALSE, pretty = TRUE;
39003
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
94 gint i;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
96 g_return_if_fail(node != NULL);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
97
39003
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
98 for (i = 0; i < indent_level; i++) {
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
99 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\t", 1, tag, NULL);
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
100 }
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
101
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
102 gtk_text_buffer_insert_with_tags(console->buffer, iter, "<", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
103 tag, console->tags.bracket, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
104 gtk_text_buffer_insert_with_tags(console->buffer, iter, node->name, -1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
105 tag, console->tags.tag, NULL);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107 if (node->xmlns) {
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
108 if ((!node->parent ||
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
109 !node->parent->xmlns ||
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
110 !purple_strequal(node->xmlns, node->parent->xmlns)) &&
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
111 !purple_strequal(node->xmlns, "jabber:client"))
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 {
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
113 gtk_text_buffer_insert_with_tags(console->buffer, iter, " ", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
114 tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
115 gtk_text_buffer_insert_with_tags(console->buffer, iter, "xmlns", 5,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
116 tag, console->tags.attr, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
117 gtk_text_buffer_insert_with_tags(console->buffer, iter, "='", 2,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
118 tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
119 gtk_text_buffer_insert_with_tags(console->buffer, iter, node->xmlns, -1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
120 tag, console->tags.xmlns, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
121 gtk_text_buffer_insert_with_tags(console->buffer, iter, "'", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
122 tag, NULL);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 }
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
125 for (c = node->child; c; c = c->next)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
126 {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
127 if (c->type == PURPLE_XMLNODE_TYPE_ATTRIB) {
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
128 gtk_text_buffer_insert_with_tags(console->buffer, iter, " ", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
129 tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
130 gtk_text_buffer_insert_with_tags(console->buffer, iter, c->name, -1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
131 tag, console->tags.attr, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
132 gtk_text_buffer_insert_with_tags(console->buffer, iter, "='", 2,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
133 tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
134 gtk_text_buffer_insert_with_tags(console->buffer, iter, c->data, -1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
135 tag, console->tags.value, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
136 gtk_text_buffer_insert_with_tags(console->buffer, iter, "'", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
137 tag, NULL);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
138 } else if (c->type == PURPLE_XMLNODE_TYPE_TAG || c->type == PURPLE_XMLNODE_TYPE_DATA) {
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
139 if (c->type == PURPLE_XMLNODE_TYPE_DATA)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140 pretty = FALSE;
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 need_end = TRUE;
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
142 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
143 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
144
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
145 if (need_end) {
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
146 gtk_text_buffer_insert_with_tags(console->buffer, iter, ">", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
147 tag, console->tags.bracket, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
148 if (pretty) {
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
149 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\n", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
150 tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
151 }
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
152
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
153 for (c = node->child; c; c = c->next)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
154 {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
155 if (c->type == PURPLE_XMLNODE_TYPE_TAG) {
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
156 xmppconsole_append_xmlnode(console, c, indent_level + 1, iter, tag);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
157 } else if (c->type == PURPLE_XMLNODE_TYPE_DATA && c->data_sz > 0) {
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
158 gtk_text_buffer_insert_with_tags(console->buffer, iter, c->data, c->data_sz,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
159 tag, NULL);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
160 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
161 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
162
39003
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
163 if (pretty) {
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
164 for (i = 0; i < indent_level; i++) {
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
165 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\t", 1, tag, NULL);
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
166 }
37b2e13b2cfa Restore XML indenting in XMPP console.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39002
diff changeset
167 }
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
168 gtk_text_buffer_insert_with_tags(console->buffer, iter, "<", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
169 tag, console->tags.bracket, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
170 gtk_text_buffer_insert_with_tags(console->buffer, iter, "/", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
171 tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
172 gtk_text_buffer_insert_with_tags(console->buffer, iter, node->name, -1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
173 tag, console->tags.tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
174 gtk_text_buffer_insert_with_tags(console->buffer, iter, ">", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
175 tag, console->tags.bracket, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
176 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\n", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
177 tag, NULL);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
178 } else {
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
179 gtk_text_buffer_insert_with_tags(console->buffer, iter, "/", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
180 tag, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
181 gtk_text_buffer_insert_with_tags(console->buffer, iter, ">", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
182 tag, console->tags.bracket, NULL);
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
183 gtk_text_buffer_insert_with_tags(console->buffer, iter, "\n", 1,
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
184 tag, NULL);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
185 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
186 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
187
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
188 static void
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
189 purple_xmlnode_received_cb(PurpleConnection *gc, PurpleXmlNode **packet, gpointer null)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
190 {
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
191 GtkTextIter iter;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
192
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
193 if (console == NULL || console->gc != gc) {
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
194 return;
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
195 }
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
196
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
197 gtk_text_buffer_get_end_iter(console->buffer, &iter);
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
198 xmppconsole_append_xmlnode(console, *packet, 0, &iter,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
199 console->tags.incoming);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
200 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
201
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
202 static void
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
203 purple_xmlnode_sent_cb(PurpleConnection *gc, char **packet, gpointer null)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
204 {
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
205 GtkTextIter iter;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
206 PurpleXmlNode *node;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
207
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
208 if (console == NULL || console->gc != gc) {
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
209 return;
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
210 }
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
211 node = purple_xmlnode_from_str(*packet, -1);
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
212
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
213 if (!node)
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
214 return;
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
215
39001
d4f73745a8ab Convert XMPP console display to GtkTextView.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 39000
diff changeset
216 gtk_text_buffer_get_end_iter(console->buffer, &iter);
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
217 xmppconsole_append_xmlnode(console, node, 0, &iter,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
218 console->tags.outgoing);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
219 purple_xmlnode_free(node);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
220 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
221
33011
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
222 static gboolean
41555
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
223 message_send_cb(G_GNUC_UNUSED GtkEventControllerKey *event, guint keyval,
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
224 G_GNUC_UNUSED guint keycode,
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
225 G_GNUC_UNUSED GdkModifierType state,
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
226 gpointer data)
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
227 {
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
228 PidginXmppConsole *console = data;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36543
diff changeset
229 PurpleProtocol *protocol = NULL;
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30010
diff changeset
230 PurpleConnection *gc;
33011
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
231 gchar *text;
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
232 GtkTextIter start, end;
33011
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
233
41555
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
234 if (keyval != GDK_KEY_KP_Enter && keyval != GDK_KEY_Return) {
33011
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
235 return FALSE;
41555
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
236 }
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
238 gc = console->gc;
17529
5fd44f61d007 Fix a crash when trying to use XMPP console with no XMPP accounts connected
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16749
diff changeset
239
5fd44f61d007 Fix a crash when trying to use XMPP console with no XMPP accounts connected
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16749
diff changeset
240 if (gc)
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
241 protocol = purple_connection_get_protocol(gc);
17529
5fd44f61d007 Fix a crash when trying to use XMPP console with no XMPP accounts connected
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16749
diff changeset
242
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
243 gtk_text_buffer_get_bounds(console->entry_buffer, &start, &end);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
244 text = gtk_text_buffer_get_text(console->entry_buffer, &start, &end, FALSE);
17529
5fd44f61d007 Fix a crash when trying to use XMPP console with no XMPP accounts connected
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16749
diff changeset
245
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40502
diff changeset
246 if(PURPLE_IS_PROTOCOL_SERVER(protocol)) {
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40502
diff changeset
247 purple_protocol_server_send_raw(PURPLE_PROTOCOL_SERVER(protocol), gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40502
diff changeset
248 text, strlen(text));
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40502
diff changeset
249 }
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
250
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
251 g_free(text);
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
252 gtk_text_buffer_set_text(console->entry_buffer, "", 0);
33011
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
253
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
254 return TRUE;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
255 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
256
33011
861a290f5464 Convert the XMPP Console entry to WebKit.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32998
diff changeset
257 static void
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
258 entry_changed_cb(GtkTextBuffer *buffer, gpointer data) {
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
259 PidginXmppConsole *console = data;
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
260 GtkTextIter start, end;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
261 char *xmlstr, *str;
39808
a029cf99bfe2 Re-enable entry resizing in XMPP console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39807
diff changeset
262 GtkTextIter iter;
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
263 int wrapped_lines;
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
264 int lines;
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
265 GdkRectangle oneline;
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
266 int height;
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
267 int pad_top, pad_inside, pad_bottom;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
268 PurpleXmlNode *node;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
269
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
270 wrapped_lines = 1;
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
271 gtk_text_buffer_get_start_iter(buffer, &iter);
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
272 gtk_text_view_get_iter_location(GTK_TEXT_VIEW(console->entry), &iter, &oneline);
39808
a029cf99bfe2 Re-enable entry resizing in XMPP console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39807
diff changeset
273 while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(console->entry),
a029cf99bfe2 Re-enable entry resizing in XMPP console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39807
diff changeset
274 &iter)) {
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
275 wrapped_lines++;
39808
a029cf99bfe2 Re-enable entry resizing in XMPP console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39807
diff changeset
276 }
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
277
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
278 lines = gtk_text_buffer_get_line_count(buffer);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
279
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
280 /* Show a maximum of 64 lines */
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
281 lines = MIN(lines, 6);
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
282 wrapped_lines = MIN(wrapped_lines, 6);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
284 pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(console->entry));
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
285 pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(console->entry));
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
286 pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(console->entry));
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
287
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
288 height = (oneline.height + pad_top + pad_bottom) * lines;
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
289 height += (oneline.height + pad_inside) * (wrapped_lines - lines);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
290
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
291 gtk_widget_set_size_request(console->sw, -1, height + 6);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
292
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
293 gtk_text_buffer_get_bounds(buffer, &start, &end);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
294 str = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
39808
a029cf99bfe2 Re-enable entry resizing in XMPP console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39807
diff changeset
295 if (!str) {
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
296 return;
39808
a029cf99bfe2 Re-enable entry resizing in XMPP console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39807
diff changeset
297 }
a029cf99bfe2 Re-enable entry resizing in XMPP console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39807
diff changeset
298
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
299 xmlstr = g_strdup_printf("<xml>%s</xml>", str);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
300 node = purple_xmlnode_from_str(xmlstr, -1);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
301 if (node) {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
302 gtk_text_buffer_remove_tag_by_name(console->entry_buffer, "invalid",
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
303 &start, &end);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
304 } else {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
305 gtk_text_buffer_apply_tag_by_name(console->entry_buffer, "invalid",
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
306 &start, &end);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
307 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
308 g_free(str);
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
309 g_free(xmlstr);
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
310 if (node)
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34276
diff changeset
311 purple_xmlnode_free(node);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
312 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
313
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
314 static void
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
315 load_text_and_set_caret(PidginXmppConsole *console, const gchar *pre_text,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
316 const gchar *post_text)
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
317 {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
318 GtkTextIter start, end;
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
319 GtkTextIter where;
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
320 GtkTextMark *mark;
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
321
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
322 g_signal_handlers_block_by_func(console->entry_buffer, entry_changed_cb,
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
323 console);
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
324 gtk_text_buffer_begin_user_action(console->entry_buffer);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
325
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
326 gtk_text_buffer_get_bounds(console->entry_buffer, &start, &end);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
327 gtk_text_buffer_delete(console->entry_buffer, &start, &end);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
328 gtk_text_buffer_insert(console->entry_buffer, &end, pre_text, -1);
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
329
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
330 gtk_text_buffer_get_end_iter(console->entry_buffer, &where);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
331 mark = gtk_text_buffer_create_mark(console->entry_buffer, NULL, &where, TRUE);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
332
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
333 gtk_text_buffer_insert(console->entry_buffer, &where, post_text, -1);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
334
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
335 gtk_text_buffer_get_iter_at_mark(console->entry_buffer, &where, mark);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
336 gtk_text_buffer_place_cursor(console->entry_buffer, &where);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
337 gtk_text_buffer_delete_mark(console->entry_buffer, mark);
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
338
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
339 gtk_text_buffer_end_user_action(console->entry_buffer);
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
340 g_signal_handlers_unblock_by_func(console->entry_buffer, entry_changed_cb,
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
341 console);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
342
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
343 entry_changed_cb(console->entry_buffer, console);
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
344 }
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
345
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
346 static void
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
347 iq_clicked_cb(GtkWidget *w, gpointer data)
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
348 {
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
349 PidginXmppConsole *console = data;
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
350 GtkStringObject *obj = NULL;
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
351 const gchar *to, *type;
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
352 gchar *stanza;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
353
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
354 to = gtk_editable_get_text(GTK_EDITABLE(console->iq.to));
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
355 obj = gtk_drop_down_get_selected_item(console->iq.type);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
356 type = gtk_string_object_get_string(obj);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
357
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
358 if(to != NULL && *to != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
359 stanza = g_strdup_printf("<iq to='%s' id='console%x' type='%s'>",
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
360 to, g_random_int(), type);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
361 } else {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
362 stanza = g_strdup_printf("<iq id='console%x' type='%s'>",
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
363 g_random_int(), type);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
364 }
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
365
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
366 load_text_and_set_caret(console, stanza, "</iq>");
33053
6ba80150e4c3 Fix the buttons in the XMPP Console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33011
diff changeset
367 gtk_widget_grab_focus(console->entry);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
368 g_free(stanza);
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20288
diff changeset
369
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
370 /* Reset everything. */
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
371 gtk_editable_set_text(GTK_EDITABLE(console->iq.to), "");
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
372 gtk_drop_down_set_selected(console->iq.type, 0);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
373 gtk_menu_button_popdown(console->iq.button);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
374 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
375
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
376 static void
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
377 presence_clicked_cb(GtkWidget *w, gpointer data)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
378 {
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
379 PidginXmppConsole *console = data;
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
380 GtkStringObject *obj = NULL;
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
381 const gchar *to, *status, *priority;
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
382 const gchar *type, *show;
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
383 GString *stanza = NULL;
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
384
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
385 to = gtk_editable_get_text(GTK_EDITABLE(console->presence.to));
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
386 obj = gtk_drop_down_get_selected_item(console->presence.type);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
387 type = gtk_string_object_get_string(obj);
38999
b4b1c5868446 Fix leak when using XMPP console templates.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38358
diff changeset
388 if (purple_strequal(type, "default")) {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
389 type = "";
38999
b4b1c5868446 Fix leak when using XMPP console templates.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38358
diff changeset
390 }
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
391 obj = gtk_drop_down_get_selected_item(console->presence.show);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
392 show = gtk_string_object_get_string(obj);
38999
b4b1c5868446 Fix leak when using XMPP console templates.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38358
diff changeset
393 if (purple_strequal(show, "default")) {
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
394 show = "";
38999
b4b1c5868446 Fix leak when using XMPP console templates.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38358
diff changeset
395 }
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
396 status = gtk_editable_get_text(GTK_EDITABLE(console->presence.status));
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
397 priority = gtk_editable_get_text(GTK_EDITABLE(console->presence.priority));
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
398 if (purple_strequal(priority, "0")) {
39000
1a77494777cb Use GtkTextView for XMPP console entry.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38999
diff changeset
399 priority = "";
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
400 }
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
401
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
402 stanza = g_string_new("<presence");
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
403 if(*to != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
404 g_string_append_printf(stanza, " to='%s'", to);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
405 }
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
406 g_string_append_printf(stanza, " id='console%x'", g_random_int());
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
407 if(*type != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
408 g_string_append_printf(stanza, " type='%s'", type);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
409 }
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
410 g_string_append_c(stanza, '>');
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
411
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
412 if(*show != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
413 g_string_append_printf(stanza, "<show>%s</show>", show);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
414 }
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
415
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
416 if(*status != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
417 g_string_append_printf(stanza, "<status>%s</status>", status);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
418 }
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
419
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
420 if(*priority != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
421 g_string_append_printf(stanza, "<priority>%s</priority>", priority);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
422 }
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
423
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
424 load_text_and_set_caret(console, stanza->str, "</presence>");
33053
6ba80150e4c3 Fix the buttons in the XMPP Console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33011
diff changeset
425 gtk_widget_grab_focus(console->entry);
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
426 g_string_free(stanza, TRUE);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
427
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
428 /* Reset everything. */
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
429 gtk_editable_set_text(GTK_EDITABLE(console->presence.to), "");
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
430 gtk_drop_down_set_selected(console->presence.type, 0);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
431 gtk_drop_down_set_selected(console->presence.show, 0);
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
432 gtk_editable_set_text(GTK_EDITABLE(console->presence.status), "");
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
433 gtk_editable_set_text(GTK_EDITABLE(console->presence.priority), "0");
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
434 gtk_menu_button_popdown(console->presence.button);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
435 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
436
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
437 static void
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
438 message_clicked_cb(GtkWidget *w, gpointer data)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
439 {
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
440 PidginXmppConsole *console = data;
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
441 GtkStringObject *obj = NULL;
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
442 const gchar *to, *body, *thread, *subject, *type;
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
443 GString *stanza = NULL;
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
444
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
445 to = gtk_editable_get_text(GTK_EDITABLE(console->message.to));
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
446 body = gtk_editable_get_text(GTK_EDITABLE(console->message.body));
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
447 thread = gtk_editable_get_text(GTK_EDITABLE(console->message.thread));
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
448 subject = gtk_editable_get_text(GTK_EDITABLE(console->message.subject));
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
449 obj = gtk_drop_down_get_selected_item(console->message.type);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
450 type = gtk_string_object_get_string(obj);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
451
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
452 stanza = g_string_new("<message");
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
453 if(*to != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
454 g_string_append_printf(stanza, " to='%s'", to);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
455 }
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
456 g_string_append_printf(stanza, " id='console%x' type='%s'>",
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
457 g_random_int(), type);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
458
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
459 if(*body != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
460 g_string_append_printf(stanza, "<body>%s</body>", body);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
461 }
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
462
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
463 if(*subject != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
464 g_string_append_printf(stanza, "<subject>%s</subject>", subject);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
465 }
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
466
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
467 if(*thread != '\0') {
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
468 g_string_append_printf(stanza, "<thread>%s</thread>", thread);
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
469 }
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
470
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
471 load_text_and_set_caret(console, stanza->str, "</message>");
33053
6ba80150e4c3 Fix the buttons in the XMPP Console plugin.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33011
diff changeset
472 gtk_widget_grab_focus(console->entry);
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
473 g_string_free(stanza, TRUE);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
474
39807
3af264d5b0f6 Convert XMPP console dialogs to popovers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39805
diff changeset
475 /* Reset everything. */
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
476 gtk_editable_set_text(GTK_EDITABLE(console->message.to), "");
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
477 gtk_drop_down_set_selected(console->message.type, 0);
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
478 gtk_editable_set_text(GTK_EDITABLE(console->message.body), "");
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
479 gtk_editable_set_text(GTK_EDITABLE(console->message.subject), "0");
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41471
diff changeset
480 gtk_editable_set_text(GTK_EDITABLE(console->message.thread), "0");
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
481 gtk_menu_button_popdown(console->message.button);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
482 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
483
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
484 static void
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
485 dropdown_changed_cb(GtkComboBox *widget, gpointer data) {
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
486 PidginXmppConsole *console = data;
41409
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
487 PidginAccountChooser *chooser = PIDGIN_ACCOUNT_CHOOSER(widget);
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
488 PurpleAccount *account = NULL;
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
489
41409
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
490 account = pidgin_account_chooser_get_selected(chooser);
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
491 if(PURPLE_IS_ACCOUNT(account)) {
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
492 console->gc = purple_account_get_connection(account);
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
493 gtk_text_buffer_set_text(console->buffer, "", 0);
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
494 } else {
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
495 GtkTextIter start, end;
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
496 console->gc = NULL;
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
497 gtk_text_buffer_set_text(console->buffer, _("Not connected to XMPP"), -1);
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
498 gtk_text_buffer_get_bounds(console->buffer, &start, &end);
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
499 gtk_text_buffer_apply_tag(console->buffer, console->tags.info, &start, &end);
f18c86c63885 Use PidginAccountChooser in XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41408
diff changeset
500 }
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
501 }
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
502
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
503 /******************************************************************************
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
504 * GObject Implementation
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
505 *****************************************************************************/
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
506 static void
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
507 pidgin_xmpp_console_class_finalize(PidginXmppConsoleClass *klass) {
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
508 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
509
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
510 static void
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
511 pidgin_xmpp_console_class_init(PidginXmppConsoleClass *klass) {
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
512 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
513
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
514 gtk_widget_class_set_template_from_resource(
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
515 widget_class,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
516 "/im/pidgin/Pidgin3/Plugin/XMPPConsole/console.ui"
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
517 );
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
518
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
519 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
520 account_chooser);
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
521 gtk_widget_class_bind_template_callback(widget_class, dropdown_changed_cb);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
522
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
523 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
524 buffer);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
525 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
526 tags.info);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
527 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
528 tags.incoming);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
529 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
530 tags.outgoing);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
531 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
532 tags.bracket);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
533 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
534 tags.tag);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
535 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
536 tags.attr);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
537 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
538 tags.value);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
539 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
540 tags.xmlns);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
541
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
542 /* Popover for <iq/> button. */
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
543 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
544 iq.button);
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
545 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
546 iq.to);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
547 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
548 iq.type);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
549 gtk_widget_class_bind_template_callback(widget_class, iq_clicked_cb);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
550
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
551 /* Popover for <presence/> button. */
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
552 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
553 presence.button);
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
554 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
555 presence.to);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
556 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
557 presence.type);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
558 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
559 presence.show);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
560 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
561 presence.status);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
562 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
563 presence.priority);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
564 gtk_widget_class_bind_template_callback(widget_class, presence_clicked_cb);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
565
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
566 /* Popover for <message/> button. */
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
567 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
568 message.button);
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
569 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
570 message.to);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
571 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
572 message.type);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
573 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
574 message.body);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
575 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
576 message.subject);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
577 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
578 message.thread);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
579 gtk_widget_class_bind_template_callback(widget_class, message_clicked_cb);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
580
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
581 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
582 entry);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
583 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole,
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
584 entry_buffer);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
585 gtk_widget_class_bind_template_callback(widget_class, message_send_cb);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
586
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
587 gtk_widget_class_bind_template_child(widget_class, PidginXmppConsole, sw);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
588 gtk_widget_class_bind_template_callback(widget_class, entry_changed_cb);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
589 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
590
27264
ff58193d8ead Nothing to see here, just some whitespace changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25625
diff changeset
591 static void
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
592 pidgin_xmpp_console_init(PidginXmppConsole *console) {
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
593 gtk_widget_init_template(GTK_WIDGET(console));
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
594
41652
fd32ea10d1cb Modernize XMPP console a bit
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41555
diff changeset
595 dropdown_changed_cb(console->account_chooser, console);
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
596 entry_changed_cb(console->entry_buffer, console);
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
597
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
598 gtk_widget_show(GTK_WIDGET(console));
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
599 }
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30626
diff changeset
600
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
601 /******************************************************************************
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
602 * Plugin implementation
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
603 *****************************************************************************/
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
604 static void
41471
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
605 create_console(G_GNUC_UNUSED GSimpleAction *action,
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
606 G_GNUC_UNUSED GVariant *parameter, G_GNUC_UNUSED gpointer data)
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
607 {
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
608 if (console == NULL) {
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
609 console = g_object_new(PIDGIN_TYPE_XMPP_CONSOLE, NULL);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
610 g_object_add_weak_pointer(G_OBJECT(console), (gpointer)&console);
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
611 }
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
612
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
613 gtk_window_present(GTK_WINDOW(console));
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
614 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
615
40894
80d9d7a73a60 Convert the Pidgin plugins to use GPLUGIN_NATIVE_PLUGIN_DECLARE
Gary Kramlich <grim@reaperworld.com>
parents: 40799
diff changeset
616 static GPluginPluginInfo *
80d9d7a73a60 Convert the Pidgin plugins to use GPLUGIN_NATIVE_PLUGIN_DECLARE
Gary Kramlich <grim@reaperworld.com>
parents: 40799
diff changeset
617 xmpp_console_query(GError **error)
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
618 {
41471
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
619 GActionEntry entries[] = {
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
620 {
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
621 .name = "console",
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
622 .activate = create_console,
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
623 }
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
624 };
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
625 GMenu *menu = NULL;
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
626 GSimpleActionGroup *group = NULL;
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
627 const gchar * const authors[] = {
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
628 "Sean Egan <seanegan@gmail.com>",
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
629 NULL
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
630 };
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
631
41471
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
632 group = g_simple_action_group_new();
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
633 g_action_map_add_action_entries(G_ACTION_MAP(group), entries,
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
634 G_N_ELEMENTS(entries), NULL);
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
635
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
636 menu = g_menu_new();
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
637 g_menu_append(menu, _("XMPP Console"), "console");
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
638
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
639 return pidgin_plugin_info_new(
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
640 "id", PLUGIN_ID,
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
641 "name", N_("XMPP Console"),
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
642 "version", DISPLAY_VERSION,
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
643 "category", N_("Protocol utility"),
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
644 "summary", N_("Send and receive raw XMPP stanzas."),
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
645 "description", N_("This plugin is useful for debugging XMPP servers "
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
646 "or clients."),
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
647 "authors", authors,
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
648 "website", PURPLE_WEBSITE,
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
649 "abi-version", PURPLE_ABI_VERSION,
41471
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
650 "action-group", group,
00f6072095a3 Convert the XMPP Console plugin to the new GAction/GMenu based actions
Gary Kramlich <grim@reaperworld.com>
parents: 41410
diff changeset
651 "action-menu", menu,
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
652 NULL
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
653 );
15412
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
654 }
def58941bcb9 [gaim-migrate @ 18143]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
655
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
656 static gboolean
40894
80d9d7a73a60 Convert the Pidgin plugins to use GPLUGIN_NATIVE_PLUGIN_DECLARE
Gary Kramlich <grim@reaperworld.com>
parents: 40799
diff changeset
657 xmpp_console_load(GPluginPlugin *plugin, GError **error)
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
658 {
41408
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
659 PurpleProtocolManager *manager = NULL;
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
660 PurpleProtocol *xmpp = NULL;
37041
c1936deaa35b Merged gtkdoc-conversion
Ankit Vani <a@nevitus.org>
parents: 37005 35311
diff changeset
661
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
662 pidgin_xmpp_console_register_type(G_TYPE_MODULE(plugin));
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
663
41408
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
664 manager = purple_protocol_manager_get_default();
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
665 xmpp = purple_protocol_manager_find(manager, "prpl-jabber");
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
666 if (!PURPLE_IS_PROTOCOL(xmpp)) {
39921
a9c92a82f4c8 Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39810
diff changeset
667 g_set_error_literal(error, PLUGIN_DOMAIN, 0,
a9c92a82f4c8 Don't pass literals to g_set_error / g_error_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39810
diff changeset
668 _("No XMPP protocol is loaded."));
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
669 return FALSE;
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
670 }
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
671
41408
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
672 purple_signal_connect(xmpp, "jabber-receiving-xmlnode", plugin,
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
673 G_CALLBACK(purple_xmlnode_received_cb), NULL);
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
674 purple_signal_connect(xmpp, "jabber-sending-text", plugin,
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
675 G_CALLBACK(purple_xmlnode_sent_cb), NULL);
5323c0b51ddc Remove prpl-gtalk from XMPP console
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41407
diff changeset
676
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
677 return TRUE;
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
678 }
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
679
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
680 static gboolean
41078
84e48180ef67 Update to gplugin 0.35.0
Gary Kramlich <grim@reaperworld.com>
parents: 41030
diff changeset
681 xmpp_console_unload(GPluginPlugin *plugin, gboolean shutdown, GError **error)
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
682 {
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
683 if (console) {
41555
6ef22b85cb10 Update XMPP console to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
684 gtk_window_destroy(GTK_WINDOW(console));
41407
94f55a462e8e Convert XMPP Console into a real templated type
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41406
diff changeset
685 }
36758
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
686 return TRUE;
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
687 }
deee438dc431 Refactored more pidgin plugins to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36719
diff changeset
688
40894
80d9d7a73a60 Convert the Pidgin plugins to use GPLUGIN_NATIVE_PLUGIN_DECLARE
Gary Kramlich <grim@reaperworld.com>
parents: 40799
diff changeset
689 GPLUGIN_NATIVE_PLUGIN_DECLARE(xmpp_console)

mercurial